From a212a513a6cb07c2249a71f38c8e340a2222111b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Maneiro?= <583546+oandregal@users.noreply.github.com> Date: Tue, 17 Mar 2026 12:24:06 +0100 Subject: [PATCH 1/6] Bootstrap entity config: view config endpoint --- .phpactor.json | 4 + .../build/pages/site-editor-v2/loader.js | 1 + .../pages/site-editor-v2/page-wp-admin.php | 279 + .../build/pages/site-editor-v2/page.php | 317 + 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 | 17186 ++++++++++++++ .../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 | 17745 ++++++++++++++ .../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 | 17291 ++++++++++++++ .../routes/post-list/content.min.asset.php | 1 + .../build/routes/post-list/content.min.js | 14 + .../build/routes/post-list/route.js | 328 + .../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 | 19314 ++++++++++++++++ .../template-list/content.min.asset.php | 1 + .../build/routes/template-list/content.min.js | 14 + .../build/routes/template-list/route.js | 275 + .../routes/template-list/route.min.asset.php | 1 + .../build/routes/template-list/route.min.js | 1 + .../routes/template-part-list/content.js | 17602 ++++++++++++++ .../template-part-list/content.min.asset.php | 1 + .../routes/template-part-list/content.min.js | 14 + .../build/routes/template-part-list/route.js | 267 + .../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 + .../icons/library/accordion-heading.svg | 4 + .../icons/library/accordion-item.svg | 6 + src/wp-includes/icons/library/accordion.svg | 6 + src/wp-includes/icons/library/add-card.svg | 3 + src/wp-includes/icons/library/add-submenu.svg | 3 + .../icons/library/add-template.svg | 3 + .../icons/library/align-center.svg | 3 + .../icons/library/align-justify.svg | 3 + src/wp-includes/icons/library/align-left.svg | 3 + src/wp-includes/icons/library/align-none.svg | 3 + src/wp-includes/icons/library/align-right.svg | 3 + src/wp-includes/icons/library/archive.svg | 3 + .../icons/library/arrow-down-left.svg | 3 + .../icons/library/arrow-down-right.svg | 3 + src/wp-includes/icons/library/arrow-down.svg | 3 + src/wp-includes/icons/library/arrow-left.svg | 3 + src/wp-includes/icons/library/arrow-right.svg | 3 + .../icons/library/arrow-up-left.svg | 3 + .../icons/library/arrow-up-right.svg | 3 + src/wp-includes/icons/library/arrow-up.svg | 3 + .../icons/library/aspect-ratio.svg | 3 + src/wp-includes/icons/library/at-symbol.svg | 3 + src/wp-includes/icons/library/audio.svg | 3 + src/wp-includes/icons/library/background.svg | 3 + src/wp-includes/icons/library/backup.svg | 3 + src/wp-includes/icons/library/bell-unread.svg | 4 + src/wp-includes/icons/library/bell.svg | 3 + .../icons/library/block-default.svg | 3 + src/wp-includes/icons/library/block-meta.svg | 3 + src/wp-includes/icons/library/block-table.svg | 3 + src/wp-includes/icons/library/border.svg | 3 + src/wp-includes/icons/library/box.svg | 3 + src/wp-includes/icons/library/breadcrumbs.svg | 3 + src/wp-includes/icons/library/brush.svg | 3 + src/wp-includes/icons/library/bug.svg | 3 + src/wp-includes/icons/library/button.svg | 3 + src/wp-includes/icons/library/buttons.svg | 3 + src/wp-includes/icons/library/calendar.svg | 3 + .../icons/library/cancel-circle-filled.svg | 3 + src/wp-includes/icons/library/caption.svg | 3 + .../icons/library/capture-photo.svg | 3 + .../icons/library/capture-video.svg | 3 + src/wp-includes/icons/library/cart.svg | 3 + src/wp-includes/icons/library/category.svg | 3 + .../icons/library/caution-filled.svg | 3 + src/wp-includes/icons/library/caution.svg | 3 + src/wp-includes/icons/library/chart-bar.svg | 3 + src/wp-includes/icons/library/check.svg | 3 + .../icons/library/chevron-down-small.svg | 3 + .../icons/library/chevron-down.svg | 3 + .../icons/library/chevron-left-small.svg | 3 + .../icons/library/chevron-left.svg | 3 + .../icons/library/chevron-right-small.svg | 3 + .../icons/library/chevron-right.svg | 3 + .../icons/library/chevron-up-down.svg | 3 + .../icons/library/chevron-up-small.svg | 3 + src/wp-includes/icons/library/chevron-up.svg | 3 + src/wp-includes/icons/library/classic.svg | 3 + src/wp-includes/icons/library/close-small.svg | 3 + src/wp-includes/icons/library/close.svg | 3 + .../icons/library/cloud-download.svg | 3 + .../icons/library/cloud-upload.svg | 3 + src/wp-includes/icons/library/cloud.svg | 3 + src/wp-includes/icons/library/code.svg | 3 + src/wp-includes/icons/library/cog.svg | 3 + src/wp-includes/icons/library/color.svg | 3 + src/wp-includes/icons/library/column.svg | 3 + src/wp-includes/icons/library/columns.svg | 3 + .../icons/library/comment-author-avatar.svg | 3 + .../icons/library/comment-author-name.svg | 5 + .../icons/library/comment-content.svg | 3 + .../icons/library/comment-edit-link.svg | 3 + .../icons/library/comment-reply-link.svg | 3 + src/wp-includes/icons/library/comment.svg | 3 + src/wp-includes/icons/library/connection.svg | 3 + src/wp-includes/icons/library/contents.svg | 3 + src/wp-includes/icons/library/copy-small.svg | 3 + src/wp-includes/icons/library/copy.svg | 3 + src/wp-includes/icons/library/corner-all.svg | 3 + .../icons/library/corner-bottom-left.svg | 6 + .../icons/library/corner-bottom-right.svg | 6 + .../icons/library/corner-top-left.svg | 6 + .../icons/library/corner-top-right.svg | 6 + src/wp-includes/icons/library/cover.svg | 3 + src/wp-includes/icons/library/create.svg | 3 + src/wp-includes/icons/library/crop.svg | 3 + .../icons/library/currency-dollar.svg | 3 + .../icons/library/currency-euro.svg | 3 + .../icons/library/currency-pound.svg | 3 + src/wp-includes/icons/library/custom-link.svg | 3 + .../icons/library/custom-post-type.svg | 3 + src/wp-includes/icons/library/dashboard.svg | 3 + src/wp-includes/icons/library/desktop.svg | 3 + src/wp-includes/icons/library/details.svg | 4 + src/wp-includes/icons/library/download.svg | 3 + src/wp-includes/icons/library/drafts.svg | 3 + src/wp-includes/icons/library/drag-handle.svg | 3 + src/wp-includes/icons/library/drawer-left.svg | 3 + .../icons/library/drawer-right.svg | 3 + src/wp-includes/icons/library/envelope.svg | 3 + src/wp-includes/icons/library/error.svg | 3 + src/wp-includes/icons/library/external.svg | 3 + src/wp-includes/icons/library/file.svg | 3 + src/wp-includes/icons/library/filter.svg | 3 + .../icons/library/flip-horizontal.svg | 3 + .../icons/library/flip-vertical.svg | 3 + src/wp-includes/icons/library/footer.svg | 3 + src/wp-includes/icons/library/format-bold.svg | 3 + .../icons/library/format-capitalize.svg | 3 + .../icons/library/format-indent-rtl.svg | 3 + .../icons/library/format-indent.svg | 3 + .../icons/library/format-italic.svg | 3 + .../icons/library/format-list-bullets-rtl.svg | 3 + .../icons/library/format-list-bullets.svg | 3 + .../library/format-list-numbered-rtl.svg | 3 + .../icons/library/format-list-numbered.svg | 3 + .../icons/library/format-lowercase.svg | 3 + src/wp-includes/icons/library/format-ltr.svg | 3 + .../icons/library/format-outdent-rtl.svg | 3 + .../icons/library/format-outdent.svg | 3 + src/wp-includes/icons/library/format-rtl.svg | 3 + .../icons/library/format-strikethrough.svg | 3 + .../icons/library/format-underline.svg | 3 + .../icons/library/format-uppercase.svg | 3 + src/wp-includes/icons/library/full-height.svg | 3 + src/wp-includes/icons/library/fullscreen.svg | 3 + src/wp-includes/icons/library/funnel.svg | 3 + src/wp-includes/icons/library/gallery.svg | 3 + src/wp-includes/icons/library/gift.svg | 3 + src/wp-includes/icons/library/globe.svg | 3 + src/wp-includes/icons/library/grid.svg | 3 + src/wp-includes/icons/library/group.svg | 3 + src/wp-includes/icons/library/handle.svg | 3 + src/wp-includes/icons/library/header.svg | 3 + .../icons/library/heading-level-1.svg | 3 + .../icons/library/heading-level-2.svg | 3 + .../icons/library/heading-level-3.svg | 3 + .../icons/library/heading-level-4.svg | 3 + .../icons/library/heading-level-5.svg | 3 + .../icons/library/heading-level-6.svg | 3 + src/wp-includes/icons/library/heading.svg | 3 + src/wp-includes/icons/library/help-filled.svg | 3 + src/wp-includes/icons/library/help.svg | 3 + src/wp-includes/icons/library/home-button.svg | 3 + src/wp-includes/icons/library/home.svg | 3 + src/wp-includes/icons/library/html.svg | 3 + src/wp-includes/icons/library/image.svg | 3 + src/wp-includes/icons/library/inbox.svg | 3 + src/wp-includes/icons/library/info.svg | 3 + .../icons/library/insert-after.svg | 3 + .../icons/library/insert-before.svg | 3 + src/wp-includes/icons/library/institution.svg | 3 + .../icons/library/justify-bottom.svg | 3 + .../icons/library/justify-center-vertical.svg | 3 + .../icons/library/justify-center.svg | 3 + .../icons/library/justify-left.svg | 3 + .../icons/library/justify-right.svg | 3 + .../justify-space-between-vertical.svg | 3 + .../icons/library/justify-space-between.svg | 3 + .../library/justify-stretch-vertical.svg | 3 + .../icons/library/justify-stretch.svg | 3 + src/wp-includes/icons/library/justify-top.svg | 3 + src/wp-includes/icons/library/key.svg | 3 + .../icons/library/keyboard-close.svg | 3 + .../icons/library/keyboard-return.svg | 3 + src/wp-includes/icons/library/keyboard.svg | 4 + src/wp-includes/icons/library/language.svg | 3 + src/wp-includes/icons/library/layout.svg | 3 + src/wp-includes/icons/library/level-up.svg | 3 + src/wp-includes/icons/library/lifesaver.svg | 3 + src/wp-includes/icons/library/line-dashed.svg | 3 + src/wp-includes/icons/library/line-dotted.svg | 3 + src/wp-includes/icons/library/line-solid.svg | 3 + src/wp-includes/icons/library/link-off.svg | 3 + src/wp-includes/icons/library/link.svg | 3 + src/wp-includes/icons/library/list-item.svg | 3 + src/wp-includes/icons/library/list-view.svg | 3 + src/wp-includes/icons/library/list.svg | 3 + .../icons/library/lock-outline.svg | 3 + src/wp-includes/icons/library/lock-small.svg | 3 + src/wp-includes/icons/library/lock.svg | 3 + src/wp-includes/icons/library/login.svg | 3 + src/wp-includes/icons/library/loop.svg | 3 + src/wp-includes/icons/library/map-marker.svg | 3 + src/wp-includes/icons/library/math.svg | 3 + .../icons/library/media-and-text.svg | 3 + src/wp-includes/icons/library/media.svg | 4 + src/wp-includes/icons/library/megaphone.svg | 3 + src/wp-includes/icons/library/menu.svg | 3 + src/wp-includes/icons/library/mobile.svg | 3 + .../icons/library/more-horizontal.svg | 3 + .../icons/library/more-vertical.svg | 3 + src/wp-includes/icons/library/more.svg | 3 + src/wp-includes/icons/library/move-to.svg | 3 + .../icons/library/navigation-overlay.svg | 3 + src/wp-includes/icons/library/navigation.svg | 3 + src/wp-includes/icons/library/next.svg | 3 + src/wp-includes/icons/library/not-allowed.svg | 3 + src/wp-includes/icons/library/not-found.svg | 3 + src/wp-includes/icons/library/offline.svg | 3 + .../icons/library/overlay-text.svg | 3 + src/wp-includes/icons/library/page-break.svg | 3 + src/wp-includes/icons/library/page.svg | 4 + src/wp-includes/icons/library/pages.svg | 5 + src/wp-includes/icons/library/paragraph.svg | 3 + src/wp-includes/icons/library/payment.svg | 3 + src/wp-includes/icons/library/pencil.svg | 3 + src/wp-includes/icons/library/pending.svg | 3 + src/wp-includes/icons/library/people.svg | 3 + src/wp-includes/icons/library/percent.svg | 3 + src/wp-includes/icons/library/pin-small.svg | 3 + src/wp-includes/icons/library/pin.svg | 3 + src/wp-includes/icons/library/plugins.svg | 3 + .../icons/library/plus-circle-filled.svg | 3 + src/wp-includes/icons/library/plus-circle.svg | 3 + src/wp-includes/icons/library/plus.svg | 3 + .../icons/library/position-center.svg | 3 + .../icons/library/position-left.svg | 3 + .../icons/library/position-right.svg | 3 + src/wp-includes/icons/library/post-author.svg | 3 + .../icons/library/post-categories.svg | 3 + .../icons/library/post-comments-count.svg | 3 + .../icons/library/post-comments-form.svg | 3 + .../icons/library/post-comments.svg | 3 + .../icons/library/post-content.svg | 3 + src/wp-includes/icons/library/post-date.svg | 4 + .../icons/library/post-excerpt.svg | 3 + .../icons/library/post-featured-image.svg | 3 + src/wp-includes/icons/library/post-list.svg | 3 + src/wp-includes/icons/library/post-terms.svg | 3 + src/wp-includes/icons/library/post.svg | 3 + .../icons/library/preformatted.svg | 3 + src/wp-includes/icons/library/previous.svg | 3 + src/wp-includes/icons/library/published.svg | 3 + src/wp-includes/icons/library/pull-left.svg | 3 + src/wp-includes/icons/library/pull-right.svg | 3 + src/wp-includes/icons/library/pullquote.svg | 3 + .../icons/library/query-pagination-next.svg | 3 + .../library/query-pagination-numbers.svg | 3 + .../library/query-pagination-previous.svg | 3 + .../icons/library/query-pagination.svg | 3 + src/wp-includes/icons/library/quote.svg | 3 + src/wp-includes/icons/library/receipt.svg | 3 + src/wp-includes/icons/library/redo.svg | 3 + src/wp-includes/icons/library/remove-bug.svg | 3 + .../icons/library/remove-submenu.svg | 3 + src/wp-includes/icons/library/replace.svg | 3 + src/wp-includes/icons/library/reset.svg | 3 + .../icons/library/resize-corner-ne.svg | 3 + .../icons/library/reusable-block.svg | 3 + src/wp-includes/icons/library/rotate-left.svg | 3 + .../icons/library/rotate-right.svg | 3 + src/wp-includes/icons/library/row.svg | 3 + src/wp-includes/icons/library/rss.svg | 3 + src/wp-includes/icons/library/scheduled.svg | 3 + src/wp-includes/icons/library/search.svg | 3 + src/wp-includes/icons/library/seen.svg | 3 + src/wp-includes/icons/library/send.svg | 3 + src/wp-includes/icons/library/separator.svg | 3 + src/wp-includes/icons/library/settings.svg | 4 + src/wp-includes/icons/library/shadow.svg | 3 + src/wp-includes/icons/library/share.svg | 3 + src/wp-includes/icons/library/shield.svg | 3 + src/wp-includes/icons/library/shipping.svg | 3 + src/wp-includes/icons/library/shortcode.svg | 3 + src/wp-includes/icons/library/shuffle.svg | 3 + src/wp-includes/icons/library/sidebar.svg | 3 + src/wp-includes/icons/library/sides-all.svg | 3 + src/wp-includes/icons/library/sides-axial.svg | 3 + .../icons/library/sides-bottom.svg | 4 + .../icons/library/sides-horizontal.svg | 5 + src/wp-includes/icons/library/sides-left.svg | 4 + src/wp-includes/icons/library/sides-right.svg | 4 + src/wp-includes/icons/library/sides-top.svg | 4 + .../icons/library/sides-vertical.svg | 5 + src/wp-includes/icons/library/site-logo.svg | 3 + src/wp-includes/icons/library/square.svg | 3 + src/wp-includes/icons/library/stack.svg | 3 + src/wp-includes/icons/library/star-empty.svg | 3 + src/wp-includes/icons/library/star-filled.svg | 3 + src/wp-includes/icons/library/star-half.svg | 3 + src/wp-includes/icons/library/store.svg | 3 + .../icons/library/stretch-full-width.svg | 3 + .../icons/library/stretch-wide.svg | 3 + src/wp-includes/icons/library/styles.svg | 3 + src/wp-includes/icons/library/subscript.svg | 3 + src/wp-includes/icons/library/superscript.svg | 3 + src/wp-includes/icons/library/swatch.svg | 3 + .../icons/library/symbol-filled.svg | 3 + src/wp-includes/icons/library/symbol.svg | 3 + src/wp-includes/icons/library/tab.svg | 1 + .../icons/library/table-column-after.svg | 3 + .../icons/library/table-column-before.svg | 3 + .../icons/library/table-column-delete.svg | 3 + .../icons/library/table-of-contents.svg | 4 + .../icons/library/table-row-after.svg | 3 + .../icons/library/table-row-before.svg | 3 + .../icons/library/table-row-delete.svg | 3 + src/wp-includes/icons/library/table.svg | 3 + src/wp-includes/icons/library/tablet.svg | 3 + .../icons/library/tabs-menu-item.svg | 1 + src/wp-includes/icons/library/tabs-menu.svg | 1 + src/wp-includes/icons/library/tabs.svg | 1 + src/wp-includes/icons/library/tag.svg | 3 + src/wp-includes/icons/library/term-count.svg | 4 + .../icons/library/term-description.svg | 3 + src/wp-includes/icons/library/term-name.svg | 4 + src/wp-includes/icons/library/text-color.svg | 3 + .../icons/library/text-horizontal.svg | 3 + .../icons/library/text-vertical.svg | 3 + src/wp-includes/icons/library/thumbs-down.svg | 3 + src/wp-includes/icons/library/thumbs-up.svg | 3 + .../icons/library/time-to-read.svg | 3 + src/wp-includes/icons/library/tip.svg | 3 + src/wp-includes/icons/library/title.svg | 3 + src/wp-includes/icons/library/tool.svg | 3 + src/wp-includes/icons/library/trash.svg | 3 + .../icons/library/trending-down.svg | 3 + src/wp-includes/icons/library/trending-up.svg | 3 + src/wp-includes/icons/library/typography.svg | 3 + src/wp-includes/icons/library/undo.svg | 3 + src/wp-includes/icons/library/ungroup.svg | 3 + src/wp-includes/icons/library/unlock.svg | 3 + src/wp-includes/icons/library/unseen.svg | 3 + src/wp-includes/icons/library/update.svg | 3 + src/wp-includes/icons/library/upload.svg | 3 + src/wp-includes/icons/library/verse.svg | 3 + src/wp-includes/icons/library/video.svg | 3 + src/wp-includes/icons/library/widget.svg | 3 + src/wp-includes/icons/library/word-count.svg | 3 + src/wp-includes/icons/library/wordpress.svg | 3 + src/wp-includes/icons/manifest.php | 360 + src/wp-includes/rest-api.php | 11 + .../class-wp-rest-view-config-controller.php | 395 + src/wp-settings.php | 1 + 405 files changed, 93988 insertions(+) create mode 100644 .phpactor.json 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 create mode 100644 src/wp-includes/icons/library/accordion-heading.svg create mode 100644 src/wp-includes/icons/library/accordion-item.svg create mode 100644 src/wp-includes/icons/library/accordion.svg create mode 100644 src/wp-includes/icons/library/add-card.svg create mode 100644 src/wp-includes/icons/library/add-submenu.svg create mode 100644 src/wp-includes/icons/library/add-template.svg create mode 100644 src/wp-includes/icons/library/align-center.svg create mode 100644 src/wp-includes/icons/library/align-justify.svg create mode 100644 src/wp-includes/icons/library/align-left.svg create mode 100644 src/wp-includes/icons/library/align-none.svg create mode 100644 src/wp-includes/icons/library/align-right.svg create mode 100644 src/wp-includes/icons/library/archive.svg create mode 100644 src/wp-includes/icons/library/arrow-down-left.svg create mode 100644 src/wp-includes/icons/library/arrow-down-right.svg create mode 100644 src/wp-includes/icons/library/arrow-down.svg create mode 100644 src/wp-includes/icons/library/arrow-left.svg create mode 100644 src/wp-includes/icons/library/arrow-right.svg create mode 100644 src/wp-includes/icons/library/arrow-up-left.svg create mode 100644 src/wp-includes/icons/library/arrow-up-right.svg create mode 100644 src/wp-includes/icons/library/arrow-up.svg create mode 100644 src/wp-includes/icons/library/aspect-ratio.svg create mode 100644 src/wp-includes/icons/library/at-symbol.svg create mode 100644 src/wp-includes/icons/library/audio.svg create mode 100644 src/wp-includes/icons/library/background.svg create mode 100644 src/wp-includes/icons/library/backup.svg create mode 100644 src/wp-includes/icons/library/bell-unread.svg create mode 100644 src/wp-includes/icons/library/bell.svg create mode 100644 src/wp-includes/icons/library/block-default.svg create mode 100644 src/wp-includes/icons/library/block-meta.svg create mode 100644 src/wp-includes/icons/library/block-table.svg create mode 100644 src/wp-includes/icons/library/border.svg create mode 100644 src/wp-includes/icons/library/box.svg create mode 100644 src/wp-includes/icons/library/breadcrumbs.svg create mode 100644 src/wp-includes/icons/library/brush.svg create mode 100644 src/wp-includes/icons/library/bug.svg create mode 100644 src/wp-includes/icons/library/button.svg create mode 100644 src/wp-includes/icons/library/buttons.svg create mode 100644 src/wp-includes/icons/library/calendar.svg create mode 100644 src/wp-includes/icons/library/cancel-circle-filled.svg create mode 100644 src/wp-includes/icons/library/caption.svg create mode 100644 src/wp-includes/icons/library/capture-photo.svg create mode 100644 src/wp-includes/icons/library/capture-video.svg create mode 100644 src/wp-includes/icons/library/cart.svg create mode 100644 src/wp-includes/icons/library/category.svg create mode 100644 src/wp-includes/icons/library/caution-filled.svg create mode 100644 src/wp-includes/icons/library/caution.svg create mode 100644 src/wp-includes/icons/library/chart-bar.svg create mode 100644 src/wp-includes/icons/library/check.svg create mode 100644 src/wp-includes/icons/library/chevron-down-small.svg create mode 100644 src/wp-includes/icons/library/chevron-down.svg create mode 100644 src/wp-includes/icons/library/chevron-left-small.svg create mode 100644 src/wp-includes/icons/library/chevron-left.svg create mode 100644 src/wp-includes/icons/library/chevron-right-small.svg create mode 100644 src/wp-includes/icons/library/chevron-right.svg create mode 100644 src/wp-includes/icons/library/chevron-up-down.svg create mode 100644 src/wp-includes/icons/library/chevron-up-small.svg create mode 100644 src/wp-includes/icons/library/chevron-up.svg create mode 100644 src/wp-includes/icons/library/classic.svg create mode 100644 src/wp-includes/icons/library/close-small.svg create mode 100644 src/wp-includes/icons/library/close.svg create mode 100644 src/wp-includes/icons/library/cloud-download.svg create mode 100644 src/wp-includes/icons/library/cloud-upload.svg create mode 100644 src/wp-includes/icons/library/cloud.svg create mode 100644 src/wp-includes/icons/library/code.svg create mode 100644 src/wp-includes/icons/library/cog.svg create mode 100644 src/wp-includes/icons/library/color.svg create mode 100644 src/wp-includes/icons/library/column.svg create mode 100644 src/wp-includes/icons/library/columns.svg create mode 100644 src/wp-includes/icons/library/comment-author-avatar.svg create mode 100644 src/wp-includes/icons/library/comment-author-name.svg create mode 100644 src/wp-includes/icons/library/comment-content.svg create mode 100644 src/wp-includes/icons/library/comment-edit-link.svg create mode 100644 src/wp-includes/icons/library/comment-reply-link.svg create mode 100644 src/wp-includes/icons/library/comment.svg create mode 100644 src/wp-includes/icons/library/connection.svg create mode 100644 src/wp-includes/icons/library/contents.svg create mode 100644 src/wp-includes/icons/library/copy-small.svg create mode 100644 src/wp-includes/icons/library/copy.svg create mode 100644 src/wp-includes/icons/library/corner-all.svg create mode 100644 src/wp-includes/icons/library/corner-bottom-left.svg create mode 100644 src/wp-includes/icons/library/corner-bottom-right.svg create mode 100644 src/wp-includes/icons/library/corner-top-left.svg create mode 100644 src/wp-includes/icons/library/corner-top-right.svg create mode 100644 src/wp-includes/icons/library/cover.svg create mode 100644 src/wp-includes/icons/library/create.svg create mode 100644 src/wp-includes/icons/library/crop.svg create mode 100644 src/wp-includes/icons/library/currency-dollar.svg create mode 100644 src/wp-includes/icons/library/currency-euro.svg create mode 100644 src/wp-includes/icons/library/currency-pound.svg create mode 100644 src/wp-includes/icons/library/custom-link.svg create mode 100644 src/wp-includes/icons/library/custom-post-type.svg create mode 100644 src/wp-includes/icons/library/dashboard.svg create mode 100644 src/wp-includes/icons/library/desktop.svg create mode 100644 src/wp-includes/icons/library/details.svg create mode 100644 src/wp-includes/icons/library/download.svg create mode 100644 src/wp-includes/icons/library/drafts.svg create mode 100644 src/wp-includes/icons/library/drag-handle.svg create mode 100644 src/wp-includes/icons/library/drawer-left.svg create mode 100644 src/wp-includes/icons/library/drawer-right.svg create mode 100644 src/wp-includes/icons/library/envelope.svg create mode 100644 src/wp-includes/icons/library/error.svg create mode 100644 src/wp-includes/icons/library/external.svg create mode 100644 src/wp-includes/icons/library/file.svg create mode 100644 src/wp-includes/icons/library/filter.svg create mode 100644 src/wp-includes/icons/library/flip-horizontal.svg create mode 100644 src/wp-includes/icons/library/flip-vertical.svg create mode 100644 src/wp-includes/icons/library/footer.svg create mode 100644 src/wp-includes/icons/library/format-bold.svg create mode 100644 src/wp-includes/icons/library/format-capitalize.svg create mode 100644 src/wp-includes/icons/library/format-indent-rtl.svg create mode 100644 src/wp-includes/icons/library/format-indent.svg create mode 100644 src/wp-includes/icons/library/format-italic.svg create mode 100644 src/wp-includes/icons/library/format-list-bullets-rtl.svg create mode 100644 src/wp-includes/icons/library/format-list-bullets.svg create mode 100644 src/wp-includes/icons/library/format-list-numbered-rtl.svg create mode 100644 src/wp-includes/icons/library/format-list-numbered.svg create mode 100644 src/wp-includes/icons/library/format-lowercase.svg create mode 100644 src/wp-includes/icons/library/format-ltr.svg create mode 100644 src/wp-includes/icons/library/format-outdent-rtl.svg create mode 100644 src/wp-includes/icons/library/format-outdent.svg create mode 100644 src/wp-includes/icons/library/format-rtl.svg create mode 100644 src/wp-includes/icons/library/format-strikethrough.svg create mode 100644 src/wp-includes/icons/library/format-underline.svg create mode 100644 src/wp-includes/icons/library/format-uppercase.svg create mode 100644 src/wp-includes/icons/library/full-height.svg create mode 100644 src/wp-includes/icons/library/fullscreen.svg create mode 100644 src/wp-includes/icons/library/funnel.svg create mode 100644 src/wp-includes/icons/library/gallery.svg create mode 100644 src/wp-includes/icons/library/gift.svg create mode 100644 src/wp-includes/icons/library/globe.svg create mode 100644 src/wp-includes/icons/library/grid.svg create mode 100644 src/wp-includes/icons/library/group.svg create mode 100644 src/wp-includes/icons/library/handle.svg create mode 100644 src/wp-includes/icons/library/header.svg create mode 100644 src/wp-includes/icons/library/heading-level-1.svg create mode 100644 src/wp-includes/icons/library/heading-level-2.svg create mode 100644 src/wp-includes/icons/library/heading-level-3.svg create mode 100644 src/wp-includes/icons/library/heading-level-4.svg create mode 100644 src/wp-includes/icons/library/heading-level-5.svg create mode 100644 src/wp-includes/icons/library/heading-level-6.svg create mode 100644 src/wp-includes/icons/library/heading.svg create mode 100644 src/wp-includes/icons/library/help-filled.svg create mode 100644 src/wp-includes/icons/library/help.svg create mode 100644 src/wp-includes/icons/library/home-button.svg create mode 100644 src/wp-includes/icons/library/home.svg create mode 100644 src/wp-includes/icons/library/html.svg create mode 100644 src/wp-includes/icons/library/image.svg create mode 100644 src/wp-includes/icons/library/inbox.svg create mode 100644 src/wp-includes/icons/library/info.svg create mode 100644 src/wp-includes/icons/library/insert-after.svg create mode 100644 src/wp-includes/icons/library/insert-before.svg create mode 100644 src/wp-includes/icons/library/institution.svg create mode 100644 src/wp-includes/icons/library/justify-bottom.svg create mode 100644 src/wp-includes/icons/library/justify-center-vertical.svg create mode 100644 src/wp-includes/icons/library/justify-center.svg create mode 100644 src/wp-includes/icons/library/justify-left.svg create mode 100644 src/wp-includes/icons/library/justify-right.svg create mode 100644 src/wp-includes/icons/library/justify-space-between-vertical.svg create mode 100644 src/wp-includes/icons/library/justify-space-between.svg create mode 100644 src/wp-includes/icons/library/justify-stretch-vertical.svg create mode 100644 src/wp-includes/icons/library/justify-stretch.svg create mode 100644 src/wp-includes/icons/library/justify-top.svg create mode 100644 src/wp-includes/icons/library/key.svg create mode 100644 src/wp-includes/icons/library/keyboard-close.svg create mode 100644 src/wp-includes/icons/library/keyboard-return.svg create mode 100644 src/wp-includes/icons/library/keyboard.svg create mode 100644 src/wp-includes/icons/library/language.svg create mode 100644 src/wp-includes/icons/library/layout.svg create mode 100644 src/wp-includes/icons/library/level-up.svg create mode 100644 src/wp-includes/icons/library/lifesaver.svg create mode 100644 src/wp-includes/icons/library/line-dashed.svg create mode 100644 src/wp-includes/icons/library/line-dotted.svg create mode 100644 src/wp-includes/icons/library/line-solid.svg create mode 100644 src/wp-includes/icons/library/link-off.svg create mode 100644 src/wp-includes/icons/library/link.svg create mode 100644 src/wp-includes/icons/library/list-item.svg create mode 100644 src/wp-includes/icons/library/list-view.svg create mode 100644 src/wp-includes/icons/library/list.svg create mode 100644 src/wp-includes/icons/library/lock-outline.svg create mode 100644 src/wp-includes/icons/library/lock-small.svg create mode 100644 src/wp-includes/icons/library/lock.svg create mode 100644 src/wp-includes/icons/library/login.svg create mode 100644 src/wp-includes/icons/library/loop.svg create mode 100644 src/wp-includes/icons/library/map-marker.svg create mode 100644 src/wp-includes/icons/library/math.svg create mode 100644 src/wp-includes/icons/library/media-and-text.svg create mode 100644 src/wp-includes/icons/library/media.svg create mode 100644 src/wp-includes/icons/library/megaphone.svg create mode 100644 src/wp-includes/icons/library/menu.svg create mode 100644 src/wp-includes/icons/library/mobile.svg create mode 100644 src/wp-includes/icons/library/more-horizontal.svg create mode 100644 src/wp-includes/icons/library/more-vertical.svg create mode 100644 src/wp-includes/icons/library/more.svg create mode 100644 src/wp-includes/icons/library/move-to.svg create mode 100644 src/wp-includes/icons/library/navigation-overlay.svg create mode 100644 src/wp-includes/icons/library/navigation.svg create mode 100644 src/wp-includes/icons/library/next.svg create mode 100644 src/wp-includes/icons/library/not-allowed.svg create mode 100644 src/wp-includes/icons/library/not-found.svg create mode 100644 src/wp-includes/icons/library/offline.svg create mode 100644 src/wp-includes/icons/library/overlay-text.svg create mode 100644 src/wp-includes/icons/library/page-break.svg create mode 100644 src/wp-includes/icons/library/page.svg create mode 100644 src/wp-includes/icons/library/pages.svg create mode 100644 src/wp-includes/icons/library/paragraph.svg create mode 100644 src/wp-includes/icons/library/payment.svg create mode 100644 src/wp-includes/icons/library/pencil.svg create mode 100644 src/wp-includes/icons/library/pending.svg create mode 100644 src/wp-includes/icons/library/people.svg create mode 100644 src/wp-includes/icons/library/percent.svg create mode 100644 src/wp-includes/icons/library/pin-small.svg create mode 100644 src/wp-includes/icons/library/pin.svg create mode 100644 src/wp-includes/icons/library/plugins.svg create mode 100644 src/wp-includes/icons/library/plus-circle-filled.svg create mode 100644 src/wp-includes/icons/library/plus-circle.svg create mode 100644 src/wp-includes/icons/library/plus.svg create mode 100644 src/wp-includes/icons/library/position-center.svg create mode 100644 src/wp-includes/icons/library/position-left.svg create mode 100644 src/wp-includes/icons/library/position-right.svg create mode 100644 src/wp-includes/icons/library/post-author.svg create mode 100644 src/wp-includes/icons/library/post-categories.svg create mode 100644 src/wp-includes/icons/library/post-comments-count.svg create mode 100644 src/wp-includes/icons/library/post-comments-form.svg create mode 100644 src/wp-includes/icons/library/post-comments.svg create mode 100644 src/wp-includes/icons/library/post-content.svg create mode 100644 src/wp-includes/icons/library/post-date.svg create mode 100644 src/wp-includes/icons/library/post-excerpt.svg create mode 100644 src/wp-includes/icons/library/post-featured-image.svg create mode 100644 src/wp-includes/icons/library/post-list.svg create mode 100644 src/wp-includes/icons/library/post-terms.svg create mode 100644 src/wp-includes/icons/library/post.svg create mode 100644 src/wp-includes/icons/library/preformatted.svg create mode 100644 src/wp-includes/icons/library/previous.svg create mode 100644 src/wp-includes/icons/library/published.svg create mode 100644 src/wp-includes/icons/library/pull-left.svg create mode 100644 src/wp-includes/icons/library/pull-right.svg create mode 100644 src/wp-includes/icons/library/pullquote.svg create mode 100644 src/wp-includes/icons/library/query-pagination-next.svg create mode 100644 src/wp-includes/icons/library/query-pagination-numbers.svg create mode 100644 src/wp-includes/icons/library/query-pagination-previous.svg create mode 100644 src/wp-includes/icons/library/query-pagination.svg create mode 100644 src/wp-includes/icons/library/quote.svg create mode 100644 src/wp-includes/icons/library/receipt.svg create mode 100644 src/wp-includes/icons/library/redo.svg create mode 100644 src/wp-includes/icons/library/remove-bug.svg create mode 100644 src/wp-includes/icons/library/remove-submenu.svg create mode 100644 src/wp-includes/icons/library/replace.svg create mode 100644 src/wp-includes/icons/library/reset.svg create mode 100644 src/wp-includes/icons/library/resize-corner-ne.svg create mode 100644 src/wp-includes/icons/library/reusable-block.svg create mode 100644 src/wp-includes/icons/library/rotate-left.svg create mode 100644 src/wp-includes/icons/library/rotate-right.svg create mode 100644 src/wp-includes/icons/library/row.svg create mode 100644 src/wp-includes/icons/library/rss.svg create mode 100644 src/wp-includes/icons/library/scheduled.svg create mode 100644 src/wp-includes/icons/library/search.svg create mode 100644 src/wp-includes/icons/library/seen.svg create mode 100644 src/wp-includes/icons/library/send.svg create mode 100644 src/wp-includes/icons/library/separator.svg create mode 100644 src/wp-includes/icons/library/settings.svg create mode 100644 src/wp-includes/icons/library/shadow.svg create mode 100644 src/wp-includes/icons/library/share.svg create mode 100644 src/wp-includes/icons/library/shield.svg create mode 100644 src/wp-includes/icons/library/shipping.svg create mode 100644 src/wp-includes/icons/library/shortcode.svg create mode 100644 src/wp-includes/icons/library/shuffle.svg create mode 100644 src/wp-includes/icons/library/sidebar.svg create mode 100644 src/wp-includes/icons/library/sides-all.svg create mode 100644 src/wp-includes/icons/library/sides-axial.svg create mode 100644 src/wp-includes/icons/library/sides-bottom.svg create mode 100644 src/wp-includes/icons/library/sides-horizontal.svg create mode 100644 src/wp-includes/icons/library/sides-left.svg create mode 100644 src/wp-includes/icons/library/sides-right.svg create mode 100644 src/wp-includes/icons/library/sides-top.svg create mode 100644 src/wp-includes/icons/library/sides-vertical.svg create mode 100644 src/wp-includes/icons/library/site-logo.svg create mode 100644 src/wp-includes/icons/library/square.svg create mode 100644 src/wp-includes/icons/library/stack.svg create mode 100644 src/wp-includes/icons/library/star-empty.svg create mode 100644 src/wp-includes/icons/library/star-filled.svg create mode 100644 src/wp-includes/icons/library/star-half.svg create mode 100644 src/wp-includes/icons/library/store.svg create mode 100644 src/wp-includes/icons/library/stretch-full-width.svg create mode 100644 src/wp-includes/icons/library/stretch-wide.svg create mode 100644 src/wp-includes/icons/library/styles.svg create mode 100644 src/wp-includes/icons/library/subscript.svg create mode 100644 src/wp-includes/icons/library/superscript.svg create mode 100644 src/wp-includes/icons/library/swatch.svg create mode 100644 src/wp-includes/icons/library/symbol-filled.svg create mode 100644 src/wp-includes/icons/library/symbol.svg create mode 100644 src/wp-includes/icons/library/tab.svg create mode 100644 src/wp-includes/icons/library/table-column-after.svg create mode 100644 src/wp-includes/icons/library/table-column-before.svg create mode 100644 src/wp-includes/icons/library/table-column-delete.svg create mode 100644 src/wp-includes/icons/library/table-of-contents.svg create mode 100644 src/wp-includes/icons/library/table-row-after.svg create mode 100644 src/wp-includes/icons/library/table-row-before.svg create mode 100644 src/wp-includes/icons/library/table-row-delete.svg create mode 100644 src/wp-includes/icons/library/table.svg create mode 100644 src/wp-includes/icons/library/tablet.svg create mode 100644 src/wp-includes/icons/library/tabs-menu-item.svg create mode 100644 src/wp-includes/icons/library/tabs-menu.svg create mode 100644 src/wp-includes/icons/library/tabs.svg create mode 100644 src/wp-includes/icons/library/tag.svg create mode 100644 src/wp-includes/icons/library/term-count.svg create mode 100644 src/wp-includes/icons/library/term-description.svg create mode 100644 src/wp-includes/icons/library/term-name.svg create mode 100644 src/wp-includes/icons/library/text-color.svg create mode 100644 src/wp-includes/icons/library/text-horizontal.svg create mode 100644 src/wp-includes/icons/library/text-vertical.svg create mode 100644 src/wp-includes/icons/library/thumbs-down.svg create mode 100644 src/wp-includes/icons/library/thumbs-up.svg create mode 100644 src/wp-includes/icons/library/time-to-read.svg create mode 100644 src/wp-includes/icons/library/tip.svg create mode 100644 src/wp-includes/icons/library/title.svg create mode 100644 src/wp-includes/icons/library/tool.svg create mode 100644 src/wp-includes/icons/library/trash.svg create mode 100644 src/wp-includes/icons/library/trending-down.svg create mode 100644 src/wp-includes/icons/library/trending-up.svg create mode 100644 src/wp-includes/icons/library/typography.svg create mode 100644 src/wp-includes/icons/library/undo.svg create mode 100644 src/wp-includes/icons/library/ungroup.svg create mode 100644 src/wp-includes/icons/library/unlock.svg create mode 100644 src/wp-includes/icons/library/unseen.svg create mode 100644 src/wp-includes/icons/library/update.svg create mode 100644 src/wp-includes/icons/library/upload.svg create mode 100644 src/wp-includes/icons/library/verse.svg create mode 100644 src/wp-includes/icons/library/video.svg create mode 100644 src/wp-includes/icons/library/widget.svg create mode 100644 src/wp-includes/icons/library/word-count.svg create mode 100644 src/wp-includes/icons/library/wordpress.svg create mode 100644 src/wp-includes/icons/manifest.php create mode 100644 src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php diff --git a/.phpactor.json b/.phpactor.json new file mode 100644 index 0000000000000..5cea18e2d4913 --- /dev/null +++ b/.phpactor.json @@ -0,0 +1,4 @@ +{ + "$schema": "/phpactor.schema.json", + "php_code_sniffer.enabled": false +} \ No newline at end of file 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..f8be5479cb4d7 --- /dev/null +++ b/src/wp-includes/build/pages/site-editor-v2/page-wp-admin.php @@ -0,0 +1,279 @@ + $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; +} + +/** + * 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; +} + +/** + * 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(); +} + +/** + * 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(); +} + +/** + * 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 + // Please also change packages/core-data/src/entities.js when changing this. + $preload_paths = array( + '/?_fields=description,gmt_offset,home,image_sizes,image_size_threshold,image_output_formats,jpeg_interlaced,png_interlaced,gif_interlaced,name,site_icon,site_icon_url,site_logo,timezone_string,url,page_for_posts,page_on_front,show_on_front', + 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' + ); +} + +/** + * 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' ); + } +} + +/** + * 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; +} + +/** + * 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; +} + +/** + * 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(); +} + +/** + * 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(); +} + +/** + * 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 + // Please also change packages/core-data/src/entities.js when changing this. + $preload_paths = array( + '/?_fields=description,gmt_offset,home,image_sizes,image_size_threshold,image_output_formats,jpeg_interlaced,png_interlaced,gif_interlaced,name,site_icon,site_icon_url,site_logo,timezone_string,url,page_for_posts,page_on_front,show_on_front', + 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' + ); +} + +/** + * 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..90c66da4be4c3 --- /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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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..30055fdd95c41 --- /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' => '12b1cf6a59437acc6e19'); \ 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..8153720ee44ce --- /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 Ha=Object.getOwnPropertyNames;var Oa=Object.getPrototypeOf,Ua=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 Ha(t))!Ua.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(Oa(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 b=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((Mt,ka)=>{ka.exports=window.wp.primitives});import{useParams as Ka}from"@wordpress/route";var K=o(_(),1),L=o(b(),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(b(),1);var fa=o(b(),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 w=S("admin-ui-page",l);return(0,k.jsxs)(ra,{className:w,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(_()),Ma=o(na());var Sa=o(R()),Ra=o(C()),Ba=o(V()),Ca=o(b());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 ba=o(va()),{lock:Nt,unlock:wa}=(0,ba.__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),H=o(p(),1),O=(0,H.jsx)(N.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,H.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),U=o(p(),1),F=(0,U.jsx)(I.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,U.jsx)(I.Path,{d:"M6.5 12.4L12 8l5.5 4.4-.9 1.2L12 10l-4.5 3.6-1-1.2z"})});var M=o(P(),1),z=o(p(),1),G=(0,z.jsx)(M.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,z.jsx)(M.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var i=o(b()),T=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,T.useDispatch)(x.store),s=(0,g.sprintf)((0,g.__)("Remove %s"),(0,x.BlockTitle)({clientId:e,maximumLength:25})),v=(0,T.useSelect)(m=>{let{getBlockRootClientId:w}=m(x.store);return w(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:O,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}=wa(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:w,getBlockOrder:Ta}=s(h.store),{isResolving:Aa}=s(_a.store),y=Ta(a),Ea=y.length===1&&m(y[0])==="core/page-list"&&w(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,Ma.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..206834bad16dc --- /dev/null +++ b/src/wp-includes/build/routes/navigation-list/content.js @@ -0,0 +1,17186 @@ +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 = useState26({ + 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] + ); + useEffect19( + 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, useState26 = React9.useState, useEffect19 = 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_element59 = __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_i18n46 = __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 +var SCALAR_VALUES = [ + "titleField", + "mediaField", + "descriptionField", + "showTitle", + "showMedia", + "showDescription", + "showLevels", + "infiniteScrollEnabled" +]; +function mergeActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + for (const key of SCALAR_VALUES) { + if (key in activeViewOverrides) { + result = { ...result, [key]: activeViewOverrides[key] }; + } + } + 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 + }; + } + } + if (activeViewOverrides.layout) { + result = { + ...result, + layout: { + ...result.layout, + ...activeViewOverrides.layout + } + }; + } + if (activeViewOverrides.groupBy) { + result = { + ...result, + groupBy: activeViewOverrides.groupBy + }; + } + return result; +} +function stripActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + for (const key of SCALAR_VALUES) { + if (key in activeViewOverrides) { + const { [key]: _, ...rest } = result; + result = rest; + } + } + 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 + }; + } + if (activeViewOverrides.layout && "layout" in result && result.layout) { + const layout = { ...result.layout }; + for (const key of Object.keys(activeViewOverrides.layout)) { + delete layout[key]; + } + result = { + ...result, + layout: Object.keys(layout).length > 0 ? layout : void 0 + }; + } + if (activeViewOverrides.groupBy && "groupBy" in result) { + const { groupBy: _, ...rest } = result; + result = rest; + } + 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_element57 = __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/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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives6.Path, { fillRule: "evenodd", clipRule: "evenodd", 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" }) }); + +// 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", clipRule: "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" }) }); + +// 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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/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 gapTokens = { + xs: "var(--wpds-dimension-gap-xs, 4px)", + sm: "var(--wpds-dimension-gap-sm, 8px)", + md: "var(--wpds-dimension-gap-md, 12px)", + lg: "var(--wpds-dimension-gap-lg, 16px)", + xl: "var(--wpds-dimension-gap-xl, 24px)", + "2xl": "var(--wpds-dimension-gap-2xl, 32px)", + "3xl": "var(--wpds-dimension-gap-3xl, 40px)" +}; +var Stack = (0, import_element3.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render: render4, ...props }, ref) { + const style = { + gap: gap && gapTokens[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/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: () => { + }, + hasInitiallyLoaded: false, + 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_element12 = __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), + 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)(void 0); + 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 = void 0; + } + 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/hooks/use-delayed-loading.mjs +var import_element11 = __toESM(require_element(), 1); +function useDelayedLoading(isLoading, options = { delay: 400 }) { + const [showLoader, setShowLoader] = (0, import_element11.useState)(false); + (0, import_element11.useEffect)(() => { + if (!isLoading) { + return; + } + const timeout = setTimeout(() => { + setShowLoader(true); + }, options.delay); + return () => { + clearTimeout(timeout); + setShowLoader(false); + }; + }, [isLoading, options.delay]); + return showLoader; +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs +var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); +function getEffectiveAlign(explicitAlign, fieldType) { + if (explicitAlign) { + return explicitAlign; + } + if (fieldType === "integer" || fieldType === "number") { + return "end"; + } + return void 0; +} +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_element12.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_element12.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] ?? {}; + const field = fields.find((f2) => f2.id === column); + const effectiveAlign = getEffectiveAlign(align, field?.type); + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "td", + { + style: { + width, + maxWidth, + minWidth + }, + children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + TableColumnField, + { + fields, + item, + column, + align: effectiveAlign + } + ) + }, + 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_element12.useContext)(dataviews_context_default); + const isDelayedLoading = useDelayedLoading(isLoading); + const headerMenuRefs = (0, import_element12.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element12.useRef)(void 0); + const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element12.useState)(); + const [contextMenuAnchor, setContextMenuAnchor] = (0, import_element12.useState)(null); + (0, import_element12.useEffect)(() => { + if (headerMenuToFocusRef.current) { + headerMenuToFocusRef.current.focus(); + headerMenuToFocusRef.current = void 0; + } + }); + const tableNoticeId = (0, import_element12.useId)(); + const isHorizontalScrollEnd = useIsHorizontalScrollEnd({ + scrollContainerRef: containerRef, + enabled: !!actions?.length + }); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data); + 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)(); + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + id: tableNoticeId, + children: empty + } + ); + } + 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, + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }), + "aria-busy": isLoading, + "aria-describedby": tableNoticeId, + role: isInfiniteScroll ? "feed" : void 0, + inert: !isInfiniteScroll && isLoading ? "true" : 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 field = fields.find( + (f2) => f2.id === column + ); + const effectiveAlign = getEffectiveAlign( + align, + field?.type + ); + const canInsertOrMove = view.layout?.enableMoving ?? true; + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "th", + { + style: { + width, + maxWidth, + minWidth, + textAlign: effectiveAlign + }, + "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) + )) }) + ] + } + ), + isInfiniteScroll && isLoading && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "dataviews-loading", id: tableNoticeId, children: /* @__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_element14 = __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_element13 = __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_element13.useContext)(dataviews_context_default); + const view = context.view; + return (0, import_element13.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_element14.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, + inert, + isLoading, + view, + fields, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId: getItemId2, + actions +}) { + const { paginationInfo, resizeObserverRef } = (0, import_element14.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, + inert, + 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 isDelayedLoading = useDelayedLoading(!!isLoading); + 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; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + children: empty + } + ); + } + const gridProps = { + className: clsx_default(className, { + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }), + inert: !isInfiniteScroll && !!isLoading ? "true" : void 0, + 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. + !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + CompositeGrid, + { + ...gridProps, + data, + isInfiniteScroll: !!isInfiniteScroll + } + ), + isInfiniteScroll && 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_element15 = __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_element15.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_element15.useRef)(null); + const labelId = `${idPrefix}-label`; + const descriptionId = `${idPrefix}-description`; + const registry = (0, import_data5.useRegistry)(); + const [isHovered, setIsHovered] = (0, import_element15.useState)(false); + const [activeModalAction, setActiveModalAction] = (0, import_element15.useState)( + null + ); + const handleHover = ({ type }) => { + const isHover = type === "mouseenter"; + setIsHovered(isHover); + }; + const { paginationInfo } = (0, import_element15.useContext)(dataviews_context_default); + (0, import_element15.useEffect)(() => { + if (isSelected2) { + itemRef.current?.scrollIntoView({ + behavior: "auto", + block: "nearest", + inline: "nearest" + }); + } + }, [isSelected2]); + const { primaryAction, eligibleActions } = (0, import_element15.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 isDelayedLoading = useDelayedLoading(!!isLoading); + 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_element15.useCallback)( + (item) => `${baseId}-${getItemId2(item)}`, + [baseId, getItemId2] + ); + const isActiveCompositeItem = (0, import_element15.useCallback)( + (item, idToCheck) => { + return idToCheck.startsWith( + generateCompositeItemIdPrefix(item) + ); + }, + [generateCompositeItemIdPrefix] + ); + const [activeCompositeId, setActiveCompositeId] = (0, import_element15.useState)(void 0); + (0, import_element15.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_element15.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_element15.useEffect)(() => { + const wasActiveIdInList = previousActiveItemIndex !== void 0 && previousActiveItemIndex !== -1; + if (!isActiveIdInList && wasActiveIdInList) { + selectCompositeItem( + previousActiveItemIndex, + generateItemWrapperCompositeId + ); + } + }, [isActiveIdInList, selectCompositeItem, previousActiveItemIndex]); + const onDropdownTriggerKeyDown = (0, import_element15.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; + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = hasData && groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + children: empty + } + ); + } + 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 + ), + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }), + role: view.infiniteScrollEnabled ? "feed" : "grid", + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + inert: !isInfiniteScroll && !!isLoading ? "true" : void 0, + 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 + ); + }) + } + ), + isInfiniteScroll && 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_element16 = __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_element16.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_element17 = __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_element17.useRef)(null); + const registry = (0, import_data6.useRegistry)(); + const { paginationInfo } = (0, import_element17.useContext)(dataviews_context_default); + const { primaryActions, eligibleActions } = (0, import_element17.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_element17.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 isDelayedLoading = useDelayedLoading(!!isLoading); + const hasData = !!data?.length; + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = hasData && groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + children: empty + } + ); + } + const isInert = !isInfiniteScroll && !!isLoading; + const wrapperClassName = clsx_default("dataviews-view-activity", className, { + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }); + 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, + inert: isInert ? "true" : void 0, + 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, + inert: isInert ? "true" : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(ActivityItems, { ...props }) + } + ), + isInfiniteScroll && 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_element21 = __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_element19 = __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_element18 = __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_element18.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_element18.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_element18.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_element19.useMemo)(() => { + return actions?.every((action) => action.supportsBulk); + }, [actions]); +} + +// packages/dataviews/build-module/components/dataviews-layouts/utils/grid-items.mjs +var import_element20 = __toESM(require_element(), 1); +var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1); +var GridItems = (0, import_element20.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_element21.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_element22 = __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_element22.useContext)(dataviews_context_default); + const isSelected2 = selection.includes(id); + const [isHovered, setIsHovered] = (0, import_element22.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_element22.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element22.useRef)(void 0); + const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element22.useState)(); + const isMultiselect = useIsMultiselectPicker(actions) ?? false; + (0, import_element22.useEffect)(() => { + if (headerMenuToFocusRef.current) { + headerMenuToFocusRef.current.focus(); + headerMenuToFocusRef.current = void 0; + } + }); + const tableNoticeId = (0, import_element22.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_element23 = __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_element23.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_element24 = __toESM(require_element(), 1); +var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1); +function DensityPicker() { + const context = (0, import_element24.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_element32 = __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_element29 = __toESM(require_element(), 1); + +// node_modules/@ariakit/core/esm/__chunks/XMCVU3LR.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 = { ...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/YXGXYGQX.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 = { ...element.props }; + return props.ref || element.ref; +} +function mergeProps2(base, overrides) { + const props = { ...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] ? { ...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/3DNM6L6E.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) { + var _a; + const { activeElement } = getDocument(node); + if (!(activeElement == null ? void 0 : activeElement.nodeName)) { + return null; + } + if (isFrame(activeElement) && ((_a = activeElement.contentDocument) == null ? void 0 : _a.body)) { + 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/SNHYQNEZ.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 = { ...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/KPHZR4MB.js +var React6 = __toESM(require_react(), 1); +var import_react5 = __toESM(require_react(), 1); +var _React = { ...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 { ...props, wrapElement }; +} +function useMetadataProps(props, key, value) { + const parent = props.onLoadedMetadataCapture; + const onLoadedMetadataCapture = (0, import_react5.useMemo)(() => { + return Object.assign(() => { + }, { ...parent, [key]: value }); + }, [parent, key, value]); + return [parent == null ? void 0 : parent[key], { onLoadedMetadataCapture }]; +} +var hasInstalledGlobalEventListeners = false; +function useIsMouseMoving() { + (0, import_react5.useEffect)(() => { + if (hasInstalledGlobalEventListeners) return; + addGlobalEventListener("mousemove", setMouseMoving, true); + addGlobalEventListener("mousedown", resetMouseMoving, true); + addGlobalEventListener("mouseup", resetMouseMoving, true); + addGlobalEventListener("keydown", resetMouseMoving, true); + addGlobalEventListener("scroll", resetMouseMoving, true); + hasInstalledGlobalEventListeners = 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/GWSL6KNJ.js +var React7 = __toESM(require_react(), 1); +var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1); +function forwardRef22(render4) { + const Role = React7.forwardRef( + // @ts-ignore Incompatible with React 19 types. Ignore for now. + (props, ref) => render4({ ...props, ref }) + ); + Role.displayName = render4.displayName || render4.name; + return Role; +} +function memo22(Component, propsAreEqual) { + return React7.memo(Component, propsAreEqual); +} +function createElement3(Type, props) { + const { wrapElement, render: render4, ...rest } = props; + const mergedRef = useMergeRefs(props.ref, getRefProperty(render4)); + let element; + if (React7.isValidElement(render4)) { + const renderProps = { + // @ts-ignore Incompatible with React 19 types. Ignore for now. + ...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, { ...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, { ...props, children }), + /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(context.Provider, { ...props }) + ); + }; + const ScopedContextProvider = (props) => { + return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ContextProvider, { ...props, children: scopedProviders.reduceRight( + (children, Provider) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Provider, { ...props, children }), + /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(scopedContext.Provider, { ...props }) + ) }); + }; + return { + context, + scopedContext, + useContext: useContext28, + useScopedContext, + useProviderContext, + ContextProvider, + ScopedContextProvider + }; +} + +// node_modules/@ariakit/react-core/esm/__chunks/SMPCIMZM.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/AVVXDJMZ.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/5VQZOHHZ.js +function findFirstEnabledItem(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 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 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/Z2O3VLAQ.js +var import_react7 = __toESM(require_react(), 1); +var TagName = "div"; +var useCollectionItem = createHook( + function useCollectionItem2({ + store, + shouldRegisterItem = true, + getItem = identity, + // @ts-expect-error This prop may come from a collection renderer. + element, + ...props + }) { + const context = useCollectionContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react7.useRef)(element); + (0, import_react7.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 = { + ...props, + ref: useMergeRefs(ref, props.ref) + }; + return removeUndefinedValues(props); + } +); +var CollectionItem = forwardRef22(function CollectionItem2(props) { + const htmlProps = useCollectionItem(props); + return createElement3(TagName, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/SWN3JYXT.js +var import_react8 = __toESM(require_react(), 1); +var FocusableContext = (0, import_react8.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({ block: "nearest", inline: "nearest", ...options }); + } +} + +// node_modules/@ariakit/react-core/esm/__chunks/U6HHPQDW.js +var import_react9 = __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 hasInstalledGlobalEventListeners2 = false; +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({ + focusable = true, + accessibleWhenDisabled, + autoFocus, + onFocusVisible, + ...props + }) { + const ref = (0, import_react9.useRef)(null); + (0, import_react9.useEffect)(() => { + if (!focusable) return; + if (hasInstalledGlobalEventListeners2) return; + addGlobalEventListener("mousedown", onGlobalMouseDown, true); + addGlobalEventListener("keydown", onGlobalKeyDown, true); + hasInstalledGlobalEventListeners2 = true; + }, [focusable]); + if (isSafariBrowser) { + (0, import_react9.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_react9.useState)(false); + (0, import_react9.useEffect)(() => { + if (!focusable) return; + if (trulyDisabled && focusVisible) { + setFocusVisible(false); + } + }, [focusable, trulyDisabled, focusVisible]); + (0, import_react9.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; + event.currentTarget.removeAttribute("data-focus-visible"); + setFocusVisible(false); + }); + const autoFocusOnShow = (0, import_react9.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_react9.useMemo)(() => { + if (trulyDisabled) { + return { pointerEvents: "none", ...styleProp }; + } + return styleProp; + }, [trulyDisabled, styleProp]); + props = { + "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/PZ3OL7I2.js +var import_react10 = __toESM(require_react(), 1); +var TagName3 = "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({ clickOnEnter = true, clickOnSpace = true, ...props }) { + const ref = (0, import_react10.useRef)(null); + const [isNativeButton, setIsNativeButton] = (0, import_react10.useState)(false); + (0, import_react10.useEffect)(() => { + if (!ref.current) return; + setIsNativeButton(isButton(ref.current)); + }, []); + const [active, setActive] = (0, import_react10.useState)(false); + const activeRef = (0, import_react10.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 { view, ...eventInit } = event; + 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 { view, ...eventInit } = event; + queueMicrotask(() => fireClickEvent(element, eventInit)); + } + } + }); + props = { + "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(TagName3, htmlProps); +}); + +// node_modules/@ariakit/core/esm/__chunks/SXKM4CGU.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 = { ...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) { + var _a; + const initialState = {}; + for (const store2 of stores) { + const nextState = (_a = store2 == null ? void 0 : store2.getState) == null ? void 0 : _a.call(store2); + if (nextState) { + Object.assign(initialState, 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/Q5W46E73.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 = { ...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 useState26 = React8.useCallback( + (keyOrSelector) => useStoreState(store, keyOrSelector), + [store] + ); + const memoizedStore = React8.useMemo( + () => ({ ...store, useState: useState26 }), + [store, useState26] + ); + const updateStore = useEvent(() => { + setStore((store2) => createStore2({ ...props, ...store2.getState() })); + }); + return [memoizedStore, updateStore]; +} + +// node_modules/@ariakit/react-core/esm/__chunks/WZWDIE3S.js +var import_react11 = __toESM(require_react(), 1); +var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); +var TagName4 = "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({ + store, + rowId: rowIdProp, + preventScrollOnKeyDown = false, + moveOnKeyPress = true, + tabbable = false, + getItem: getItemProp, + "aria-setsize": ariaSetSizeProp, + "aria-posinset": ariaPosInSetProp, + ...props + }) { + const context = useCompositeContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react11.useRef)(null); + const row = (0, import_react11.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_react11.useCallback)( + (item) => { + var _a; + const nextItem = { + ...item, + id: id || item.id, + rowId, + disabled: !!trulyDisabled, + children: (_a = item.element) == null ? void 0 : _a.textContent + }; + if (getItemProp) { + return getItemProp(nextItem); + } + return nextItem; + }, + [id, rowId, trulyDisabled, getItemProp] + ); + const onFocusProp = props.onFocus; + const hasFocusedComposite = (0, import_react11.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_react11.useMemo)( + () => ({ id, baseElement }), + [id, baseElement] + ); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(CompositeItemContext.Provider, { value: providerValue, children: element }), + [providerValue] + ); + props = { + 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({ + store, + ...props, + getItem, + shouldRegisterItem: id ? props.shouldRegisterItem : false + }); + return removeUndefinedValues({ + ...props, + "aria-setsize": ariaSetSize, + "aria-posinset": ariaPosInSet + }); + } +); +var CompositeItem = memo22( + forwardRef22(function CompositeItem2(props) { + const htmlProps = useCompositeItem(props); + return createElement3(TagName4, htmlProps); + }) +); + +// 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/react-core/esm/__chunks/ZMWF7ASR.js +var import_react12 = __toESM(require_react(), 1); +var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); +var TagName5 = "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 { view, ...eventInit } = event; + 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 findFirstEnabledItem( + flatten2DArray(reverseArray(groupItemsByRows(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({ + store, + composite = true, + focusOnMove = composite, + moveOnKeyPress = true, + ...props + }) { + 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 _a; + if (!store) return; + if (!moves) return; + if (!composite) return; + if (!focusOnMove) return; + const { activeId: activeId2 } = store.getState(); + const itemElement = (_a = getEnabledItem(store, activeId2)) == null ? void 0 : _a.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 _a; + if (!store) return; + if (!composite) return; + if (!virtualFocus) return; + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (!previousElement) return; + const activeElement = (_a = getEnabledItem(store, activeId)) == null ? void 0 : _a.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 _a; + 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 = (_a = getEnabledItem(store, activeId2)) == null ? void 0 : _a.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 _a; + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.nativeEvent.isComposing) return; + if (event.defaultPrevented) return; + if (!store) return; + if (!isSelfTarget(event)) return; + const { orientation, renderedItems, activeId: activeId2 } = store.getState(); + const activeItem = getEnabledItem(store, activeId2); + if ((_a = activeItem == null ? void 0 : activeItem.element) == null ? void 0 : _a.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 _a; + if (!store) return; + if (!composite) return; + if (!state.virtualFocus) return; + return (_a = getEnabledItem(store, state.activeId)) == null ? void 0 : _a.id; + }); + props = { + "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({ focusable, ...props }); + return props; + } +); +var Composite5 = forwardRef22(function Composite22(props) { + const htmlProps = useComposite(props); + return createElement3(TagName5, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/LVDQFHCH.js +var ctx3 = createStoreContext(); +var useDisclosureContext = ctx3.useContext; +var useDisclosureScopedContext = ctx3.useScopedContext; +var useDisclosureProviderContext = ctx3.useProviderContext; +var DisclosureContextProvider = ctx3.ContextProvider; +var DisclosureScopedContextProvider = ctx3.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/A62MDFCW.js +var import_react13 = __toESM(require_react(), 1); +var ctx4 = createStoreContext( + [DisclosureContextProvider], + [DisclosureScopedContextProvider] +); +var useDialogContext = ctx4.useContext; +var useDialogScopedContext = ctx4.useScopedContext; +var useDialogProviderContext = ctx4.useProviderContext; +var DialogContextProvider = ctx4.ContextProvider; +var DialogScopedContextProvider = ctx4.ScopedContextProvider; +var DialogHeadingContext = (0, import_react13.createContext)(void 0); +var DialogDescriptionContext = (0, import_react13.createContext)(void 0); + +// node_modules/@ariakit/react-core/esm/__chunks/6B3RXHKP.js +var import_react14 = __toESM(require_react(), 1); +var import_react_dom = __toESM(require_react_dom(), 1); +var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1); +var TagName6 = "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({ store, alwaysVisible, ...props }) { + 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_react14.useRef)(null); + const id = useId3(props.id); + const [transition, setTransition] = (0, import_react14.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_runtime53.jsx)(DialogScopedContextProvider, { value: store, children: element }), + [store] + ); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const styleProp = props.style; + const style = (0, import_react14.useMemo)(() => { + if (hidden) { + return { ...styleProp, display: "none" }; + } + return styleProp; + }, [hidden, styleProp]); + props = { + 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(TagName6, htmlProps); +}); +var DisclosureContent = forwardRef22(function DisclosureContent2({ + unmountOnHide, + ...props +}) { + 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_runtime53.jsx)(DisclosureContentImpl, { ...props }); +}); + +// node_modules/@ariakit/core/esm/__chunks/75BJEVSH.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 { + ...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/WLZ6H5FH.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/react-core/esm/__chunks/JMU4N4M5.js +var ctx5 = createStoreContext( + [DialogContextProvider], + [DialogScopedContextProvider] +); +var usePopoverContext = ctx5.useContext; +var usePopoverScopedContext = ctx5.useScopedContext; +var usePopoverProviderContext = ctx5.useProviderContext; +var PopoverContextProvider = ctx5.ContextProvider; +var PopoverScopedContextProvider = ctx5.ScopedContextProvider; + +// node_modules/@ariakit/core/esm/__chunks/N5XGANPW.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 = { ...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 { + ...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/GVAFFF2B.js +function useCollectionStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.store]); + useStoreProps(store, props, "items", "setItems"); + return store; +} + +// node_modules/@ariakit/core/esm/__chunks/RVTIKFRL.js +var NULL_ITEM = { id: null }; +function findFirstEnabledItem2(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 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 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 ? findFirstEnabledItem2(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 = groupItemsByRows2(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({ + ...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 = { + ...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 = findFirstEnabledItem2(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(groupItemsByRows2(renderedItems), activeId2, canShift) + ); + items = canReverse ? reverseArray(items) : items; + items = isVerticalDirection ? verticalizeItems(items) : items; + if (activeId2 == null) { + return (_a2 = findFirstEnabledItem2(items)) == null ? void 0 : _a2.id; + } + const activeItem = items.find((item) => item.id === activeId2); + if (!activeItem) { + return (_b = findFirstEnabledItem2(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 = findFirstEnabledItem2(sortedItems, activeId2); + return nextItem2 == null ? void 0 : nextItem2.id; + } + if (canWrap) { + const nextItem2 = findFirstEnabledItem2( + // 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 = findFirstEnabledItem2(nextItemsInRow, activeId2); + if (!nextItem && hasNullItem) { + return null; + } + return nextItem == null ? void 0 : nextItem.id; + }; + return { + ...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 = findFirstEnabledItem2(composite.getState().renderedItems)) == null ? void 0 : _a2.id; + }, + last: () => { + var _a2; + return (_a2 = findFirstEnabledItem2(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/IQYAUKXT.js +function useCompositeStoreOptions(props) { + const id = useId3(props.id); + return { 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/react-core/esm/__chunks/CVCFNOHX.js +var import_react15 = __toESM(require_react(), 1); +var ComboboxListRoleContext = (0, import_react15.createContext)( + void 0 +); +var ctx6 = createStoreContext( + [PopoverContextProvider, CompositeContextProvider], + [PopoverScopedContextProvider, CompositeScopedContextProvider] +); +var useComboboxContext = ctx6.useContext; +var useComboboxScopedContext = ctx6.useScopedContext; +var useComboboxProviderContext = ctx6.useProviderContext; +var ComboboxContextProvider = ctx6.ContextProvider; +var ComboboxScopedContextProvider = ctx6.ScopedContextProvider; +var ComboboxItemValueContext = (0, import_react15.createContext)( + void 0 +); +var ComboboxItemCheckedContext = (0, import_react15.createContext)(false); + +// node_modules/@ariakit/core/esm/__chunks/KMAUV3TY.js +function createDialogStore(props = {}) { + return createDisclosureStore(props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/4NYSH4UO.js +function useDialogStoreProps(store, update2, props) { + return useDisclosureStoreProps(store, update2, props); +} + +// node_modules/@ariakit/core/esm/__chunks/BFGNM53A.js +function createPopoverStore({ + popover: otherPopover, + ...props +} = {}) { + 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({ ...props, store }); + const placement = defaultValue( + props.placement, + syncState == null ? void 0 : syncState.placement, + "bottom" + ); + const initialState = { + ...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 { + ...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/B6FLPFJM.js +function usePopoverStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.popover]); + useStoreProps(store, props, "placement"); + return useDialogStoreProps(store, update2, props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/4POTBZ2J.js +var TagName7 = "div"; +var usePopoverAnchor = createHook( + function usePopoverAnchor2({ store, ...props }) { + const context = usePopoverProviderContext(); + store = store || context; + props = { + ...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(TagName7, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/X6LNAU2F.js +var import_react16 = __toESM(require_react(), 1); +var TagName8 = "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({ + store, + focusOnHover = true, + blurOnHoverEnd = !!focusOnHover, + ...props + }) { + 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 _a; + 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); + (_a = store == null ? void 0 : store.getState().baseElement) == null ? void 0 : _a.focus(); + }); + const ref = (0, import_react16.useCallback)((element) => { + if (!element) return; + element[symbol2] = true; + }, []); + props = { + ...props, + ref: useMergeRefs(ref, props.ref), + onMouseMove, + onMouseLeave + }; + return removeUndefinedValues(props); + } +); +var CompositeHover = memo22( + forwardRef22(function CompositeHover2(props) { + const htmlProps = useCompositeHover(props); + return createElement3(TagName8, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/combobox/combobox.js +var import_react17 = __toESM(require_react(), 1); +var TagName9 = "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({ + store, + focusable = true, + autoSelect: autoSelectProp = false, + getAutoSelectId, + setValueOnChange, + showMinLength = 0, + showOnChange, + showOnMouseDown, + showOnClick = showOnMouseDown, + showOnKeyDown, + showOnKeyPress = showOnKeyDown, + blurActiveItemOnClick, + setValueOnClick = true, + moveOnKeyPress = true, + autoComplete = "list", + ...props + }) { + 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_react17.useRef)(null); + const [valueUpdated, forceValueUpdate] = useForceUpdate(); + const canAutoSelectRef = (0, import_react17.useRef)(false); + const composingRef = (0, import_react17.useRef)(false); + const autoSelect = store.useState( + (state) => state.virtualFocus && autoSelectProp + ); + const inline = autoComplete === "inline" || autoComplete === "both"; + const [canInline, setCanInline] = (0, import_react17.useState)(inline); + useUpdateLayoutEffect(() => { + if (!inline) return; + setCanInline(true); + }, [inline]); + const storeValue = store.useState("value"); + const prevSelectedValueRef = (0, import_react17.useRef)(void 0); + (0, import_react17.useEffect)(() => { + return sync(store, ["selectedValue", "activeId"], (_, prev) => { + prevSelectedValueRef.current = prev.selectedValue; + }); + }, []); + const inlineActiveValue = store.useState((state) => { + var _a; + if (!inline) return; + if (!canInline) return; + if (state.activeValue && Array.isArray(state.selectedValue)) { + if (state.selectedValue.includes(state.activeValue)) return; + if ((_a = prevSelectedValueRef.current) == null ? void 0 : _a.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_react17.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_react17.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_react17.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_react17.useRef)(null); + const getAutoSelectIdProp = useEvent(getAutoSelectId); + const autoSelectIdRef = (0, import_react17.useRef)(null); + (0, import_react17.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 _a, _b; + 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 : (_a = getDefaultAutoSelectId(items)) != null ? _a : store.first(); + autoSelectIdRef.current = autoSelectId; + store.move(autoSelectId != null ? autoSelectId : null); + } else { + const element = (_b = store.item(activeId || store.first())) == null ? void 0 : _b.element; + if (element && "scrollIntoView" in element) { + element.scrollIntoView({ block: "nearest", inline: "nearest" }); + } + } + return; + }, [ + store, + open, + valueUpdated, + storeValue, + autoSelect, + resetValueOnSelect, + getAutoSelectIdProp, + items + ]); + (0, import_react17.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 = { + 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({ + 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({ store, ...props }); + return { autoComplete: "off", ...props }; + } +); +var Combobox = forwardRef22(function Combobox2(props) { + const htmlProps = useCombobox(props); + return createElement3(TagName9, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/IBXZ2LQC.js +var import_react18 = __toESM(require_react(), 1); +var import_jsx_runtime54 = __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({ + store, + value, + hideOnClick, + setValueOnClick, + selectValueOnClick = true, + resetValueOnSelect, + focusOnHover = false, + moveOnKeyPress = true, + getItem: getItemProp, + ...props + }) { + var _a; + 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_react18.useCallback)( + (item) => { + const nextItem = { ...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( + (_a = resetValueOnSelect != null ? resetValueOnSelect : resetValueOnSelectState) != null ? _a : 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 = { + "aria-selected": selected, + ...props + }; + } + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(ComboboxItemValueContext.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(ComboboxItemCheckedContext.Provider, { value: selected != null ? selected : false, children: element }) }), + [value, selected] + ); + const popupRole = (0, import_react18.useContext)(ComboboxListRoleContext); + props = { + role: getItemRole(popupRole), + children: value, + ...props, + onClick, + onKeyDown + }; + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + props = useCompositeItem({ + 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({ 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-item-value.js +var import_react19 = __toESM(require_react(), 1); +var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1); +var TagName11 = "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_runtime55.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({ store, value, userValue, ...props }) { + const context = useComboboxScopedContext(); + store = store || context; + const itemContext = (0, import_react19.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_react19.useMemo)(() => { + if (!itemValue) return; + if (!inputValue) return itemValue; + return splitValue(itemValue, inputValue); + }, [itemValue, inputValue]); + props = { + children, + ...props + }; + return removeUndefinedValues(props); +}); +var ComboboxItemValue = forwardRef22(function ComboboxItemValue2(props) { + const htmlProps = useComboboxItemValue(props); + return createElement3(TagName11, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-label.js +var TagName12 = "label"; +var useComboboxLabel = createHook( + function useComboboxLabel2({ store, ...props }) { + 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 _a; + return (_a = state.baseElement) == null ? void 0 : _a.id; + }); + props = { + htmlFor: comboboxId, + ...props + }; + return removeUndefinedValues(props); + } +); +var ComboboxLabel = memo22( + forwardRef22(function ComboboxLabel2(props) { + const htmlProps = useComboboxLabel(props); + return createElement3(TagName12, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/2G6YEJT4.js +var import_react20 = __toESM(require_react(), 1); +var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1); +var TagName13 = "div"; +var useComboboxList = createHook( + function useComboboxList2({ store, alwaysVisible, ...props }) { + 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_react20.useRef)(null); + const id = useId3(props.id); + const mounted = store.useState("mounted"); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const style = hidden ? { ...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_react20.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 = { + role: "listbox", + "aria-multiselectable": ariaMultiSelectable, + ...props + }; + } + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(ComboboxScopedContextProvider, { value: store, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(ComboboxListRoleContext.Provider, { value: role, children: element }) }), + [store, role] + ); + const setContentElement = id && (!scopedContext || !scopedContextSameStore) ? store.setContentElement : null; + props = { + 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); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/XSIEPKGA.js +var import_react21 = __toESM(require_react(), 1); +var TagValueContext = (0, import_react21.createContext)(null); +var TagRemoveIdContext = (0, import_react21.createContext)( + null +); +var ctx7 = createStoreContext( + [CompositeContextProvider], + [CompositeScopedContextProvider] +); +var useTagContext = ctx7.useContext; +var useTagScopedContext = ctx7.useScopedContext; +var useTagProviderContext = ctx7.useProviderContext; +var TagContextProvider = ctx7.ContextProvider; +var TagScopedContextProvider = ctx7.ScopedContextProvider; + +// node_modules/@ariakit/core/esm/combobox/combobox-store.js +var isTouchSafari = isSafari() && isTouchDevice(); +function createComboboxStore({ + tag, + ...props +} = {}) { + 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({ + ...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({ + ...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 = { + ...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 { + ...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/SVN33SY6.js +function useComboboxStoreOptions(props) { + const tag = useTagContext(); + props = { + ...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/combobox/combobox-provider.js +var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1); +function ComboboxProvider(props = {}) { + const store = useComboboxStore(props); + return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(ComboboxContextProvider, { value: store, children: props.children }); +} + +// 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_element26 = __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_element25 = __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_element25.useState)(staticElements); + const [isLoading, setIsLoading] = (0, import_element25.useState)(false); + (0, import_element25.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_element26.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", + { + className: "dataviews-filters__search-widget-listitem-value", + title: element.label, + children: element.label + } + ) + ] + }, + element.value + )) + } + ); +} +function ComboboxList22({ view, filter, onChangeView }) { + const [searchValue, setSearchValue] = (0, import_element26.useState)(""); + const deferredSearchValue = (0, import_element26.useDeferredValue)(searchValue); + const currentFilter = view.filters?.find( + (_filter) => _filter.field === filter.field + ); + const currentValue = getCurrentValue(filter, currentFilter); + const matches = (0, import_element26.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", + { + className: "dataviews-filters__search-widget-listitem-value", + title: element.label, + 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_element27 = __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_element27.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_element27.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_element28 = __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_element28.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_element28.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_element28.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_element28.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_element28.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_element28.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_element28.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_element28.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_element28.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_element28.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_element28.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_element28.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_element28.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_element28.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_element28.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_element28.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_element28.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_element28.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_element28.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_element28.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_element28.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_element29.useRef)(null); + const { filter, view, onChangeView } = commonProps; + const filterInView = view.filters?.find( + (f2) => f2.field === filter.field + ); + let activeElements = []; + const field = (0, import_element29.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_element30 = __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_element30.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_element31 = __toESM(require_element(), 1); +function useFilters(fields, view) { + return (0, import_element31.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_element32.useContext)(dataviews_context_default); + const addFilterRef = (0, import_element32.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_element32.memo)(Filters); + +// packages/dataviews/build-module/components/dataviews-filters/toggle.mjs +var import_element33 = __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_element33.useContext)(dataviews_context_default); + const buttonRef = (0, import_element33.useRef)(null); + const onChangeViewWithFilterVisibility = (0, import_element33.useCallback)( + (_view) => { + onChangeView(_view); + setIsShowingFilter(true); + }, + [onChangeView, setIsShowingFilter] + ); + if (filters.length === 0) { + return null; + } + const hasVisibleFilters = filters.some((filter) => filter.isVisible); + 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 hasPrimaryOrLockedFilters = filters.some( + (filter) => filter.isPrimary || filter.isLocked + ); + const buttonComponent = /* @__PURE__ */ (0, import_jsx_runtime65.jsx)( + import_components26.Button, + { + ref: buttonRef, + className: "dataviews-filters__visibility-toggle", + size: "compact", + icon: funnel_default, + disabled: hasPrimaryOrLockedFilters, + accessibleWhenDisabled: true, + ...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_element33.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_element34 = __toESM(require_element(), 1); +var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1); +function FiltersToggled(props) { + const { isShowingFilter } = (0, import_element34.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_element35 = __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, + hasInitiallyLoaded, + 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_element35.useContext)(dataviews_context_default); + if (!hasInitiallyLoaded) { + return null; + } + 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_element36 = __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, + isLoading, + hasInitiallyLoaded, + hasInfiniteScrollHandler + } = (0, import_element36.useContext)(dataviews_context_default); + const isRefreshing = !!isLoading && hasInitiallyLoaded && !hasInfiniteScrollHandler && !!data?.length; + const isDelayedRefreshing = useDelayedLoading(!!isRefreshing); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data) && [LAYOUT_TABLE, LAYOUT_GRID].includes(view.type); + if (!isRefreshing && (!totalItems || !totalPages || totalPages <= 1 && !hasBulkActions)) { + return null; + } + return (!!totalItems || isRefreshing) && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)( + "div", + { + className: "dataviews-footer", + inert: isRefreshing ? "true" : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)( + Stack, + { + direction: "row", + justify: "end", + align: "center", + className: clsx_default("dataviews-footer__content", { + "is-refreshing": isDelayedRefreshing + }), + 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_element37 = __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_element37.memo)(function Search({ label }) { + const { view, onChangeView } = (0, import_element37.useContext)(dataviews_context_default); + const [search, setSearch, debouncedSearch] = (0, import_compose10.useDebouncedInput)( + view.search + ); + (0, import_element37.useEffect)(() => { + setSearch(view.search ?? ""); + }, [view.search, setSearch]); + const onChangeViewRef = (0, import_element37.useRef)(onChangeView); + const viewRef = (0, import_element37.useRef)(view); + (0, import_element37.useEffect)(() => { + onChangeViewRef.current = onChangeView; + viewRef.current = view; + }, [onChangeView, view]); + (0, import_element37.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_element39 = __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_element38 = __toESM(require_element(), 1); +var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1); +function InfiniteScrollToggle() { + const context = (0, import_element38.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_element39.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_element39.useContext)(dataviews_context_default); + const orderOptions = (0, import_element39.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_element39.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_element39.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 ResetViewButton() { + const { onReset } = (0, import_element39.useContext)(dataviews_context_default); + if (onReset === void 0) { + return null; + } + const isDisabled = onReset === false; + return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + import_components29.Button, + { + variant: "tertiary", + size: "compact", + disabled: isDisabled, + accessibleWhenDisabled: true, + className: "dataviews-view-config__reset-button", + onClick: () => { + if (typeof onReset === "function") { + onReset(); + } + }, + children: (0, import_i18n31.__)("Reset view") + } + ); +} +function DataviewsViewConfigDropdown() { + const { view, onReset } = (0, import_element39.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 + ); + const isModified = typeof onReset === "function"; + 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.jsxs)("div", { className: "dataviews-view-config__toggle-wrapper", children: [ + /* @__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 + } + ), + isModified && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "dataviews-view-config__modified-indicator" }) + ] }); + }, + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + import_components29.__experimentalDropdownContentWrapper, + { + paddingSize: "medium", + className: "dataviews-config__popover-content-wrapper", + children: /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)( + Stack, + { + direction: "column", + className: "dataviews-view-config", + gap: "xl", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)( + Stack, + { + direction: "row", + justify: "space-between", + align: "center", + className: "dataviews-view-config__header", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( + import_components29.__experimentalHeading, + { + level: 2, + className: "dataviews-settings-section__title", + children: (0, import_i18n31.__)("Appearance") + } + ), + /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(ResetViewButton, {}) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + className: "dataviews-view-config__sort-controls", + 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_element39.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_element40 = __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_element40.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_element41 = __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_element41.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_element43 = __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_element42 = __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_element42.useCallback)( + (newValue) => onChange( + setValue({ + item: data, + value: { value: Number(newValue), unit } + }) + ), + [onChange, setValue, data, unit] + ); + const onChangeUnit = (0, import_element42.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 = (value) => { + if (!value) { + return ""; + } + return (0, import_date3.dateI18n)("Y-m-d\\TH:i", (0, import_date3.getDate)(value)); +}; +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_element43.useState)(() => { + const parsedDate = parseDateTime(value); + return parsedDate || /* @__PURE__ */ new Date(); + }); + const inputControlRef = (0, import_element43.useRef)(null); + const validationTimeoutRef = (0, import_element43.useRef)(void 0); + const previousFocusRef = (0, import_element43.useRef)(null); + const onChangeCallback = (0, import_element43.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + (0, import_element43.useEffect)(() => { + return () => { + if (validationTimeoutRef.current) { + clearTimeout(validationTimeoutRef.current); + } + }; + }, []); + const onSelectDate = (0, import_element43.useCallback)( + (newDate) => { + let dateTimeValue; + if (newDate) { + const wpDate = (0, import_date3.dateI18n)("Y-m-d", newDate); + let wpTime; + if (value) { + wpTime = (0, import_date3.dateI18n)("H:i", (0, import_date3.getDate)(value)); + } else { + wpTime = (0, import_date3.dateI18n)("H:i", newDate); + } + const finalDateTime = (0, import_date3.getDate)(`${wpDate}T${wpTime}`); + 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_element43.useCallback)( + (newValue) => { + if (newValue) { + const dateTime = (0, import_date3.getDate)(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: formatDateTime(value), + 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_element44 = __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_element44.useState)(void 0); + const validateRefs = (0, import_element44.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_element44.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_element44.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_element44.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_element44.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_element44.useState)(() => { + const parsedDate = parseDate(value); + return parsedDate || /* @__PURE__ */ new Date(); + }); + const [isTouched, setIsTouched] = (0, import_element44.useState)(false); + const validityTargetRef = (0, import_element44.useRef)(null); + const onChangeCallback = (0, import_element44.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + const onSelectDate = (0, import_element44.useCallback)( + (newDate) => { + const dateValue = newDate ? format(newDate, "yyyy-MM-dd") : void 0; + onChangeCallback(dateValue); + setSelectedPresetId(null); + setIsTouched(true); + }, + [onChangeCallback] + ); + const handlePresetClick = (0, import_element44.useCallback)( + (preset) => { + const presetDate = preset.getValue(); + const dateValue = formatDate(presetDate); + setCalendarMonth(presetDate); + onChangeCallback(dateValue); + setSelectedPresetId(preset.id); + setIsTouched(true); + }, + [onChangeCallback] + ); + const handleManualDateChange = (0, import_element44.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_element44.useCallback)( + (newValue) => { + onChange( + setValue({ + item: data, + value: newValue + }) + ); + }, + [data, onChange, setValue] + ); + const [selectedPresetId, setSelectedPresetId] = (0, import_element44.useState)( + null + ); + const selectedRange = (0, import_element44.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_element44.useState)(() => { + return selectedRange.from || /* @__PURE__ */ new Date(); + }); + const [isTouched, setIsTouched] = (0, import_element44.useState)(false); + const fromInputRef = (0, import_element44.useRef)(null); + const toInputRef = (0, import_element44.useRef)(null); + const updateDateRange = (0, import_element44.useCallback)( + (fromDate, toDate2) => { + if (fromDate && toDate2) { + onChangeCallback([ + formatDate(fromDate), + formatDate(toDate2) + ]); + } else if (!fromDate && !toDate2) { + onChangeCallback(void 0); + } + }, + [onChangeCallback] + ); + const onSelectCalendarRange = (0, import_element44.useCallback)( + (newRange) => { + updateDateRange(newRange?.from, newRange?.to); + setSelectedPresetId(null); + setIsTouched(true); + }, + [updateDateRange] + ); + const handlePresetClick = (0, import_element44.useCallback)( + (preset) => { + const [startDate, endDate] = preset.getValue(); + setCalendarMonth(startDate); + updateDateRange(startDate, endDate); + setSelectedPresetId(preset.id); + setIsTouched(true); + }, + [updateDateRange] + ); + const handleManualDateChange = (0, import_element44.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/select.mjs +var import_components35 = __toESM(require_components(), 1); +var import_element45 = __toESM(require_element(), 1); +var import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1); +var { ValidatedSelectControl } = unlock(import_components35.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_element45.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_runtime77.jsx)(import_components35.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime77.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/adaptive-select.mjs +var import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1); +var ELEMENTS_THRESHOLD = 10; +function AdaptiveSelect(props) { + const { field } = props; + const { elements } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (elements.length >= ELEMENTS_THRESHOLD) { + return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Combobox3, { ...props }); + } + return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Select, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/email.mjs +var import_components37 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-input.mjs +var import_components36 = __toESM(require_components(), 1); +var import_element46 = __toESM(require_element(), 1); +var import_jsx_runtime79 = __toESM(require_jsx_runtime(), 1); +var { ValidatedInputControl: ValidatedInputControl2 } = unlock(import_components36.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_element46.useCallback)( + (newValue) => onChange( + setValue({ + item: data, + value: newValue + }) + ), + [data, setValue, onChange] + ); + return /* @__PURE__ */ (0, import_jsx_runtime79.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_runtime80 = __toESM(require_jsx_runtime(), 1); +function Email({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "email", + prefix: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_components37.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_components37.Icon, { icon: envelope_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/telephone.mjs +var import_components38 = __toESM(require_components(), 1); +var import_jsx_runtime81 = __toESM(require_jsx_runtime(), 1); +function Telephone({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "tel", + prefix: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components38.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components38.Icon, { icon: mobile_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/url.mjs +var import_components39 = __toESM(require_components(), 1); +var import_jsx_runtime82 = __toESM(require_jsx_runtime(), 1); +function Url({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "url", + prefix: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_components39.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_components39.Icon, { icon: link_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-number.mjs +var import_components40 = __toESM(require_components(), 1); +var import_element47 = __toESM(require_element(), 1); +var import_i18n35 = __toESM(require_i18n(), 1); +var import_jsx_runtime83 = __toESM(require_jsx_runtime(), 1); +var { ValidatedNumberControl } = unlock(import_components40.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_element47.useCallback)( + (newValue) => onChange([toNumberOrEmpty(newValue), max]), + [onChange, max] + ); + const onChangeMax = (0, import_element47.useCallback)( + (newValue) => onChange([min, toNumberOrEmpty(newValue)]), + [onChange, min] + ); + return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + import_components40.BaseControl, + { + help: (0, import_i18n35.__)("The max. value must be greater than the min. value."), + children: /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(import_components40.Flex, { direction: "row", gap: 4, children: [ + /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + import_components40.__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_runtime83.jsx)( + import_components40.__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_element47.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_element47.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_runtime83.jsx)( + BetweenControls, + { + value: valueBetween, + onChange: onChangeBetweenControls, + hideLabelFromVision, + step + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime83.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_runtime84 = __toESM(require_jsx_runtime(), 1); +function Integer(props) { + return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/number.mjs +var import_jsx_runtime85 = __toESM(require_jsx_runtime(), 1); +function Number2(props) { + return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/radio.mjs +var import_components41 = __toESM(require_components(), 1); +var import_element48 = __toESM(require_element(), 1); +var import_jsx_runtime86 = __toESM(require_jsx_runtime(), 1); +var { ValidatedRadioControl } = unlock(import_components41.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_element48.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_components41.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime86.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/text.mjs +var import_element49 = __toESM(require_element(), 1); +var import_jsx_runtime87 = __toESM(require_jsx_runtime(), 1); +function Text({ + 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_element49.createElement)(prefix) : void 0, + suffix: suffix ? (0, import_element49.createElement)(suffix) : void 0 + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/toggle.mjs +var import_components42 = __toESM(require_components(), 1); +var import_element50 = __toESM(require_element(), 1); +var import_jsx_runtime88 = __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_element50.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_components43 = __toESM(require_components(), 1); +var import_element51 = __toESM(require_element(), 1); +var import_jsx_runtime89 = __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_element51.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_components44 = __toESM(require_components(), 1); +var import_element52 = __toESM(require_element(), 1); +var import_jsx_runtime90 = __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_element52.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_components44.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_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_element53 = __toESM(require_element(), 1); +var import_jsx_runtime91 = __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_element53.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_element53.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_components45.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_components46 = __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); +var { ValidatedInputControl: ValidatedInputControl3 } = unlock(import_components46.privateApis); +var ColorPickerDropdown = ({ + color, + onColorChange +}) => { + const validColor = color && w(color).isValid() ? color : "#ffffff"; + return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + import_components46.Dropdown, + { + className: "dataviews-controls__color-picker-dropdown", + popoverProps: { resize: false }, + renderToggle: ({ onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + import_components46.Button, + { + onClick: onToggle, + "aria-label": (0, import_i18n36.__)("Open color picker"), + size: "small", + icon: () => /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(import_components46.ColorIndicator, { colorValue: validColor }) + } + ), + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(import_components46.__experimentalDropdownContentWrapper, { paddingSize: "none", children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + import_components46.ColorPicker, + { + color: 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_element54.useCallback)( + (newColor) => { + onChange(setValue({ item: data, value: newColor })); + }, + [data, onChange, setValue] + ); + const handleInputChange = (0, import_element54.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)(import_components46.__experimentalInputControlPrefixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + ColorPickerDropdown, + { + color: value, + onColorChange: handleColorChange + } + ) }) + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/password.mjs +var import_components47 = __toESM(require_components(), 1); +var import_element55 = __toESM(require_element(), 1); +var import_i18n37 = __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_element55.useState)(false); + const toggleVisibility = (0, import_element55.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_components47.__experimentalInputControlSuffixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( + import_components47.Button, + { + icon: isVisible2 ? unseen_default : seen_default, + onClick: toggleVisibility, + size: "small", + label: isVisible2 ? (0, import_i18n37.__)("Hide password") : (0, import_i18n37.__)("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 = { + adaptiveSelect: AdaptiveSelect, + 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: Text, + 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("adaptiveSelect"); + } + 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_i18n38 = __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_i18n38.__)("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_i18n39 = __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_i18n39.__)("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_i18n40 = __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_i18n40.__)("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_i18n41 = __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_i18n41.__)("True"); + } + if (value === false) { + return (0, import_i18n41.__)("False"); + } + return ""; +} +function isValidCustom4(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && ![true, false].includes(value)) { + return (0, import_i18n41.__)("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_i18n42 = __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_i18n42.__)("Value must be an array."); + } + if (!value.every((v2) => typeof v2 === "string")) { + return (0, import_i18n42.__)("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_i18n43 = __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_i18n43.__)("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/hooks/use-data.mjs +var import_element56 = __toESM(require_element(), 1); +function useData(data, isLoading, paginationInfo) { + const previousDataRef = (0, import_element56.useRef)(data); + const previousPaginationInfoRef = (0, import_element56.useRef)(paginationInfo); + const [hasInitiallyLoaded, setHasInitiallyLoaded] = (0, import_element56.useState)( + !isLoading + ); + (0, import_element56.useEffect)(() => { + if (!isLoading) { + previousDataRef.current = data; + previousPaginationInfoRef.current = paginationInfo; + setHasInitiallyLoaded(true); + } + }, [data, isLoading, paginationInfo]); + return { + data: isLoading && previousDataRef.current?.length ? previousDataRef.current : data, + paginationInfo: isLoading && previousDataRef.current?.length ? previousPaginationInfoRef.current : paginationInfo, + hasInitiallyLoaded + }; +} + +// 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, + onReset +}) { + const { infiniteScrollHandler } = paginationInfo; + const containerRef = (0, import_element57.useRef)(null); + const [containerWidth, setContainerWidth] = (0, import_element57.useState)(0); + const resizeObserverRef = (0, import_compose12.useResizeObserver)( + (resizeObserverEntries) => { + setContainerWidth( + resizeObserverEntries[0].borderBoxSize[0].inlineSize + ); + }, + { box: "border-box" } + ); + const [selectionState, setSelectionState] = (0, import_element57.useState)([]); + const isUncontrolled = selectionProperty === void 0 || onChangeSelection === void 0; + const selection = isUncontrolled ? selectionState : selectionProperty; + const [openedFilter, setOpenedFilter] = (0, import_element57.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_element57.useMemo)(() => normalizeFields(fields), [fields]); + const _selection = (0, import_element57.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_element57.useMemo)( + () => (filters || []).some( + (filter) => filter.isPrimary || filter.isLocked + ), + [filters] + ); + const [isShowingFilter, setIsShowingFilter] = (0, import_element57.useState)( + hasPrimaryOrLockedFilters + ); + (0, import_element57.useEffect)(() => { + if (hasPrimaryOrLockedFilters && !isShowingFilter) { + setIsShowingFilter(true); + } + }, [hasPrimaryOrLockedFilters, isShowingFilter]); + (0, import_element57.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_element57.useMemo)( + () => Object.fromEntries( + Object.entries(defaultLayoutsProperty).filter( + ([layoutType]) => { + return dataViewsLayouts.some( + (viewLayout) => viewLayout.type === layoutType + ); + } + ) + ), + [defaultLayoutsProperty] + ); + const { + data: displayData, + paginationInfo: displayPaginationInfo, + hasInitiallyLoaded + } = useData(data, isLoading, paginationInfo); + if (!defaultLayouts[view.type]) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)( + dataviews_context_default.Provider, + { + value: { + view, + onChangeView, + fields: _fields, + actions, + data: displayData, + isLoading, + paginationInfo: displayPaginationInfo, + selection: _selection, + onChangeSelection: setSelectionWithChange, + openedFilter, + setOpenedFilter, + getItemId: getItemId2, + getItemLevel, + isItemClickable, + onClickItem, + renderItemLink, + containerWidth, + containerRef, + resizeObserverRef, + defaultLayouts, + filters, + isShowingFilter, + setIsShowingFilter, + config, + empty, + hasInitiallyLoaded, + hasInfiniteScrollHandler: !!infiniteScrollHandler, + onReset + }, + 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; + +// 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_i18n44 = __toESM(require_i18n()); +import { useNavigate } from "@wordpress/route"; +function useEditNavigationAction() { + const navigate = useNavigate(); + return { + id: "edit", + label: (0, import_i18n44.__)("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_element58 = __toESM(require_element()); +var import_i18n45 = __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_element58.useState)(""); + const [isBusy, setIsBusy] = (0, import_element58.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_i18n45.__)("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_i18n45.sprintf)( + /* translators: %s: error message describing why the navigation menu could not be created. */ + (0, import_i18n45.__)("Unable to create navigation menu: %s"), + errorMessage + ), + { + type: "snackbar" + } + ); + } + setIsBusy(false); + closeModal?.(); + }; + return /* @__PURE__ */ React.createElement( + import_components48.Modal, + { + title: (0, import_i18n45.__)("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_i18n45.__)("Name"), + placeholder: (0, import_i18n45.__)("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_i18n45.__)("Cancel") + ), /* @__PURE__ */ React.createElement( + import_components48.Button, + { + variant: "primary", + type: "submit", + "aria-busy": isBusy, + disabled: isBusy || !menuTitle?.trim(), + accessibleWhenDisabled: true + }, + (0, import_i18n45.__)("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_element59.useMemo)(() => { + return getDefaultView(); + }, []); + const handleQueryParamsChange = (0, import_element59.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_element59.useState)(false); + const editAction = useEditNavigationAction(); + const postTypeActions = usePostActions({ + postType: NAVIGATION_POST_TYPE2, + context: "list" + }); + const actions = (0, import_element59.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_element59.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_i18n46.__)("Navigation"), + className: "navigation-page", + hasPadding: false, + actions: /* @__PURE__ */ React.createElement( + import_components49.Button, + { + variant: "primary", + size: "compact", + onClick: () => setShowAddModal(true) + }, + (0, import_i18n46.__)("Add New") + ) + }, + /* @__PURE__ */ React.createElement( + dataviews_default, + { + data: navigationMenus, + fields, + view, + onChangeView: updateView, + isLoading: isResolving || !fields, + actions, + paginationInfo: { + totalItems, + totalPages + }, + defaultLayouts: { + list: {} + }, + getItemId, + selection, + onReset: isModified ? resetToDefault : false, + 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..c919e50586a07 --- /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' => 'a885dc9fca8de5745946'); \ 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..e48ff26ec5b51 --- /dev/null +++ b/src/wp-includes/build/routes/navigation-list/content.min.js @@ -0,0 +1,14 @@ +var wh=Object.create;var pc=Object.defineProperty;var yh=Object.getOwnPropertyDescriptor;var Sh=Object.getOwnPropertyNames;var Ch=Object.getPrototypeOf,_h=Object.prototype.hasOwnProperty;var De=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Eh=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Sh(e))!_h.call(t,n)&&n!==r&&pc(t,n,{get:()=>e[n],enumerable:!(o=yh(e,n))||o.enumerable});return t};var c=(t,e,r)=>(r=t!=null?wh(Ch(t)):{},Eh(e||!t||!t.__esModule?pc(r,"default",{value:t,enumerable:!0}):r,t));var Is=De((jy,vc)=>{vc.exports=window.wp.coreData});var j=De((Wy,gc)=>{gc.exports=window.wp.element});var U=De((zy,hc)=>{hc.exports=window.wp.i18n});var G=De((Gy,bc)=>{bc.exports=window.wp.components});var V=De((qy,xc)=>{xc.exports=window.ReactJSXRuntime});var br=De((a1,Vc)=>{Vc.exports=window.wp.data});var Ts=De((s1,Nc)=>{Nc.exports=window.wp.preferences});var Et=De((w1,kc)=>{kc.exports=window.wp.compose});var le=De((y1,Mc)=>{Mc.exports=window.React});var Qc=De(($1,Xc)=>{Xc.exports=window.ReactDOM});var ef=De(Jc=>{"use strict";var Bo=le();function zh(t,e){return t===e&&(t!==0||1/t===1/e)||t!==t&&e!==e}var Gh=typeof Object.is=="function"?Object.is:zh,qh=Bo.useState,Yh=Bo.useEffect,Uh=Bo.useLayoutEffect,$h=Bo.useDebugValue;function Kh(t,e){var r=e(),o=qh({inst:{value:r,getSnapshot:e}}),n=o[0].inst,i=o[1];return Uh(function(){n.value=r,n.getSnapshot=e,Ws(n)&&i({inst:n})},[t,r,e]),Yh(function(){return Ws(n)&&i({inst:n}),t(function(){Ws(n)&&i({inst:n})})},[t]),$h(r),r}function Ws(t){var e=t.getSnapshot;t=t.value;try{var r=e();return!Gh(t,r)}catch{return!0}}function Zh(t,e){return e()}var Xh=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?Zh:Kh;Jc.useSyncExternalStore=Bo.useSyncExternalStore!==void 0?Bo.useSyncExternalStore:Xh});var rf=De((Z1,tf)=>{"use strict";tf.exports=ef()});var ye=De((J1,nf)=>{nf.exports=window.wp.primitives});var Il=De((KS,af)=>{af.exports=window.wp.privateApis});var Tl=De((nC,vf)=>{vf.exports=window.wp.keycodes});var Xm=De((PO,Na)=>{var $m={\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"},Km=Object.keys($m).join("|"),e0=new RegExp(Km,"g"),t0=new RegExp(Km,"");function r0(t){return $m[t]}var Zm=function(t){return t.replace(e0,r0)},o0=function(t){return!!t.match(t0)};Na.exports=Zm;Na.exports.has=o0;Na.exports.remove=Zm});var lp=De((DO,sp)=>{"use strict";sp.exports=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var o,n,i;if(Array.isArray(e)){if(o=e.length,o!=r.length)return!1;for(n=o;n--!==0;)if(!t(e[n],r[n]))return!1;return!0}if(e instanceof Map&&r instanceof Map){if(e.size!==r.size)return!1;for(n of e.entries())if(!r.has(n[0]))return!1;for(n of e.entries())if(!t(n[1],r.get(n[0])))return!1;return!0}if(e instanceof Set&&r instanceof Set){if(e.size!==r.size)return!1;for(n of e.entries())if(!r.has(n[0]))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(r)){if(o=e.length,o!=r.length)return!1;for(n=o;n--!==0;)if(e[n]!==r[n])return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(i=Object.keys(e),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(!t(e[a],r[a]))return!1}return!0}return e!==e&&r!==r}});var No=De((eV,jp)=>{jp.exports=window.wp.date});var mv=De((KV,dv)=>{dv.exports=window.wp.warning});var rh=De((s3,th)=>{th.exports=window.wp.editor});var lh=De((v3,sh)=>{sh.exports=window.wp.notices});var dh=c(Is()),fo=c(j());import{useNavigate as Ry,useSearch as Vy}from"@wordpress/route";function wc(t){var e,r,o="";if(typeof t=="string"||typeof t=="number")o+=t;else if(typeof t=="object")if(Array.isArray(t)){var n=t.length;for(e=0;e(0,Sc.jsx)(o,{ref:i,className:W("admin-ui-navigable-region",e),"aria-label":r,role:"region",tabIndex:"-1",...n,children:t}));Cc.displayName="NavigableRegion";var _c=Cc;var Mr=c(G(),1);var Ec=c(G(),1),{Fill:Pc,Slot:Ac}=(0,Ec.createSlotFill)("SidebarToggle");var hr=c(V(),1);function Ic({breadcrumbs:t,badges:e,title:r,subTitle:o,actions:n,showSidebarToggle:i=!0}){return(0,hr.jsxs)(Mr.__experimentalVStack,{className:"admin-ui-page__header",as:"header",children:[(0,hr.jsxs)(Mr.__experimentalHStack,{justify:"space-between",spacing:2,children:[(0,hr.jsxs)(Mr.__experimentalHStack,{spacing:2,justify:"left",children:[i&&(0,hr.jsx)(Ac,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),r&&(0,hr.jsx)(Mr.__experimentalHeading,{as:"h2",level:3,weight:500,truncate:!0,children:r}),t,e]}),(0,hr.jsx)(Mr.__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 Cn=c(V(),1);function Oc({breadcrumbs:t,badges:e,title:r,subTitle:o,children:n,className:i,actions:a,hasPadding:l=!1,showSidebarToggle:s=!0}){let u=W("admin-ui-page",i);return(0,Cn.jsxs)(_c,{className:u,ariaLabel:r,children:[(r||t||e)&&(0,Cn.jsx)(Ic,{breadcrumbs:t,badges:e,title:r,subTitle:o,actions:a,showSidebarToggle:s}),l?(0,Cn.jsx)("div",{className:"admin-ui-page__content has-padding",children:n}):n]})}Oc.SidebarToggleFill=Pc;var Os=Oc;var dc=c(U());var Tc=Object.prototype.hasOwnProperty;function Rc(t,e,r){for(r of t.keys())if(Fr(r,e))return r}function Fr(t,e){var r,o,n;if(t===e)return!0;if(t&&e&&(r=t.constructor)===e.constructor){if(r===Date)return t.getTime()===e.getTime();if(r===RegExp)return t.toString()===e.toString();if(r===Array){if((o=t.length)===e.length)for(;o--&&Fr(t[o],e[o]););return o===-1}if(r===Set){if(t.size!==e.size)return!1;for(o of t)if(n=o,n&&typeof n=="object"&&(n=Rc(e,n),!n)||!e.has(n))return!1;return!0}if(r===Map){if(t.size!==e.size)return!1;for(o of t)if(n=o[0],n&&typeof n=="object"&&(n=Rc(e,n),!n)||!Fr(o[1],e.get(n)))return!1;return!0}if(r===ArrayBuffer)t=new Uint8Array(t),e=new Uint8Array(e);else if(r===DataView){if((o=t.byteLength)===e.byteLength)for(;o--&&t.getInt8(o)===e.getInt8(o););return o===-1}if(ArrayBuffer.isView(t)){if((o=t.byteLength)===e.byteLength)for(;o--&&t[o]===e[o];);return o===-1}if(!r||typeof t=="object"){o=0;for(r in t)if(Tc.call(t,r)&&++o&&!Tc.call(e,r)||!(r in e)||!Fr(t[r],e[r]))return!1;return Object.keys(e).length===o}}return t!==t&&e!==e}var _n=c(j(),1),pi=c(br(),1),Ns=c(Ts(),1);function Rs(t,e,r){return`dataviews-${t}-${e}-${r}`}var Dc=["titleField","mediaField","descriptionField","showTitle","showMedia","showDescription","showLevels","infiniteScrollEnabled"];function Vs(t,e,r){if(!e)return t;let o=t;for(let n of Dc)n in e&&(o={...o,[n]:e[n]});if(e.filters&&e.filters.length>0){let n=new Set(e.filters.map(a=>a.field)),i=(t.filters??[]).filter(a=>!n.has(a.field));o={...o,filters:[...i,...e.filters]}}return e.sort&&r&&t.sort?.field===r.sort?.field&&t.sort?.direction===r.sort?.direction&&(o={...o,sort:e.sort}),e.layout&&(o={...o,layout:{...o.layout,...e.layout}}),e.groupBy&&(o={...o,groupBy:e.groupBy}),o}function mi(t,e,r){if(!e)return t;let o=t;for(let n of Dc)if(n in e){let{[n]:i,...a}=o;o=a}if(e.filters&&e.filters.length>0){let n=new Set(e.filters.map(i=>i.field));o={...o,filters:(t.filters??[]).filter(i=>!n.has(i.field))}}if(e.sort&&t.sort?.field===e.sort.field&&t.sort?.direction===e.sort.direction&&(o={...o,sort:r?.sort}),e.layout&&"layout"in o&&o.layout){let n={...o.layout};for(let i of Object.keys(e.layout))delete n[i];o={...o,layout:Object.keys(n).length>0?n:void 0}}if(e.groupBy&&"groupBy"in o){let{groupBy:n,...i}=o;o=i}return o}function Ah(t,e){let r={...t};for(let o of e)delete r[o];return r}function Ds(t){let{kind:e,name:r,slug:o,defaultView:n,activeViewOverrides:i,queryParams:a,onChangeQueryParams:l}=t,s=Rs(e,r,o),u=(0,pi.useSelect)(S=>S(Ns.store).get("core/views",s),[s]),{set:f}=(0,pi.useDispatch)(Ns.store),m=u??n,d=Number(a?.page??m.page??1),p=a?.search??m.search??"",v=(0,_n.useMemo)(()=>Vs({...m,page:d,search:p},i,n),[m,d,p,i,n]),y=!!u,g=(0,_n.useCallback)(S=>{let A={page:S?.page,search:S?.search},T=mi(Ah(S,["page","search"]),i,n);l&&!Fr(A,{page:d,search:p})&&l(A);let O=mi(m,i,n),k=mi(n,i,n);Fr(O,T)||(Fr(T,k)?f("core/views",s,void 0):f("core/views",s,T))},[l,d,p,m,n,i,f,s]),b=(0,_n.useCallback)(()=>{f("core/views",s,void 0)},[s,f]);return{view:v,isModified:y,updateView:g,resetToDefault:b}}var Ih=c(br(),1),Oh=c(Ts(),1);var bt=c(j(),1),Es=c(Et(),1);var Lc=c(le(),1),Fc={};function ks(t,e){let r=Lc.useRef(Fc);return r.current===Fc&&(r.current=t(e)),r}function Ms(t,...e){let r=new URL(`https://base-ui.com/production-error/${t}`);return e.forEach(o=>r.searchParams.append("args[]",o)),`Base UI error #${t}; visit ${r} for the full message.`}var gi=c(le(),1);function Fs(t,e,r,o){let n=ks(Hc).current;return Rh(n,t,e,r,o)&&jc(n,[t,e,r,o]),n.callback}function Bc(t){let e=ks(Hc).current;return Vh(e,t)&&jc(e,t),e.callback}function Hc(){return{callback:null,cleanup:null,refs:[]}}function Rh(t,e,r,o,n){return t.refs[0]!==e||t.refs[1]!==r||t.refs[2]!==o||t.refs[3]!==n}function Vh(t,e){return t.refs.length!==e.length||t.refs.some((r,o)=>r!==e[o])}function jc(t,e){if(t.refs=e,e.every(r=>r==null)){t.callback=null;return}t.callback=r=>{if(t.cleanup&&(t.cleanup(),t.cleanup=null),r!=null){let o=Array(e.length).fill(null);for(let n=0;n{for(let n=0;n=t}function Ls(t){if(!Gc.isValidElement(t))return null;let e=t,r=e.props;return(zc(19)?r?.ref:e.ref)??null}function En(t,e){if(t&&!e)return t;if(!t&&e)return e;if(t||e)return{...t,...e}}function qc(t,e){let r={};for(let o in t){let n=t[o];if(e?.hasOwnProperty(o)){let i=e[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 Yc(t,e){return typeof t=="function"?t(e):t}function Uc(t,e){return typeof t=="function"?t(e):t}var An={};function vi(t,e,r,o,n){let i={...Bs(t,An)};return e&&(i=Pn(i,e)),r&&(i=Pn(i,r)),o&&(i=Pn(i,o)),n&&(i=Pn(i,n)),i}function $c(t){if(t.length===0)return An;if(t.length===1)return Bs(t[0],An);let e={...Bs(t[0],An)};for(let r=1;r=65&&n<=90&&(typeof e=="function"||typeof e>"u")}function Kc(t){return typeof t=="function"}function Bs(t,e){return Kc(t)?t(e):t??An}function Mh(t,e){return e?t?r=>{if(Lh(r)){let n=r;Fh(n);let i=e(n);return n.baseUIHandlerPrevented||t?.(n),i}let o=e(r);return t?.(r),o}:e:t}function Fh(t){return t.preventBaseUIHandler=()=>{t.baseUIHandlerPrevented=!0},t}function Hs(t,e){return e?t?e+" "+t:e:t}function Lh(t){return t!=null&&typeof t=="object"&&"nativeEvent"in t}var Bh=Object.freeze([]),Lr=Object.freeze({});var js=c(le(),1);function Zc(t,e,r={}){let o=e.render,n=Hh(e,r);if(r.enabled===!1)return null;let i=r.state??Lr;return jh(t,o,n,i)}function Hh(t,e={}){let{className:r,style:o,render:n}=t,{state:i=Lr,ref:a,props:l,stateAttributesMapping:s,enabled:u=!0}=e,f=u?Yc(r,i):void 0,m=u?Uc(o,i):void 0,d=u?qc(i,s):Lr,p=u?En(d,Array.isArray(l)?$c(l):l)??Lr:Lr;return typeof document<"u"&&(u?Array.isArray(a)?p.ref=Bc([p.ref,Ls(n),...a]):p.ref=Fs(p.ref,Ls(n),a):Fs(null,null)),u?(f!==void 0&&(p.className=Hs(p.className,f)),m!==void 0&&(p.style=En(p.style,m)),p):Lr}function jh(t,e,r,o){if(e){if(typeof e=="function")return e(r,o);let n=vi(r,e.props);return n.ref=r.ref,gi.cloneElement(e,n)}if(t&&typeof t=="string")return Wh(t,r);throw new Error(Ms(8))}function Wh(t,e){return t==="button"?(0,js.createElement)("button",{type:"button",...e,key:e.key}):t==="img"?(0,js.createElement)("img",{alt:"",...e,key:e.key}):gi.createElement(t,e)}function of(t){return Zc(t.defaultTagName??"div",t,t)}var hi=c(ye(),1),zs=c(V(),1),Gs=(0,zs.jsx)(hi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,zs.jsx)(hi.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 bi=c(ye(),1),qs=c(V(),1),Ys=(0,qs.jsx)(bi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,qs.jsx)(bi.Path,{d:"M20 11.2H6.8l3.7-3.7-1-1L3.9 12l5.6 5.5 1-1-3.7-3.7H20z"})});var xi=c(ye(),1),Us=c(V(),1),$s=(0,Us.jsx)(xi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Us.jsx)(xi.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 wi=c(ye(),1),Ks=c(V(),1),Zs=(0,Ks.jsx)(wi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ks.jsx)(wi.Path,{d:"M12 3.9 6.5 9.5l1 1 3.8-3.7V20h1.5V6.8l3.7 3.7 1-1z"})});var yi=c(ye(),1),Xs=c(V(),1),Si=(0,Xs.jsx)(yi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Xs.jsx)(yi.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 Ci=c(ye(),1),Qs=c(V(),1),_i=(0,Qs.jsx)(Ci.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Qs.jsx)(Ci.Path,{fillRule:"evenodd",clipRule:"evenodd",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"})});var Ei=c(ye(),1),Js=c(V(),1),In=(0,Js.jsx)(Ei.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Js.jsx)(Ei.Path,{d:"M16.5 7.5 10 13.9l-2.5-2.4-1 1 3.5 3.6 7.5-7.6z"})});var Pi=c(ye(),1),el=c(V(),1),On=(0,el.jsx)(Pi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,el.jsx)(Pi.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 Ai=c(ye(),1),tl=c(V(),1),rl=(0,tl.jsx)(Ai.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,tl.jsx)(Ai.Path,{fillRule:"evenodd",clipRule:"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"})});var Ii=c(ye(),1),ol=c(V(),1),nl=(0,ol.jsx)(Ii.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,ol.jsx)(Ii.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 Oi=c(ye(),1),il=c(V(),1),al=(0,il.jsx)(Oi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,il.jsx)(Oi.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 Ti=c(ye(),1),sl=c(V(),1),ll=(0,sl.jsx)(Ti.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,sl.jsx)(Ti.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 Ri=c(ye(),1),ul=c(V(),1),cl=(0,ul.jsx)(Ri.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,ul.jsx)(Ri.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 Vi=c(ye(),1),fl=c(V(),1),Tn=(0,fl.jsx)(Vi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,fl.jsx)(Vi.Path,{d:"M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z"})});var Ni=c(ye(),1),dl=c(V(),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:"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 Di=c(ye(),1),pl=c(V(),1),vl=(0,pl.jsx)(Di.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,pl.jsx)(Di.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 ki=c(ye(),1),gl=c(V(),1),Rn=(0,gl.jsx)(ki.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,gl.jsx)(ki.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var Mi=c(ye(),1),hl=c(V(),1),Fi=(0,hl.jsx)(Mi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,hl.jsx)(Mi.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 Li=c(ye(),1),bl=c(V(),1),xl=(0,bl.jsx)(Li.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,bl.jsx)(Li.Path,{d:"m19 7-3-3-8.5 8.5-1 4 4-1L19 7Zm-7 11.5H5V20h7v-1.5Z"})});var Bi=c(ye(),1),wl=c(V(),1),Hi=(0,wl.jsx)(Bi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,wl.jsx)(Bi.Path,{d:"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"})});var ji=c(ye(),1),yl=c(V(),1),Sl=(0,yl.jsx)(ji.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,yl.jsx)(ji.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 Wi=c(ye(),1),Cl=c(V(),1),_l=(0,Cl.jsx)(Wi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Cl.jsx)(Wi.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 zi=c(ye(),1),El=c(V(),1),Pl=(0,El.jsx)(zi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,El.jsx)(zi.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 Gi=c(ye(),1),Al=c(V(),1),Vn=(0,Al.jsx)(Gi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Al.jsx)(Gi.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 sf=c(j(),1);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='71d20935c2']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","71d20935c2"),t.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")),document.head.appendChild(t)}var Qh={stack:"_19ce0419607e1896__stack"},Jh={xs:"var(--wpds-dimension-gap-xs, 4px)",sm:"var(--wpds-dimension-gap-sm, 8px)",md:"var(--wpds-dimension-gap-md, 12px)",lg:"var(--wpds-dimension-gap-lg, 16px)",xl:"var(--wpds-dimension-gap-xl, 24px)","2xl":"var(--wpds-dimension-gap-2xl, 32px)","3xl":"var(--wpds-dimension-gap-3xl, 40px)"},F=(0,sf.forwardRef)(function({direction:e,gap:r,align:o,justify:n,wrap:i,render:a,...l},s){let u={gap:r&&Jh[r],alignItems:o,justifyContent:n,flexDirection:e,flexWrap:i};return of({render:a,ref:s,props:vi(l,{style:u,className:Qh.stack})})});var Ki=c(j(),1);var Ol=c(U(),1);var Ce="isAny",_e="isNone",nt="isAll",it="isNotAll",ft="between",dt="inThePast",xt="over",Ee="is",Pe="isNot",Br="lessThan",Hr="greaterThan",jr="lessThanOrEqual",Wr="greaterThanOrEqual",zr="before",Gr="after",qr="beforeInc",Yr="afterInc",Ut="contains",$t="notContains",Kt="startsWith",Ur="on",$r="notOn",qi=["asc","desc"],lf={asc:"\u2191",desc:"\u2193"},Yi={asc:"ascending",desc:"descending"},Ui={asc:(0,Ol.__)("Sort ascending"),desc:(0,Ol.__)("Sort descending")},uf={asc:Zs,desc:Gs},Ho="table",$i="grid",cf="list",ff="activity",df="pickerGrid",mf="pickerTable";var pf=(0,Ki.createContext)({view:{type:Ho},onChangeView:()=>{},fields:[],data:[],paginationInfo:{totalItems:0,totalPages:0},selection:[],onChangeSelection:()=>{},setOpenedFilter:()=>{},openedFilter:null,getItemId:t=>t.id,isItemClickable:()=>!0,renderItemLink:void 0,containerWidth:0,containerRef:(0,Ki.createRef)(),resizeObserverRef:()=>{},defaultLayouts:{list:{},grid:{},table:{}},filters:[],isShowingFilter:!1,setIsShowingFilter:()=>{},hasInitiallyLoaded:!1,hasInfiniteScrollHandler:!1,config:{perPageSizes:[]}});pf.displayName="DataViewsContext";var q=pf;var Sr=c(U(),1);var bo=c(U(),1),oa=c(G(),1),wt=c(j(),1),Ml=c(Tl(),1);var gf=c(G(),1),hf=c(U(),1),bf=c(V(),1);function Kr({selection:t,onChangeSelection:e,item:r,getItemId:o,titleField:n,disabled:i,...a}){let l=o(r),s=!i&&t.includes(l),u=n?.getValue?.({item:r})||(0,hf.__)("(no title)");return(0,bf.jsx)(gf.CheckboxControl,{className:"dataviews-selection-checkbox","aria-label":u,"aria-disabled":i,checked:s,onChange:()=>{i||e(t.includes(l)?t.filter(f=>l!==f):[...t,l])},...a})}var go=c(G(),1),yf=c(U(),1),Wo=c(j(),1);var Sf=c(br(),1),Rl=c(Et(),1);var xf=c(Il(),1),{lock:aC,unlock:K}=(0,xf.__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(V(),1),{Menu:jo,kebabCase:eb}=K(go.privateApis);function tb({action:t,onClick:e,items:r,variant:o}){let n=typeof t.label=="string"?t.label:t.label(r);return(0,he.jsx)(go.Button,{disabled:!!t.disabled,accessibleWhenDisabled:!0,size:"compact",variant:o,onClick:e,children:n})}function rb({action:t,onClick:e,items:r}){let o=typeof t.label=="string"?t.label:t.label(r);return(0,he.jsx)(jo.Item,{disabled:t.disabled,onClick:e,children:(0,he.jsx)(jo.ItemLabel,{children:o})})}function ho({action:t,items:e,closeModal:r}){let o=typeof t.label=="string"?t.label:t.label(e),n=typeof t.modalHeader=="function"?t.modalHeader(e):t.modalHeader;return(0,he.jsx)(go.Modal,{title:n||o,__experimentalHideHeader:!!t.hideModalHeader,onRequestClose:r,focusOnMount:t.modalFocusOnMount??!0,size:t.modalSize||"medium",overlayClassName:`dataviews-action-modal dataviews-action-modal__${eb(t.id)}`,children:(0,he.jsx)(t.RenderModal,{items:e,closeModal:r})})}function Vl({actions:t,item:e,registry:r,setActiveModalAction:o}){let{primaryActions:n,regularActions:i}=(0,Wo.useMemo)(()=>t.reduce((l,s)=>((s.isPrimary?l.primaryActions:l.regularActions).push(s),l),{primaryActions:[],regularActions:[]}),[t]),a=l=>l.map(s=>(0,he.jsx)(rb,{action:s,onClick:()=>{if("RenderModal"in s){o(s);return}s.callback([e],{registry:r})},items:[e]},s.id));return(0,he.jsxs)(jo.Group,{children:[a(n),a(i)]})}function zo({item:t,actions:e,isCompact:r}){let o=(0,Sf.useRegistry)(),{primaryActions:n,eligibleActions:i}=(0,Wo.useMemo)(()=>{let l=e.filter(u=>!u.isEligible||u.isEligible(t));return{primaryActions:l.filter(u=>u.isPrimary),eligibleActions:l}},[e,t]),a=(0,Rl.useViewportMatch)("medium","<");return r?(0,he.jsx)(wf,{item:t,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)(Nl,{item:t,actions:n,registry:o}),(n.lengthi(null)})]})}function Nl({item:t,actions:e,registry:r,buttonVariant:o}){let[n,i]=(0,Wo.useState)(null);return(0,Rl.useViewportMatch)("medium","<")||!Array.isArray(e)||e.length===0?null:(0,he.jsxs)(he.Fragment,{children:[e.map(l=>(0,he.jsx)(tb,{action:l,onClick:()=>{if("RenderModal"in l){i(l);return}l.callback([t],{registry:r})},items:[t],variant:o},l.id)),!!n&&(0,he.jsx)(ho,{action:n,items:[t],closeModal:()=>i(null)})]})}var Go=c(G(),1),Zi=c(U(),1),at=c(j(),1),Pf=c(br(),1);var Dl=c(Et(),1);var Zr=c(U(),1);function Cf(t,e,r){return t>0?(0,Zr.sprintf)((0,Zr._n)("%d Item selected","%d Items selected",t),t):r>e?(0,Zr.sprintf)((0,Zr._n)("%1$d of %2$d Item","%1$d of %2$d Items",r),e,r):(0,Zr.sprintf)((0,Zr._n)("%d Item","%d Items",e),e)}var ze=c(V(),1);function ob({action:t,items:e,ActionTriggerComponent:r}){let[o,n]=(0,at.useState)(!1);return(0,ze.jsxs)(ze.Fragment,{children:[(0,ze.jsx)(r,{...{action:t,onClick:()=>{n(!0)},items:e}}),o&&(0,ze.jsx)(ho,{action:t,items:e,closeModal:()=>n(!1)})]})}function Xi(t,e){return(0,at.useMemo)(()=>t.some(r=>r.supportsBulk&&(!r.isEligible||r.isEligible(e))),[t,e])}function qo(t,e){return(0,at.useMemo)(()=>e.some(r=>t.some(o=>o.supportsBulk&&(!o.isEligible||o.isEligible(r)))),[t,e])}function Nn({selection:t,onChangeSelection:e,data:r,actions:o,getItemId:n}){let i=(0,at.useMemo)(()=>r.filter(s=>o.some(u=>u.supportsBulk&&(!u.isEligible||u.isEligible(s)))),[r,o]),a=r.filter(s=>t.includes(n(s))&&i.includes(s)),l=a.length===i.length;return(0,ze.jsx)(Go.CheckboxControl,{className:"dataviews-view-table-selection-checkbox",checked:l,indeterminate:!l&&!!a.length,onChange:()=>{e(l?[]:i.map(s=>n(s)))},"aria-label":l?(0,Zi.__)("Deselect all"):(0,Zi.__)("Select all")})}function _f({action:t,onClick:e,isBusy:r,items:o}){let n=typeof t.label=="string"?t.label:t.label(o);return(0,Dl.useViewportMatch)("medium","<")?(0,ze.jsx)(Go.Button,{disabled:r,accessibleWhenDisabled:!0,label:n,icon:t.icon,size:"compact",onClick:e,isBusy:r}):(0,ze.jsx)(Go.Button,{disabled:r,accessibleWhenDisabled:!0,size:"compact",onClick:e,isBusy:r,children:n})}var Af=[];function nb({action:t,selectedItems:e,actionInProgress:r,setActionInProgress:o}){let n=(0,Pf.useRegistry)(),i=(0,at.useMemo)(()=>e.filter(a=>!t.isEligible||t.isEligible(a)),[t,e]);return"RenderModal"in t?(0,ze.jsx)(ob,{action:t,items:i,ActionTriggerComponent:_f},t.id):(0,ze.jsx)(_f,{action:t,onClick:async()=>{o(t.id),await t.callback(e,{registry:n}),o(null)},items:i,isBusy:r===t.id},t.id)}function Ef(t,e,r,o,n,i,a,l,s,u){let f=Cf(o.length,t.length,u.totalItems);return(0,ze.jsxs)(F,{direction:"row",className:"dataviews-bulk-actions-footer__container",gap:"md",align:"center",children:[(0,ze.jsx)(Nn,{selection:o,onChangeSelection:s,data:t,actions:e,getItemId:r}),(0,ze.jsx)("span",{className:"dataviews-bulk-actions-footer__item-count",children:f}),(0,ze.jsxs)(F,{direction:"row",className:"dataviews-bulk-actions-footer__action-buttons",gap:"xs",children:[n.map(m=>(0,ze.jsx)(nb,{action:m,selectedItems:i,actionInProgress:a,setActionInProgress:l},m.id)),i.length>0&&(0,ze.jsx)(Go.Button,{icon:On,showTooltip:!0,tooltipPosition:"top",size:"compact",label:(0,Zi.__)("Cancel"),disabled:!!a,accessibleWhenDisabled:!1,onClick:()=>{s(Af)}})]})]})}function ib({selection:t,actions:e,onChangeSelection:r,data:o,getItemId:n,paginationInfo:i}){let[a,l]=(0,at.useState)(null),s=(0,at.useRef)(void 0),u=(0,Dl.useViewportMatch)("medium","<"),f=(0,at.useMemo)(()=>e.filter(v=>v.supportsBulk),[e]),m=(0,at.useMemo)(()=>o.filter(v=>f.some(y=>!y.isEligible||y.isEligible(v))),[o,f]),d=(0,at.useMemo)(()=>o.filter(v=>t.includes(n(v))&&m.includes(v)),[t,o,n,m]),p=(0,at.useMemo)(()=>e.filter(v=>v.supportsBulk&&(!u||v.icon)&&d.some(y=>!v.isEligible||v.isEligible(y))),[e,d,u]);if(a)s.current||(s.current=Ef(o,e,n,t,p,d,a,l,r,i));else return s.current&&(s.current=void 0),Ef(o,e,n,t,p,d,a,l,r,i);return s.current}function Qi(){let{data:t,selection:e,actions:r=Af,onChangeSelection:o,getItemId:n,paginationInfo:i}=(0,at.useContext)(q);return(0,ze.jsx)(ib,{selection:e,onChangeSelection:o,data:t,actions:r,getItemId:n,paginationInfo:i})}var xr=c(U(),1);var wr=c(G(),1),Xr=c(j(),1);function Ji(t,e){let r=[t?.titleField,t?.mediaField,t?.descriptionField].filter(Boolean);return e.filter(o=>!r.includes(o.id)&&o.type!=="media"&&o.enableHiding!==!1)}var X=c(V(),1),{Menu:ue}=K(wr.privateApis);function ab({children:t}){return Xr.Children.toArray(t).filter(Boolean).map((e,r)=>(0,X.jsxs)(Xr.Fragment,{children:[r>0&&(0,X.jsx)(ue.Separator,{}),e]},r))}var sb=(0,Xr.forwardRef)(function({fieldId:e,view:r,fields:o,onChangeView:n,onHide:i,setOpenedFilter:a,canMove:l=!0,canInsertLeft:s=!0,canInsertRight:u=!0},f){let m=r.fields??[],d=m?.indexOf(e),p=r.sort?.field===e,v=!1,y=!1,g=!1,b=[],S=o.find(C=>C.id===e),{setIsShowingFilter:A}=(0,Xr.useContext)(q);if(!S)return null;v=S.enableHiding!==!1,y=S.enableSorting!==!1;let T=S.header;if(b=!!S.filterBy&&S.filterBy?.operators||[],g=!r.filters?.some(C=>e===C.field)&&!!(S.hasElements||S.Edit)&&S.filterBy!==!1&&!S.filterBy?.isPrimary,!y&&!l&&!v&&!g)return T;let O=Ji(r,o).filter(C=>!m.includes(C.id)),k=(s||u)&&!!O.length,D=(0,xr.isRTL)();return(0,X.jsxs)(ue,{children:[(0,X.jsxs)(ue.TriggerButton,{render:(0,X.jsx)(wr.Button,{size:"compact",className:"dataviews-view-table-header-button",ref:f,variant:"tertiary"}),children:[T,r.sort&&p&&(0,X.jsx)("span",{"aria-hidden":"true",children:lf[r.sort.direction]})]}),(0,X.jsx)(ue.Popover,{style:{minWidth:"240px"},children:(0,X.jsxs)(ab,{children:[y&&(0,X.jsx)(ue.Group,{children:qi.map(C=>{let I=r.sort&&p&&r.sort.direction===C,N=`${e}-${C}`;return(0,X.jsx)(ue.RadioItem,{name:"view-table-sorting",value:N,checked:I,onChange:()=>{n({...r,sort:{field:e,direction:C},showLevels:!1})},children:(0,X.jsx)(ue.ItemLabel,{children:Ui[C]})},N)})}),g&&(0,X.jsx)(ue.Group,{children:(0,X.jsx)(ue.Item,{prefix:(0,X.jsx)(wr.Icon,{icon:Tn}),onClick:()=>{a(e),A(!0),n({...r,page:1,filters:[...r.filters||[],{field:e,value:void 0,operator:b[0]}]})},children:(0,X.jsx)(ue.ItemLabel,{children:(0,xr.__)("Add filter")})})}),(l||v||k)&&S&&(0,X.jsxs)(ue.Group,{children:[l&&(0,X.jsx)(ue.Item,{prefix:(0,X.jsx)(wr.Icon,{icon:Ys}),disabled:D?d>=m.length-1:d<1,onClick:()=>{let C=D?d+1:d-1,I=[...m];I.splice(d,1),I.splice(C,0,e),n({...r,fields:I})},children:(0,X.jsx)(ue.ItemLabel,{children:(0,xr.__)("Move left")})}),l&&(0,X.jsx)(ue.Item,{prefix:(0,X.jsx)(wr.Icon,{icon:$s}),disabled:D?d<1:d>=m.length-1,onClick:()=>{let C=D?d-1:d+1,I=[...m];I.splice(d,1),I.splice(C,0,e),n({...r,fields:I})},children:(0,X.jsx)(ue.ItemLabel,{children:(0,xr.__)("Move right")})}),s&&!!O.length&&(0,X.jsxs)(ue,{children:[(0,X.jsx)(ue.SubmenuTriggerItem,{children:(0,X.jsx)(ue.ItemLabel,{children:(0,xr.__)("Insert left")})}),(0,X.jsx)(ue.Popover,{children:O.map(C=>{let I=D?d+1:d;return(0,X.jsx)(ue.Item,{onClick:()=>{n({...r,fields:[...m.slice(0,I),C.id,...m.slice(I)]})},children:(0,X.jsx)(ue.ItemLabel,{children:C.label})},C.id)})})]}),u&&!!O.length&&(0,X.jsxs)(ue,{children:[(0,X.jsx)(ue.SubmenuTriggerItem,{children:(0,X.jsx)(ue.ItemLabel,{children:(0,xr.__)("Insert right")})}),(0,X.jsx)(ue.Popover,{children:O.map(C=>{let I=D?d:d+1;return(0,X.jsx)(ue.Item,{onClick:()=>{n({...r,fields:[...m.slice(0,I),C.id,...m.slice(I)]})},children:(0,X.jsx)(ue.ItemLabel,{children:C.label})},C.id)})})]}),v&&S&&(0,X.jsx)(ue.Item,{prefix:(0,X.jsx)(wr.Icon,{icon:Vn}),onClick:()=>{i(S),n({...r,fields:m.filter(C=>C!==e)})},children:(0,X.jsx)(ue.ItemLabel,{children:(0,xr.__)("Hide column")})})]})]})})]})}),lb=sb,Yo=lb;var If=c(j(),1),kl=c(V(),1);function ub({item:t,isItemClickable:e,onClickItem:r,className:o}){return!e(t)||!r?{className:o}:{className:o?`${o} ${o}--clickable`:void 0,role:"button",tabIndex:0,onClick:n=>{n.stopPropagation(),r(t)},onKeyDown:n=>{(n.key==="Enter"||n.key===""||n.key===" ")&&(n.stopPropagation(),r(t))}}}function Qr({item:t,isItemClickable:e,onClickItem:r,renderItemLink:o,className:n,children:i,...a}){if(!e(t))return(0,kl.jsx)("div",{className:n,...a,children:i});if(o){let s=o({item:t,className:`${n} ${n}--clickable`,...a,children:i});return(0,If.cloneElement)(s,{onClick:u=>{u.stopPropagation(),s.props.onClick&&s.props.onClick(u)},onKeyDown:u=>{(u.key==="Enter"||u.key===""||u.key===" ")&&(u.stopPropagation(),s.props.onKeyDown&&s.props.onKeyDown(u))}})}let l=ub({item:t,isItemClickable:e,onClickItem:r,className:n});return(0,kl.jsx)("div",{...l,...a,children:i})}var Zt=c(V(),1);function cb({item:t,level:e,titleField:r,mediaField:o,descriptionField:n,onClickItem:i,renderItemLink:a,isItemClickable:l}){return(0,Zt.jsxs)(F,{direction:"row",gap:"md",align:"flex-start",justify:"flex-start",children:[o&&(0,Zt.jsx)(Qr,{item:t,isItemClickable:l,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-column-primary__media","aria-label":l(t)&&(i||a)&&r?r.getValue?.({item:t}):void 0,children:(0,Zt.jsx)(o.render,{item:t,field:o,config:{sizes:"32px"}})}),(0,Zt.jsxs)(F,{direction:"column",align:"flex-start",className:"dataviews-view-table__primary-column-content",children:[r&&(0,Zt.jsxs)(Qr,{item:t,isItemClickable:l,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-title-field",children:[e!==void 0&&e>0&&(0,Zt.jsxs)("span",{className:"dataviews-view-table__level",children:[Array(e).fill("\u2014").join(" "),"\xA0"]}),(0,Zt.jsx)(r.render,{item:t,field:r})]}),n&&(0,Zt.jsx)(n.render,{item:t,field:n})]})]})}var ea=cb;var Of=c(Et(),1),Uo=c(j(),1),Tf=c(U(),1),fb=t=>(0,Tf.isRTL)()?Math.abs(t.scrollLeft)<=1:t.scrollLeft+t.clientWidth>=t.scrollWidth-1;function Rf({scrollContainerRef:t,enabled:e=!1}){let[r,o]=(0,Uo.useState)(!1),n=(0,Of.useDebounce)((0,Uo.useCallback)(()=>{let i=t.current;i&&o(fb(i))},[t,o]),200);return(0,Uo.useEffect)(()=>typeof window>"u"||!e||!t.current?()=>{}:(n(),t.current.addEventListener("scroll",n),window.addEventListener("resize",n),()=>{t.current?.removeEventListener("scroll",n),window.removeEventListener("resize",n)}),[t,e]),r}function Dt(t,e){return t.reduce((r,o)=>{let n=e.getValue({item:o});return r.has(n)||r.set(n,[]),r.get(n)?.push(o),r},new Map)}var Jr=c(G(),1),Nf=c(U(),1),Df=c(j(),1);var Pt=c(V(),1);function Vf({field:t,isVisible:e,onToggleVisibility:r}){return(0,Pt.jsx)(Jr.__experimentalItem,{onClick:t.enableHiding?r:void 0,children:(0,Pt.jsxs)(F,{direction:"row",gap:"sm",justify:"flex-start",align:"center",children:[(0,Pt.jsx)("div",{style:{height:24,width:24},children:e&&(0,Pt.jsx)(Jr.Icon,{icon:In})}),(0,Pt.jsx)("span",{className:"dataviews-view-config__label",children:t.label})]})})}function db(t){return!!t}function ta({showLabel:t=!0}){let{view:e,fields:r,onChangeView:o}=(0,Df.useContext)(q),n=Ji(e,r);if(!n?.length)return null;let i=r.find(v=>v.id===e.titleField),a=r.find(v=>v.id===e.mediaField),l=r.find(v=>v.id===e.descriptionField),s=[{field:i,isVisibleFlag:"showTitle"},{field:a,isVisibleFlag:"showMedia"},{field:l,isVisibleFlag:"showDescription"}].filter(({field:v})=>db(v)),u=e.fields??[],f=n.filter(v=>u.includes(v.id)).length,m=s.filter(({isVisibleFlag:v})=>e[v]??!0),d=m.length+f,p=d===1&&m.length===1;return(0,Pt.jsxs)(F,{direction:"column",className:"dataviews-field-control",children:[t&&(0,Pt.jsx)(Jr.BaseControl.VisualLabel,{children:(0,Nf.__)("Properties")}),(0,Pt.jsx)(F,{direction:"column",className:"dataviews-view-config__properties",children:(0,Pt.jsxs)(Jr.__experimentalItemGroup,{isBordered:!0,isSeparated:!0,size:"medium",children:[s.map(({field:v,isVisibleFlag:y})=>{let g=e[y]??!0,b=p&&g?{...v,enableHiding:!1}:v;return(0,Pt.jsx)(Vf,{field:b,isVisible:g,onToggleVisibility:()=>{o({...e,[y]:!g})}},v.id)}),n.map(v=>{let y=u.includes(v.id),g=d===1&&y?{...v,enableHiding:!1}:v;return(0,Pt.jsx)(Vf,{field:g,isVisible:y,onToggleVisibility:()=>{o({...e,fields:y?u.filter(b=>b!==v.id):[...u,v.id]})}},v.id)})]})})]})}var ra=c(j(),1);function Xt(t,e={delay:400}){let[r,o]=(0,ra.useState)(!1);return(0,ra.useEffect)(()=>{if(!t)return;let n=setTimeout(()=>{o(!0)},e.delay);return()=>{clearTimeout(n),o(!1)}},[t,e.delay]),r}var $=c(V(),1);function Mf(t,e){if(t)return t;if(e==="integer"||e==="number")return"end"}function mb({item:t,fields:e,column:r,align:o}){let n=e.find(a=>a.id===r);if(!n)return null;let i=W("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,$.jsx)("div",{className:i,children:(0,$.jsx)(n.render,{item:t,field:n})})}function kf({hasBulkActions:t,item:e,level:r,actions:o,fields:n,id:i,view:a,titleField:l,mediaField:s,descriptionField:u,selection:f,getItemId:m,isItemClickable:d,onClickItem:p,renderItemLink:v,onChangeSelection:y,isActionsColumnSticky:g,posinset:b}){let{paginationInfo:S}=(0,wt.useContext)(q),A=Xi(o,e),T=A&&f.includes(i),{showTitle:O=!0,showMedia:k=!0,showDescription:D=!0,infiniteScrollEnabled:C}=a,I=(0,wt.useRef)(!1),N=a.fields??[],h=l&&O||s&&k||u&&D;return(0,$.jsxs)("tr",{className:W("dataviews-view-table__row",{"is-selected":A&&T,"has-bulk-actions":A}),onTouchStart:()=>{I.current=!0},"aria-setsize":C?S.totalItems:void 0,"aria-posinset":b,role:C?"article":void 0,onMouseDown:E=>{let P=(0,Ml.isAppleOS)()?E.metaKey:E.ctrlKey;E.button===0&&P&&window.navigator.userAgent.toLowerCase().includes("firefox")&&E?.preventDefault()},onClick:E=>{if(!A)return;((0,Ml.isAppleOS)()?E.metaKey:E.ctrlKey)&&!I.current&&document.getSelection()?.type!=="Range"&&y(f.includes(i)?f.filter(x=>i!==x):[...f,i])},children:[t&&(0,$.jsx)("td",{className:"dataviews-view-table__checkbox-column",children:(0,$.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,$.jsx)(Kr,{item:e,selection:f,onChangeSelection:y,getItemId:m,titleField:l,disabled:!A})})}),h&&(0,$.jsx)("td",{children:(0,$.jsx)(ea,{item:e,level:r,titleField:O?l:void 0,mediaField:k?s:void 0,descriptionField:D?u:void 0,isItemClickable:d,onClickItem:p,renderItemLink:v})}),N.map(E=>{let{width:P,maxWidth:x,minWidth:R,align:w}=a.layout?.styles?.[E]??{},_=n.find(H=>H.id===E),M=Mf(w,_?.type);return(0,$.jsx)("td",{style:{width:P,maxWidth:x,minWidth:R},children:(0,$.jsx)(mb,{fields:n,item:e,column:E,align:M})},E)}),!!o?.length&&(0,$.jsx)("td",{className:W("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":g}),onClick:E=>E.stopPropagation(),children:(0,$.jsx)(zo,{item:e,actions:o})})]})}function pb({actions:t,data:e,fields:r,getItemId:o,getItemLevel:n,isLoading:i=!1,onChangeView:a,onChangeSelection:l,selection:s,setOpenedFilter:u,onClickItem:f,isItemClickable:m,renderItemLink:d,view:p,className:v,empty:y}){let{containerRef:g}=(0,wt.useContext)(q),b=Xt(i),S=(0,wt.useRef)(new Map),A=(0,wt.useRef)(void 0),[T,O]=(0,wt.useState)(),[k,D]=(0,wt.useState)(null);(0,wt.useEffect)(()=>{A.current&&(A.current.focus(),A.current=void 0)});let C=(0,wt.useId)(),I=Rf({scrollContainerRef:g,enabled:!!t?.length}),N=qo(t,e);if(T){A.current=T,O(void 0);return}let h=Y=>{let Q=S.current.get(Y.id),ge=Q?S.current.get(Q.fallback):void 0;O(ge?.node)},E=Y=>{Y.preventDefault(),Y.stopPropagation();let Q={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(Q)})},P=!!e?.length,x=r.find(Y=>Y.id===p.titleField),R=r.find(Y=>Y.id===p.mediaField),w=r.find(Y=>Y.id===p.descriptionField),_=p.groupBy?.field?r.find(Y=>Y.id===p.groupBy?.field):null,M=_?Dt(e,_):null,{showTitle:H=!0,showMedia:ae=!0,showDescription:Se=!0}=p,Ne=x&&H||R&&ae||w&&Se,He=p.fields??[],rt=(Y,Q)=>ge=>{ge?S.current.set(Y,{node:ge,fallback:He[Q>0?Q-1:1]}):S.current.delete(Y)},Yt=p.infiniteScrollEnabled&&!M,mr=(0,bo.isRTL)();return P?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)("table",{className:W("dataviews-view-table",v,{[`has-${p.layout?.density}-density`]:p.layout?.density&&["compact","comfortable"].includes(p.layout.density),"has-bulk-actions":N,"is-refreshing":!Yt&&b}),"aria-busy":i,"aria-describedby":C,role:Yt?"feed":void 0,inert:!Yt&&i?"true":void 0,children:[(0,$.jsxs)("colgroup",{children:[N&&(0,$.jsx)("col",{className:"dataviews-view-table__col-checkbox"}),Ne&&(0,$.jsx)("col",{className:"dataviews-view-table__col-first-data"}),He.map((Y,Q)=>(0,$.jsx)("col",{className:W(`dataviews-view-table__col-${Y}`,{"dataviews-view-table__col-first-data":!Ne&&Q===0})},`col-${Y}`)),!!t?.length&&(0,$.jsx)("col",{className:"dataviews-view-table__col-actions"})]}),k&&(0,$.jsx)(oa.Popover,{anchor:k,onClose:()=>D(null),placement:"bottom-start",children:(0,$.jsx)(ta,{showLabel:!1})}),(0,$.jsx)("thead",{onContextMenu:E,children:(0,$.jsxs)("tr",{className:"dataviews-view-table__row",children:[N&&(0,$.jsx)("th",{className:"dataviews-view-table__checkbox-column",scope:"col",onContextMenu:E,children:(0,$.jsx)(Nn,{selection:s,onChangeSelection:l,data:e,actions:t,getItemId:o})}),Ne&&(0,$.jsx)("th",{scope:"col",children:x&&(0,$.jsx)(Yo,{ref:rt(x.id,0),fieldId:x.id,view:p,fields:r,onChangeView:a,onHide:h,setOpenedFilter:u,canMove:!1,canInsertLeft:mr?p.layout?.enableMoving??!0:!1,canInsertRight:mr?!1:p.layout?.enableMoving??!0})}),He.map((Y,Q)=>{let{width:ge,maxWidth:pr,minWidth:vr,align:mo}=p.layout?.styles?.[Y]??{},po=r.find(As=>As.id===Y),Lo=Mf(mo,po?.type),Sn=p.layout?.enableMoving??!0;return(0,$.jsx)("th",{style:{width:ge,maxWidth:pr,minWidth:vr,textAlign:Lo},"aria-sort":p.sort?.direction&&p.sort?.field===Y?Yi[p.sort.direction]:void 0,scope:"col",children:(0,$.jsx)(Yo,{ref:rt(Y,Q),fieldId:Y,view:p,fields:r,onChangeView:a,onHide:h,setOpenedFilter:u,canMove:Sn,canInsertLeft:Sn,canInsertRight:Sn})},Y)}),!!t?.length&&(0,$.jsx)("th",{className:W("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":!I}),children:(0,$.jsx)("span",{className:"dataviews-view-table-header",children:(0,bo.__)("Actions")})})]})}),P&&_&&M?Array.from(M.entries()).map(([Y,Q])=>(0,$.jsxs)("tbody",{children:[(0,$.jsx)("tr",{className:"dataviews-view-table__group-header-row",children:(0,$.jsx)("td",{colSpan:He.length+(Ne?1:0)+(N?1:0)+(t?.length?1:0),className:"dataviews-view-table__group-header-cell",children:p.groupBy?.showLabel===!1?Y:(0,bo.sprintf)((0,bo.__)("%1$s: %2$s"),_.label,Y)})}),Q.map((ge,pr)=>(0,$.jsx)(kf,{item:ge,level:p.showLevels&&typeof n=="function"?n(ge):void 0,hasBulkActions:N,actions:t,fields:r,id:o(ge)||pr.toString(),view:p,titleField:x,mediaField:R,descriptionField:w,selection:s,getItemId:o,onChangeSelection:l,onClickItem:f,renderItemLink:d,isItemClickable:m,isActionsColumnSticky:!I},o(ge)))]},`group-${Y}`)):(0,$.jsx)("tbody",{children:P&&e.map((Y,Q)=>(0,$.jsx)(kf,{item:Y,level:p.showLevels&&typeof n=="function"?n(Y):void 0,hasBulkActions:N,actions:t,fields:r,id:o(Y)||Q.toString(),view:p,titleField:x,mediaField:R,descriptionField:w,selection:s,getItemId:o,onChangeSelection:l,onClickItem:f,renderItemLink:d,isItemClickable:m,isActionsColumnSticky:!I,posinset:Yt?Q+1:void 0},o(Y)))})]}),Yt&&i&&(0,$.jsx)("div",{className:"dataviews-loading",id:C,children:(0,$.jsx)("p",{className:"dataviews-loading-more",children:(0,$.jsx)(oa.Spinner,{})})})]}):(0,$.jsx)("div",{className:W("dataviews-no-results",{"is-refreshing":b}),id:C,children:y})}var Ff=pb;var jf=c(G(),1),aa=c(U(),1);var At=c(G(),1);var Dn=c(U(),1),Bf=c(Et(),1),Hf=c(Tl(),1),ia=c(j(),1);var vb=c(G(),1),gb=c(U(),1),na=c(j(),1);var hb=c(V(),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}],xb=bb[2].value;function Lf(){let t=(0,na.useContext)(q),e=t.view;return(0,na.useMemo)(()=>{let r=t.containerWidth,o=32,n=e.layout?.previewSize??xb,i=Math.floor((r+o)/(n+o));return Math.max(1,i)},[t.containerWidth,e.layout?.previewSize])}var ne=c(V(),1),{Badge:wb}=K(At.privateApis);function yb(t,e){let r=[];for(let o=0,n=t.length;o{if(b.onClickCapture?.(w),(0,Hf.isAppleOS)()?w.metaKey:w.ctrlKey){if(w.stopPropagation(),w.preventDefault(),!k)return;o(r.includes(D)?r.filter(_=>D!==_):[...r,D])}},children:[(0,ne.jsx)(Qr,{item:s,isItemClickable:i,onClickItem:n,renderItemLink:a,className:W("dataviews-view-grid__media",{"dataviews-view-grid__media--placeholder":!h}),...x,children:E}),y&&(0,ne.jsx)(Kr,{item:s,selection:r,onChangeSelection:o,getItemId:l,titleField:m,disabled:!k}),!!u?.length&&(0,ne.jsx)("div",{className:"dataviews-view-grid__media-actions",children:(0,ne.jsx)(zo,{item:s,actions:u,isCompact:!0})}),A&&(0,ne.jsx)("div",{className:"dataviews-view-grid__title",children:(0,ne.jsx)(Qr,{item:s,isItemClickable:i,onClickItem:n,renderItemLink:a,className:"dataviews-view-grid__title-field dataviews-title-field",...R,title:m?.getValueFormatted({item:s,field:m})||void 0,children:P})}),(0,ne.jsxs)(F,{direction:"column",gap:"xs",children:[O&&d?.render&&(0,ne.jsx)(d.render,{item:s,field:d}),!!v?.length&&(0,ne.jsx)(F,{direction:"row",className:"dataviews-view-grid__badge-fields",gap:"sm",wrap:"wrap",align:"top",justify:"flex-start",children:v.map(w=>(0,ne.jsx)(wb,{className:"dataviews-view-grid__field-value",children:(0,ne.jsx)(w.render,{item:s,field:w})},w.id))}),!!p?.length&&(0,ne.jsx)(F,{direction:"column",className:"dataviews-view-grid__fields",gap:"xs",children:p.map(w=>(0,ne.jsx)(At.Flex,{className:"dataviews-view-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,ne.jsxs)(ne.Fragment,{children:[(0,ne.jsx)(At.Tooltip,{text:w.label,children:(0,ne.jsx)(At.FlexItem,{className:"dataviews-view-grid__field-name",children:w.header})}),(0,ne.jsx)(At.FlexItem,{className:"dataviews-view-grid__field-value",style:{maxHeight:"none"},children:(0,ne.jsx)(w.render,{item:s,field:w})})]})},w.id))})]})]})});function Fl({data:t,isInfiniteScroll:e,className:r,inert:o,isLoading:n,view:i,fields:a,selection:l,onChangeSelection:s,onClickItem:u,isItemClickable:f,renderItemLink:m,getItemId:d,actions:p}){let{paginationInfo:v,resizeObserverRef:y}=(0,ia.useContext)(q),g=Lf(),b=qo(p,t),S=a.find(N=>N.id===i?.titleField),A=a.find(N=>N.id===i?.mediaField),T=a.find(N=>N.id===i?.descriptionField),O=i.fields??[],{regularFields:k,badgeFields:D}=O.reduce((N,h)=>{let E=a.find(x=>x.id===h);if(!E)return N;let P=i.layout?.badgeFields?.includes(h)?"badgeFields":"regularFields";return N[P].push(E),N},{regularFields:[],badgeFields:[]}),C="900px",I=Math.ceil(t.length/g);return(0,ne.jsx)(At.Composite,{role:e?"feed":"grid",className:W("dataviews-view-grid",r),focusWrap:!0,"aria-busy":n,"aria-rowcount":e?void 0:I,ref:y,inert:o,children:yb(t,g).map((N,h)=>(0,ne.jsx)(At.Composite.Row,{render:(0,ne.jsx)("div",{role:"row","aria-rowindex":h+1,"aria-label":(0,Dn.sprintf)((0,Dn.__)("Row %d"),h+1),className:"dataviews-view-grid__row",style:{gridTemplateColumns:`repeat( ${g}, minmax(0, 1fr) )`}}),children:N.map((E,P)=>{let x=h*g+P;return(0,ne.jsx)(At.Composite.Item,{render:R=>(0,ne.jsx)(Sb,{...R,role:e?"article":"gridcell","aria-setsize":e?v.totalItems:void 0,"aria-posinset":e?x+1:void 0,view:i,selection:l,onChangeSelection:s,onClickItem:u,isItemClickable:f,renderItemLink:m,getItemId:d,item:E,actions:p,mediaField:A,titleField:S,descriptionField:T,regularFields:k,badgeFields:D,hasBulkActions:b,config:{sizes:C}})},d(E))})},h))})}var It=c(V(),1);function Cb({actions:t,data:e,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,onClickItem:a,isItemClickable:l,renderItemLink:s,selection:u,view:f,className:m,empty:d}){let p=Xt(!!n),v=!!e?.length,y=f.groupBy?.field?r.find(A=>A.id===f.groupBy?.field):null,g=y?Dt(e,y):null,b=f.infiniteScrollEnabled&&!g;if(!v)return(0,It.jsx)("div",{className:W("dataviews-no-results",{"is-refreshing":p}),children:d});let S={className:W(m,{"is-refreshing":!b&&p}),inert:!b&&n?"true":void 0,isLoading:n,view:f,fields:r,selection:u,onChangeSelection:i,onClickItem:a,isItemClickable:l,renderItemLink:s,getItemId:o,actions:t};return(0,It.jsxs)(It.Fragment,{children:[v&&y&&g&&(0,It.jsx)(F,{direction:"column",gap:"lg",children:Array.from(g.entries()).map(([A,T])=>(0,It.jsxs)(F,{direction:"column",gap:"sm",children:[(0,It.jsx)("h3",{className:"dataviews-view-grid__group-header",children:f.groupBy?.showLabel===!1?A:(0,aa.sprintf)((0,aa.__)("%1$s: %2$s"),y.label,A)}),(0,It.jsx)(Fl,{...S,data:T,isInfiniteScroll:!1})]},A))}),!g&&(0,It.jsx)(Fl,{...S,data:e,isInfiniteScroll:!!b}),b&&n&&(0,It.jsx)("p",{className:"dataviews-loading-more",children:(0,It.jsx)(jf.Spinner,{})})]})}var Wf=Cb;var sa=c(Et(),1),Ye=c(G(),1),Be=c(j(),1),kn=c(U(),1);var jl=c(br(),1);var z=c(V(),1),{Menu:Ll}=K(Ye.privateApis);function Bl(t){return`${t}-item-wrapper`}function _b(t,e){return`${t}-primary-action-${e}`}function Hl(t){return`${t}-dropdown`}function Eb({idPrefix:t,primaryAction:e,item:r}){let o=(0,jl.useRegistry)(),[n,i]=(0,Be.useState)(!1),a=_b(t,e.id),l=typeof e.label=="string"?e.label:e.label([r]);return"RenderModal"in e?(0,z.jsx)("div",{role:"gridcell",children:(0,z.jsx)(Ye.Composite.Item,{id:a,render:(0,z.jsx)(Ye.Button,{disabled:!!e.disabled,accessibleWhenDisabled:!0,text:l,size:"small",onClick:()=>i(!0)}),children:n&&(0,z.jsx)(ho,{action:e,items:[r],closeModal:()=>i(!1)})})},e.id):(0,z.jsx)("div",{role:"gridcell",children:(0,z.jsx)(Ye.Composite.Item,{id:a,render:(0,z.jsx)(Ye.Button,{disabled:!!e.disabled,accessibleWhenDisabled:!0,size:"small",onClick:()=>{e.callback([r],{registry:o})},children:l})})},e.id)}function zf({view:t,actions:e,idPrefix:r,isSelected:o,item:n,titleField:i,mediaField:a,descriptionField:l,onSelect:s,otherFields:u,onDropdownTriggerKeyDown:f,posinset:m}){let{showTitle:d=!0,showMedia:p=!0,showDescription:v=!0,infiniteScrollEnabled:y}=t,g=(0,Be.useRef)(null),b=`${r}-label`,S=`${r}-description`,A=(0,jl.useRegistry)(),[T,O]=(0,Be.useState)(!1),[k,D]=(0,Be.useState)(null),C=({type:w})=>{O(w==="mouseenter")},{paginationInfo:I}=(0,Be.useContext)(q);(0,Be.useEffect)(()=>{o&&g.current?.scrollIntoView({behavior:"auto",block:"nearest",inline:"nearest"})},[o]);let{primaryAction:N,eligibleActions:h}=(0,Be.useMemo)(()=>{let w=e.filter(M=>!M.isEligible||M.isEligible(n));return{primaryAction:w.filter(M=>M.isPrimary)[0],eligibleActions:w}},[e,n]),E=N&&e.length===1,P=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,x=d&&i?.render?(0,z.jsx)(i.render,{item:n,field:i}):null,R=h?.length>0&&(0,z.jsxs)(F,{direction:"row",gap:"md",className:"dataviews-view-list__item-actions",children:[N&&(0,z.jsx)(Eb,{idPrefix:r,primaryAction:N,item:n}),!E&&(0,z.jsxs)("div",{role:"gridcell",children:[(0,z.jsxs)(Ll,{placement:"bottom-end",children:[(0,z.jsx)(Ll.TriggerButton,{render:(0,z.jsx)(Ye.Composite.Item,{id:Hl(r),render:(0,z.jsx)(Ye.Button,{size:"small",icon:Rn,label:(0,kn.__)("Actions"),accessibleWhenDisabled:!0,disabled:!e.length,onKeyDown:f})})}),(0,z.jsx)(Ll.Popover,{children:(0,z.jsx)(Vl,{actions:h,item:n,registry:A,setActiveModalAction:D})})]}),!!k&&(0,z.jsx)(ho,{action:k,items:[n],closeModal:()=>D(null)})]})]});return(0,z.jsx)(Ye.Composite.Row,{ref:g,render:(0,z.jsx)("div",{"aria-posinset":m,"aria-setsize":y?I.totalItems:void 0}),role:y?"article":"row",className:W({"is-selected":o,"is-hovered":T}),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)(Ye.Composite.Item,{id:Bl(r),"aria-pressed":o,"aria-labelledby":b,"aria-describedby":S,className:"dataviews-view-list__item",onClick:()=>s(n)})}),(0,z.jsxs)(F,{direction:"row",gap:"md",justify:"start",align:"flex-start",style:{flex:1,minWidth:0},children:[P,(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:b,children:x}),R]}),v&&l?.render&&(0,z.jsx)("div",{className:"dataviews-view-list__field",children:(0,z.jsx)(l.render,{item:n,field:l})}),(0,z.jsx)("div",{className:"dataviews-view-list__fields",id:S,children:u.map(w=>(0,z.jsxs)("div",{className:"dataviews-view-list__field",children:[(0,z.jsx)(Ye.VisuallyHidden,{as:"span",className:"dataviews-view-list__field-label",children:w.label}),(0,z.jsx)("span",{className:"dataviews-view-list__field-value",children:(0,z.jsx)(w.render,{item:n,field:w})})]},w.id))})]})]})]})})}function Pb(t){return!!t}function Wl(t){let{actions:e,data:r,fields:o,getItemId:n,isLoading:i,onChangeSelection:a,selection:l,view:s,className:u,empty:f}=t,m=(0,sa.useInstanceId)(Wl,"view-list"),d=Xt(!!i),p=r?.findLast(w=>l.includes(n(w))),v=o.find(w=>w.id===s.titleField),y=o.find(w=>w.id===s.mediaField),g=o.find(w=>w.id===s.descriptionField),b=(s?.fields??[]).map(w=>o.find(_=>w===_.id)).filter(Pb),S=w=>a([n(w)]),A=(0,Be.useCallback)(w=>`${m}-${n(w)}`,[m,n]),T=(0,Be.useCallback)((w,_)=>_.startsWith(A(w)),[A]),[O,k]=(0,Be.useState)(void 0);(0,Be.useEffect)(()=>{p&&k(Bl(A(p)))},[p,A]);let D=r.findIndex(w=>T(w,O??"")),C=(0,sa.usePrevious)(D),I=D!==-1,N=(0,Be.useCallback)((w,_)=>{let M=Math.min(r.length-1,Math.max(0,w));if(!r[M])return;let H=A(r[M]),ae=_(H);k(ae),document.getElementById(ae)?.focus()},[r,A]);(0,Be.useEffect)(()=>{!I&&(C!==void 0&&C!==-1)&&N(C,Bl)},[I,N,C]);let h=(0,Be.useCallback)(w=>{w.key==="ArrowDown"&&(w.preventDefault(),N(D+1,Hl)),w.key==="ArrowUp"&&(w.preventDefault(),N(D-1,Hl))},[N,D]),E=!!r?.length,P=s.groupBy?.field?o.find(w=>w.id===s.groupBy?.field):null,x=E&&P?Dt(r,P):null,R=s.infiniteScrollEnabled&&!x;return E?E&&P&&x?(0,z.jsx)(Ye.Composite,{id:`${m}`,render:(0,z.jsx)("div",{}),className:"dataviews-view-list__group",role:"grid",activeId:O,setActiveId:k,children:(0,z.jsx)(F,{direction:"column",gap:"lg",className:W("dataviews-view-list",u),children:Array.from(x.entries()).map(([w,_])=>(0,z.jsxs)(F,{direction:"column",gap:"sm",children:[(0,z.jsx)("h3",{className:"dataviews-view-list__group-header",children:s.groupBy?.showLabel===!1?w:(0,kn.sprintf)((0,kn.__)("%1$s: %2$s"),P.label,w)}),_.map(M=>{let H=A(M);return(0,z.jsx)(zf,{view:s,idPrefix:H,actions:e,item:M,isSelected:M===p,onSelect:S,mediaField:y,titleField:v,descriptionField:g,otherFields:b,onDropdownTriggerKeyDown:h},H)})]},w))})}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(Ye.Composite,{id:m,render:(0,z.jsx)("div",{}),className:W("dataviews-view-list",u,{[`has-${s.layout?.density}-density`]:s.layout?.density&&["compact","comfortable"].includes(s.layout.density),"is-refreshing":!R&&d}),role:s.infiniteScrollEnabled?"feed":"grid",activeId:O,setActiveId:k,inert:!R&&i?"true":void 0,children:r.map((w,_)=>{let M=A(w);return(0,z.jsx)(zf,{view:s,idPrefix:M,actions:e,item:w,isSelected:w===p,onSelect:S,mediaField:y,titleField:v,descriptionField:g,otherFields:b,onDropdownTriggerKeyDown:h,posinset:s.infiniteScrollEnabled?_+1:void 0},M)})}),R&&i&&(0,z.jsx)("p",{className:"dataviews-loading-more",children:(0,z.jsx)(Ye.Spinner,{})})]}):(0,z.jsx)("div",{className:W("dataviews-no-results",{"is-refreshing":d}),children:f})}var Xf=c(G(),1);var la=c(U(),1),Gf=c(j(),1);var $o=c(V(),1);function qf({groupName:t,groupData:e,groupField:r,showLabel:o=!0,children:n}){let i=o?(0,Gf.createInterpolateElement)((0,la.sprintf)((0,la.__)("%s: "),r.label).trim(),{groupName:(0,$o.jsx)(r.render,{item:e[0],field:r})}):(0,$o.jsx)(r.render,{item:e[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]},t)}var Yf=c(G(),1),xo=c(j(),1),Uf=c(br(),1),$f=c(Et(),1);var ke=c(V(),1);function Ab(t){let{view:e,actions:r,item:o,titleField:n,mediaField:i,descriptionField:a,otherFields:l,posinset:s,onClickItem:u,renderItemLink:f,isItemClickable:m}=t,{showTitle:d=!0,showMedia:p=!0,showDescription:v=!0,infiniteScrollEnabled:y}=e,g=(0,xo.useRef)(null),b=(0,Uf.useRegistry)(),{paginationInfo:S}=(0,xo.useContext)(q),{primaryActions:A,eligibleActions:T}=(0,xo.useMemo)(()=>{let h=r.filter(P=>!P.isEligible||P.isEligible(o));return{primaryActions:h.filter(P=>P.isPrimary),eligibleActions:h}},[r,o]),O=(0,$f.useViewportMatch)("medium","<"),k=e.layout?.density??"balanced",D=p&&k!=="compact"&&i?.render?(0,ke.jsx)(i.render,{item:o,field:i,config:{sizes:k==="comfortable"?"32px":"24px"}}):null,C=(0,ke.jsx)("div",{className:"dataviews-view-activity__item-type-icon",children:D||(0,ke.jsx)("span",{className:"dataviews-view-activity__item-bullet","aria-hidden":"true"})}),I=d&&n?.render?(0,ke.jsx)(n.render,{item:o,field:n}):null,N=(0,xo.useMemo)(()=>k==="comfortable"?"md":"sm",[k]);return(0,ke.jsx)("div",{ref:g,role:y?"article":void 0,"aria-posinset":s,"aria-setsize":y?S.totalItems:void 0,className:W("dataviews-view-activity__item",k==="compact"&&"is-compact",k==="balanced"&&"is-balanced",k==="comfortable"&&"is-comfortable"),children:(0,ke.jsxs)(F,{direction:"row",gap:"lg",justify:"start",align:"flex-start",children:[(0,ke.jsx)(F,{direction:"column",gap:"xs",align:"center",className:"dataviews-view-activity__item-type",children:C}),(0,ke.jsxs)(F,{direction:"column",gap:N,align:"flex-start",className:"dataviews-view-activity__item-content",children:[I&&(0,ke.jsx)(Qr,{item:o,isItemClickable:m,onClickItem:u,renderItemLink:f,className:"dataviews-view-activity__item-title",children:I}),v&&a&&(0,ke.jsx)("div",{className:"dataviews-view-activity__item-description",children:(0,ke.jsx)(a.render,{item:o,field:a})}),(0,ke.jsx)("div",{className:"dataviews-view-activity__item-fields",children:l.map(h=>(0,ke.jsxs)("div",{className:"dataviews-view-activity__item-field",children:[(0,ke.jsx)(Yf.VisuallyHidden,{as:"span",className:"dataviews-view-activity__item-field-label",children:h.label}),(0,ke.jsx)("span",{className:"dataviews-view-activity__item-field-value",children:(0,ke.jsx)(h.render,{item:o,field:h})})]},h.id))}),!!A?.length&&(0,ke.jsx)(Nl,{item:o,actions:A,registry:b,buttonVariant:"secondary"})]}),(A.length0)&&(0,ke.jsx)("div",{className:"dataviews-view-activity__item-actions",children:(0,ke.jsx)(zo,{item:o,actions:T,isCompact:!0})})]})})}var Kf=Ab;var Zf=c(le(),1);function Ib(t){return!!t}function zl(t){let{data:e,fields:r,getItemId:o,view:n}=t,i=r.find(u=>u.id===n.titleField),a=r.find(u=>u.id===n.mediaField),l=r.find(u=>u.id===n.descriptionField),s=(n?.fields??[]).map(u=>r.find(f=>u===f.id)).filter(Ib);return e.map((u,f)=>(0,Zf.createElement)(Kf,{...t,key:o(u),item:u,mediaField:a,titleField:i,descriptionField:l,otherFields:s,posinset:n.infiniteScrollEnabled?f+1:void 0}))}var Ot=c(V(),1);function Qf(t){let{empty:e,data:r,fields:o,isLoading:n,view:i,className:a}=t,l=Xt(!!n),s=!!r?.length,u=i.groupBy?.field?o.find(y=>y.id===i.groupBy?.field):null,f=s&&u?Dt(r,u):null,m=i.infiniteScrollEnabled&&!f;if(!s)return(0,Ot.jsx)("div",{className:W("dataviews-no-results",{"is-refreshing":l}),children:e});let d=!m&&!!n,p=W("dataviews-view-activity",a,{"is-refreshing":!m&&l}),v=f?Array.from(f.entries()):[];return s&&u&&f?(0,Ot.jsx)(F,{direction:"column",gap:"sm",className:p,inert:d?"true":void 0,children:v.map(([y,g])=>(0,Ot.jsx)(qf,{groupName:y,groupData:g,groupField:u,showLabel:i.groupBy?.showLabel!==!1,children:(0,Ot.jsx)(zl,{...t,data:g})},y))}):(0,Ot.jsxs)(Ot.Fragment,{children:[(0,Ot.jsx)("div",{className:p,role:i.infiniteScrollEnabled?"feed":void 0,inert:d?"true":void 0,children:(0,Ot.jsx)(zl,{...t})}),m&&n&&(0,Ot.jsx)("p",{className:"dataviews-loading-more",children:(0,Ot.jsx)(Xf.Spinner,{})})]})}var yt=c(G(),1),Fn=c(U(),1),id=c(Et(),1),ad=c(j(),1);var ed=c(G(),1),Ob=c(br(),1),ua=c(j(),1);var Tb=c(U(),1);var Mn=c(G(),1),Ko=c(j(),1),Tt=c(U(),1);var yr=c(V(),1);function Gl(){let{view:t,onChangeView:e,paginationInfo:{totalItems:r=0,totalPages:o}}=(0,Ko.useContext)(q);if(!r||!o||t.infiniteScrollEnabled)return null;let n=t.page??1,i=Array.from(Array(o)).map((a,l)=>{let s=l+1;return{value:s.toString(),label:s.toString(),"aria-label":n===s?(0,Tt.sprintf)((0,Tt.__)("Page %1$d of %2$d"),n,o):s.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,Ko.createInterpolateElement)((0,Tt.sprintf)((0,Tt._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,Tt.__)("Current page"),value:n.toString(),options:i,onChange:a=>{e({...t,page:+a})},size:"small",variant:"minimal"})})}),(0,yr.jsxs)(F,{direction:"row",gap:"xs",align:"center",children:[(0,yr.jsx)(Mn.Button,{onClick:()=>e({...t,page:n-1}),disabled:n===1,accessibleWhenDisabled:!0,label:(0,Tt.__)("Previous page"),icon:(0,Tt.isRTL)()?Fi:Hi,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,yr.jsx)(Mn.Button,{onClick:()=>e({...t,page:n+1}),disabled:n>=o,accessibleWhenDisabled:!0,label:(0,Tt.__)("Next page"),icon:(0,Tt.isRTL)()?Hi:Fi,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})}var Jf=(0,Ko.memo)(Gl);var td=c(V(),1);function ca(t){return(0,ua.useMemo)(()=>t?.every(e=>e.supportsBulk),[t])}var rd=c(j(),1);var od=c(V(),1),ql=(0,rd.forwardRef)(({className:t,previewSize:e,...r},o)=>(0,od.jsx)("div",{ref:o,className:W("dataviews-view-grid-items",t),style:{gridTemplateColumns:e&&`repeat(auto-fill, minmax(${e}px, 1fr))`},...r}));var Z=c(V(),1),{Badge:Rb}=K(yt.privateApis);function nd({view:t,multiselect:e,selection:r,onChangeSelection:o,getItemId:n,item:i,mediaField:a,titleField:l,descriptionField:s,regularFields:u,badgeFields:f,config:m,posinset:d,setsize:p}){let{showTitle:v=!0,showMedia:y=!0,showDescription:g=!0}=t,b=n(i),S=r.includes(b),A=a?.render?(0,Z.jsx)(a.render,{item:i,field:a,config:m}):null,T=v&&l?.render?(0,Z.jsx)(l.render,{item:i,field:l}):null;return(0,Z.jsxs)(yt.Composite.Item,{"aria-label":l?l.getValue({item:i})||(0,Fn.__)("(no title)"):void 0,render:({children:O,...k})=>(0,Z.jsx)(F,{direction:"column",children:O,...k}),role:"option","aria-posinset":d,"aria-setsize":p,className:W("dataviews-view-picker-grid__card",{"is-selected":S}),"aria-selected":S,onClick:()=>{if(S)o(r.filter(O=>b!==O));else{let O=e?[...r,b]:[b];o(O)}},children:[y&&A&&(0,Z.jsx)("div",{className:"dataviews-view-picker-grid__media",children:A}),y&&A&&(0,Z.jsx)(Kr,{item:i,selection:r,onChangeSelection:o,getItemId:n,titleField:l,disabled:!1,"aria-hidden":!0,tabIndex:-1}),v&&(0,Z.jsx)(F,{direction:"row",justify:"space-between",className:"dataviews-view-picker-grid__title-actions",children:(0,Z.jsx)("div",{className:"dataviews-view-picker-grid__title-field dataviews-title-field",children:T})}),(0,Z.jsxs)(F,{direction:"column",gap:"xs",children:[g&&s?.render&&(0,Z.jsx)(s.render,{item:i,field:s}),!!f?.length&&(0,Z.jsx)(F,{direction:"row",className:"dataviews-view-picker-grid__badge-fields",gap:"sm",wrap:"wrap",align:"top",justify:"flex-start",children:f.map(O=>(0,Z.jsx)(Rb,{className:"dataviews-view-picker-grid__field-value",children:(0,Z.jsx)(O.render,{item:i,field:O})},O.id))}),!!u?.length&&(0,Z.jsx)(F,{direction:"column",className:"dataviews-view-picker-grid__fields",gap:"xs",children:u.map(O=>(0,Z.jsx)(yt.Flex,{className:"dataviews-view-picker-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(yt.FlexItem,{className:"dataviews-view-picker-grid__field-name",children:O.header}),(0,Z.jsx)(yt.FlexItem,{className:"dataviews-view-picker-grid__field-value",style:{maxHeight:"none"},children:(0,Z.jsx)(O.render,{item:i,field:O})})]})},O.id))})]})]},b)}function sd({groupName:t,groupField:e,showLabel:r=!0,children:o}){let n=(0,id.useInstanceId)(sd,"dataviews-view-picker-grid-group__header");return(0,Z.jsxs)(F,{direction:"column",gap:"sm",role:"group","aria-labelledby":n,children:[(0,Z.jsx)("h3",{className:"dataviews-view-picker-grid-group__header",id:n,children:r?(0,Fn.sprintf)((0,Fn.__)("%1$s: %2$s"),e.label,t):t}),o]},t)}function Vb({actions:t,data:e,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,selection:a,view:l,className:s,empty:u}){let{resizeObserverRef:f,paginationInfo:m,itemListLabel:d}=(0,ad.useContext)(q),p=r.find(P=>P.id===l?.titleField),v=r.find(P=>P.id===l?.mediaField),y=r.find(P=>P.id===l?.descriptionField),g=l.fields??[],{regularFields:b,badgeFields:S}=g.reduce((P,x)=>{let R=r.find(_=>_.id===x);if(!R)return P;let w=l.layout?.badgeFields?.includes(x)?"badgeFields":"regularFields";return P[w].push(R),P},{regularFields:[],badgeFields:[]}),A=!!e?.length,T=l.layout?.previewSize,O=ca(t),k="900px",D=l.groupBy?.field?r.find(P=>P.id===l.groupBy?.field):null,C=D?Dt(e,D):null,I=l.infiniteScrollEnabled&&!C,N=l?.page??1,h=l?.perPage??0,E=I?m?.totalItems:void 0;return(0,Z.jsxs)(Z.Fragment,{children:[A&&D&&C&&(0,Z.jsx)(yt.Composite,{virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":O,className:W("dataviews-view-picker-grid",s),"aria-label":d,render:({children:P,...x})=>(0,Z.jsx)(F,{direction:"column",gap:"lg",children:P,...x}),children:Array.from(C.entries()).map(([P,x])=>(0,Z.jsx)(sd,{groupName:P,groupField:D,showLabel:l.groupBy?.showLabel!==!1,children:(0,Z.jsx)(ql,{previewSize:T,style:{gridTemplateColumns:T&&`repeat(auto-fill, minmax(${T}px, 1fr))`},"aria-busy":n,ref:f,children:x.map(R=>{let w=(N-1)*h+e.indexOf(R)+1;return(0,Z.jsx)(nd,{view:l,multiselect:O,selection:a,onChangeSelection:i,getItemId:o,item:R,mediaField:v,titleField:p,descriptionField:y,regularFields:b,badgeFields:S,config:{sizes:k},posinset:w,setsize:E},o(R))})})},P))}),A&&!C&&(0,Z.jsx)(yt.Composite,{render:(0,Z.jsx)(ql,{className:W("dataviews-view-picker-grid",s),previewSize:T,"aria-busy":n,ref:f}),virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":O,"aria-label":d,children:e.map((P,x)=>{let R=I?x+1:void 0;return I||(R=(N-1)*h+x+1),(0,Z.jsx)(nd,{view:l,multiselect:O,selection:a,onChangeSelection:i,getItemId:o,item:P,mediaField:v,titleField:p,descriptionField:y,regularFields:b,badgeFields:S,config:{sizes:k},posinset:R,setsize:E},o(P))})}),!A&&(0,Z.jsx)("div",{className:W({"dataviews-loading":n,"dataviews-no-results":!n}),children:n?(0,Z.jsx)("p",{children:(0,Z.jsx)(yt.Spinner,{})}):u}),A&&n&&(0,Z.jsx)("p",{className:"dataviews-loading-more",children:(0,Z.jsx)(yt.Spinner,{})})]})}var ld=Vb;var fa=c(U(),1),wo=c(G(),1),kt=c(j(),1);var J=c(V(),1);function Nb({item:t,fields:e,column:r,align:o}){let n=e.find(a=>a.id===r);if(!n)return null;let i=W("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,J.jsx)("div",{className:i,children:(0,J.jsx)(n.render,{item:t,field:n})})}function ud({item:t,fields:e,id:r,view:o,titleField:n,mediaField:i,descriptionField:a,selection:l,getItemId:s,onChangeSelection:u,multiselect:f,posinset:m}){let{paginationInfo:d}=(0,kt.useContext)(q),p=l.includes(r),[v,y]=(0,kt.useState)(!1),{showTitle:g=!0,showMedia:b=!0,showDescription:S=!0,infiniteScrollEnabled:A}=o,T=()=>{y(!0)},O=()=>{y(!1)},k=o.fields??[],D=n&&g||i&&b||a&&S;return(0,J.jsxs)(wo.Composite.Item,{render:({children:C,...I})=>(0,J.jsx)("tr",{className:W("dataviews-view-table__row",{"is-selected":p,"is-hovered":v}),onMouseEnter:T,onMouseLeave:O,children:C,...I}),"aria-selected":p,"aria-setsize":d.totalItems||void 0,"aria-posinset":m,role:A?"article":"option",onClick:()=>{if(p)u(l.filter(C=>r!==C));else{let C=f?[...l,r]:[r];u(C)}},children:[(0,J.jsx)("td",{className:"dataviews-view-table__checkbox-column",role:"presentation",children:(0,J.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,J.jsx)(Kr,{item:t,selection:l,onChangeSelection:u,getItemId:s,titleField:n,disabled:!1,"aria-hidden":!0,tabIndex:-1})})}),D&&(0,J.jsx)("td",{role:"presentation",children:(0,J.jsx)(ea,{item:t,titleField:g?n:void 0,mediaField:b?i:void 0,descriptionField:S?a:void 0,isItemClickable:()=>!1})}),k.map(C=>{let{width:I,maxWidth:N,minWidth:h,align:E}=o.layout?.styles?.[C]??{};return(0,J.jsx)("td",{style:{width:I,maxWidth:N,minWidth:h},role:"presentation",children:(0,J.jsx)(Nb,{fields:e,item:t,column:C,align:E})},C)})]},r)}function Db({actions:t,data:e,fields:r,getItemId:o,isLoading:n=!1,onChangeView:i,onChangeSelection:a,selection:l,setOpenedFilter:s,view:u,className:f,empty:m}){let d=(0,kt.useRef)(new Map),p=(0,kt.useRef)(void 0),[v,y]=(0,kt.useState)(),g=ca(t)??!1;(0,kt.useEffect)(()=>{p.current&&(p.current.focus(),p.current=void 0)});let b=(0,kt.useId)();if(v){p.current=v,y(void 0);return}let S=w=>{let _=d.current.get(w.id),M=_?d.current.get(_.fallback):void 0;y(M?.node)},A=!!e?.length,T=r.find(w=>w.id===u.titleField),O=r.find(w=>w.id===u.mediaField),k=r.find(w=>w.id===u.descriptionField),D=u.groupBy?.field?r.find(w=>w.id===u.groupBy?.field):null,C=D?Dt(e,D):null,{showTitle:I=!0,showMedia:N=!0,showDescription:h=!0}=u,E=T&&I||O&&N||k&&h,P=u.fields??[],x=(w,_)=>M=>{M?d.current.set(w,{node:M,fallback:P[_>0?_-1:1]}):d.current.delete(w)},R=u.infiniteScrollEnabled&&!C;return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)("table",{className:W("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":b,role:R?"feed":"listbox",children:[(0,J.jsx)("thead",{role:"presentation",children:(0,J.jsxs)("tr",{className:"dataviews-view-table__row",role:"presentation",children:[(0,J.jsx)("th",{className:"dataviews-view-table__checkbox-column",children:g&&(0,J.jsx)(Nn,{selection:l,onChangeSelection:a,data:e,actions:t,getItemId:o})}),E&&(0,J.jsx)("th",{children:T&&(0,J.jsx)(Yo,{ref:x(T.id,0),fieldId:T.id,view:u,fields:r,onChangeView:i,onHide:S,setOpenedFilter:s,canMove:!1})}),P.map((w,_)=>{let{width:M,maxWidth:H,minWidth:ae,align:Se}=u.layout?.styles?.[w]??{};return(0,J.jsx)("th",{style:{width:M,maxWidth:H,minWidth:ae,textAlign:Se},"aria-sort":u.sort?.direction&&u.sort?.field===w?Yi[u.sort.direction]:void 0,scope:"col",children:(0,J.jsx)(Yo,{ref:x(w,_),fieldId:w,view:u,fields:r,onChangeView:i,onHide:S,setOpenedFilter:s,canMove:u.layout?.enableMoving??!0})},w)})]})}),A&&D&&C?Array.from(C.entries()).map(([w,_])=>(0,J.jsxs)(wo.Composite,{virtualFocus:!0,orientation:"vertical",render:(0,J.jsx)("tbody",{role:"group"}),children:[(0,J.jsx)("tr",{className:"dataviews-view-table__group-header-row",role:"presentation",children:(0,J.jsx)("td",{colSpan:P.length+(E?1:0)+1,className:"dataviews-view-table__group-header-cell",role:"presentation",children:u.groupBy?.showLabel===!1?w:(0,fa.sprintf)((0,fa.__)("%1$s: %2$s"),D.label,w)})}),_.map((M,H)=>(0,J.jsx)(ud,{item:M,fields:r,id:o(M)||H.toString(),view:u,titleField:T,mediaField:O,descriptionField:k,selection:l,getItemId:o,onChangeSelection:a,multiselect:g},o(M)))]},`group-${w}`)):(0,J.jsx)(wo.Composite,{render:(0,J.jsx)("tbody",{role:"presentation"}),virtualFocus:!0,orientation:"vertical",children:A&&e.map((w,_)=>(0,J.jsx)(ud,{item:w,fields:r,id:o(w)||_.toString(),view:u,titleField:T,mediaField:O,descriptionField:k,selection:l,getItemId:o,onChangeSelection:a,multiselect:g,posinset:_+1},o(w)))})]}),(0,J.jsxs)("div",{className:W({"dataviews-loading":n,"dataviews-no-results":!A&&!n}),id:b,children:[!A&&(n?(0,J.jsx)("p",{children:(0,J.jsx)(wo.Spinner,{})}):m),A&&n&&(0,J.jsx)("p",{className:"dataviews-loading-more",children:(0,J.jsx)(wo.Spinner,{})})]})]})}var cd=Db;var fd=c(G(),1),dd=c(U(),1),md=c(j(),1);var pd=c(V(),1),kb=[{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 Yl(){let t=(0,md.useContext)(q),e=t.view,r=kb.filter(a=>t.containerWidth>=a.breakpoint),o=e.layout?.previewSize??230,n=r.map((a,l)=>({...a,index:l})).filter(a=>a.value<=o).sort((a,l)=>l.value-a.value)[0]?.index??0,i=r.map((a,l)=>({value:l}));return(0,pd.jsx)(fd.RangeControl,{__next40pxDefaultSize:!0,showTooltip:!1,label:(0,dd.__)("Preview size"),value:n,min:0,max:r.length-1,withInputField:!1,onChange:(a=0)=>{t.onChangeView({...e,layout:{...e.layout,previewSize:r[a].value}})},step:1,marks:i})}var Zo=c(G(),1),Xo=c(U(),1),vd=c(j(),1);var Qo=c(V(),1);function Ln(){let t=(0,vd.useContext)(q),e=t.view;return(0,Qo.jsxs)(Zo.__experimentalToggleGroupControl,{size:"__unstable-large",label:(0,Xo.__)("Density"),value:e.layout?.density||"balanced",onChange:r=>{t.onChangeView({...e,layout:{...e.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 eo=[{type:Ho,label:(0,Sr.__)("Table"),component:Ff,icon:Si,viewConfigOptions:Ln},{type:$i,label:(0,Sr.__)("Grid"),component:Wf,icon:_i,viewConfigOptions:Yl},{type:cf,label:(0,Sr.__)("List"),component:Wl,icon:(0,Sr.isRTL)()?ll:cl,viewConfigOptions:Ln},{type:ff,label:(0,Sr.__)("Activity"),component:Qf,icon:Sl,viewConfigOptions:Ln},{type:df,label:(0,Sr.__)("Grid"),component:ld,icon:_i,viewConfigOptions:Yl,isPicker:!0},{type:mf,label:(0,Sr.__)("Table"),component:cd,icon:Si,viewConfigOptions:Ln,isPicker:!0}];var pn=c(j(),1);var jt=c(G(),1),Tr=c(U(),1),Ga=c(j(),1);function Bn(...t){}function Ul(t,e){if(Mb(t)){let r=Fb(e)?e():e;return t(r)}return t}function Mb(t){return typeof t=="function"}function Fb(t){return typeof t=="function"}function St(t,e){return typeof Object.hasOwn=="function"?Object.hasOwn(t,e):Object.prototype.hasOwnProperty.call(t,e)}function to(...t){return(...e)=>{for(let r of t)typeof r=="function"&&r(...e)}}function Hn(t){return t.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}function $l(t,e){let r={...t};for(let o of e)St(r,o)&&delete r[o];return r}function Kl(t,e){let r={};for(let o of e)St(t,o)&&(r[o]=t[o]);return r}function jn(t){return t}function Xe(t,e){if(!t)throw typeof e!="string"?new Error("Invariant failed"):new Error(e)}function Zl(t){return Object.keys(t)}function Xl(t,...e){let r=typeof t=="function"?t(...e):t;return r==null?!1:!r}function yo(t){return t.disabled||t["aria-disabled"]===!0||t["aria-disabled"]==="true"}function Qe(t){let e={};for(let r in t)t[r]!==void 0&&(e[r]=t[r]);return e}function ee(...t){for(let e of t)if(e!==void 0)return e}var gd=c(le(),1);function hd(t,e){typeof t=="function"?t(e):t&&(t.current=e)}function Lb(t){return!t||!(0,gd.isValidElement)(t)?!1:"ref"in t.props||"ref"in t}function bd(t){return Lb(t)?{...t.props}.ref||t.ref:null}function xd(t,e){let r={...t};for(let o in e){if(!St(e,o))continue;if(o==="className"){let i="className";r[i]=t[i]?`${t[i]} ${e[i]}`:e[i];continue}if(o==="style"){let i="style";r[i]=t[i]?{...t[i],...e[i]}:e[i];continue}let n=e[o];if(typeof n=="function"&&o.startsWith("on")){let i=t[o];if(typeof i=="function"){r[o]=(...a)=>{n(...a),i(...a)};continue}}r[o]=n}return r}var ro=Bb();function Bb(){var t;return typeof window<"u"&&!!((t=window.document)!=null&&t.createElement)}function Cr(t){return t?"self"in t?t.document:t.ownerDocument||document:document}function So(t,e=!1){var r;let{activeElement:o}=Cr(t);if(!o?.nodeName)return null;if(Ql(o)&&((r=o.contentDocument)!=null&&r.body))return So(o.contentDocument.body,e);if(e){let n=o.getAttribute("aria-activedescendant");if(n){let i=Cr(o).getElementById(n);if(i)return i}}return o}function Qt(t,e){return t===e||t.contains(e)}function Ql(t){return t.tagName==="IFRAME"}function _r(t){let e=t.tagName.toLowerCase();return e==="button"?!0:e==="input"&&t.type?Hb.indexOf(t.type)!==-1:!1}var Hb=["button","color","file","image","reset","submit"];function Jl(t){if(typeof t.checkVisibility=="function")return t.checkVisibility();let e=t;return e.offsetWidth>0||e.offsetHeight>0||t.getClientRects().length>0}function mt(t){try{let e=t instanceof HTMLInputElement&&t.selectionStart!==null,r=t.tagName==="TEXTAREA";return e||r||!1}catch{return!1}}function Wn(t){return t.isContentEditable||mt(t)}function eu(t){if(mt(t))return t.value;if(t.isContentEditable){let e=Cr(t).createRange();return e.selectNodeContents(t),e.toString()}return""}function Jo(t){let e=0,r=0;if(mt(t))e=t.selectionStart||0,r=t.selectionEnd||0;else if(t.isContentEditable){let o=Cr(t).getSelection();if(o?.rangeCount&&o.anchorNode&&Qt(t,o.anchorNode)&&o.focusNode&&Qt(t,o.focusNode)){let n=o.getRangeAt(0),i=n.cloneRange();i.selectNodeContents(t),i.setEnd(n.startContainer,n.startOffset),e=i.toString().length,i.setEnd(n.endContainer,n.endOffset),r=i.toString().length}}return{start:e,end:r}}function tu(t,e){let r=["dialog","menu","listbox","tree","grid"],o=t?.getAttribute("role");return o&&r.indexOf(o)!==-1?o:e}function en(t){if(!t)return null;let e=r=>r==="auto"||r==="scroll";if(t.clientHeight&&t.scrollHeight>t.clientHeight){let{overflowY:r}=getComputedStyle(t);if(e(r))return t}else if(t.clientWidth&&t.scrollWidth>t.clientWidth){let{overflowX:r}=getComputedStyle(t);if(e(r))return t}return en(t.parentElement)||document.scrollingElement||document.body}function zn(t,...e){/text|search|password|tel|url/i.test(t.type)&&t.setSelectionRange(...e)}function ru(t,e){let r=t.map((n,i)=>[i,n]),o=!1;return r.sort(([n,i],[a,l])=>{let s=e(i),u=e(l);return s===u||!s||!u?0:jb(s,u)?(n>a&&(o=!0),-1):(ni):t}function jb(t,e){return!!(e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_PRECEDING)}function ou(){return ro&&!!navigator.maxTouchPoints}function da(){return ro?/mac|iphone|ipad|ipod/i.test(navigator.platform):!1}function Co(){return ro&&da()&&/apple/i.test(navigator.vendor)}function nu(){return ro&&/firefox\//i.test(navigator.userAgent)}function ma(t){return!!(t.currentTarget&&!Qt(t.currentTarget,t.target))}function st(t){return t.target===t.currentTarget}function wd(t){let e=t.currentTarget;if(!e)return!1;let r=da();if(r&&!t.metaKey||!r&&!t.ctrlKey)return!1;let o=e.tagName.toLowerCase();return o==="a"||o==="button"&&e.type==="submit"||o==="input"&&e.type==="submit"}function yd(t){let e=t.currentTarget;if(!e)return!1;let r=e.tagName.toLowerCase();return t.altKey?r==="a"||r==="button"&&e.type==="submit"||r==="input"&&e.type==="submit":!1}function _o(t,e){let r=new FocusEvent("blur",e),o=t.dispatchEvent(r),n={...e,bubbles:!0};return t.dispatchEvent(new FocusEvent("focusout",n)),o}function Sd(t,e,r){let o=new KeyboardEvent(e,r);return t.dispatchEvent(o)}function iu(t,e){let r=new MouseEvent("click",e);return t.dispatchEvent(r)}function pa(t,e){let r=e||t.currentTarget,o=t.relatedTarget;return!o||!Qt(r,o)}function oo(t,e,r,o){let i=(l=>{if(o){let u=setTimeout(l,o);return()=>clearTimeout(u)}let s=requestAnimationFrame(l);return()=>cancelAnimationFrame(s)})(()=>{t.removeEventListener(e,a,!0),r()}),a=()=>{i(),r()};return t.addEventListener(e,a,{once:!0,capture:!0}),i}function Jt(t,e,r,o=window){let n=[];try{o.document.addEventListener(t,e,r);for(let a of Array.from(o.frames))n.push(Jt(t,e,r,a))}catch{}return()=>{try{o.document.removeEventListener(t,e,r)}catch{}for(let a of n)a()}}var Wb=c(le(),1),de=c(le(),1),au={...Wb},Cd=au.useId,t2=au.useDeferredValue,_d=au.useInsertionEffect,Ae=ro?de.useLayoutEffect:de.useEffect;function zb(t){let[e]=(0,de.useState)(t);return e}function Id(t){let e=(0,de.useRef)(t);return Ae(()=>{e.current=t}),e}function te(t){let e=(0,de.useRef)(()=>{throw new Error("Cannot call an event handler while rendering.")});return _d?_d(()=>{e.current=t}):e.current=t,(0,de.useCallback)((...r)=>{var o;return(o=e.current)==null?void 0:o.call(e,...r)},[])}function Od(t){let[e,r]=(0,de.useState)(null);return Ae(()=>{if(e==null||!t)return;let o=null;return t(n=>(o=n,e)),()=>{t(o)}},[e,t]),[e,r]}function Ie(...t){return(0,de.useMemo)(()=>{if(t.some(Boolean))return e=>{for(let r of t)hd(r,e)}},t)}function Mt(t){if(Cd){let o=Cd();return t||o}let[e,r]=(0,de.useState)(t);return Ae(()=>{if(t||e)return;let o=Math.random().toString(36).slice(2,8);r(`id-${o}`)},[t,e]),t||e}function Td(t,e){let r=i=>{if(typeof i=="string")return i},[o,n]=(0,de.useState)(()=>r(e));return Ae(()=>{let i=t&&"current"in t?t.current:t;n(i?.tagName.toLowerCase()||r(e))},[t,e]),o}function Rd(t,e,r){let o=zb(r),[n,i]=(0,de.useState)(o);return(0,de.useEffect)(()=>{let a=t&&"current"in t?t.current:t;if(!a)return;let l=()=>{let u=a.getAttribute(e);i(u??o)},s=new MutationObserver(l);return s.observe(a,{attributeFilter:[e]}),l(),()=>s.disconnect()},[t,e,o]),n}function er(t,e){let r=(0,de.useRef)(!1);(0,de.useEffect)(()=>{if(r.current)return t();r.current=!0},e),(0,de.useEffect)(()=>()=>{r.current=!1},[])}function Vd(t,e){let r=(0,de.useRef)(!1);Ae(()=>{if(r.current)return t();r.current=!0},e),Ae(()=>()=>{r.current=!1},[])}function Nd(){return(0,de.useReducer)(()=>[],[])}function Me(t){return te(typeof t=="function"?t:()=>t)}function tr(t,e,r=[]){let o=(0,de.useCallback)(n=>(t.wrapElement&&(n=t.wrapElement(n)),e(n)),[...r,t.wrapElement]);return{...t,wrapElement:o}}function Dd(t,e,r){let o=t.onLoadedMetadataCapture,n=(0,de.useMemo)(()=>Object.assign(()=>{},{...o,[e]:r}),[o,e,r]);return[o?.[e],{onLoadedMetadataCapture:n}]}var Ed=!1;function kd(){return(0,de.useEffect)(()=>{Ed||(Jt("mousemove",qb,!0),Jt("mousedown",va,!0),Jt("mouseup",va,!0),Jt("keydown",va,!0),Jt("scroll",va,!0),Ed=!0)},[]),te(()=>su)}var su=!1,Pd=0,Ad=0;function Gb(t){let e=t.movementX||t.screenX-Pd,r=t.movementY||t.screenY-Ad;return Pd=t.screenX,Ad=t.screenY,e||r||!1}function qb(t){Gb(t)&&(su=!0)}function va(){su=!1}var pt=c(le(),1),Eo=c(V(),1);function me(t){let e=pt.forwardRef((r,o)=>t({...r,ref:o}));return e.displayName=t.displayName||t.name,e}function no(t,e){return pt.memo(t,e)}function be(t,e){let{wrapElement:r,render:o,...n}=e,i=Ie(e.ref,bd(o)),a;if(pt.isValidElement(o)){let l={...o.props,ref:i};a=pt.cloneElement(o,xd(n,l))}else o?a=o(n):a=(0,Eo.jsx)(t,{...n});return r?r(a):a}function xe(t){let e=(r={})=>t(r);return e.displayName=t.name,e}function Ct(t=[],e=[]){let r=pt.createContext(void 0),o=pt.createContext(void 0),n=()=>pt.useContext(r),i=(u=!1)=>{let f=pt.useContext(o),m=n();return u?f:f||m},a=()=>{let u=pt.useContext(o),f=n();if(!(u&&u===f))return f},l=u=>t.reduceRight((f,m)=>(0,Eo.jsx)(m,{...u,children:f}),(0,Eo.jsx)(r.Provider,{...u}));return{context:r,scopedContext:o,useContext:n,useScopedContext:i,useProviderContext:a,ContextProvider:l,ScopedContextProvider:u=>(0,Eo.jsx)(l,{...u,children:e.reduceRight((f,m)=>(0,Eo.jsx)(m,{...u,children:f}),(0,Eo.jsx)(o.Provider,{...u}))})}}var Gn=Ct(),Md=Gn.useContext,s2=Gn.useScopedContext,l2=Gn.useProviderContext,Fd=Gn.ContextProvider,Ld=Gn.ScopedContextProvider;var lu=c(le(),1),qn=Ct([Fd],[Ld]),ga=qn.useContext,d2=qn.useScopedContext,Bd=qn.useProviderContext,tn=qn.ContextProvider,ha=qn.ScopedContextProvider,Hd=(0,lu.createContext)(void 0),jd=(0,lu.createContext)(void 0);function Wd(t,e){return t.find(r=>e?!r.disabled&&r.id!==e:!r.disabled)}function rr(t,e){return e&&t.item(e)||null}function zd(t){let e=[];for(let r of t){let o=e.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):e.push([r])}return e}function Gd(t,e=!1){if(mt(t))t.setSelectionRange(e?t.value.length:0,t.value.length);else if(t.isContentEditable){let r=Cr(t).getSelection();r?.selectAllChildren(t),e&&r?.collapseToEnd()}}var uu=Symbol("FOCUS_SILENTLY");function qd(t){t[uu]=!0,t.focus({preventScroll:!0})}function Yd(t){let e=t[uu];return delete t[uu],e}function Po(t,e,r){if(!e||e===r)return!1;let o=t.item(e.id);return!(!o||r&&o.element===r)}var ba=c(le(),1),Yb="div",cu=xe(function({store:e,shouldRegisterItem:r=!0,getItem:o=jn,element:n,...i}){let a=Md();e=e||a;let l=Mt(i.id),s=(0,ba.useRef)(n);return(0,ba.useEffect)(()=>{let u=s.current;if(!l||!u||!r)return;let f=o({id:l,element:u});return e?.renderItem(f)},[l,r,o,e]),i={...i,ref:Ie(s,i.ref)},Qe(i)}),w2=me(function(e){let r=cu(e);return be(Yb,r)});var Ud=c(le(),1),$d=(0,Ud.createContext)(!0);var Kd="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 Yn(t){return!(!t.matches(Kd)||!Jl(t)||t.closest("[inert]"))}function Zd(t){for(;t&&!Yn(t);)t=t.closest(Kd);return t||null}function Ft(t){let e=So(t);if(!e)return!1;if(e===t)return!0;let r=e.getAttribute("aria-activedescendant");return r?r===t.id:!1}function fu(t){let e=So(t);if(!e)return!1;if(Qt(t,e))return!0;let r=e.getAttribute("aria-activedescendant");return!r||!("id"in t)?!1:r===t.id?!0:!!t.querySelector(`#${CSS.escape(r)}`)}function Xd(t){!fu(t)&&Yn(t)&&t.focus()}function Qd(t,e){"scrollIntoView"in t?(t.focus({preventScroll:!0}),t.scrollIntoView({block:"nearest",inline:"nearest",...e})):t.focus()}var Rt=c(le(),1),Ub="div",Jd=Co(),$b=["text","search","url","tel","email","password","number","date","month","week","time","datetime","datetime-local"],Kb=Symbol("safariFocusAncestor");function em(t,e){t&&(t[Kb]=e)}function Zb(t){let{tagName:e,readOnly:r,type:o}=t;return e==="TEXTAREA"&&!r||e==="SELECT"&&!r?!0:e==="INPUT"&&!r?$b.includes(o):!!(t.isContentEditable||t.getAttribute("role")==="combobox"&&t.dataset.name)}function Xb(t){return"labels"in t?t.labels:null}function tm(t){return t.tagName.toLowerCase()==="input"&&t.type?t.type==="radio"||t.type==="checkbox":!1}function Qb(t){return t?t==="button"||t==="summary"||t==="input"||t==="select"||t==="textarea"||t==="a":!0}function Jb(t){return t?t==="button"||t==="input"||t==="select"||t==="textarea":!0}function ex(t,e,r,o,n){return t?e?r&&!o?-1:void 0:r?n:n||0:n}function du(t,e){return te(r=>{t?.(r),!r.defaultPrevented&&e&&(r.stopPropagation(),r.preventDefault())})}var rm=!1,mu=!0;function tx(t){let e=t.target;e&&"hasAttribute"in e&&(e.hasAttribute("data-focus-visible")||(mu=!1))}function rx(t){t.metaKey||t.ctrlKey||t.altKey||(mu=!0)}var Un=xe(function({focusable:e=!0,accessibleWhenDisabled:r,autoFocus:o,onFocusVisible:n,...i}){let a=(0,Rt.useRef)(null);(0,Rt.useEffect)(()=>{e&&(rm||(Jt("mousedown",tx,!0),Jt("keydown",rx,!0),rm=!0))},[e]),Jd&&(0,Rt.useEffect)(()=>{if(!e)return;let x=a.current;if(!x||!tm(x))return;let R=Xb(x);if(!R)return;let w=()=>queueMicrotask(()=>x.focus());for(let _ of R)_.addEventListener("mouseup",w);return()=>{for(let _ of R)_.removeEventListener("mouseup",w)}},[e]);let l=e&&yo(i),s=!!l&&!r,[u,f]=(0,Rt.useState)(!1);(0,Rt.useEffect)(()=>{e&&s&&u&&f(!1)},[e,s,u]),(0,Rt.useEffect)(()=>{if(!e||!u)return;let x=a.current;if(!x||typeof IntersectionObserver>"u")return;let R=new IntersectionObserver(()=>{Yn(x)||f(!1)});return R.observe(x),()=>R.disconnect()},[e,u]);let m=du(i.onKeyPressCapture,l),d=du(i.onMouseDownCapture,l),p=du(i.onClickCapture,l),v=i.onMouseDown,y=te(x=>{if(v?.(x),x.defaultPrevented||!e)return;let R=x.currentTarget;if(!Jd||ma(x)||!_r(R)&&!tm(R))return;let w=!1,_=()=>{w=!0},M={capture:!0,once:!0};R.addEventListener("focusin",_,M);let H=Zd(R.parentElement);em(H,!0),oo(R,"mouseup",()=>{R.removeEventListener("focusin",_,!0),em(H,!1),!w&&Xd(R)})}),g=(x,R)=>{if(R&&(x.currentTarget=R),!e)return;let w=x.currentTarget;w&&Ft(w)&&(n?.(x),!x.defaultPrevented&&(w.dataset.focusVisible="true",f(!0)))},b=i.onKeyDownCapture,S=te(x=>{if(b?.(x),x.defaultPrevented||!e||u||x.metaKey||x.altKey||x.ctrlKey||!st(x))return;let R=x.currentTarget;oo(R,"focusout",()=>g(x,R))}),A=i.onFocusCapture,T=te(x=>{if(A?.(x),x.defaultPrevented||!e)return;if(!st(x)){f(!1);return}let R=x.currentTarget,w=()=>g(x,R);mu||Zb(x.target)?oo(x.target,"focusout",w):f(!1)}),O=i.onBlur,k=te(x=>{O?.(x),e&&pa(x)&&(x.currentTarget.removeAttribute("data-focus-visible"),f(!1))}),D=(0,Rt.useContext)($d),C=te(x=>{e&&o&&x&&D&&queueMicrotask(()=>{Ft(x)||Yn(x)&&x.focus()})}),I=Td(a),N=e&&Qb(I),h=e&&Jb(I),E=i.style,P=(0,Rt.useMemo)(()=>s?{pointerEvents:"none",...E}:E,[s,E]);return i={"data-focus-visible":e&&u||void 0,"data-autofocus":o||void 0,"aria-disabled":l||void 0,...i,ref:Ie(a,C,i.ref),style:P,tabIndex:ex(e,s,N,h,i.tabIndex),disabled:h&&s?!0:void 0,contentEditable:l?void 0:i.contentEditable,onKeyPressCapture:m,onClickCapture:p,onMouseDownCapture:d,onMouseDown:y,onKeyDownCapture:S,onFocusCapture:T,onBlur:k},Qe(i)}),M2=me(function(e){let r=Un(e);return be(Ub,r)});var io=c(le(),1),ox="button";function om(t){if(!t.isTrusted)return!1;let e=t.currentTarget;return t.key==="Enter"?_r(e)||e.tagName==="SUMMARY"||e.tagName==="A":t.key===" "?_r(e)||e.tagName==="SUMMARY"||e.tagName==="INPUT"||e.tagName==="SELECT":!1}var nx=Symbol("command"),pu=xe(function({clickOnEnter:e=!0,clickOnSpace:r=!0,...o}){let n=(0,io.useRef)(null),[i,a]=(0,io.useState)(!1);(0,io.useEffect)(()=>{n.current&&a(_r(n.current))},[]);let[l,s]=(0,io.useState)(!1),u=(0,io.useRef)(!1),f=yo(o),[m,d]=Dd(o,nx,!0),p=o.onKeyDown,v=te(b=>{p?.(b);let S=b.currentTarget;if(b.defaultPrevented||m||f||!st(b)||mt(S)||S.isContentEditable)return;let A=e&&b.key==="Enter",T=r&&b.key===" ",O=b.key==="Enter"&&!e,k=b.key===" "&&!r;if(O||k){b.preventDefault();return}if(A||T){let D=om(b);if(A){if(!D){b.preventDefault();let{view:C,...I}=b,N=()=>iu(S,I);nu()?oo(S,"keyup",N):queueMicrotask(N)}}else T&&(u.current=!0,D||(b.preventDefault(),s(!0)))}}),y=o.onKeyUp,g=te(b=>{if(y?.(b),b.defaultPrevented||m||f||b.metaKey)return;let S=r&&b.key===" ";if(u.current&&S&&(u.current=!1,!om(b))){b.preventDefault(),s(!1);let A=b.currentTarget,{view:T,...O}=b;queueMicrotask(()=>iu(A,O))}});return o={"data-active":l||void 0,type:i?"button":void 0,...d,...o,ref:Ie(n,o.ref),onKeyDown:v,onKeyUp:g},o=Un(o),o}),q2=me(function(e){let r=pu(e);return be(ox,r)});function Ao(t,e){let r=t.__unstableInternals;return Xe(r,"Invalid store"),r[e]}function vt(t,...e){let r=t,o=r,n=Symbol(),i=Bn,a=new Set,l=new Set,s=new Set,u=new Set,f=new Set,m=new WeakMap,d=new WeakMap,p=C=>(s.add(C),()=>s.delete(C)),v=()=>{let C=a.size,I=Symbol();a.add(I);let N=()=>{a.delete(I),!a.size&&i()};if(C)return N;let h=Zl(r).map(x=>to(...e.map(R=>{var w;let _=(w=R?.getState)==null?void 0:w.call(R);if(_&&St(_,x))return $e(R,[x],M=>{k(x,M[x],!0)})}))),E=[];for(let x of s)E.push(x());let P=e.map(rn);return i=to(...h,...E,...P),N},y=(C,I,N=u)=>(N.add(I),d.set(I,C),()=>{var h;(h=m.get(I))==null||h(),m.delete(I),d.delete(I),N.delete(I)}),g=(C,I)=>y(C,I),b=(C,I)=>(m.set(I,I(r,r)),y(C,I)),S=(C,I)=>(m.set(I,I(r,o)),y(C,I,f)),A=C=>vt(Kl(r,C),D),T=C=>vt($l(r,C),D),O=()=>r,k=(C,I,N=!1)=>{var h;if(!St(r,C))return;let E=Ul(I,r[C]);if(E===r[C])return;if(!N)for(let w of e)(h=w?.setState)==null||h.call(w,C,E);let P=r;r={...r,[C]:E};let x=Symbol();n=x,l.add(C);let R=(w,_,M)=>{var H;let ae=d.get(w),Se=Ne=>M?M.has(Ne):Ne===C;(!ae||ae.some(Se))&&((H=m.get(w))==null||H(),m.set(w,w(r,_)))};for(let w of u)R(w,P);queueMicrotask(()=>{if(n!==x)return;let w=r;for(let _ of f)R(_,o,l);o=w,l.clear()})},D={getState:O,setState:k,__unstableInternals:{setup:p,init:v,subscribe:g,sync:b,batch:S,pick:A,omit:T}};return D}function Ue(t,...e){if(t)return Ao(t,"setup")(...e)}function rn(t,...e){if(t)return Ao(t,"init")(...e)}function on(t,...e){if(t)return Ao(t,"subscribe")(...e)}function $e(t,...e){if(t)return Ao(t,"sync")(...e)}function ao(t,...e){if(t)return Ao(t,"batch")(...e)}function $n(t,...e){if(t)return Ao(t,"omit")(...e)}function vu(t,...e){if(t)return Ao(t,"pick")(...e)}function Io(...t){var e;let r={};for(let n of t){let i=(e=n?.getState)==null?void 0:e.call(n);i&&Object.assign(r,i)}let o=vt(r,...t);return Object.assign({},...t,o)}var or=c(le(),1),nm=c(rf(),1),{useSyncExternalStore:im}=nm.default,am=()=>()=>{};function nn(t,e=jn){let r=or.useCallback(n=>t?on(t,null,n):am(),[t]),o=()=>{let n=typeof e=="string"?e:null,i=typeof e=="function"?e:null,a=t?.getState();if(i)return i(a);if(a&&n&&St(a,n))return a[n]};return im(r,o,o)}function wa(t,e){let r=or.useRef({}),o=or.useCallback(i=>t?on(t,null,i):am(),[t]),n=()=>{let i=t?.getState(),a=!1,l=r.current;for(let s in e){let u=e[s];if(typeof u=="function"){let f=u(i);f!==l[s]&&(l[s]=f,a=!0)}if(typeof u=="string"){if(!i||!St(i,u))continue;let f=i[u];f!==l[s]&&(l[s]=f,a=!0)}}return a&&(r.current={...l}),r.current};return im(o,n,n)}function Oe(t,e,r,o){let n=St(e,r)?e[r]:void 0,i=o?e[o]:void 0,a=Id({value:n,setValue:i});Ae(()=>$e(t,[r],(l,s)=>{let{value:u,setValue:f}=a.current;f&&l[r]!==s[r]&&l[r]!==u&&f(l[r])}),[t,r]),Ae(()=>{if(n!==void 0)return t.setState(r,n),ao(t,[r],()=>{n!==void 0&&t.setState(r,n)})})}function an(t,e){let[r,o]=or.useState(()=>t(e));Ae(()=>rn(r),[r]);let n=or.useCallback(l=>nn(r,l),[r]),i=or.useMemo(()=>({...r,useState:n}),[r,n]),a=te(()=>{o(l=>t({...e,...l.getState()}))});return[i,a]}var Er=c(le(),1),lm=c(V(),1),ix="button";function ax(t){return Wn(t)?!0:t.tagName==="INPUT"&&!_r(t)}function sx(t,e=!1){let r=t.clientHeight,{top:o}=t.getBoundingClientRect(),n=Math.max(r*.875,r-40)*1.5,i=e?r-n+o:n+o;return t.tagName==="HTML"?i+t.scrollTop:i}function lx(t,e=!1){let{top:r}=t.getBoundingClientRect();return e?r+t.clientHeight:r}function sm(t,e,r,o=!1){var n;if(!e||!r)return;let{renderedItems:i}=e.getState(),a=en(t);if(!a)return;let l=sx(a,o),s,u;for(let f=0;f=0){u!==void 0&&uH.rowId===g);return p.ariaPosInSet+M.findIndex(H=>H.id===m)},isTabbable(_){if(!_?.renderedItems.length)return!0;if(_.virtualFocus)return!1;if(i)return!0;if(_.activeId===null)return!1;let M=e?.item(_.activeId);return M?.disabled||!M?.element?!0:_.activeId===m}}),k=(0,Er.useCallback)(_=>{var M;let H={..._,id:m||_.id,rowId:g,disabled:!!y,children:(M=_.element)==null?void 0:M.textContent};return a?a(H):H},[m,g,y,a]),D=u.onFocus,C=(0,Er.useRef)(!1),I=te(_=>{if(D?.(_),_.defaultPrevented||ma(_)||!m||!e||ux(_,e))return;let{virtualFocus:M,baseElement:H}=e.getState();if(e.setActiveId(m),Wn(_.currentTarget)&&Gd(_.currentTarget),!M||!st(_)||ax(_.currentTarget)||!H?.isConnected)return;Co()&&_.currentTarget.hasAttribute("data-autofocus")&&_.currentTarget.scrollIntoView({block:"nearest",inline:"nearest"}),C.current=!0,_.relatedTarget===H||Po(e,_.relatedTarget)?qd(H):H.focus()}),N=u.onBlurCapture,h=te(_=>{if(N?.(_),_.defaultPrevented)return;let M=e?.getState();M?.virtualFocus&&C.current&&(C.current=!1,_.preventDefault(),_.stopPropagation())}),E=u.onKeyDown,P=Me(o),x=Me(n),R=te(_=>{if(E?.(_),_.defaultPrevented||!st(_)||!e)return;let{currentTarget:M}=_,H=e.getState(),ae=e.item(m),Se=!!ae?.rowId,Ne=H.orientation!=="horizontal",He=H.orientation!=="vertical",rt=()=>!!(Se||He||!H.baseElement||!mt(H.baseElement)),mr={ArrowUp:(Se||Ne)&&e.up,ArrowRight:(Se||He)&&e.next,ArrowDown:(Se||Ne)&&e.down,ArrowLeft:(Se||He)&&e.previous,Home:()=>{if(rt())return!Se||_.ctrlKey?e?.first():e?.previous(-1)},End:()=>{if(rt())return!Se||_.ctrlKey?e?.last():e?.next(-1)},PageUp:()=>sm(M,e,e?.up,!0),PageDown:()=>sm(M,e,e?.down)}[_.key];if(mr){if(Wn(M)){let Q=Jo(M),ge=He&&_.key==="ArrowLeft",pr=He&&_.key==="ArrowRight",vr=Ne&&_.key==="ArrowUp",mo=Ne&&_.key==="ArrowDown";if(pr||mo){let{length:po}=eu(M);if(Q.end!==po)return}else if((ge||vr)&&Q.start!==0)return}let Y=mr();if(P(_)||Y!==void 0){if(!x(_))return;_.preventDefault(),e.move(Y)}}}),w=(0,Er.useMemo)(()=>({id:m,baseElement:b}),[m,b]);return u=tr(u,_=>(0,lm.jsx)(Hd.Provider,{value:w,children:_}),[w]),u={id:m,"data-active-item":S||void 0,...u,ref:Ie(d,u.ref),tabIndex:O?u.tabIndex:-1,onFocus:I,onBlurCapture:h,onKeyDown:R},u=pu(u),u=cu({store:e,...u,getItem:k,shouldRegisterItem:m?u.shouldRegisterItem:!1}),Qe({...u,"aria-setsize":A,"aria-posinset":T})}),dP=no(me(function(e){let r=gu(e);return be(ix,r)}));function hu(t){return Array.isArray(t)?t:typeof t<"u"?[t]:[]}function Kn(t){let e=[];for(let r of t)e.push(...r);return e}function sn(t){return t.slice().reverse()}var nr=c(le(),1),cm=c(V(),1),cx="div";function fx(t){return t.some(e=>!!e.rowId)}function dx(t){let e=t.target;return e&&!mt(e)?!1:t.key.length===1&&!t.ctrlKey&&!t.metaKey}function mx(t){return t.key==="Shift"||t.key==="Control"||t.key==="Alt"||t.key==="Meta"}function um(t,e,r){return te(o=>{var n;if(e?.(o),o.defaultPrevented||o.isPropagationStopped()||!st(o)||mx(o)||dx(o))return;let i=t.getState(),a=(n=rr(t,i.activeId))==null?void 0:n.element;if(!a)return;let{view:l,...s}=o,u=r?.current;a!==u&&a.focus(),Sd(a,o.type,s)||o.preventDefault(),o.currentTarget.contains(a)&&o.stopPropagation()})}function px(t){return Wd(Kn(sn(zd(t))))}function vx(t){let[e,r]=(0,nr.useState)(!1),o=(0,nr.useCallback)(()=>r(!0),[]),n=t.useState(i=>rr(t,i.activeId));return(0,nr.useEffect)(()=>{let i=n?.element;e&&i&&(r(!1),i.focus({preventScroll:!0}))},[n,e]),o}var bu=xe(function({store:e,composite:r=!0,focusOnMove:o=r,moveOnKeyPress:n=!0,...i}){let a=Bd();e=e||a,Xe(e,!1);let l=(0,nr.useRef)(null),s=(0,nr.useRef)(null),u=vx(e),f=e.useState("moves"),[,m]=Od(r?e.setBaseElement:null);(0,nr.useEffect)(()=>{var h;if(!e||!f||!r||!o)return;let{activeId:E}=e.getState(),P=(h=rr(e,E))==null?void 0:h.element;P&&Qd(P)},[e,f,r,o]),Ae(()=>{if(!e||!f||!r)return;let{baseElement:h,activeId:E}=e.getState();if(!(E===null)||!h)return;let x=s.current;s.current=null,x&&_o(x,{relatedTarget:h}),Ft(h)||h.focus()},[e,f,r]);let d=e.useState("activeId"),p=e.useState("virtualFocus");Ae(()=>{var h;if(!e||!r||!p)return;let E=s.current;if(s.current=null,!E)return;let x=((h=rr(e,d))==null?void 0:h.element)||So(E);x!==E&&_o(E,{relatedTarget:x})},[e,d,p,r]);let v=um(e,i.onKeyDownCapture,s),y=um(e,i.onKeyUpCapture,s),g=i.onFocusCapture,b=te(h=>{if(g?.(h),h.defaultPrevented||!e)return;let{virtualFocus:E}=e.getState();if(!E)return;let P=h.relatedTarget,x=Yd(h.currentTarget);st(h)&&x&&(h.stopPropagation(),s.current=P)}),S=i.onFocus,A=te(h=>{if(S?.(h),h.defaultPrevented||!r||!e)return;let{relatedTarget:E}=h,{virtualFocus:P}=e.getState();P?st(h)&&!Po(e,E)&&queueMicrotask(u):st(h)&&e.setActiveId(null)}),T=i.onBlurCapture,O=te(h=>{var E;if(T?.(h),h.defaultPrevented||!e)return;let{virtualFocus:P,activeId:x}=e.getState();if(!P)return;let R=(E=rr(e,x))==null?void 0:E.element,w=h.relatedTarget,_=Po(e,w),M=s.current;s.current=null,st(h)&&_?(w===R?M&&M!==w&&_o(M,h):R?_o(R,h):M&&_o(M,h),h.stopPropagation()):!Po(e,h.target)&&R&&_o(R,h)}),k=i.onKeyDown,D=Me(n),C=te(h=>{var E;if(k?.(h),h.nativeEvent.isComposing||h.defaultPrevented||!e||!st(h))return;let{orientation:P,renderedItems:x,activeId:R}=e.getState(),w=rr(e,R);if((E=w?.element)!=null&&E.isConnected)return;let _=P!=="horizontal",M=P!=="vertical",H=fx(x);if((h.key==="ArrowLeft"||h.key==="ArrowRight"||h.key==="Home"||h.key==="End")&&mt(h.currentTarget))return;let He={ArrowUp:(H||_)&&(()=>{if(H){let rt=px(x);return rt?.id}return e?.last()}),ArrowRight:(H||M)&&e.first,ArrowDown:(H||_)&&e.first,ArrowLeft:(H||M)&&e.last,Home:e.first,End:e.last,PageUp:e.first,PageDown:e.last}[h.key];if(He){let rt=He();if(rt!==void 0){if(!D(h))return;h.preventDefault(),e.move(rt)}}});i=tr(i,h=>(0,cm.jsx)(tn,{value:e,children:h}),[e]),i={"aria-activedescendant":e.useState(h=>{var E;if(e&&r&&h.virtualFocus)return(E=rr(e,h.activeId))==null?void 0:E.id}),...i,ref:Ie(l,m,i.ref),onKeyDownCapture:v,onKeyUpCapture:y,onFocusCapture:b,onFocus:A,onBlurCapture:O,onKeyDown:C};let N=e.useState(h=>r&&(h.virtualFocus||h.activeId===null));return i=Un({focusable:N,...i}),i}),IP=me(function(e){let r=bu(e);return be(cx,r)});var Zn=Ct(),RP=Zn.useContext,VP=Zn.useScopedContext,xu=Zn.useProviderContext,fm=Zn.ContextProvider,dm=Zn.ScopedContextProvider;var wu=c(le(),1),Xn=Ct([fm],[dm]),MP=Xn.useContext,FP=Xn.useScopedContext,LP=Xn.useProviderContext,mm=Xn.ContextProvider,ya=Xn.ScopedContextProvider,BP=(0,wu.createContext)(void 0),HP=(0,wu.createContext)(void 0);var ln=c(le(),1),gm=c(Qc(),1),yu=c(V(),1),gx="div";function pm(t,e){let r=setTimeout(e,t);return()=>clearTimeout(r)}function hx(t){let e=requestAnimationFrame(()=>{e=requestAnimationFrame(t)});return()=>cancelAnimationFrame(e)}function vm(...t){return t.join(", ").split(", ").reduce((e,r)=>{let o=r.endsWith("ms")?1:1e3,n=Number.parseFloat(r||"0s")*o;return n>e?n:e},0)}function Su(t,e,r){return!r&&e!==!1&&(!t||!!e)}var bx=xe(function({store:e,alwaysVisible:r,...o}){let n=xu();e=e||n,Xe(e,!1);let i=(0,ln.useRef)(null),a=Mt(o.id),[l,s]=(0,ln.useState)(null),u=e.useState("open"),f=e.useState("mounted"),m=e.useState("animated"),d=e.useState("contentElement"),p=nn(e.disclosure,"contentElement");Ae(()=>{i.current&&e?.setContentElement(i.current)},[e]),Ae(()=>{let b;return e?.setState("animated",S=>(b=S,!0)),()=>{b!==void 0&&e?.setState("animated",b)}},[e]),Ae(()=>{if(m){if(!d?.isConnected){s(null);return}return hx(()=>{s(u?"enter":f?"leave":null)})}},[m,d,u,f]),Ae(()=>{if(!e||!m||!l||!d)return;let b=()=>e?.setState("animating",!1),S=()=>(0,gm.flushSync)(b);if(l==="leave"&&u||l==="enter"&&!u)return;if(typeof m=="number")return pm(m,S);let{transitionDuration:A,animationDuration:T,transitionDelay:O,animationDelay:k}=getComputedStyle(d),{transitionDuration:D="0",animationDuration:C="0",transitionDelay:I="0",animationDelay:N="0"}=p?getComputedStyle(p):{},h=vm(O,k,I,N),E=vm(A,T,D,C),P=h+E;if(!P){l==="enter"&&e.setState("animated",!1),b();return}let x=1e3/60,R=Math.max(P-x,0);return pm(R,S)},[e,m,d,p,u,l]),o=tr(o,b=>(0,yu.jsx)(ya,{value:e,children:b}),[e]);let v=Su(f,o.hidden,r),y=o.style,g=(0,ln.useMemo)(()=>v?{...y,display:"none"}:y,[v,y]);return o={id:a,"data-open":u||void 0,"data-enter":l==="enter"||void 0,"data-leave":l==="leave"||void 0,hidden:v,...o,ref:Ie(a?e.setContentElement:null,i,o.ref),style:g},Qe(o)}),xx=me(function(e){let r=bx(e);return be(gx,r)}),$P=me(function({unmountOnHide:e,...r}){let o=xu(),n=r.store||o;return nn(n,a=>!e||a?.mounted)===!1?null:(0,yu.jsx)(xx,{...r})});function hm(t={}){let e=Io(t.store,$n(t.disclosure,["contentElement","disclosureElement"]));let r=e?.getState(),o=ee(t.open,r?.open,t.defaultOpen,!1),n=ee(t.animated,r?.animated,!1),i={open:o,animated:n,animating:!!n&&o,mounted:o,contentElement:ee(r?.contentElement,null),disclosureElement:ee(r?.disclosureElement,null)},a=vt(i,e);return Ue(a,()=>$e(a,["animated","animating"],l=>{l.animated||a.setState("animating",!1)})),Ue(a,()=>on(a,["open"],()=>{a.getState().animated&&a.setState("animating",!0)})),Ue(a,()=>$e(a,["open","animating"],l=>{a.setState("mounted",l.open||l.animating)})),{...a,disclosure:t.disclosure,setOpen:l=>a.setState("open",l),show:()=>a.setState("open",!0),hide:()=>a.setState("open",!1),toggle:()=>a.setState("open",l=>!l),stopAnimation:()=>a.setState("animating",!1),setContentElement:l=>a.setState("contentElement",l),setDisclosureElement:l=>a.setState("disclosureElement",l)}}function bm(t,e,r){return er(e,[r.store,r.disclosure]),Oe(t,r,"open","setOpen"),Oe(t,r,"mounted","setMounted"),Oe(t,r,"animated"),Object.assign(t,{disclosure:r.disclosure})}var Qn=Ct([mm],[ya]),nA=Qn.useContext,iA=Qn.useScopedContext,xm=Qn.useProviderContext,wm=Qn.ContextProvider,ym=Qn.ScopedContextProvider;function wx(t){var e;let r=t.find(i=>!!i.element),o=[...t].reverse().find(i=>!!i.element),n=(e=r?.element)==null?void 0:e.parentElement;for(;n&&o?.element;){if(o&&n.contains(o.element))return n;n=n.parentElement}return Cr(n).body}function yx(t){return t?.__unstablePrivateStore}function Sm(t={}){var e;t.store;let r=(e=t.store)==null?void 0:e.getState(),o=ee(t.items,r?.items,t.defaultItems,[]),n=new Map(o.map(d=>[d.id,d])),i={items:o,renderedItems:ee(r?.renderedItems,[])},a=yx(t.store),l=vt({items:o,renderedItems:i.renderedItems},a),s=vt(i,t.store),u=d=>{let p=ru(d,v=>v.element);l.setState("renderedItems",p),s.setState("renderedItems",p)};Ue(s,()=>rn(l)),Ue(l,()=>ao(l,["items"],d=>{s.setState("items",d.items)})),Ue(l,()=>ao(l,["renderedItems"],d=>{let p=!0,v=requestAnimationFrame(()=>{let{renderedItems:S}=s.getState();d.renderedItems!==S&&u(d.renderedItems)});if(typeof IntersectionObserver!="function")return()=>cancelAnimationFrame(v);let y=()=>{if(p){p=!1;return}cancelAnimationFrame(v),v=requestAnimationFrame(()=>u(d.renderedItems))},g=wx(d.renderedItems),b=new IntersectionObserver(y,{root:g});for(let S of d.renderedItems)S.element&&b.observe(S.element);return()=>{cancelAnimationFrame(v),b.disconnect()}}));let f=(d,p,v=!1)=>{let y;return p(b=>{let S=b.findIndex(({id:T})=>T===d.id),A=b.slice();if(S!==-1){y=b[S];let T={...y,...d};A[S]=T,n.set(d.id,T)}else A.push(d),n.set(d.id,d);return A}),()=>{p(b=>{if(!y)return v&&n.delete(d.id),b.filter(({id:T})=>T!==d.id);let S=b.findIndex(({id:T})=>T===d.id);if(S===-1)return b;let A=b.slice();return A[S]=y,n.set(d.id,y),A})}},m=d=>f(d,p=>l.setState("items",p),!0);return{...s,registerItem:m,renderItem:d=>to(m(d),f(d,p=>l.setState("renderedItems",p))),item:d=>{if(!d)return null;let p=n.get(d);if(!p){let{items:v}=l.getState();p=v.find(y=>y.id===d),p&&n.set(d,p)}return p||null},__unstablePrivateStore:l}}function Cm(t,e,r){return er(e,[r.store]),Oe(t,r,"items","setItems"),t}var Sx={id:null};function Pr(t,e){return t.find(r=>e?!r.disabled&&r.id!==e:!r.disabled)}function Cx(t,e){return t.filter(r=>e?!r.disabled&&r.id!==e:!r.disabled)}function _m(t,e){return t.filter(r=>r.rowId===e)}function _x(t,e,r=!1){let o=t.findIndex(n=>n.id===e);return[...t.slice(o+1),...r?[Sx]:[],...t.slice(0,o)]}function Em(t){let e=[];for(let r of t){let o=e.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):e.push([r])}return e}function Pm(t){let e=0;for(let{length:r}of t)r>e&&(e=r);return e}function Ex(t){return{id:"__EMPTY_ITEM__",disabled:!0,rowId:t}}function Px(t,e,r){let o=Pm(t);for(let n of t)for(let i=0;i$e(a,["renderedItems","activeId"],s=>{a.setState("activeId",u=>{var f;return u!==void 0?u:(f=Pr(s.renderedItems))==null?void 0:f.id})}));let l=(s="next",u={})=>{var f,m;let d=a.getState(),{skip:p=0,activeId:v=d.activeId,focusShift:y=d.focusShift,focusLoop:g=d.focusLoop,focusWrap:b=d.focusWrap,includesBaseElement:S=d.includesBaseElement,renderedItems:A=d.renderedItems,rtl:T=d.rtl}=u,O=s==="up"||s==="down",k=s==="next"||s==="down",D=k?T&&!O:!T||O,C=y&&!p,I=O?Kn(Px(Em(A),v,C)):A;if(I=D?sn(I):I,I=O?Ax(I):I,v==null)return(f=Pr(I))==null?void 0:f.id;let N=I.find(H=>H.id===v);if(!N)return(m=Pr(I))==null?void 0:m.id;let h=I.some(H=>H.rowId),E=I.indexOf(N),P=I.slice(E+1),x=_m(P,N.rowId);if(p){let H=Cx(x,v),ae=H.slice(p)[0]||H[H.length-1];return ae?.id}let R=g&&(O?g!=="horizontal":g!=="vertical"),w=h&&b&&(O?b!=="horizontal":b!=="vertical"),_=k?(!h||O)&&R&&S:O?S:!1;if(R){let H=w&&!_?I:_m(I,N.rowId),ae=_x(H,v,_),Se=Pr(ae,v);return Se?.id}if(w){let H=Pr(_?x:P,v);return _?H?.id||null:H?.id}let M=Pr(x,v);return!M&&_?null:M?.id};return{...o,...a,setBaseElement:s=>a.setState("baseElement",s),setActiveId:s=>a.setState("activeId",s),move:s=>{s!==void 0&&(a.setState("activeId",s),a.setState("moves",u=>u+1))},first:()=>{var s;return(s=Pr(a.getState().renderedItems))==null?void 0:s.id},last:()=>{var s;return(s=Pr(sn(a.getState().renderedItems)))==null?void 0:s.id},next:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("next",s)),previous:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("previous",s)),down:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("down",s)),up:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("up",s))}}function Im(t){return{id:Mt(t.id),...t}}function Om(t,e,r){return t=Cm(t,e,r),Oe(t,r,"activeId","setActiveId"),Oe(t,r,"includesBaseElement"),Oe(t,r,"virtualFocus"),Oe(t,r,"orientation"),Oe(t,r,"rtl"),Oe(t,r,"focusLoop"),Oe(t,r,"focusWrap"),Oe(t,r,"focusShift"),t}var Sa=c(le(),1),Ca=(0,Sa.createContext)(void 0),Jn=Ct([wm,tn],[ym,ha]),Cu=Jn.useContext,un=Jn.useScopedContext,_a=Jn.useProviderContext,Tm=Jn.ContextProvider,Rm=Jn.ScopedContextProvider,Ea=(0,Sa.createContext)(void 0),Vm=(0,Sa.createContext)(!1);function Nm(t={}){return hm(t)}function Dm(t,e,r){return bm(t,e,r)}function km({popover:t,...e}={}){let r=Io(e.store,$n(t,["arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));let o=r?.getState(),n=Nm({...e,store:r}),i=ee(e.placement,o?.placement,"bottom"),a={...n.getState(),placement:i,currentPlacement:i,anchorElement:ee(o?.anchorElement,null),popoverElement:ee(o?.popoverElement,null),arrowElement:ee(o?.arrowElement,null),rendered:Symbol("rendered")},l=vt(a,n,r);return{...n,...l,setAnchorElement:s=>l.setState("anchorElement",s),setPopoverElement:s=>l.setState("popoverElement",s),setArrowElement:s=>l.setState("arrowElement",s),render:()=>l.setState("rendered",Symbol("rendered"))}}function Mm(t,e,r){return er(e,[r.popover]),Oe(t,r,"placement"),Dm(t,e,r)}var Ix="div",_u=xe(function({store:e,...r}){let o=xm();return e=e||o,r={...r,ref:Ie(e?.setAnchorElement,r.ref)},r}),WA=me(function(e){let r=_u(e);return be(Ix,r)});var Fm=c(le(),1),Ox="div";function Lm(t){let e=t.relatedTarget;return e?.nodeType===Node.ELEMENT_NODE?e:null}function Tx(t){let e=Lm(t);return e?Qt(t.currentTarget,e):!1}var Eu=Symbol("composite-hover");function Rx(t){let e=Lm(t);if(!e)return!1;do{if(St(e,Eu)&&e[Eu])return!0;e=e.parentElement}while(e);return!1}var Pu=xe(function({store:e,focusOnHover:r=!0,blurOnHoverEnd:o=!!r,...n}){let i=ga();e=e||i,Xe(e,!1);let a=kd(),l=n.onMouseMove,s=Me(r),u=te(v=>{if(l?.(v),!v.defaultPrevented&&a()&&s(v)){if(!fu(v.currentTarget)){let y=e?.getState().baseElement;y&&!Ft(y)&&y.focus()}e?.setActiveId(v.currentTarget.id)}}),f=n.onMouseLeave,m=Me(o),d=te(v=>{var y;f?.(v),!v.defaultPrevented&&a()&&(Tx(v)||Rx(v)||s(v)&&m(v)&&(e?.setActiveId(null),(y=e?.getState().baseElement)==null||y.focus()))}),p=(0,Fm.useCallback)(v=>{v&&(v[Eu]=!0)},[]);return n={...n,ref:Ie(p,n.ref),onMouseMove:u,onMouseLeave:d},Qe(n)}),ZA=no(me(function(e){let r=Pu(e);return be(Ox,r)}));var Je=c(le(),1),Vx="input";function Bm(t,e,r){if(!r)return!1;let o=t.find(n=>!n.disabled&&n.value);return o?.value===e}function Hm(t,e){return!e||t==null?!1:(t=Hn(t),e.length>t.length&&e.toLowerCase().indexOf(t.toLowerCase())===0)}function Nx(t){return t.type==="input"}function Dx(t){return t==="inline"||t==="list"||t==="both"||t==="none"}function kx(t){let e=t.find(r=>{var o;return r.disabled?!1:((o=r.element)==null?void 0:o.getAttribute("role"))!=="tab"});return e?.id}var Mx=xe(function({store:e,focusable:r=!0,autoSelect:o=!1,getAutoSelectId:n,setValueOnChange:i,showMinLength:a=0,showOnChange:l,showOnMouseDown:s,showOnClick:u=s,showOnKeyDown:f,showOnKeyPress:m=f,blurActiveItemOnClick:d,setValueOnClick:p=!0,moveOnKeyPress:v=!0,autoComplete:y="list",...g}){let b=_a();e=e||b,Xe(e,!1);let S=(0,Je.useRef)(null),[A,T]=Nd(),O=(0,Je.useRef)(!1),k=(0,Je.useRef)(!1),D=e.useState(L=>L.virtualFocus&&o),C=y==="inline"||y==="both",[I,N]=(0,Je.useState)(C);Vd(()=>{C&&N(!0)},[C]);let h=e.useState("value"),E=(0,Je.useRef)(void 0);(0,Je.useEffect)(()=>$e(e,["selectedValue","activeId"],(L,se)=>{E.current=se.selectedValue}),[]);let P=e.useState(L=>{var se;if(C&&I&&!(L.activeValue&&Array.isArray(L.selectedValue)&&(L.selectedValue.includes(L.activeValue)||(se=E.current)!=null&&se.includes(L.activeValue))))return L.activeValue}),x=e.useState("renderedItems"),R=e.useState("open"),w=e.useState("contentElement"),_=(0,Je.useMemo)(()=>{if(!C||!I)return h;if(Bm(x,P,D)){if(Hm(h,P)){let se=P?.slice(h.length)||"";return h+se}return h}return P||h},[C,I,x,P,D,h]);(0,Je.useEffect)(()=>{let L=S.current;if(!L)return;let se=()=>N(!0);return L.addEventListener("combobox-item-move",se),()=>{L.removeEventListener("combobox-item-move",se)}},[]),(0,Je.useEffect)(()=>{if(!C||!I||!P||!Bm(x,P,D)||!Hm(h,P))return;let se=Bn;return queueMicrotask(()=>{let je=S.current;if(!je)return;let{start:We,end:Nt}=Jo(je),gr=h.length,ot=P.length;zn(je,gr,ot),se=()=>{if(!Ft(je))return;let{start:vo,end:xh}=Jo(je);vo===gr&&xh===ot&&zn(je,We,Nt)}}),()=>se()},[A,C,I,P,x,D,h]);let M=(0,Je.useRef)(null),H=te(n),ae=(0,Je.useRef)(null);(0,Je.useEffect)(()=>{if(!R||!w)return;let L=en(w);if(!L)return;M.current=L;let se=()=>{O.current=!1},je=()=>{if(!e||!O.current)return;let{activeId:Nt}=e.getState();Nt!==null&&Nt!==ae.current&&(O.current=!1)},We={passive:!0,capture:!0};return L.addEventListener("wheel",se,We),L.addEventListener("touchmove",se,We),L.addEventListener("scroll",je,We),()=>{L.removeEventListener("wheel",se,!0),L.removeEventListener("touchmove",se,!0),L.removeEventListener("scroll",je,!0)}},[R,w,e]),Ae(()=>{h&&(k.current||(O.current=!0))},[h]),Ae(()=>{D!=="always"&&R||(O.current=R)},[D,R]);let Se=e.useState("resetValueOnSelect");er(()=>{var L,se;let je=O.current;if(!e||!R||!je&&!Se)return;let{baseElement:We,contentElement:Nt,activeId:gr}=e.getState();if(!(We&&!Ft(We))){if(Nt?.hasAttribute("data-placing")){let ot=new MutationObserver(T);return ot.observe(Nt,{attributeFilter:["data-placing"]}),()=>ot.disconnect()}if(D&&je){let ot=H(x),vo=ot!==void 0?ot:(L=kx(x))!=null?L:e.first();ae.current=vo,e.move(vo??null)}else{let ot=(se=e.item(gr||e.first()))==null?void 0:se.element;ot&&"scrollIntoView"in ot&&ot.scrollIntoView({block:"nearest",inline:"nearest"})}}},[e,R,A,h,D,Se,H,x]),(0,Je.useEffect)(()=>{if(!C)return;let L=S.current;if(!L)return;let se=[L,w].filter(We=>!!We),je=We=>{se.every(Nt=>pa(We,Nt))&&e?.setValue(_)};for(let We of se)We.addEventListener("focusout",je);return()=>{for(let We of se)We.removeEventListener("focusout",je)}},[C,w,e,_]);let Ne=L=>L.currentTarget.value.length>=a,He=g.onChange,rt=Me(l??Ne),Yt=Me(i??!e.tag),mr=te(L=>{if(He?.(L),L.defaultPrevented||!e)return;let se=L.currentTarget,{value:je,selectionStart:We,selectionEnd:Nt}=se,gr=L.nativeEvent;if(O.current=!0,Nx(gr)&&(gr.isComposing&&(O.current=!1,k.current=!0),C)){let ot=gr.inputType==="insertText"||gr.inputType==="insertCompositionText",vo=We===je.length;N(ot&&vo)}if(Yt(L)){let ot=je===e.getState().value;e.setValue(je),queueMicrotask(()=>{zn(se,We,Nt)}),C&&D&&ot&&T()}rt(L)&&e.show(),(!D||!O.current)&&e.setActiveId(null)}),Y=g.onCompositionEnd,Q=te(L=>{O.current=!0,k.current=!1,Y?.(L),!L.defaultPrevented&&D&&T()}),ge=g.onMouseDown,pr=Me(d??(()=>!!e?.getState().includesBaseElement)),vr=Me(p),mo=Me(u??Ne),po=te(L=>{ge?.(L),!L.defaultPrevented&&(L.button||L.ctrlKey||e&&(pr(L)&&e.setActiveId(null),vr(L)&&e.setValue(_),mo(L)&&oo(L.currentTarget,"mouseup",e.show)))}),Lo=g.onKeyDown,Sn=Me(m??Ne),As=te(L=>{if(Lo?.(L),L.repeat||(O.current=!1),L.defaultPrevented||L.ctrlKey||L.altKey||L.shiftKey||L.metaKey||!e)return;let{open:se}=e.getState();se||(L.key==="ArrowUp"||L.key==="ArrowDown")&&Sn(L)&&(L.preventDefault(),e.show())}),mc=g.onBlur,vh=te(L=>{O.current=!1,mc?.(L),L.defaultPrevented}),gh=Mt(g.id),hh=Dx(y)?y:void 0,bh=e.useState(L=>L.activeId===null);return g={id:gh,role:"combobox","aria-autocomplete":hh,"aria-haspopup":tu(w,"listbox"),"aria-expanded":R,"aria-controls":w?.id,"data-active-item":bh||void 0,value:_,...g,ref:Ie(S,g.ref),onChange:mr,onCompositionEnd:Q,onMouseDown:po,onKeyDown:As,onBlur:vh},g=bu({store:e,focusable:r,...g,moveOnKeyPress:L=>Xl(v,L)?!1:(C&&N(!0),!0)}),g=_u({store:e,...g}),{autoComplete:"off",...g}}),Pa=me(function(e){let r=Mx(e);return be(Vx,r)});var Aa=c(le(),1),Au=c(V(),1),Fx="div";function Lx(t,e){if(e!=null)return t==null?!1:Array.isArray(t)?t.includes(e):t===e}function Bx(t){var e;return(e={menu:"menuitem",listbox:"option",tree:"treeitem"}[t])!=null?e:"option"}var jm=xe(function({store:e,value:r,hideOnClick:o,setValueOnClick:n,selectValueOnClick:i=!0,resetValueOnSelect:a,focusOnHover:l=!1,moveOnKeyPress:s=!0,getItem:u,...f}){var m;let d=un();e=e||d,Xe(e,!1);let{resetValueOnSelectState:p,multiSelectable:v,selected:y}=wa(e,{resetValueOnSelectState:"resetValueOnSelect",multiSelectable(h){return Array.isArray(h.selectedValue)},selected(h){return Lx(h.selectedValue,r)}}),g=(0,Aa.useCallback)(h=>{let E={...h,value:r};return u?u(E):E},[r,u]);n=n??!v,o=o??(r!=null&&!v);let b=f.onClick,S=Me(n),A=Me(i),T=Me((m=a??p)!=null?m:v),O=Me(o),k=te(h=>{b?.(h),!h.defaultPrevented&&(yd(h)||wd(h)||(r!=null&&(A(h)&&(T(h)&&e?.resetValue(),e?.setSelectedValue(E=>Array.isArray(E)?E.includes(r)?E.filter(P=>P!==r):[...E,r]:r)),S(h)&&e?.setValue(r)),O(h)&&e?.hide()))}),D=f.onKeyDown,C=te(h=>{if(D?.(h),h.defaultPrevented)return;let E=e?.getState().baseElement;if(!E||Ft(E))return;(h.key.length===1||h.key==="Backspace"||h.key==="Delete")&&(queueMicrotask(()=>E.focus()),mt(E)&&e?.setValue(E.value))});v&&y!=null&&(f={"aria-selected":y,...f}),f=tr(f,h=>(0,Au.jsx)(Ea.Provider,{value:r,children:(0,Au.jsx)(Vm.Provider,{value:y??!1,children:h})}),[r,y]);let I=(0,Aa.useContext)(Ca);f={role:Bx(I),children:r,...f,onClick:k,onKeyDown:C};let N=Me(s);return f=gu({store:e,...f,getItem:g,moveOnKeyPress:h=>{if(!N(h))return!1;let E=new Event("combobox-item-move"),P=e?.getState().baseElement;return P?.dispatchEvent(E),!0}}),f=Pu({store:e,focusOnHover:l,...f}),f}),ei=no(me(function(e){let r=jm(e);return be(Fx,r)}));var Ia=c(le(),1),zm=c(V(),1),Hx="span";function Wm(t){return Hn(t).toLowerCase()}function jx(t,e){let r=[];for(let o of e){let n=0,i=o.length;for(;t.indexOf(o,n)!==-1;){let a=t.indexOf(o,n);a!==-1&&r.push([a,i]),n=a+1}}return r}function Wx(t){return t.filter(([e,r],o,n)=>!n.some(([i,a],l)=>l!==o&&i<=e&&i+a>=e+r))}function zx(t){return t.sort(([e],[r])=>e-r)}function Gx(t,e){if(!t||!e)return t;let r=hu(e).filter(Boolean).map(Wm),o=[],n=(s,u=!1)=>(0,zm.jsx)("span",{"data-autocomplete-value":u?"":void 0,"data-user-value":u?void 0:"",children:s},o.length),i=zx(Wx(jx(Wm(t),new Set(r))));if(!i.length)return o.push(n(t,!0)),o;let[a]=i[0];return[t.slice(0,a),...i.flatMap(([s,u],f)=>{var m;let d=t.slice(s,s+u),p=(m=i[f+1])==null?void 0:m[0],v=t.slice(s+u,p);return[d,v]})].forEach((s,u)=>{s&&o.push(n(s,u%2===0))}),o}var qx=xe(function({store:e,value:r,userValue:o,...n}){let i=un();e=e||i;let a=(0,Ia.useContext)(Ea),l=r??a,s=nn(e,f=>o??f?.value);return n={children:(0,Ia.useMemo)(()=>{if(l)return s?Gx(l,s):l},[l,s]),...n},Qe(n)}),Oa=me(function(e){let r=qx(e);return be(Hx,r)});var Yx="label",Ux=xe(function({store:e,...r}){let o=_a();return e=e||o,Xe(e,!1),r={htmlFor:e.useState(i=>{var a;return(a=i.baseElement)==null?void 0:a.id}),...r},Qe(r)}),Ta=no(me(function(e){let r=Ux(e);return be(Yx,r)}));var Ra=c(le(),1),Iu=c(V(),1),$x="div",Gm=xe(function({store:e,alwaysVisible:r,...o}){let n=un(!0),i=Cu();e=e||i;let a=!!e&&e===n;Xe(e,!1);let l=(0,Ra.useRef)(null),s=Mt(o.id),u=e.useState("mounted"),f=Su(u,o.hidden,r),m=f?{...o.style,display:"none"}:o.style,d=e.useState(T=>Array.isArray(T.selectedValue)),p=Rd(l,"role",o.role),y=(p==="listbox"||p==="tree"||p==="grid")&&d||void 0,[g,b]=(0,Ra.useState)(!1),S=e.useState("contentElement");Ae(()=>{if(!u)return;let T=l.current;if(!T||S!==T)return;let O=()=>{b(!!T.querySelector("[role='listbox']"))},k=new MutationObserver(O);return k.observe(T,{subtree:!0,childList:!0,attributeFilter:["role"]}),O(),()=>k.disconnect()},[u,S]),g||(o={role:"listbox","aria-multiselectable":y,...o}),o=tr(o,T=>(0,Iu.jsx)(Rm,{value:e,children:(0,Iu.jsx)(Ca.Provider,{value:p,children:T})}),[e,p]);let A=s&&(!n||!a)?e.setContentElement:null;return o={id:s,hidden:f,...o,ref:Ie(A,l,o.ref),style:m},Qe(o)}),ti=me(function(e){let r=Gm(e);return be($x,r)});var Ou=c(le(),1),WI=(0,Ou.createContext)(null),zI=(0,Ou.createContext)(null),ri=Ct([tn],[ha]),qm=ri.useContext,GI=ri.useScopedContext,qI=ri.useProviderContext,YI=ri.ContextProvider,UI=ri.ScopedContextProvider;var Kx=Co()&&ou();function Ym({tag:t,...e}={}){let r=Io(e.store,vu(t,["value","rtl"]));let o=t?.getState(),n=r?.getState(),i=ee(e.activeId,n?.activeId,e.defaultActiveId,null),a=Am({...e,activeId:i,includesBaseElement:ee(e.includesBaseElement,n?.includesBaseElement,!0),orientation:ee(e.orientation,n?.orientation,"vertical"),focusLoop:ee(e.focusLoop,n?.focusLoop,!0),focusWrap:ee(e.focusWrap,n?.focusWrap,!0),virtualFocus:ee(e.virtualFocus,n?.virtualFocus,!0)}),l=km({...e,placement:ee(e.placement,n?.placement,"bottom-start")}),s=ee(e.value,n?.value,e.defaultValue,""),u=ee(e.selectedValue,n?.selectedValue,o?.values,e.defaultSelectedValue,""),f=Array.isArray(u),m={...a.getState(),...l.getState(),value:s,selectedValue:u,resetValueOnSelect:ee(e.resetValueOnSelect,n?.resetValueOnSelect,f),resetValueOnHide:ee(e.resetValueOnHide,n?.resetValueOnHide,f&&!t),activeValue:n?.activeValue},d=vt(m,a,l,r);return Kx&&Ue(d,()=>$e(d,["virtualFocus"],()=>{d.setState("virtualFocus",!1)})),Ue(d,()=>{if(t)return to($e(d,["selectedValue"],p=>{Array.isArray(p.selectedValue)&&t.setValues(p.selectedValue)}),$e(t,["values"],p=>{d.setState("selectedValue",p.values)}))}),Ue(d,()=>$e(d,["resetValueOnHide","mounted"],p=>{p.resetValueOnHide&&(p.mounted||d.setState("value",s))})),Ue(d,()=>$e(d,["open"],p=>{p.open||(d.setState("activeId",i),d.setState("moves",0))})),Ue(d,()=>$e(d,["moves","activeId"],(p,v)=>{p.moves===v.moves&&d.setState("activeValue",void 0)})),Ue(d,()=>ao(d,["moves","renderedItems"],(p,v)=>{if(p.moves===v.moves)return;let{activeId:y}=d.getState(),g=a.item(y);d.setState("activeValue",g?.value)})),{...l,...a,...d,tag:t,setValue:p=>d.setState("value",p),resetValue:()=>d.setState("value",m.value),setSelectedValue:p=>d.setState("selectedValue",p)}}function Xx(t){let e=qm();return t={...t,tag:t.tag!==void 0?t.tag:e},Im(t)}function Qx(t,e,r){return er(e,[r.tag]),Oe(t,r,"value","setValue"),Oe(t,r,"selectedValue","setSelectedValue"),Oe(t,r,"resetValueOnHide"),Oe(t,r,"resetValueOnSelect"),Object.assign(Om(Mm(t,e,r),e,r),{tag:r.tag})}function Tu(t={}){t=Xx(t);let[e,r]=an(Ym,t);return Qx(e,r,t)}var Um=c(V(),1);function Va(t={}){let e=Tu(t);return(0,Um.jsx)(Tm,{value:e,children:t.children})}var tp=c(Xm(),1);var rp=c(Et(),1),Ar=c(U(),1),Oo=c(j(),1),Lt=c(G(),1);var n0=[],oi=(t,e)=>t.singleSelection?e?.value:Array.isArray(e?.value)?e.value:!Array.isArray(e?.value)&&e?.value?[e.value]:n0;var ni=c(j(),1),i0=[];function Ke({elements:t,getElements:e}){let r=Array.isArray(t)&&t.length>0?t:i0,[o,n]=(0,ni.useState)(r),[i,a]=(0,ni.useState)(!1);return(0,ni.useEffect)(()=>{if(!e){n(r);return}let l=!1;return a(!0),e().then(s=>{if(!l){let u=Array.isArray(s)&&s.length>0?s:r;n(u)}}).catch(()=>{l||n(r)}).finally(()=>{l||a(!1)}),()=>{l=!0}},[e,r]),{elements:o,isLoading:i}}var oe=c(V(),1);function Qm(t=""){return(0,tp.default)(t.trim().toLowerCase())}var Jm=(t,e,r)=>t.singleSelection?r:Array.isArray(e?.value)?e.value.includes(r)?e.value.filter(o=>o!==r):[...e.value,r]:[r];function ep(t,e){return`${t}-${e}`}var op=({selected:t})=>(0,oe.jsx)("span",{className:W("dataviews-filters__search-widget-listitem-multi-selection",{"is-selected":t}),children:t&&(0,oe.jsx)(Lt.Icon,{icon:In})}),np=({selected:t})=>(0,oe.jsx)("span",{className:W("dataviews-filters__search-widget-listitem-single-selection",{"is-selected":t})});function ip({view:t,filter:e,onChangeView:r}){let o=(0,rp.useInstanceId)(ip,"dataviews-filter-list-box"),[n,i]=(0,Oo.useState)(e.operators?.length===1?void 0:null),a=t.filters?.find(s=>s.field===e.field),l=oi(e,a);return(0,oe.jsx)(Lt.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"),e.name),onFocusVisible:()=>{!n&&e.elements.length&&i(ep(o,e.elements[0].value))},render:(0,oe.jsx)(Lt.Composite.Typeahead,{}),children:e.elements.map(s=>(0,oe.jsxs)(Lt.Composite.Hover,{render:(0,oe.jsx)(Lt.Composite.Item,{id:ep(o,s.value),render:(0,oe.jsx)("div",{"aria-label":s.label,role:"option",className:"dataviews-filters__search-widget-listitem"}),onClick:()=>{let u=a?[...(t.filters??[]).map(f=>f.field===e.field?{...f,operator:a.operator||e.operators[0],value:Jm(e,a,s.value)}:f)]:[...t.filters??[],{field:e.field,operator:e.operators[0],value:Jm(e,a,s.value)}];r({...t,page:1,filters:u})}}),children:[e.singleSelection&&(0,oe.jsx)(np,{selected:l===s.value}),!e.singleSelection&&(0,oe.jsx)(op,{selected:l.includes(s.value)}),(0,oe.jsx)("span",{className:"dataviews-filters__search-widget-listitem-value",title:s.label,children:s.label})]},s.value))})}function a0({view:t,filter:e,onChangeView:r}){let[o,n]=(0,Oo.useState)(""),i=(0,Oo.useDeferredValue)(o),a=t.filters?.find(u=>u.field===e.field),l=oi(e,a),s=(0,Oo.useMemo)(()=>{let u=Qm(i);return e.elements.filter(f=>Qm(f.label).includes(u))},[e.elements,i]);return(0,oe.jsxs)(Va,{selectedValue:l,setSelectedValue:u=>{let f=a?[...(t.filters??[]).map(m=>m.field===e.field?{...m,operator:a.operator||e.operators[0],value:u}:m)]:[...t.filters??[],{field:e.field,operator:e.operators[0],value:u}];r({...t,page:1,filters:f})},setValue:n,children:[(0,oe.jsxs)("div",{className:"dataviews-filters__search-widget-filter-combobox__wrapper",children:[(0,oe.jsx)(Ta,{render:(0,oe.jsx)(Lt.VisuallyHidden,{children:(0,Ar.__)("Search items")}),children:(0,Ar.__)("Search items")}),(0,oe.jsx)(Pa,{autoSelect:"always",placeholder:(0,Ar.__)("Search"),className:"dataviews-filters__search-widget-filter-combobox__input"}),(0,oe.jsx)("div",{className:"dataviews-filters__search-widget-filter-combobox__icon",children:(0,oe.jsx)(Lt.Icon,{icon:_l})})]}),(0,oe.jsxs)(ti,{className:"dataviews-filters__search-widget-filter-combobox-list",alwaysVisible:!0,children:[s.map(u=>(0,oe.jsxs)(ei,{resetValueOnSelect:!1,value:u.value,className:"dataviews-filters__search-widget-listitem",hideOnClick:!1,setValueOnClick:!1,focusOnHover:!0,children:[e.singleSelection&&(0,oe.jsx)(np,{selected:l===u.value}),!e.singleSelection&&(0,oe.jsx)(op,{selected:l.includes(u.value)}),(0,oe.jsxs)("span",{className:"dataviews-filters__search-widget-listitem-value",title:u.label,children:[(0,oe.jsx)(Oa,{className:"dataviews-filters__search-widget-filter-combobox-item-value",value:u.label}),!!u.description&&(0,oe.jsx)("span",{className:"dataviews-filters__search-widget-listitem-description",children:u.description})]})]},u.value)),!s.length&&(0,oe.jsx)("p",{children:(0,Ar.__)("No results found")})]})]})}function ap(t){let{elements:e,isLoading:r}=Ke({elements:t.filter.elements,getElements:t.filter.getElements});if(r)return(0,oe.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,oe.jsx)(Lt.Spinner,{})});if(e.length===0)return(0,oe.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,Ar.__)("No elements found")});let o=e.length>10?a0:ip;return(0,oe.jsx)(o,{...t,filter:{...t.filter,elements:e}})}var up=c(lp(),1),cp=c(Et(),1),Ru=c(j(),1),fp=c(G(),1);var Vu=c(V(),1);function dp({filter:t,view:e,onChangeView:r,fields:o}){let n=e.filters?.find(u=>u.field===t.field),i=oi(t,n),a=(0,Ru.useMemo)(()=>{let u=o.find(f=>f.id===t.field);return u&&{...u,isValid:{},getValue:({item:f})=>f[u.id],setValue:({value:f})=>({[u.id]:f})}},[o,t.field]),l=(0,Ru.useMemo)(()=>(e.filters??[]).reduce((u,f)=>(u[f.field]=f.value,u),{}),[e.filters]),s=(0,cp.useEvent)(u=>{if(!a||!n)return;let f=a.getValue({item:u});(0,up.default)(f,i)||r({...e,filters:(e.filters??[]).map(m=>m.field===t.field?{...m,operator:n.operator||t.operators[0],value:f===""?void 0:f}:m)})});return!a||!a.Edit||!n?null:(0,Vu.jsx)(fp.Flex,{className:"dataviews-filters__user-input-widget",gap:2.5,direction:"column",children:(0,Vu.jsx)(a.Edit,{hideLabelFromVision:!0,data:l,field:a,operator:n.operator,onChange:s})})}var s0=Math.pow(10,8)*24*60*60*1e3,FO=-s0,Da=6048e5,mp=864e5;var l0=3600;var pp=l0*24,LO=pp*7,u0=pp*365.2425,c0=u0/12,BO=c0*3,Nu=Symbol.for("constructDateFrom");function Ge(t,e){return typeof t=="function"?t(e):t&&typeof t=="object"&&Nu in t?t[Nu](e):t instanceof Date?new t.constructor(e):new Date(e)}function fe(t,e){return Ge(e||t,t)}function ka(t,e,r){let o=fe(t,r?.in);return isNaN(e)?Ge(r?.in||t,NaN):(e&&o.setDate(o.getDate()+e),o)}function Ma(t,e,r){let o=fe(t,r?.in);if(isNaN(e))return Ge(r?.in||t,NaN);if(!e)return o;let n=o.getDate(),i=Ge(r?.in||t,o.getTime());i.setMonth(o.getMonth()+e+1,0);let a=i.getDate();return n>=a?i:(o.setFullYear(i.getFullYear(),i.getMonth(),n),o)}var f0={};function so(){return f0}function Ir(t,e){let r=so(),o=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,n=fe(t,e?.in),i=n.getDay(),a=(i=i.getTime()?o+1:r.getTime()>=l.getTime()?o:o-1}function Du(t){let e=fe(t),r=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return r.setUTCFullYear(e.getFullYear()),+t-+r}function vp(t,...e){let r=Ge.bind(null,t||e.find(o=>typeof o=="object"));return e.map(r)}function ku(t,e){let r=fe(t,e?.in);return r.setHours(0,0,0,0),r}function gp(t,e,r){let[o,n]=vp(r?.in,t,e),i=ku(o),a=ku(n),l=+i-Du(i),s=+a-Du(a);return Math.round((l-s)/mp)}function hp(t,e){let r=Fa(t,e),o=Ge(e?.in||t,0);return o.setFullYear(r,0,4),o.setHours(0,0,0,0),To(o)}function bp(t,e,r){return ka(t,e*7,r)}function xp(t,e,r){return Ma(t,e*12,r)}function wp(t){return t instanceof Date||typeof t=="object"&&Object.prototype.toString.call(t)==="[object Date]"}function cn(t){return!(!wp(t)&&typeof t!="number"||isNaN(+fe(t)))}function yp(t,e){let r=fe(t,e?.in);return r.setDate(1),r.setHours(0,0,0,0),r}function La(t,e){let r=fe(t,e?.in);return r.setFullYear(r.getFullYear(),0,1),r.setHours(0,0,0,0),r}var d0={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"}},Sp=(t,e,r)=>{let o,n=d0[t];return typeof n=="string"?o=n:e===1?o=n.one:o=n.other.replace("{{count}}",e.toString()),r?.addSuffix?r.comparison&&r.comparison>0?"in "+o:o+" ago":o};function Ba(t){return(e={})=>{let r=e.width?String(e.width):t.defaultWidth;return t.formats[r]||t.formats[t.defaultWidth]}}var m0={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},p0={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},v0={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Cp={date:Ba({formats:m0,defaultWidth:"full"}),time:Ba({formats:p0,defaultWidth:"full"}),dateTime:Ba({formats:v0,defaultWidth:"full"})};var g0={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},_p=(t,e,r,o)=>g0[t];function fn(t){return(e,r)=>{let o=r?.context?String(r.context):"standalone",n;if(o==="formatting"&&t.formattingValues){let a=t.defaultFormattingWidth||t.defaultWidth,l=r?.width?String(r.width):a;n=t.formattingValues[l]||t.formattingValues[a]}else{let a=t.defaultWidth,l=r?.width?String(r.width):t.defaultWidth;n=t.values[l]||t.values[a]}let i=t.argumentCallback?t.argumentCallback(e):e;return n[i]}}var h0={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},b0={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},x0={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"]},w0={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"]},y0={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"}},S0={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"}},C0=(t,e)=>{let r=Number(t),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"},Ep={ordinalNumber:C0,era:fn({values:h0,defaultWidth:"wide"}),quarter:fn({values:b0,defaultWidth:"wide",argumentCallback:t=>t-1}),month:fn({values:x0,defaultWidth:"wide"}),day:fn({values:w0,defaultWidth:"wide"}),dayPeriod:fn({values:y0,defaultWidth:"wide",formattingValues:S0,defaultFormattingWidth:"wide"})};function dn(t){return(e,r={})=>{let o=r.width,n=o&&t.matchPatterns[o]||t.matchPatterns[t.defaultMatchWidth],i=e.match(n);if(!i)return null;let a=i[0],l=o&&t.parsePatterns[o]||t.parsePatterns[t.defaultParseWidth],s=Array.isArray(l)?E0(l,m=>m.test(a)):_0(l,m=>m.test(a)),u;u=t.valueCallback?t.valueCallback(s):s,u=r.valueCallback?r.valueCallback(u):u;let f=e.slice(a.length);return{value:u,rest:f}}}function _0(t,e){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&e(t[r]))return r}function E0(t,e){for(let r=0;r{let o=e.match(t.matchPattern);if(!o)return null;let n=o[0],i=e.match(t.parsePattern);if(!i)return null;let a=t.valueCallback?t.valueCallback(i[0]):i[0];a=r.valueCallback?r.valueCallback(a):a;let l=e.slice(n.length);return{value:a,rest:l}}}var P0=/^(\d+)(th|st|nd|rd)?/i,A0=/\d+/i,I0={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},O0={any:[/^b/i,/^(a|c)/i]},T0={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},R0={any:[/1/i,/2/i,/3/i,/4/i]},V0={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},N0={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]},D0={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},k0={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]},M0={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},F0={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}},Ap={ordinalNumber:Pp({matchPattern:P0,parsePattern:A0,valueCallback:t=>parseInt(t,10)}),era:dn({matchPatterns:I0,defaultMatchWidth:"wide",parsePatterns:O0,defaultParseWidth:"any"}),quarter:dn({matchPatterns:T0,defaultMatchWidth:"wide",parsePatterns:R0,defaultParseWidth:"any",valueCallback:t=>t+1}),month:dn({matchPatterns:V0,defaultMatchWidth:"wide",parsePatterns:N0,defaultParseWidth:"any"}),day:dn({matchPatterns:D0,defaultMatchWidth:"wide",parsePatterns:k0,defaultParseWidth:"any"}),dayPeriod:dn({matchPatterns:M0,defaultMatchWidth:"any",parsePatterns:F0,defaultParseWidth:"any"})};var Mu={code:"en-US",formatDistance:Sp,formatLong:Cp,formatRelative:_p,localize:Ep,match:Ap,options:{weekStartsOn:0,firstWeekContainsDate:1}};function Ip(t,e){let r=fe(t,e?.in);return gp(r,La(r))+1}function Op(t,e){let r=fe(t,e?.in),o=+To(r)-+hp(r);return Math.round(o/Da)+1}function Ha(t,e){let r=fe(t,e?.in),o=r.getFullYear(),n=so(),i=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,a=Ge(e?.in||t,0);a.setFullYear(o+1,0,i),a.setHours(0,0,0,0);let l=Ir(a,e),s=Ge(e?.in||t,0);s.setFullYear(o,0,i),s.setHours(0,0,0,0);let u=Ir(s,e);return+r>=+l?o+1:+r>=+u?o:o-1}function Tp(t,e){let r=so(),o=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,n=Ha(t,e),i=Ge(e?.in||t,0);return i.setFullYear(n,0,o),i.setHours(0,0,0,0),Ir(i,e)}function Rp(t,e){let r=fe(t,e?.in),o=+Ir(r,e)-+Tp(r,e);return Math.round(o/Da)+1}function ie(t,e){let r=t<0?"-":"",o=Math.abs(t).toString().padStart(e,"0");return r+o}var Or={y(t,e){let r=t.getFullYear(),o=r>0?r:1-r;return ie(e==="yy"?o%100:o,e.length)},M(t,e){let r=t.getMonth();return e==="M"?String(r+1):ie(r+1,2)},d(t,e){return ie(t.getDate(),e.length)},a(t,e){let r=t.getHours()/12>=1?"pm":"am";switch(e){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(t,e){return ie(t.getHours()%12||12,e.length)},H(t,e){return ie(t.getHours(),e.length)},m(t,e){return ie(t.getMinutes(),e.length)},s(t,e){return ie(t.getSeconds(),e.length)},S(t,e){let r=e.length,o=t.getMilliseconds(),n=Math.trunc(o*Math.pow(10,r-3));return ie(n,e.length)}};var mn={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Fu={G:function(t,e,r){let o=t.getFullYear()>0?1:0;switch(e){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(t,e,r){if(e==="yo"){let o=t.getFullYear(),n=o>0?o:1-o;return r.ordinalNumber(n,{unit:"year"})}return Or.y(t,e)},Y:function(t,e,r,o){let n=Ha(t,o),i=n>0?n:1-n;if(e==="YY"){let a=i%100;return ie(a,2)}return e==="Yo"?r.ordinalNumber(i,{unit:"year"}):ie(i,e.length)},R:function(t,e){let r=Fa(t);return ie(r,e.length)},u:function(t,e){let r=t.getFullYear();return ie(r,e.length)},Q:function(t,e,r){let o=Math.ceil((t.getMonth()+1)/3);switch(e){case"Q":return String(o);case"QQ":return ie(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(t,e,r){let o=Math.ceil((t.getMonth()+1)/3);switch(e){case"q":return String(o);case"qq":return ie(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(t,e,r){let o=t.getMonth();switch(e){case"M":case"MM":return Or.M(t,e);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(t,e,r){let o=t.getMonth();switch(e){case"L":return String(o+1);case"LL":return ie(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(t,e,r,o){let n=Rp(t,o);return e==="wo"?r.ordinalNumber(n,{unit:"week"}):ie(n,e.length)},I:function(t,e,r){let o=Op(t);return e==="Io"?r.ordinalNumber(o,{unit:"week"}):ie(o,e.length)},d:function(t,e,r){return e==="do"?r.ordinalNumber(t.getDate(),{unit:"date"}):Or.d(t,e)},D:function(t,e,r){let o=Ip(t);return e==="Do"?r.ordinalNumber(o,{unit:"dayOfYear"}):ie(o,e.length)},E:function(t,e,r){let o=t.getDay();switch(e){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(t,e,r,o){let n=t.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(e){case"e":return String(i);case"ee":return ie(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(t,e,r,o){let n=t.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(e){case"c":return String(i);case"cc":return ie(i,e.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(t,e,r){let o=t.getDay(),n=o===0?7:o;switch(e){case"i":return String(n);case"ii":return ie(n,e.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(t,e,r){let n=t.getHours()/12>=1?"pm":"am";switch(e){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(t,e,r){let o=t.getHours(),n;switch(o===12?n=mn.noon:o===0?n=mn.midnight:n=o/12>=1?"pm":"am",e){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(t,e,r){let o=t.getHours(),n;switch(o>=17?n=mn.evening:o>=12?n=mn.afternoon:o>=4?n=mn.morning:n=mn.night,e){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(t,e,r){if(e==="ho"){let o=t.getHours()%12;return o===0&&(o=12),r.ordinalNumber(o,{unit:"hour"})}return Or.h(t,e)},H:function(t,e,r){return e==="Ho"?r.ordinalNumber(t.getHours(),{unit:"hour"}):Or.H(t,e)},K:function(t,e,r){let o=t.getHours()%12;return e==="Ko"?r.ordinalNumber(o,{unit:"hour"}):ie(o,e.length)},k:function(t,e,r){let o=t.getHours();return o===0&&(o=24),e==="ko"?r.ordinalNumber(o,{unit:"hour"}):ie(o,e.length)},m:function(t,e,r){return e==="mo"?r.ordinalNumber(t.getMinutes(),{unit:"minute"}):Or.m(t,e)},s:function(t,e,r){return e==="so"?r.ordinalNumber(t.getSeconds(),{unit:"second"}):Or.s(t,e)},S:function(t,e){return Or.S(t,e)},X:function(t,e,r){let o=t.getTimezoneOffset();if(o===0)return"Z";switch(e){case"X":return Np(o);case"XXXX":case"XX":return Ro(o);default:return Ro(o,":")}},x:function(t,e,r){let o=t.getTimezoneOffset();switch(e){case"x":return Np(o);case"xxxx":case"xx":return Ro(o);default:return Ro(o,":")}},O:function(t,e,r){let o=t.getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+Vp(o,":");default:return"GMT"+Ro(o,":")}},z:function(t,e,r){let o=t.getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+Vp(o,":");default:return"GMT"+Ro(o,":")}},t:function(t,e,r){let o=Math.trunc(+t/1e3);return ie(o,e.length)},T:function(t,e,r){return ie(+t,e.length)}};function Vp(t,e=""){let r=t>0?"-":"+",o=Math.abs(t),n=Math.trunc(o/60),i=o%60;return i===0?r+String(n):r+String(n)+e+ie(i,2)}function Np(t,e){return t%60===0?(t>0?"-":"+")+ie(Math.abs(t)/60,2):Ro(t,e)}function Ro(t,e=""){let r=t>0?"-":"+",o=Math.abs(t),n=ie(Math.trunc(o/60),2),i=ie(o%60,2);return r+n+e+i}var Dp=(t,e)=>{switch(t){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});default:return e.date({width:"full"})}},kp=(t,e)=>{switch(t){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});default:return e.time({width:"full"})}},L0=(t,e)=>{let r=t.match(/(P+)(p+)?/)||[],o=r[1],n=r[2];if(!n)return Dp(t,e);let i;switch(o){case"P":i=e.dateTime({width:"short"});break;case"PP":i=e.dateTime({width:"medium"});break;case"PPP":i=e.dateTime({width:"long"});break;default:i=e.dateTime({width:"full"});break}return i.replace("{{date}}",Dp(o,e)).replace("{{time}}",kp(n,e))},Mp={p:kp,P:L0};var B0=/^D+$/,H0=/^Y+$/,j0=["D","DD","YY","YYYY"];function Fp(t){return B0.test(t)}function Lp(t){return H0.test(t)}function Bp(t,e,r){let o=W0(t,e,r);if(console.warn(o),j0.includes(t))throw new RangeError(o)}function W0(t,e,r){let o=t[0]==="Y"?"years":"days of the month";return`Use \`${t.toLowerCase()}\` instead of \`${t}\` (in \`${e}\`) for formatting ${o} to the input \`${r}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var z0=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,G0=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,q0=/^'([^]*?)'?$/,Y0=/''/g,U0=/[a-zA-Z]/;function Lu(t,e,r){let o=so(),n=r?.locale??o.locale??Mu,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,l=fe(t,r?.in);if(!cn(l))throw new RangeError("Invalid time value");let s=e.match(G0).map(f=>{let m=f[0];if(m==="p"||m==="P"){let d=Mp[m];return d(f,n.formatLong)}return f}).join("").match(z0).map(f=>{if(f==="''")return{isToken:!1,value:"'"};let m=f[0];if(m==="'")return{isToken:!1,value:$0(f)};if(Fu[m])return{isToken:!0,value:f};if(m.match(U0))throw new RangeError("Format string contains an unescaped latin alphabet character `"+m+"`");return{isToken:!1,value:f}});n.localize.preprocessor&&(s=n.localize.preprocessor(l,s));let u={firstWeekContainsDate:i,weekStartsOn:a,locale:n};return s.map(f=>{if(!f.isToken)return f.value;let m=f.value;(!r?.useAdditionalWeekYearTokens&&Lp(m)||!r?.useAdditionalDayOfYearTokens&&Fp(m))&&Bp(m,e,String(t));let d=Fu[m[0]];return d(l,m,n.localize,u)}).join("")}function $0(t){let e=t.match(q0);return e?e[1].replace(Y0,"'"):t}function Vo(t,e,r){return ka(t,-e,r)}function ja(t,e,r){return Ma(t,-e,r)}function Hp(t,e,r){return bp(t,-e,r)}function Wa(t,e,r){return xp(t,-e,r)}var B=c(U(),1),Te=c(j(),1),gt=c(No(),1);var Bu=c(V(),1),Fe={Name:(0,Bu.jsx)("span",{className:"dataviews-filters__summary-filter-text-name"}),Value:(0,Bu.jsx)("span",{className:"dataviews-filters__summary-filter-text-value"})};function Wp(t,e){switch(e){case"days":return Vo(new Date,t);case"weeks":return Hp(new Date,t);case"months":return ja(new Date,t);case"years":return Wa(new Date,t);default:return new Date}}var zp={label:(0,B.__)("Is none of"),filterText:(t,e)=>(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is none of: %2$s"),t.name,e.map(r=>r.label).join(", ")),Fe),filter:((t,e,r)=>{if(!r?.length)return!0;let o=e.getValue({item:t});return Array.isArray(o)?!r.some(n=>o.includes(n)):typeof o=="string"?!r.includes(o):!1}),selection:"multi"},za=[{name:Ce,label:(0,B.__)("Includes"),filterText:(t,e)=>(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s includes: %2$s"),t.name,e.map(r=>r.label).join(", ")),Fe),filter(t,e,r){if(!r?.length)return!0;let o=e.getValue({item:t});return Array.isArray(o)?r.some(n=>o.includes(n)):typeof o=="string"?r.includes(o):!1},selection:"multi"},{name:_e,...zp},{name:nt,label:(0,B.__)("Includes all"),filterText:(t,e)=>(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s includes all: %2$s"),t.name,e.map(r=>r.label).join(", ")),Fe),filter(t,e,r){return r?.length?r.every(o=>e.getValue({item:t})?.includes(o)):!0},selection:"multi"},{name:it,...zp},{name:ft,label:(0,B.__)("Between (inc)"),filterText:(t,e)=>(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s between (inc): %2$s and %3$s"),t.name,e[0].label[0],e[0].label[1]),Fe),filter(t,e,r){if(!Array.isArray(r)||r.length!==2||r[0]===void 0||r[1]===void 0)return!0;let o=e.getValue({item:t});return typeof o=="number"||o instanceof Date||typeof o=="string"?o>=r[0]&&o<=r[1]:!1},selection:"custom"},{name:dt,label:(0,B.__)("In the past"),filterText:(t,e)=>(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is in the past: %2$s"),t.name,`${e[0].value.value} ${e[0].value.unit}`),Fe),filter(t,e,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=Wp(r.value,r.unit),n=(0,gt.getDate)(e.getValue({item:t}));return n>=o&&n<=new Date},selection:"custom"},{name:xt,label:(0,B.__)("Over"),filterText:(t,e)=>(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is over: %2$s"),t.name,`${e[0].value.value} ${e[0].value.unit}`),Fe),filter(t,e,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=Wp(r.value,r.unit);return(0,gt.getDate)(e.getValue({item:t}))(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){return r===e.getValue({item:t})||r===void 0},selection:"single"},{name:Pe,label:(0,B.__)("Is not"),filterText:(t,e)=>(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is not: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){return r!==e.getValue({item:t})},selection:"single"},{name:Br,label:(0,B.__)("Less than"),filterText:(t,e)=>(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is less than: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){return r===void 0?!0:e.getValue({item:t})(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is greater than: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){return r===void 0?!0:e.getValue({item:t})>r},selection:"single"},{name:jr,label:(0,B.__)("Less than or equal"),filterText:(t,e)=>(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is less than or equal to: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){return r===void 0?!0:e.getValue({item:t})<=r},selection:"single"},{name:Wr,label:(0,B.__)("Greater than or equal"),filterText:(t,e)=>(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is greater than or equal to: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){return r===void 0?!0:e.getValue({item:t})>=r},selection:"single"},{name:zr,label:(0,B.__)("Before"),filterText:(t,e)=>(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is before: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){if(r===void 0)return!0;let o=(0,gt.getDate)(r);return(0,gt.getDate)(e.getValue({item:t}))(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is after: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){if(r===void 0)return!0;let o=(0,gt.getDate)(r);return(0,gt.getDate)(e.getValue({item:t}))>o},selection:"single"},{name:qr,label:(0,B.__)("Before (inc)"),filterText:(t,e)=>(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is on or before: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){if(r===void 0)return!0;let o=(0,gt.getDate)(r);return(0,gt.getDate)(e.getValue({item:t}))<=o},selection:"single"},{name:Yr,label:(0,B.__)("After (inc)"),filterText:(t,e)=>(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is on or after: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){if(r===void 0)return!0;let o=(0,gt.getDate)(r);return(0,gt.getDate)(e.getValue({item:t}))>=o},selection:"single"},{name:Ut,label:(0,B.__)("Contains"),filterText:(t,e)=>(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s contains: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){if(r===void 0)return!0;let o=e.getValue({item:t});return typeof o=="string"&&r&&o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:$t,label:(0,B.__)("Doesn't contain"),filterText:(t,e)=>(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s doesn't contain: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){if(r===void 0)return!0;let o=e.getValue({item:t});return typeof o=="string"&&r&&!o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:Kt,label:(0,B.__)("Starts with"),filterText:(t,e)=>(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s starts with: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){if(r===void 0)return!0;let o=e.getValue({item:t});return typeof o=="string"&&r&&o.toLowerCase().startsWith(String(r).toLowerCase())},selection:"single"},{name:Ur,label:(0,B.__)("On"),filterText:(t,e)=>(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){if(r===void 0)return!0;let o=(0,gt.getDate)(r),n=(0,gt.getDate)(e.getValue({item:t}));return o.getTime()===n.getTime()},selection:"single"},{name:$r,label:(0,B.__)("Not on"),filterText:(t,e)=>(0,Te.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is not: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){if(r===void 0)return!0;let o=(0,gt.getDate)(r),n=(0,gt.getDate)(e.getValue({item:t}));return o.getTime()!==n.getTime()},selection:"single"}],Do=t=>za.find(e=>e.name===t),Gp=()=>za.map(t=>t.name),qp=t=>za.filter(e=>e.selection==="single").some(e=>e.name===t),Yp=t=>za.some(e=>e.name===t);var et=c(V(),1),K0="Enter",Z0=" ",X0=({activeElements:t,filterInView:e,filter:r})=>{if(t===void 0||t.length===0)return r.name;let o=Do(e?.operator);return o!==void 0?o.filterText(r,t):(0,Tr.sprintf)((0,Tr.__)("Unknown status for %1$s"),r.name)};function Q0({filter:t,view:e,onChangeView:r}){let o=t.operators?.map(a=>({value:a,label:Do(a)?.label||a})),n=e.filters?.find(a=>a.field===t.field),i=n?.operator||t.operators[0];return o.length>1&&(0,et.jsxs)(F,{direction:"row",gap:"sm",justify:"flex-start",className:"dataviews-filters__summary-operators-container",align:"center",children:[(0,et.jsx)(jt.FlexItem,{className:"dataviews-filters__summary-operators-filter-name",children:t.name}),(0,et.jsx)(jt.SelectControl,{className:"dataviews-filters__summary-operators-filter-select",label:(0,Tr.__)("Conditions"),value:i,options:o,onChange:a=>{let l=a,s=n?.operator,u=n?[...(e.filters??[]).map(f=>{if(f.field===t.field){let m=Do(s)?.selection,d=Do(l)?.selection,p=m!==d||[m,d].includes("custom");return{...f,value:p?void 0:f.value,operator:l}}return f})]:[...e.filters??[],{field:t.field,operator:l,value:void 0}];r({...e,page:1,filters:u})},size:"small",variant:"minimal",hideLabelFromVision:!0})]})}function Up({addFilterRef:t,openedFilter:e,fields:r,...o}){let n=(0,Ga.useRef)(null),{filter:i,view:a,onChangeView:l}=o,s=a.filters?.find(g=>g.field===i.field),u=[],f=(0,Ga.useMemo)(()=>{let g=r.find(b=>b.id===i.field);return g&&{...g,getValue:({item:b})=>b[g.id]}},[r,i.field]),{elements:m}=Ke({elements:i.elements,getElements:i.getElements});if(m.length>0)u=m.filter(g=>i.singleSelection?g.value===s?.value:s?.value?.includes(g.value));else if(Array.isArray(s?.value)){let g=s.value.map(b=>f?.getValueFormatted({item:{[f.id]:b},field:f})||String(b));u=[{value:s.value,label:g}]}else if(typeof s?.value=="object")u=[{value:s.value,label:s.value}];else if(s?.value!==void 0){let g=f!==void 0?f.getValueFormatted({item:{[f.id]:s.value},field:f}):String(s.value);u=[{value:s.value,label:g}]}let d=i.isPrimary,p=s?.isLocked,v=!p&&s?.value!==void 0,y=!p&&(!d||v);return(0,et.jsx)(jt.Dropdown,{defaultOpen:e===i.field,contentClassName:"dataviews-filters__summary-popover",popoverProps:{placement:"bottom-start",role:"dialog"},onClose:()=>{n.current?.focus()},renderToggle:({isOpen:g,onToggle:b})=>(0,et.jsxs)("div",{className:"dataviews-filters__summary-chip-container",children:[(0,et.jsx)(jt.Tooltip,{text:(0,Tr.sprintf)((0,Tr.__)("Filter by: %1$s"),i.name.toLowerCase()),placement:"top",children:(0,et.jsx)("div",{className:W("dataviews-filters__summary-chip",{"has-reset":y,"has-values":v,"is-not-clickable":p}),role:"button",tabIndex:p?-1:0,onClick:()=>{p||b()},onKeyDown:S=>{!p&&[K0,Z0].includes(S.key)&&(b(),S.preventDefault())},"aria-disabled":p,"aria-pressed":g,"aria-expanded":g,ref:n,children:(0,et.jsx)(X0,{activeElements:u,filterInView:s,filter:i})})}),y&&(0,et.jsx)(jt.Tooltip,{text:d?(0,Tr.__)("Reset"):(0,Tr.__)("Remove"),placement:"top",children:(0,et.jsx)("button",{className:W("dataviews-filters__summary-chip-remove",{"has-values":v}),onClick:()=>{l({...a,page:1,filters:a.filters?.filter(S=>S.field!==i.field)}),d?n.current?.focus():t.current?.focus()},children:(0,et.jsx)(jt.Icon,{icon:On})})})]}),renderContent:()=>(0,et.jsxs)(F,{direction:"column",justify:"flex-start",children:[(0,et.jsx)(Q0,{...o}),o.filter.hasElements?(0,et.jsx)(ap,{...o,filter:{...o.filter,elements:m}}):(0,et.jsx)(dp,{...o,fields:r})]})})}var qa=c(G(),1),$p=c(U(),1),Kp=c(j(),1);var Rr=c(V(),1),{Menu:ii}=K(qa.privateApis);function Hu({filters:t,view:e,onChangeView:r,setOpenedFilter:o,triggerProps:n}){let i=t.filter(a=>!a.isVisible);return(0,Rr.jsxs)(ii,{children:[(0,Rr.jsx)(ii.TriggerButton,{...n}),(0,Rr.jsx)(ii.Popover,{children:i.map(a=>(0,Rr.jsx)(ii.Item,{onClick:()=>{o(a.field),r({...e,page:1,filters:[...e.filters||[],{field:a.field,value:void 0,operator:a.operators[0]}]})},children:(0,Rr.jsx)(ii.ItemLabel,{children:a.name})},a.field))})]})}function J0({filters:t,view:e,onChangeView:r,setOpenedFilter:o},n){if(!t.length||t.every(({isPrimary:a})=>a))return null;let i=t.filter(a=>!a.isVisible);return(0,Rr.jsx)(Hu,{triggerProps:{render:(0,Rr.jsx)(qa.Button,{accessibleWhenDisabled:!0,size:"compact",className:"dataviews-filters-button",variant:"tertiary",disabled:!i.length,ref:n}),children:(0,$p.__)("Add filter")},filters:t,view:e,onChangeView:r,setOpenedFilter:o})}var Zp=(0,Kp.forwardRef)(J0);var Xp=c(G(),1),Qp=c(U(),1),Jp=c(V(),1);function ev({filters:t,view:e,onChangeView:r}){let o=i=>t.some(a=>a.field===i&&a.isPrimary),n=!e.search&&!e.filters?.some(i=>!i.isLocked&&(i.value!==void 0||!o(i.field)));return(0,Jp.jsx)(Xp.Button,{disabled:n,accessibleWhenDisabled:!0,size:"compact",variant:"tertiary",className:"dataviews-filters__reset-button",onClick:()=>{r({...e,page:1,search:"",filters:e.filters?.filter(i=>!!i.isLocked)||[]})},children:(0,Qp.__)("Reset")})}var tv=c(j(),1);function ew(t,e){return(0,tv.useMemo)(()=>{let r=[];return t.forEach(o=>{if(o.filterBy===!1||!o.hasElements&&!o.Edit)return;let n=o.filterBy.operators,i=!!o.filterBy?.isPrimary,a=e.filters?.some(l=>l.field===o.id&&!!l.isLocked)??!1;r.push({field:o.id,name:o.label,elements:o.elements,getElements:o.getElements,hasElements:o.hasElements,singleSelection:n.some(l=>qp(l)),operators:n,isVisible:a||i||!!e.filters?.some(l=>l.field===o.id&&Yp(l.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},[t,e])}var ai=ew;var si=c(V(),1);function tw({className:t}){let{fields:e,view:r,onChangeView:o,openedFilter:n,setOpenedFilter:i}=(0,pn.useContext)(q),a=(0,pn.useRef)(null),l=ai(e,r),s=(0,si.jsx)(Zp,{filters:l,view:r,onChangeView:o,ref:a,setOpenedFilter:i},"add-filter"),u=l.filter(m=>m.isVisible);if(u.length===0)return null;let f=[...u.map(m=>(0,si.jsx)(Up,{filter:m,view:r,fields:e,onChangeView:o,addFilterRef:a,openedFilter:n},m.field)),s];return f.push((0,si.jsx)(ev,{filters:l,view:r,onChangeView:o},"reset-filters")),(0,si.jsx)(F,{direction:"row",justify:"flex-start",gap:"sm",style:{width:"fit-content"},wrap:"wrap",className:t,children:f})}var li=(0,pn.memo)(tw);var lo=c(j(),1),rv=c(G(),1);var Ya=c(U(),1);var ir=c(V(),1);function rw(){let{filters:t,view:e,onChangeView:r,setOpenedFilter:o,isShowingFilter:n,setIsShowingFilter:i}=(0,lo.useContext)(q),a=(0,lo.useRef)(null),l=(0,lo.useCallback)(p=>{r(p),i(!0)},[r,i]);if(t.length===0)return null;let s=t.some(p=>p.isVisible),u={label:(0,Ya.__)("Add filter"),"aria-expanded":!1,isPressed:!1},f={label:(0,Ya._x)("Filter","verb"),"aria-expanded":n,isPressed:n,onClick:()=>{n||o(null),i(!n)}},m=t.some(p=>p.isPrimary||p.isLocked),d=(0,ir.jsx)(rv.Button,{ref:a,className:"dataviews-filters__visibility-toggle",size:"compact",icon:Tn,disabled:m,accessibleWhenDisabled:!0,...s?f:u});return(0,ir.jsx)("div",{className:"dataviews-filters__container-visibility-toggle",children:s?(0,ir.jsx)(ow,{buttonRef:a,filtersCount:e.filters?.length,children:d}):(0,ir.jsx)(Hu,{filters:t,view:e,onChangeView:l,setOpenedFilter:o,triggerProps:{render:d}})})}function ow({buttonRef:t,filtersCount:e,children:r}){return(0,lo.useEffect)(()=>()=>{t.current?.focus()},[t]),(0,ir.jsxs)(ir.Fragment,{children:[r,!!e&&(0,ir.jsx)("span",{className:"dataviews-filters-toggle__count",children:e})]})}var Ua=rw;var ov=c(j(),1);var nv=c(V(),1);function nw(t){let{isShowingFilter:e}=(0,ov.useContext)(q);return e?(0,nv.jsx)(li,{...t}):null}var $a=nw;var iv=c(j(),1),av=c(U(),1);var ju=c(V(),1);function Wu({className:t}){let{actions:e=[],data:r,fields:o,getItemId:n,getItemLevel:i,hasInitiallyLoaded:a,isLoading:l,view:s,onChangeView:u,selection:f,onChangeSelection:m,setOpenedFilter:d,onClickItem:p,isItemClickable:v,renderItemLink:y,defaultLayouts:g,empty:b=(0,ju.jsx)("p",{children:(0,av.__)("No results")})}=(0,iv.useContext)(q);if(!a)return null;let S=eo.find(A=>A.type===s.type&&g[A.type])?.component;return(0,ju.jsx)(S,{className:t,actions:e,data:r,fields:o,getItemId:n,getItemLevel:i,isLoading:l,onChangeView:u,onChangeSelection:m,selection:f,setOpenedFilter:d,onClickItem:p,renderItemLink:y,isItemClickable:v,view:s,empty:b})}var sv=c(j(),1);var vn=c(V(),1),iw=[];function zu(){let{view:t,paginationInfo:{totalItems:e=0,totalPages:r},data:o,actions:n=iw,isLoading:i,hasInitiallyLoaded:a,hasInfiniteScrollHandler:l}=(0,sv.useContext)(q),s=!!i&&a&&!l&&!!o?.length,u=Xt(!!s),f=qo(n,o)&&[Ho,$i].includes(t.type);return!s&&(!e||!r||r<=1&&!f)?null:(!!e||s)&&(0,vn.jsx)("div",{className:"dataviews-footer",inert:s?"true":void 0,children:(0,vn.jsxs)(F,{direction:"row",justify:"end",align:"center",className:W("dataviews-footer__content",{"is-refreshing":u}),gap:"sm",children:[f&&(0,vn.jsx)(Qi,{}),(0,vn.jsx)(Jf,{})]})})}var lv=c(U(),1),Wt=c(j(),1),uv=c(G(),1),cv=c(Et(),1);var fv=c(V(),1),aw=(0,Wt.memo)(function({label:e}){let{view:r,onChangeView:o}=(0,Wt.useContext)(q),[n,i,a]=(0,cv.useDebouncedInput)(r.search);(0,Wt.useEffect)(()=>{i(r.search??"")},[r.search,i]);let l=(0,Wt.useRef)(o),s=(0,Wt.useRef)(r);(0,Wt.useEffect)(()=>{l.current=o,s.current=r},[o,r]),(0,Wt.useEffect)(()=>{a!==s.current?.search&&l.current({...s.current,page:1,search:a})},[a]);let u=e||(0,lv.__)("Search");return(0,fv.jsx)(uv.SearchControl,{className:"dataviews-search",onChange:i,value:n,label:u,placeholder:u,size:"compact"})}),Gu=aw;var Le=c(G(),1),Vr=c(U(),1),zt=c(j(),1);var Yu=c(mv(),1),bv=c(Et(),1);var pv=c(G(),1),qu=c(U(),1),vv=c(j(),1);var gv=c(V(),1);function hv(){let t=(0,vv.useContext)(q),{view:e,onChangeView:r}=t,o=e.infiniteScrollEnabled??!1;return t.hasInfiniteScrollHandler?(0,gv.jsx)(pv.ToggleControl,{label:(0,qu.__)("Enable infinite scroll"),help:(0,qu.__)("Automatically load more content as you scroll, instead of showing pagination links."),checked:o,onChange:n=>{r({...e,infiniteScrollEnabled:n})}}):null}var re=c(V(),1),{Menu:ui}=K(Le.privateApis),sw={className:"dataviews-config__popover",placement:"bottom-end",offset:9};function Uu(){let{view:t,onChangeView:e,defaultLayouts:r}=(0,zt.useContext)(q),o=Object.keys(r);if(o.length<=1)return null;let n=eo.find(i=>t.type===i.type);return(0,re.jsxs)(ui,{children:[(0,re.jsx)(ui.TriggerButton,{render:(0,re.jsx)(Le.Button,{size:"compact",icon:n?.icon,label:(0,Vr.__)("Layout")})}),(0,re.jsx)(ui.Popover,{children:o.map(i=>{let a=eo.find(l=>l.type===i);return a?(0,re.jsx)(ui.RadioItem,{value:i,name:"view-actions-available-view",checked:i===t.type,hideOnClick:!0,onChange:l=>{switch(l.target.value){case"list":case"grid":case"table":case"pickerGrid":case"pickerTable":case"activity":let s={...t};return"layout"in s&&delete s.layout,e({...s,type:l.target.value,...r[l.target.value]})}(0,Yu.default)("Invalid dataview")},children:(0,re.jsx)(ui.ItemLabel,{children:a.label})},i):null})})]})}function lw(){let{view:t,fields:e,onChangeView:r}=(0,zt.useContext)(q),o=(0,zt.useMemo)(()=>e.filter(i=>i.enableSorting!==!1).map(i=>({label:i.label,value:i.id})),[e]);return(0,re.jsx)(Le.SelectControl,{__next40pxDefaultSize:!0,label:(0,Vr.__)("Sort by"),value:t.sort?.field,options:o,onChange:n=>{r({...t,sort:{direction:t?.sort?.direction||"desc",field:n},showLevels:!1})}})}function uw(){let{view:t,fields:e,onChangeView:r}=(0,zt.useContext)(q);if(e.filter(i=>i.enableSorting!==!1).length===0)return null;let n=t.sort?.direction;return!n&&t.sort?.field&&(n="desc"),(0,re.jsx)(Le.__experimentalToggleGroupControl,{className:"dataviews-view-config__sort-direction",__next40pxDefaultSize:!0,isBlock:!0,label:(0,Vr.__)("Order"),value:n,onChange:i=>{if(i==="asc"||i==="desc"){r({...t,sort:{direction:i,field:t.sort?.field||e.find(a=>a.enableSorting!==!1)?.id||""},showLevels:!1});return}(0,Yu.default)("Invalid direction")},children:qi.map(i=>(0,re.jsx)(Le.__experimentalToggleGroupControlOptionIcon,{value:i,icon:uf[i],label:Ui[i]},i))})}function cw(){let{view:t,config:e,onChangeView:r}=(0,zt.useContext)(q),{infiniteScrollEnabled:o}=t;return!e||!e.perPageSizes||e.perPageSizes.length<2||e.perPageSizes.length>6||o?null:(0,re.jsx)(Le.__experimentalToggleGroupControl,{__next40pxDefaultSize:!0,isBlock:!0,label:(0,Vr.__)("Items per page"),value:t.perPage||10,disabled:!t?.sort?.field,onChange:n=>{let i=typeof n=="number"||n===void 0?n:parseInt(n,10);r({...t,perPage:i,page:1})},children:e.perPageSizes.map(n=>(0,re.jsx)(Le.__experimentalToggleGroupControlOption,{value:n,label:n.toString()},n))})}function fw(){let{onReset:t}=(0,zt.useContext)(q);return t===void 0?null:(0,re.jsx)(Le.Button,{variant:"tertiary",size:"compact",disabled:t===!1,accessibleWhenDisabled:!0,className:"dataviews-view-config__reset-button",onClick:()=>{typeof t=="function"&&t()},children:(0,Vr.__)("Reset view")})}function $u(){let{view:t,onReset:e}=(0,zt.useContext)(q),r=(0,bv.useInstanceId)(xv,"dataviews-view-config-dropdown"),o=eo.find(i=>i.type===t.type),n=typeof e=="function";return(0,re.jsx)(Le.Dropdown,{expandOnMobile:!0,popoverProps:{...sw,id:r},renderToggle:({onToggle:i,isOpen:a})=>(0,re.jsxs)("div",{className:"dataviews-view-config__toggle-wrapper",children:[(0,re.jsx)(Le.Button,{size:"compact",icon:rl,label:(0,Vr._x)("View options","View is used as a noun"),onClick:i,"aria-expanded":a?"true":"false","aria-controls":r}),n&&(0,re.jsx)("span",{className:"dataviews-view-config__modified-indicator"})]}),renderContent:()=>(0,re.jsx)(Le.__experimentalDropdownContentWrapper,{paddingSize:"medium",className:"dataviews-config__popover-content-wrapper",children:(0,re.jsxs)(F,{direction:"column",className:"dataviews-view-config",gap:"xl",children:[(0,re.jsxs)(F,{direction:"row",justify:"space-between",align:"center",className:"dataviews-view-config__header",children:[(0,re.jsx)(Le.__experimentalHeading,{level:2,className:"dataviews-settings-section__title",children:(0,Vr.__)("Appearance")}),(0,re.jsx)(fw,{})]}),(0,re.jsxs)(F,{direction:"column",gap:"lg",children:[(0,re.jsxs)(F,{direction:"row",gap:"sm",className:"dataviews-view-config__sort-controls",children:[(0,re.jsx)(lw,{}),(0,re.jsx)(uw,{})]}),!!o?.viewConfigOptions&&(0,re.jsx)(o.viewConfigOptions,{}),(0,re.jsx)(hv,{}),(0,re.jsx)(cw,{}),(0,re.jsx)(ta,{})]})]})})})}function xv(){return(0,re.jsxs)(re.Fragment,{children:[(0,re.jsx)(Uu,{}),(0,re.jsx)($u,{})]})}var dw=(0,zt.memo)(xv),wv=dw;var yv=c(G(),1),Sv=c(j(),1);function pe(t,e){let r;return t?.required&&e?.required?r=e?.required?.message?e.required:void 0:t?.pattern&&e?.pattern?r=e.pattern:t?.min&&e?.min?r=e.min:t?.max&&e?.max?r=e.max:t?.minLength&&e?.minLength?r=e.minLength:t?.maxLength&&e?.maxLength?r=e.maxLength:t?.elements&&e?.elements?r=e.elements:e?.custom&&(r=e.custom),r}var Cv=c(V(),1),{ValidatedCheckboxControl:mw}=K(yv.privateApis);function _v({field:t,onChange:e,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:l,label:s,description:u,isValid:f}=t,m=(0,Sv.useCallback)(()=>{e(l({item:r,value:!a({item:r})}))},[r,a,e,l]);return(0,Cv.jsx)(mw,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:pe(f,i),hidden:o,label:s,help:u,checked:a({item:r}),onChange:m})}var Ka=c(G(),1),Ev=c(j(),1);var Ku=c(V(),1),{ValidatedComboboxControl:pw}=K(Ka.privateApis);function Za({data:t,field:e,onChange:r,hideLabelFromVision:o,validity:n}){let{label:i,description:a,placeholder:l,getValue:s,setValue:u,isValid:f}=e,m=s({item:t})??"",d=(0,Ev.useCallback)(y=>r(u({item:t,value:y??""})),[t,r,u]),{elements:p,isLoading:v}=Ke({elements:e.elements,getElements:e.getElements});return v?(0,Ku.jsx)(Ka.Spinner,{}):(0,Ku.jsx)(pw,{required:!!e.isValid?.required,customValidity:pe(f,n),label:i,value:m,help:a,placeholder:l,options:p,onChange:d,hideLabelFromVision:o,allowReset:!0,expandOnFocus:!0})}var es=c(G(),1),Bt=c(j(),1),Ja=c(U(),1),Vt=c(No(),1);var hn=c(G(),1),Zu=c(j(),1),ar=c(U(),1);var gn=c(V(),1),vw={[dt]:[{value:"days",label:(0,ar.__)("Days")},{value:"weeks",label:(0,ar.__)("Weeks")},{value:"months",label:(0,ar.__)("Months")},{value:"years",label:(0,ar.__)("Years")}],[xt]:[{value:"days",label:(0,ar.__)("Days ago")},{value:"weeks",label:(0,ar.__)("Weeks ago")},{value:"months",label:(0,ar.__)("Months ago")},{value:"years",label:(0,ar.__)("Years ago")}]};function Xa({className:t,data:e,field:r,onChange:o,hideLabelFromVision:n,operator:i}){let a=vw[i===dt?"inThePast":"over"],{id:l,label:s,getValue:u,setValue:f}=r,m=u({item:e}),{value:d="",unit:p=a[0].value}=m&&typeof m=="object"?m:{},v=(0,Zu.useCallback)(g=>o(f({item:e,value:{value:Number(g),unit:p}})),[o,f,e,p]),y=(0,Zu.useCallback)(g=>o(f({item:e,value:{value:d,unit:g}})),[o,f,e,d]);return(0,gn.jsx)(hn.BaseControl,{id:l,className:W(t,"dataviews-controls__relative-date"),label:s,hideLabelFromVision:n,children:(0,gn.jsxs)(F,{direction:"row",gap:"sm",children:[(0,gn.jsx)(hn.__experimentalNumberControl,{__next40pxDefaultSize:!0,className:"dataviews-controls__relative-date-number",spinControls:"none",min:1,step:1,value:d,onChange:v}),(0,gn.jsx)(hn.SelectControl,{className:"dataviews-controls__relative-date-unit",__next40pxDefaultSize:!0,label:(0,ar.__)("Unit"),value:p,options:a,onChange:y,hideLabelFromVision:!0})]})})}var Pv=c(No(),1);function Qa(t){if(!t)return null;let e=(0,Pv.getDate)(t);return e&&cn(e)?e:null}var uo=c(V(),1),{DateCalendar:gw,ValidatedInputControl:hw}=K(es.privateApis),bw=t=>t?(0,Vt.dateI18n)("Y-m-d\\TH:i",(0,Vt.getDate)(t)):"";function xw({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:l,description:s,setValue:u,getValue:f,isValid:m}=e,d=f({item:t}),p=typeof d=="string"?d:void 0,[v,y]=(0,Bt.useState)(()=>Qa(p)||new Date),g=(0,Bt.useRef)(null),b=(0,Bt.useRef)(void 0),S=(0,Bt.useRef)(null),A=(0,Bt.useCallback)(N=>r(u({item:t,value:N})),[t,r,u]);(0,Bt.useEffect)(()=>()=>{b.current&&clearTimeout(b.current)},[]);let T=(0,Bt.useCallback)(N=>{let h;if(N){let E=(0,Vt.dateI18n)("Y-m-d",N),P;p?P=(0,Vt.dateI18n)("H:i",(0,Vt.getDate)(p)):P=(0,Vt.dateI18n)("H:i",N),h=(0,Vt.getDate)(`${E}T${P}`).toISOString(),A(h),b.current&&clearTimeout(b.current)}else A(void 0);S.current=g.current&&g.current.ownerDocument.activeElement,b.current=setTimeout(()=>{g.current&&(g.current.focus(),g.current.blur(),A(h),S.current&&S.current instanceof HTMLElement&&S.current.focus())},0)},[A,p]),O=(0,Bt.useCallback)(N=>{if(N){let h=(0,Vt.getDate)(N);A(h.toISOString());let E=Qa(h.toISOString());E&&y(E)}else A(void 0)},[A]),{format:k}=e,D=k.weekStartsOn??(0,Vt.getSettings)().l10n.startOfWeek,{timezone:{string:C}}=(0,Vt.getSettings)(),I=l;return m?.required&&!n&&!o?I=`${l} (${(0,Ja.__)("Required")})`:!m?.required&&n&&!o&&(I=`${l} (${(0,Ja.__)("Optional")})`),(0,uo.jsx)(es.BaseControl,{id:a,label:I,help:s,hideLabelFromVision:o,children:(0,uo.jsxs)(F,{direction:"column",gap:"lg",children:[(0,uo.jsx)(gw,{style:{width:"100%"},selected:p&&Qa(p)||void 0,onSelect:T,month:v,onMonthChange:y,timeZone:C||void 0,weekStartsOn:D}),(0,uo.jsx)(hw,{ref:g,__next40pxDefaultSize:!0,required:!!m?.required,customValidity:pe(m,i),type:"datetime-local",label:(0,Ja.__)("Date time"),hideLabelFromVision:!0,value:bw(p),onChange:O})]})})}function Av({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===dt||i===xt?(0,uo.jsx)(Xa,{className:"dataviews-controls__datetime",data:t,field:e,onChange:r,hideLabelFromVision:o,operator:i}):(0,uo.jsx)(xw,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var ut=c(G(),1),ce=c(j(),1),qe=c(U(),1),lt=c(No(),1);var ve=c(V(),1),{DateCalendar:ww,DateRangeCalendar:yw}=K(ut.privateApis),Sw=[{id:"today",label:(0,qe.__)("Today"),getValue:()=>(0,lt.getDate)(null)},{id:"yesterday",label:(0,qe.__)("Yesterday"),getValue:()=>{let t=(0,lt.getDate)(null);return Vo(t,1)}},{id:"past-week",label:(0,qe.__)("Past week"),getValue:()=>{let t=(0,lt.getDate)(null);return Vo(t,7)}},{id:"past-month",label:(0,qe.__)("Past month"),getValue:()=>{let t=(0,lt.getDate)(null);return ja(t,1)}}],Cw=[{id:"last-7-days",label:(0,qe.__)("Last 7 days"),getValue:()=>{let t=(0,lt.getDate)(null);return[Vo(t,7),t]}},{id:"last-30-days",label:(0,qe.__)("Last 30 days"),getValue:()=>{let t=(0,lt.getDate)(null);return[Vo(t,30),t]}},{id:"month-to-date",label:(0,qe.__)("Month to date"),getValue:()=>{let t=(0,lt.getDate)(null);return[yp(t),t]}},{id:"last-year",label:(0,qe.__)("Last year"),getValue:()=>{let t=(0,lt.getDate)(null);return[Wa(t,1),t]}},{id:"year-to-date",label:(0,qe.__)("Year to date"),getValue:()=>{let t=(0,lt.getDate)(null);return[La(t),t]}}],bn=t=>{if(!t)return null;let e=(0,lt.getDate)(t);return e&&cn(e)?e:null},Xu=t=>t?typeof t=="string"?t:Lu(t,"yyyy-MM-dd"):"";function Iv({field:t,validity:e,inputRefs:r,isTouched:o,setIsTouched:n,children:i}){let{isValid:a}=t,[l,s]=(0,ce.useState)(void 0),u=(0,ce.useCallback)(()=>{let m=Array.isArray(r)?r:[r];for(let d of m){let p=d.current;if(p&&!p.validity.valid){s({type:"invalid",message:p.validationMessage});return}}s(void 0)},[r]);return(0,ce.useEffect)(()=>{let m=Array.isArray(r)?r:[r],d=e?pe(a,e):void 0;for(let p of m){let v=p.current;v&&v.setCustomValidity(d?.type==="invalid"&&d.message?d.message:"")}},[r,a,e]),(0,ce.useEffect)(()=>{let m=Array.isArray(r)?r:[r],d=p=>{p.preventDefault(),n(!0)};for(let p of m)p.current?.addEventListener("invalid",d);return()=>{for(let p of m)p.current?.removeEventListener("invalid",d)}},[r,n]),(0,ce.useEffect)(()=>{if(!o)return;let m=e?pe(a,e):void 0;m?s(m):u()},[o,a,e,u]),(0,ve.jsxs)("div",{onBlur:m=>{o||(!m.relatedTarget||!m.currentTarget.contains(m.relatedTarget))&&n(!0)},children:[i,(0,ve.jsx)("div",{"aria-live":"polite",children:l&&(0,ve.jsxs)("p",{className:W("components-validated-control__indicator",l.type==="invalid"?"is-invalid":void 0),children:[(0,ve.jsx)(ut.Icon,{className:"components-validated-control__indicator-icon",icon:al,size:16,fill:"currentColor"}),l.message]})})]})}function _w({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:l,setValue:s,getValue:u,isValid:f,format:m}=e,[d,p]=(0,ce.useState)(null),v=m.weekStartsOn??(0,lt.getSettings)().l10n.startOfWeek,y=u({item:t}),g=typeof y=="string"?y:void 0,[b,S]=(0,ce.useState)(()=>bn(g)||new Date),[A,T]=(0,ce.useState)(!1),O=(0,ce.useRef)(null),k=(0,ce.useCallback)(E=>r(s({item:t,value:E})),[t,r,s]),D=(0,ce.useCallback)(E=>{let P=E?Lu(E,"yyyy-MM-dd"):void 0;k(P),p(null),T(!0)},[k]),C=(0,ce.useCallback)(E=>{let P=E.getValue(),x=Xu(P);S(P),k(x),p(E.id),T(!0)},[k]),I=(0,ce.useCallback)(E=>{if(k(E),E){let P=bn(E);P&&S(P)}p(null),T(!0)},[k]),{timezone:{string:N}}=(0,lt.getSettings)(),h=l;return f?.required&&!n?h=`${l} (${(0,qe.__)("Required")})`:!f?.required&&n&&(h=`${l} (${(0,qe.__)("Optional")})`),(0,ve.jsx)(Iv,{field:e,validity:i,inputRefs:O,isTouched:A,setIsTouched:T,children:(0,ve.jsx)(ut.BaseControl,{id:a,className:"dataviews-controls__date",label:h,hideLabelFromVision:o,children:(0,ve.jsxs)(F,{direction:"column",gap:"lg",children:[(0,ve.jsxs)(F,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[Sw.map(E=>{let P=d===E.id;return(0,ve.jsx)(ut.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:P,size:"small",onClick:()=>C(E),children:E.label},E.id)}),(0,ve.jsx)(ut.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!d,size:"small",disabled:!!d,accessibleWhenDisabled:!1,children:(0,qe.__)("Custom")})]}),(0,ve.jsx)(ut.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:O,type:"date",label:(0,qe.__)("Date"),hideLabelFromVision:!0,value:g,onChange:I,required:!!e.isValid?.required}),(0,ve.jsx)(ww,{style:{width:"100%"},selected:g&&bn(g)||void 0,onSelect:D,month:b,onMonthChange:S,timeZone:N||void 0,weekStartsOn:v})]})})})}function Ew({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:l,getValue:s,setValue:u,format:f}=e,m,d=s({item:t});Array.isArray(d)&&d.length===2&&d.every(x=>typeof x=="string")&&(m=d);let p=f.weekStartsOn??(0,lt.getSettings)().l10n.startOfWeek,v=(0,ce.useCallback)(x=>{r(u({item:t,value:x}))},[t,r,u]),[y,g]=(0,ce.useState)(null),b=(0,ce.useMemo)(()=>{if(!m)return{from:void 0,to:void 0};let[x,R]=m;return{from:bn(x)||void 0,to:bn(R)||void 0}},[m]),[S,A]=(0,ce.useState)(()=>b.from||new Date),[T,O]=(0,ce.useState)(!1),k=(0,ce.useRef)(null),D=(0,ce.useRef)(null),C=(0,ce.useCallback)((x,R)=>{x&&R?v([Xu(x),Xu(R)]):!x&&!R&&v(void 0)},[v]),I=(0,ce.useCallback)(x=>{C(x?.from,x?.to),g(null),O(!0)},[C]),N=(0,ce.useCallback)(x=>{let[R,w]=x.getValue();A(R),C(R,w),g(x.id),O(!0)},[C]),h=(0,ce.useCallback)((x,R)=>{let[w,_]=m||[void 0,void 0];if(C(x==="from"?R:w,x==="to"?R:_),R){let ae=bn(R);ae&&A(ae)}g(null),O(!0)},[m,C]),{timezone:E}=(0,lt.getSettings)(),P=l;return e.isValid?.required&&!n?P=`${l} (${(0,qe.__)("Required")})`:!e.isValid?.required&&n&&(P=`${l} (${(0,qe.__)("Optional")})`),(0,ve.jsx)(Iv,{field:e,validity:i,inputRefs:[k,D],isTouched:T,setIsTouched:O,children:(0,ve.jsx)(ut.BaseControl,{id:a,className:"dataviews-controls__date",label:P,hideLabelFromVision:o,children:(0,ve.jsxs)(F,{direction:"column",gap:"lg",children:[(0,ve.jsxs)(F,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[Cw.map(x=>{let R=y===x.id;return(0,ve.jsx)(ut.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:R,size:"small",onClick:()=>N(x),children:x.label},x.id)}),(0,ve.jsx)(ut.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!y,size:"small",accessibleWhenDisabled:!1,disabled:!!y,children:(0,qe.__)("Custom")})]}),(0,ve.jsxs)(F,{direction:"row",gap:"sm",justify:"space-between",className:"dataviews-controls__date-range-inputs",children:[(0,ve.jsx)(ut.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:k,type:"date",label:(0,qe.__)("From"),hideLabelFromVision:!0,value:m?.[0],onChange:x=>h("from",x),required:!!e.isValid?.required}),(0,ve.jsx)(ut.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:D,type:"date",label:(0,qe.__)("To"),hideLabelFromVision:!0,value:m?.[1],onChange:x=>h("to",x),required:!!e.isValid?.required})]}),(0,ve.jsx)(yw,{style:{width:"100%"},selected:b,onSelect:I,month:S,onMonthChange:A,timeZone:E.string||void 0,weekStartsOn:p})]})})})}function Ov({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===dt||i===xt?(0,ve.jsx)(Xa,{className:"dataviews-controls__date",data:t,field:e,onChange:r,hideLabelFromVision:o,operator:i}):i===ft?(0,ve.jsx)(Ew,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a}):(0,ve.jsx)(_w,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var ts=c(G(),1),Tv=c(j(),1);var Qu=c(V(),1),{ValidatedSelectControl:Pw}=K(ts.privateApis);function rs({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{type:a,label:l,description:s,getValue:u,setValue:f,isValid:m}=e,d=a==="array",p=u({item:t})??(d?[]:""),v=(0,Tv.useCallback)(b=>r(f({item:t,value:b})),[t,r,f]),{elements:y,isLoading:g}=Ke({elements:e.elements,getElements:e.getElements});return g?(0,Qu.jsx)(ts.Spinner,{}):(0,Qu.jsx)(Pw,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:pe(m,i),label:l,value:p,help:s,options:y,onChange:v,__next40pxDefaultSize:!0,hideLabelFromVision:o,multiple:d})}var Ju=c(V(),1),Aw=10;function Rv(t){let{field:e}=t,{elements:r}=Ke({elements:e.elements,getElements:e.getElements});return r.length>=Aw?(0,Ju.jsx)(Za,{...t}):(0,Ju.jsx)(rs,{...t})}var ns=c(G(),1);var Vv=c(G(),1),Nv=c(j(),1);var Dv=c(V(),1),{ValidatedInputControl:Iw}=K(Vv.privateApis);function sr({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,type:i,prefix:a,suffix:l,validity:s}){let{label:u,placeholder:f,description:m,getValue:d,setValue:p,isValid:v}=e,y=d({item:t}),g=(0,Nv.useCallback)(b=>r(p({item:t,value:b})),[t,p,r]);return(0,Dv.jsx)(Iw,{required:!!v.required,markWhenOptional:n,customValidity:pe(v,s),label:u,placeholder:f,value:y??"",help:m,onChange:g,hideLabelFromVision:o,type:i,prefix:a,suffix:l,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 os=c(V(),1);function kv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,os.jsx)(sr,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"email",prefix:(0,os.jsx)(ns.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,os.jsx)(ns.Icon,{icon:nl})})})}var as=c(G(),1);var is=c(V(),1);function Mv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,is.jsx)(sr,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"tel",prefix:(0,is.jsx)(as.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,is.jsx)(as.Icon,{icon:vl})})})}var ls=c(G(),1);var ss=c(V(),1);function Fv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,ss.jsx)(sr,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"url",prefix:(0,ss.jsx)(ls.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,ss.jsx)(ls.Icon,{icon:ml})})})}var Nr=c(G(),1),ci=c(j(),1),us=c(U(),1);var co=c(V(),1),{ValidatedNumberControl:Ow}=K(Nr.privateApis);function Lv(t){if(t===""||t===void 0)return"";let e=Number(t);return Number.isFinite(e)?e:""}function Tw({value:t,onChange:e,hideLabelFromVision:r,step:o}){let[n="",i=""]=t,a=(0,ci.useCallback)(s=>e([Lv(s),i]),[e,i]),l=(0,ci.useCallback)(s=>e([n,Lv(s)]),[e,n]);return(0,co.jsx)(Nr.BaseControl,{help:(0,us.__)("The max. value must be greater than the min. value."),children:(0,co.jsxs)(Nr.Flex,{direction:"row",gap:4,children:[(0,co.jsx)(Nr.__experimentalNumberControl,{label:(0,us.__)("Min."),value:n,max:i?Number(i)-o:void 0,onChange:a,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o}),(0,co.jsx)(Nr.__experimentalNumberControl,{label:(0,us.__)("Max."),value:i,min:n?Number(n)+o:void 0,onChange:l,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o})]})})}function cs({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){let l=e.format?.decimals??0,s=Math.pow(10,Math.abs(l)*-1),{label:u,description:f,getValue:m,setValue:d,isValid:p}=e,v=m({item:t})??"",y=(0,ci.useCallback)(b=>{r(d({item:t,value:["",void 0].includes(b)?void 0:Number(b)}))},[t,r,d]),g=(0,ci.useCallback)(b=>{r(d({item:t,value:b}))},[t,r,d]);if(i===ft){let b=["",""];return Array.isArray(v)&&v.length===2&&v.every(S=>typeof S=="number"||S==="")&&(b=v),(0,co.jsx)(Tw,{value:b,onChange:g,hideLabelFromVision:o,step:s})}return(0,co.jsx)(Ow,{required:!!p.required,markWhenOptional:n,customValidity:pe(p,a),label:u,help:f,value:v,onChange:y,__next40pxDefaultSize:!0,hideLabelFromVision:o,step:s,min:p.min?p.min.constraint:void 0,max:p.max?p.max.constraint:void 0})}var Bv=c(V(),1);function Hv(t){return(0,Bv.jsx)(cs,{...t})}var jv=c(V(),1);function Wv(t){return(0,jv.jsx)(cs,{...t})}var fs=c(G(),1),zv=c(j(),1);var ec=c(V(),1),{ValidatedRadioControl:Rw}=K(fs.privateApis);function Gv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:l,getValue:s,setValue:u,isValid:f}=e,{elements:m,isLoading:d}=Ke({elements:e.elements,getElements:e.getElements}),p=s({item:t}),v=(0,zv.useCallback)(y=>r(u({item:t,value:y})),[t,r,u]);return d?(0,ec.jsx)(fs.Spinner,{}):(0,ec.jsx)(Rw,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:pe(f,i),label:a,help:l,onChange:v,options:m,selected:p,hideLabelFromVision:o})}var tc=c(j(),1);var qv=c(V(),1);function Yv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{prefix:l,suffix:s}=i||{};return(0,qv.jsx)(sr,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a,prefix:l?(0,tc.createElement)(l):void 0,suffix:s?(0,tc.createElement)(s):void 0})}var Uv=c(G(),1),$v=c(j(),1);var Kv=c(V(),1),{ValidatedToggleControl:Vw}=K(Uv.privateApis);function Zv({field:t,onChange:e,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:l,getValue:s,setValue:u,isValid:f}=t,m=(0,$v.useCallback)(()=>{e(u({item:r,value:!s({item:r})}))},[e,u,r,s]);return(0,Kv.jsx)(Vw,{required:!!f.required,markWhenOptional:n,customValidity:pe(f,i),hidden:o,label:a,help:l,checked:s({item:r}),onChange:m})}var Xv=c(G(),1),Qv=c(j(),1);var Jv=c(V(),1),{ValidatedTextareaControl:Nw}=K(Xv.privateApis);function eg({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{rows:l=4}=i||{},{label:s,placeholder:u,description:f,setValue:m,isValid:d}=e,p=e.getValue({item:t}),v=(0,Qv.useCallback)(y=>r(m({item:t,value:y})),[t,r,m]);return(0,Jv.jsx)(Nw,{required:!!d.required,markWhenOptional:n,customValidity:pe(d,a),label:s,placeholder:u,value:p??"",help:f,onChange:v,rows:l,minLength:d.minLength?d.minLength.constraint:void 0,maxLength:d.maxLength?d.maxLength.constraint:void 0,__next40pxDefaultSize:!0,hideLabelFromVision:o})}var xn=c(G(),1),tg=c(j(),1);var ds=c(V(),1),{ValidatedToggleGroupControl:Dw}=K(xn.privateApis);function rg({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:l,isValid:s}=e,u=a({item:t}),f=(0,tg.useCallback)(v=>r(l({item:t,value:v})),[t,r,l]),{elements:m,isLoading:d}=Ke({elements:e.elements,getElements:e.getElements});if(d)return(0,ds.jsx)(xn.Spinner,{});if(m.length===0)return null;let p=m.find(v=>v.value===u);return(0,ds.jsx)(Dw,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:pe(s,i),__next40pxDefaultSize:!0,isBlock:!0,label:e.label,help:p?.description||e.description,onChange:f,value:u,hideLabelFromVision:o,children:m.map(v=>(0,ds.jsx)(xn.__experimentalToggleGroupControlOption,{label:v.label,value:v.value},v.value))})}var ms=c(G(),1),ps=c(j(),1);var fi=c(V(),1),{ValidatedFormTokenField:kw}=K(ms.privateApis);function og({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:l,getValue:s,setValue:u,isValid:f}=e,m=s({item:t}),{elements:d,isLoading:p}=Ke({elements:e.elements,getElements:e.getElements}),v=(0,ps.useMemo)(()=>Array.isArray(m)?m.map(g=>d?.find(S=>S.value===g)||{value:g,label:g}):[],[m,d]),y=(0,ps.useCallback)(g=>{let b=g.map(S=>typeof S=="object"&&"value"in S?S.value:S);r(u({item:t,value:b}))},[r,u,t]);return p?(0,fi.jsx)(ms.Spinner,{}):(0,fi.jsx)(kw,{required:!!f?.required,markWhenOptional:n,customValidity:pe(f,i),label:o?void 0:a,value:v,onChange:y,placeholder:l,suggestions:d?.map(g=>g.value),__experimentalValidateInput:g=>e.isValid?.elements&&d?d.some(b=>b.value===g||b.label===g):!0,__experimentalExpandOnFocus:d&&d.length>0,__experimentalShowHowTo:!e.isValid?.elements,displayTransform:g=>typeof g=="object"&&"label"in g?g.label:typeof g=="string"&&d&&d.find(S=>S.value===g)?.label||g,__experimentalRenderItem:({item:g})=>{if(typeof g=="string"&&d){let b=d.find(S=>S.value===g);return(0,fi.jsx)("span",{children:b?.label||g})}return(0,fi.jsx)("span",{children:g})}})}var Mw={grad:.9,turn:360,rad:360/(2*Math.PI)},Dr=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},Ze=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=Math.pow(10,e)),Math.round(r*t)/r+0},Ht=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=1),t>r?r:t>e?t:e},dg=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},ng=function(t){return{r:Ht(t.r,0,255),g:Ht(t.g,0,255),b:Ht(t.b,0,255),a:Ht(t.a)}},rc=function(t){return{r:Ze(t.r),g:Ze(t.g),b:Ze(t.b),a:Ze(t.a,3)}},Fw=/^#([0-9a-f]{3,8})$/i,vs=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},mg=function(t){var e=t.r,r=t.g,o=t.b,n=t.a,i=Math.max(e,r,o),a=i-Math.min(e,r,o),l=a?i===e?(r-o)/a:i===r?2+(o-e)/a:4+(e-r)/a:0;return{h:60*(l<0?l+6:l),s:i?a/i*100:0,v:i/255*100,a:n}},pg=function(t){var e=t.h,r=t.s,o=t.v,n=t.a;e=e/360*6,r/=100,o/=100;var i=Math.floor(e),a=o*(1-r),l=o*(1-(e-i)*r),s=o*(1-(1-e+i)*r),u=i%6;return{r:255*[o,l,a,a,s,o][u],g:255*[s,o,o,l,a,a][u],b:255*[a,a,s,o,o,l][u],a:n}},ig=function(t){return{h:dg(t.h),s:Ht(t.s,0,100),l:Ht(t.l,0,100),a:Ht(t.a)}},ag=function(t){return{h:Ze(t.h),s:Ze(t.s),l:Ze(t.l),a:Ze(t.a,3)}},sg=function(t){return pg((r=(e=t).s,{h:e.h,s:(r*=((o=e.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:e.a}));var e,r,o},di=function(t){return{h:(e=mg(t)).h,s:(n=(200-(r=e.s))*(o=e.v)/100)>0&&n<200?r*o/100/(n<=100?n:200-n)*100:0,l:n/2,a:e.a};var e,r,o,n},Lw=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Bw=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Hw=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,jw=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,lg={string:[[function(t){var e=Fw.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?Ze(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?Ze(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=Hw.exec(t)||jw.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:ng({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=Lw.exec(t)||Bw.exec(t);if(!e)return null;var r,o,n=ig({h:(r=e[1],o=e[2],o===void 0&&(o="deg"),Number(r)*(Mw[o]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return sg(n)},"hsl"]],object:[[function(t){var e=t.r,r=t.g,o=t.b,n=t.a,i=n===void 0?1:n;return Dr(e)&&Dr(r)&&Dr(o)?ng({r:Number(e),g:Number(r),b:Number(o),a:Number(i)}):null},"rgb"],[function(t){var e=t.h,r=t.s,o=t.l,n=t.a,i=n===void 0?1:n;if(!Dr(e)||!Dr(r)||!Dr(o))return null;var a=ig({h:Number(e),s:Number(r),l:Number(o),a:Number(i)});return sg(a)},"hsl"],[function(t){var e=t.h,r=t.s,o=t.v,n=t.a,i=n===void 0?1:n;if(!Dr(e)||!Dr(r)||!Dr(o))return null;var a=(function(l){return{h:dg(l.h),s:Ht(l.s,0,100),v:Ht(l.v,0,100),a:Ht(l.a)}})({h:Number(e),s:Number(r),v:Number(o),a:Number(i)});return pg(a)},"hsv"]]},ug=function(t,e){for(var r=0;r=.5},t.prototype.toHex=function(){return e=rc(this.rgba),r=e.r,o=e.g,n=e.b,a=(i=e.a)<1?vs(Ze(255*i)):"","#"+vs(r)+vs(o)+vs(n)+a;var e,r,o,n,i,a},t.prototype.toRgb=function(){return rc(this.rgba)},t.prototype.toRgbString=function(){return e=rc(this.rgba),r=e.r,o=e.g,n=e.b,(i=e.a)<1?"rgba("+r+", "+o+", "+n+", "+i+")":"rgb("+r+", "+o+", "+n+")";var e,r,o,n,i},t.prototype.toHsl=function(){return ag(di(this.rgba))},t.prototype.toHslString=function(){return e=ag(di(this.rgba)),r=e.h,o=e.s,n=e.l,(i=e.a)<1?"hsla("+r+", "+o+"%, "+n+"%, "+i+")":"hsl("+r+", "+o+"%, "+n+"%)";var e,r,o,n,i},t.prototype.toHsv=function(){return e=mg(this.rgba),{h:Ze(e.h),s:Ze(e.s),v:Ze(e.v),a:Ze(e.a,3)};var e},t.prototype.invert=function(){return ct({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),ct(oc(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),ct(oc(this.rgba,-e))},t.prototype.grayscale=function(){return ct(oc(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),ct(cg(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),ct(cg(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?ct({r:(r=this.rgba).r,g:r.g,b:r.b,a:e}):Ze(this.rgba.a,3);var r},t.prototype.hue=function(e){var r=di(this.rgba);return typeof e=="number"?ct({h:e,s:r.s,l:r.l,a:r.a}):Ze(r.h)},t.prototype.isEqual=function(e){return this.toHex()===ct(e).toHex()},t})(),ct=function(t){return t instanceof fg?t:new fg(t)};var _t=c(G(),1),ic=c(j(),1),vg=c(U(),1);var kr=c(V(),1),{ValidatedInputControl:zw}=K(_t.privateApis),Gw=({color:t,onColorChange:e})=>{let r=t&&ct(t).isValid()?t:"#ffffff";return(0,kr.jsx)(_t.Dropdown,{className:"dataviews-controls__color-picker-dropdown",popoverProps:{resize:!1},renderToggle:({onToggle:o})=>(0,kr.jsx)(_t.Button,{onClick:o,"aria-label":(0,vg.__)("Open color picker"),size:"small",icon:()=>(0,kr.jsx)(_t.ColorIndicator,{colorValue:r})}),renderContent:()=>(0,kr.jsx)(_t.__experimentalDropdownContentWrapper,{paddingSize:"none",children:(0,kr.jsx)(_t.ColorPicker,{color:r,onChange:e,enableAlpha:!0})})})};function gg({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:l,description:s,setValue:u,isValid:f}=e,m=e.getValue({item:t})||"",d=(0,ic.useCallback)(v=>{r(u({item:t,value:v}))},[t,r,u]),p=(0,ic.useCallback)(v=>{r(u({item:t,value:v||""}))},[t,r,u]);return(0,kr.jsx)(zw,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:pe(f,i),label:a,placeholder:l,value:m,help:s,onChange:p,hideLabelFromVision:o,type:"text",prefix:(0,kr.jsx)(_t.__experimentalInputControlPrefixWrapper,{variant:"control",children:(0,kr.jsx)(Gw,{color:m,onColorChange:d})})})}var hs=c(G(),1),bs=c(j(),1),ac=c(U(),1);var gs=c(V(),1);function hg({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let[a,l]=(0,bs.useState)(!1),s=(0,bs.useCallback)(()=>{l(u=>!u)},[]);return(0,gs.jsx)(sr,{data:t,field:e,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?Vn:Pl,onClick:s,size:"small",label:a?(0,ac.__)("Hide password"):(0,ac.__)("Show password")})})})}function xs(t){return Array.isArray(t.elements)&&t.elements.length>0||typeof t.getElements=="function"}var xg=c(V(),1),bg={adaptiveSelect:Rv,array:og,checkbox:_v,color:gg,combobox:Za,datetime:Av,date:Ov,email:kv,telephone:Mv,url:Fv,integer:Hv,number:Wv,password:hg,radio:Gv,select:rs,text:Yv,toggle:Zv,textarea:eg,toggleGroup:rg};function qw(t){return t&&typeof t=="object"&&typeof t.control=="string"}function Yw(t){let{control:e,...r}=t,o=ws(e);return o===null?null:function(i){return(0,xg.jsx)(o,{...i,config:r})}}function wg(t,e){return typeof t.Edit=="function"?t.Edit:typeof t.Edit=="string"?ws(t.Edit):qw(t.Edit)?Yw(t.Edit):xs(t)&&t.type!=="array"?ws("adaptiveSelect"):e===null?null:ws(e)}function ws(t){return Object.keys(bg).includes(t)?bg[t]:null}function Uw(t,e,r){if(t.filterBy===!1)return!1;let o=t.filterBy?.operators?.filter(n=>r.includes(n))??e;return o.length===0?!1:{isPrimary:!!t.filterBy?.isPrimary,operators:o}}var yg=Uw;var $w=t=>({item:e})=>{let r=t.split("."),o=e;for(let n of r)o.hasOwnProperty(n)?o=o[n]:o=void 0;return o},Sg=$w;var Kw=t=>({value:e})=>{let r=t.split("."),o={},n=o;for(let i of r.slice(0,-1))n[i]={},n=n[i];return n[r.at(-1)]=e,o},Cg=Kw;var Eg=c(U(),1);function ys({item:t,field:e}){let{elements:r,isLoading:o}=Ke({elements:e.elements,getElements:e.getElements}),n=e.getValue({item:t});return o||r.length===0?n:r?.find(i=>i.value===n)?.label||e.getValue({item:t})}var _g=c(V(),1);function Re({item:t,field:e}){return e.hasElements?(0,_g.jsx)(ys,{item:t,field:e}):e.getValueFormatted({item:t,field:e})}var lr=(t,e,r)=>r==="asc"?t.localeCompare(e):e.localeCompare(t);function Ve(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)}function ur(t,e){if(typeof e.isValid.minLength?.constraint!="number")return!1;let r=e.getValue({item:t});return[void 0,"",null].includes(r)?!0:String(r).length>=e.isValid.minLength.constraint}function cr(t,e){if(typeof e.isValid.maxLength?.constraint!="number")return!1;let r=e.getValue({item:t});return[void 0,"",null].includes(r)?!0:String(r).length<=e.isValid.maxLength.constraint}function fr(t,e){if(e.isValid.pattern?.constraint===void 0)return!0;try{let r=new RegExp(e.isValid.pattern.constraint),o=e.getValue({item:t});return[void 0,"",null].includes(o)?!0:r.test(String(o))}catch{return!1}}function we(t,e){let o=(e.elements??[]).map(i=>i.value);if(o.length===0)return!0;let n=e.getValue({item:t});return[].concat(n).every(i=>o.includes(i))}function Zw({item:t,field:e}){return e.getValue({item:t})}var ht=Zw;var Xw=/^[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 Qw(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&!Xw.test(r)?(0,Eg.__)("Value must be a valid email address."):null}var Pg={type:"email",render:Re,Edit:"email",sort:lr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ce,_e],validOperators:[Ee,Pe,Ut,$t,Kt,Ce,_e,nt,it],format:{},getValueFormatted:ht,validate:{required:Ve,pattern:fr,minLength:ur,maxLength:cr,elements:we,custom:Qw}};var Ag=c(U(),1);var wn=(t,e,r)=>r==="asc"?t-e:e-t;function Ss(t,e){if(typeof e.isValid.min?.constraint!="number")return!1;let r=e.getValue({item:t});return[void 0,"",null].includes(r)?!0:Number(r)>=e.isValid.min.constraint}function Cs(t,e){if(typeof e.isValid.max?.constraint!="number")return!1;let r=e.getValue({item:t});return[void 0,"",null].includes(r)?!0:Number(r)<=e.isValid.max.constraint}var Ig={separatorThousand:","};function Jw({item:t,field:e}){let r=e.getValue({item:t});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;e.type!=="integer"?o=Ig:o=e.format;let{separatorThousand:n}=o,i=Math.trunc(r);return n?String(i).replace(/\B(?=(\d{3})+(?!\d))/g,n):String(i)}function ey(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&!Number.isInteger(r)?(0,Ag.__)("Value must be an integer."):null}var Og={type:"integer",render:Re,Edit:"integer",sort:wn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ee,Pe,Br,Hr,jr,Wr,ft],validOperators:[Ee,Pe,Br,Hr,jr,Wr,ft,Ce,_e,nt,it],format:Ig,getValueFormatted:Jw,validate:{required:Ve,min:Ss,max:Cs,elements:we,custom:ey}};var Tg=c(U(),1);var Rg={separatorThousand:",",separatorDecimal:".",decimals:2};function ty({item:t,field:e}){let r=e.getValue({item:t});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;e.type!=="number"?o=Rg:o=e.format;let{separatorThousand:n,separatorDecimal:i,decimals:a}=o,l=r.toFixed(a),[s,u]=l.split("."),f=n?s.replace(/\B(?=(\d{3})+(?!\d))/g,n):s;return a===0?f:f+i+u}function ry(t){return t===""||t===void 0||t===null}function oy(t,e){let r=e.getValue({item:t});return!ry(r)&&!Number.isFinite(r)?(0,Tg.__)("Value must be a number."):null}var Vg={type:"number",render:Re,Edit:"number",sort:wn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ee,Pe,Br,Hr,jr,Wr,ft],validOperators:[Ee,Pe,Br,Hr,jr,Wr,ft,Ce,_e,nt,it],format:Rg,getValueFormatted:ty,validate:{required:Ve,min:Ss,max:Cs,elements:we,custom:oy}};var Ng={type:"text",render:Re,Edit:"text",sort:lr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ce,_e],validOperators:[Ee,Pe,Ut,$t,Kt,Ce,_e,nt,it],format:{},getValueFormatted:ht,validate:{required:Ve,pattern:fr,minLength:ur,maxLength:cr,elements:we}};var ko=c(No(),1);var Dg={datetime:(0,ko.getSettings)().formats.datetime,weekStartsOn:(0,ko.getSettings)().l10n.startOfWeek};function ny({item:t,field:e}){let r=e.getValue({item:t});if(["",void 0,null].includes(r))return"";let o;return e.type!=="datetime"?o=Dg:o=e.format,(0,ko.dateI18n)(o.datetime,(0,ko.getDate)(r))}var iy=(t,e,r)=>{let o=new Date(t).getTime(),n=new Date(e).getTime();return r==="asc"?o-n:n-o},kg={type:"datetime",render:Re,Edit:"datetime",sort:iy,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ur,$r,zr,Gr,qr,Yr,dt,xt],validOperators:[Ur,$r,zr,Gr,qr,Yr,dt,xt],format:Dg,getValueFormatted:ny,validate:{required:Ve,elements:we}};var Mo=c(No(),1);var Mg={date:(0,Mo.getSettings)().formats.date,weekStartsOn:(0,Mo.getSettings)().l10n.startOfWeek};function ay({item:t,field:e}){let r=e.getValue({item:t});if(["",void 0,null].includes(r))return"";let o;return e.type!=="date"?o=Mg:o=e.format,(0,Mo.dateI18n)(o.date,(0,Mo.getDate)(r))}var sy=(t,e,r)=>{let o=new Date(t).getTime(),n=new Date(e).getTime();return r==="asc"?o-n:n-o},Fg={type:"date",render:Re,Edit:"date",sort:sy,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ur,$r,zr,Gr,qr,Yr,dt,xt,ft],validOperators:[Ur,$r,zr,Gr,qr,Yr,dt,xt,ft],format:Mg,getValueFormatted:ay,validate:{required:Ve,elements:we}};var _s=c(U(),1);function Lg(t,e){return e.getValue({item:t})===!0}function ly({item:t,field:e}){let r=e.getValue({item:t});return r===!0?(0,_s.__)("True"):r===!1?(0,_s.__)("False"):""}function uy(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&![!0,!1].includes(r)?(0,_s.__)("Value must be true, false, or undefined"):null}var cy=(t,e,r)=>{let o=!!t;return o===!!e?0:r==="asc"?o?1:-1:o?-1:1},Bg={type:"boolean",render:Re,Edit:"checkbox",sort:cy,validate:{required:Lg,elements:we,custom:uy},enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ee,Pe],validOperators:[Ee,Pe],format:{},getValueFormatted:ly};var Hg={type:"media",render:()=>null,Edit:null,sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:ht,validate:{}};var sc=c(U(),1);function jg(t,e){let r=e.getValue({item:t});return Array.isArray(r)&&r.length>0&&r.every(o=>![void 0,"",null].includes(o))}function Wg({item:t,field:e}){let r=e.getValue({item:t});return(Array.isArray(r)?r:[]).join(", ")}function fy({item:t,field:e}){return Wg({item:t,field:e})}function dy(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&!Array.isArray(r)?(0,sc.__)("Value must be an array."):r.every(o=>typeof o=="string")?null:(0,sc.__)("Every value must be a string.")}var my=(t,e,r)=>{let o=Array.isArray(t)?t:[],n=Array.isArray(e)?e:[];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)},zg={type:"array",render:fy,Edit:"array",sort:my,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ce,_e],validOperators:[Ce,_e,nt,it],format:{},getValueFormatted:Wg,validate:{required:jg,elements:we,custom:dy}};function py({item:t,field:e}){return e.getValue({item:t})?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":""}var Gg={type:"password",render:Re,Edit:"password",sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:py,validate:{required:Ve,pattern:fr,minLength:ur,maxLength:cr,elements:we}};var qg={type:"telephone",render:Re,Edit:"telephone",sort:lr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ce,_e],validOperators:[Ee,Pe,Ut,$t,Kt,Ce,_e,nt,it],format:{},getValueFormatted:ht,validate:{required:Ve,pattern:fr,minLength:ur,maxLength:cr,elements:we}};var Yg=c(U(),1);var yn=c(V(),1);function vy({item:t,field:e}){if(e.hasElements)return(0,yn.jsx)(ys,{item:t,field:e});let r=ht({item:t,field:e});return!r||!ct(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 gy(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&!ct(r).isValid()?(0,Yg.__)("Value must be a valid color."):null}var hy=(t,e,r)=>{let o=ct(t),n=ct(e);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},Ug={type:"color",render:vy,Edit:"color",sort:hy,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ce,_e],validOperators:[Ee,Pe,Ce,_e],format:{},getValueFormatted:ht,validate:{required:Ve,elements:we,custom:gy}};var $g={type:"url",render:Re,Edit:"url",sort:lr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ce,_e],validOperators:[Ee,Pe,Ut,$t,Kt,Ce,_e,nt,it],format:{},getValueFormatted:ht,validate:{required:Ve,pattern:fr,minLength:ur,maxLength:cr,elements:we}};var by=(t,e,r)=>typeof t=="number"&&typeof e=="number"?wn(t,e,r):lr(t,e,r),Kg={render:Re,Edit:null,sort:by,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ee,Pe],validOperators:Gp(),format:{},getValueFormatted:ht,validate:{required:Ve,elements:we}};function Zg(t,e){let r;t.isValid?.required===!0&&e.validate.required!==void 0&&(r={constraint:!0,validate:e.validate.required});let o;(t.isValid?.elements===!0||t.isValid?.elements===void 0&&(t.elements||t.getElements))&&e.validate.elements!==void 0&&(o={constraint:!0,validate:e.validate.elements});let n;typeof t.isValid?.min=="number"&&e.validate.min!==void 0&&(n={constraint:t.isValid.min,validate:e.validate.min});let i;typeof t.isValid?.max=="number"&&e.validate.max!==void 0&&(i={constraint:t.isValid.max,validate:e.validate.max});let a;typeof t.isValid?.minLength=="number"&&e.validate.minLength!==void 0&&(a={constraint:t.isValid.minLength,validate:e.validate.minLength});let l;typeof t.isValid?.maxLength=="number"&&e.validate.maxLength!==void 0&&(l={constraint:t.isValid.maxLength,validate:e.validate.maxLength});let s;t.isValid?.pattern!==void 0&&e.validate.pattern!==void 0&&(s={constraint:t.isValid?.pattern,validate:e.validate.pattern});let u=t.isValid?.custom??e.validate.custom;return{required:r,elements:o,min:n,max:i,minLength:a,maxLength:l,pattern:s,custom:u}}function Xg(t){return t.validOperators.reduce((e,r)=>{let o=Do(r);return o?.filter&&(e[r]=o.filter),e},{})}function xy(t,e){return{...e.format,...t.format}}var Qg=xy;function wy(t){let e=[Pg,Og,Vg,Ng,kg,Fg,Bg,Hg,zg,Gg,qg,Ug,$g].find(r=>r?.type===t);return e||Kg}function Jg(t){return t.map(e=>{let r=wy(e.type),o=e.getValue||Sg(e.id),n=function(i,a,l){let s=o({item:i}),u=o({item:a});return e.sort?e.sort(s,u,l):r.sort(s,u,l)};return{id:e.id,label:e.label||e.id,header:e.header||e.label||e.id,description:e.description,placeholder:e.placeholder,getValue:o,setValue:e.setValue||Cg(e.id),elements:e.elements,getElements:e.getElements,hasElements:xs(e),isVisible:e.isVisible,enableHiding:e.enableHiding??!0,readOnly:e.readOnly??!1,type:r.type,render:e.render??r.render,Edit:wg(e,r.Edit),sort:n,enableSorting:e.enableSorting??r.enableSorting,enableGlobalSearch:e.enableGlobalSearch??r.enableGlobalSearch,isValid:Zg(e,r),filterBy:yg(e,r.defaultOperators,r.validOperators),filter:Xg(r),format:Qg(e,r),getValueFormatted:e.getValueFormatted??r.getValueFormatted}})}var Fo=c(j(),1);function eh(t,e,r){let o=(0,Fo.useRef)(t),n=(0,Fo.useRef)(r),[i,a]=(0,Fo.useState)(!e);return(0,Fo.useEffect)(()=>{e||(o.current=t,n.current=r,a(!0))},[t,e,r]),{data:e&&o.current?.length?o.current:t,paginationInfo:e&&o.current?.length?n.current:r,hasInitiallyLoaded:i}}var tt=c(V(),1),yy=t=>t.id,Sy=()=>!0,Cy=[],_y=eo.filter(t=>!t.isPicker);function Ey({header:t,search:e=!0,searchLabel:r=void 0}){return(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsxs)(F,{direction:"row",align:"top",justify:"space-between",className:"dataviews__view-actions",gap:"xs",children:[(0,tt.jsxs)(F,{direction:"row",justify:"start",gap:"sm",className:"dataviews__search",children:[e&&(0,tt.jsx)(Gu,{label:r}),(0,tt.jsx)(Ua,{})]}),(0,tt.jsxs)(F,{direction:"row",gap:"xs",style:{flexShrink:0},children:[(0,tt.jsx)(wv,{}),t]})]}),(0,tt.jsx)($a,{className:"dataviews-filters__container"}),(0,tt.jsx)(Wu,{}),(0,tt.jsx)(zu,{})]})}function Py({view:t,onChangeView:e,fields:r,search:o=!0,searchLabel:n=void 0,actions:i=Cy,data:a,getItemId:l=yy,getItemLevel:s,isLoading:u=!1,paginationInfo:f,defaultLayouts:m,selection:d,onChangeSelection:p,onClickItem:v,renderItemLink:y,isItemClickable:g=Sy,header:b,children:S,config:A={perPageSizes:[10,20,50,100]},empty:T,onReset:O}){let{infiniteScrollHandler:k}=f,D=(0,bt.useRef)(null),[C,I]=(0,bt.useState)(0),N=(0,Es.useResizeObserver)(Q=>{I(Q[0].borderBoxSize[0].inlineSize)},{box:"border-box"}),[h,E]=(0,bt.useState)([]),P=d===void 0||p===void 0,x=P?h:d,[R,w]=(0,bt.useState)(null);function _(Q){let ge=typeof Q=="function"?Q(x):Q;P&&E(ge),p&&p(ge)}let M=(0,bt.useMemo)(()=>Jg(r),[r]),H=(0,bt.useMemo)(()=>x.filter(Q=>a.some(ge=>l(ge)===Q)),[x,a,l]),ae=ai(M,t),Se=(0,bt.useMemo)(()=>(ae||[]).some(Q=>Q.isPrimary||Q.isLocked),[ae]),[Ne,He]=(0,bt.useState)(Se);(0,bt.useEffect)(()=>{Se&&!Ne&&He(!0)},[Se,Ne]),(0,bt.useEffect)(()=>{if(!t.infiniteScrollEnabled||!D.current)return;let Q=(0,Es.throttle)(pr=>{let vr=pr.target,mo=vr.scrollTop,po=vr.scrollHeight,Lo=vr.clientHeight;mo+Lo>=po-100&&k?.()},100),ge=D.current;return ge.addEventListener("scroll",Q),()=>{ge.removeEventListener("scroll",Q),Q.cancel()}},[k,t.infiniteScrollEnabled]);let rt=(0,bt.useMemo)(()=>Object.fromEntries(Object.entries(m).filter(([Q])=>_y.some(ge=>ge.type===Q))),[m]),{data:Yt,paginationInfo:mr,hasInitiallyLoaded:Y}=eh(a,u,f);return rt[t.type]?(0,tt.jsx)(q.Provider,{value:{view:t,onChangeView:e,fields:M,actions:i,data:Yt,isLoading:u,paginationInfo:mr,selection:H,onChangeSelection:_,openedFilter:R,setOpenedFilter:w,getItemId:l,getItemLevel:s,isItemClickable:g,onClickItem:v,renderItemLink:y,containerWidth:C,containerRef:D,resizeObserverRef:N,defaultLayouts:rt,filters:ae,isShowingFilter:Ne,setIsShowingFilter:He,config:A,empty:T,hasInitiallyLoaded:Y,hasInfiniteScrollHandler:!!k,onReset:O},children:(0,tt.jsx)("div",{className:"dataviews-wrapper",ref:D,children:S??(0,tt.jsx)(Ey,{header:b,search:o,searchLabel:n})})}):null}var Gt=Py;Gt.BulkActionToolbar=Qi;Gt.Filters=li;Gt.FiltersToggled=$a;Gt.FiltersToggle=Ua;Gt.Layout=Wu;Gt.LayoutSwitcher=Uu;Gt.Pagination=Gl;Gt.Search=Gu;Gt.ViewConfig=$u;Gt.Footer=zu;var lc=Gt;var mh=c(G()),ph=c(rh());var oh=c(Il()),{lock:l3,unlock:uc}=(0,oh.__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 Ay={type:"list",sort:{field:"date",direction:"desc"},titleField:"title"};function nh(){return Ay}var ih=c(U());import{useNavigate as Iy}from"@wordpress/route";function ah(){let t=Iy();return{id:"edit",label:(0,ih.__)("Edit"),isPrimary:!0,icon:xl,callback:e=>{let r=e[0];t({to:`/navigation/edit/${r.id}`})},isEligible(e){return e.type==="wp_navigation"&&String(e.status)!=="trash"}}}var cc=c(j()),dr=c(U()),uh=c(Is()),ch=c(lh()),fc=c(br()),qt=c(G());import{useNavigate as Oy}from"@wordpress/route";var Ty="wp_navigation",fh=({closeModal:t})=>{let[e,r]=(0,cc.useState)(""),[o,n]=(0,cc.useState)(!1),i=Oy(),{saveEntityRecord:a}=(0,fc.useDispatch)(uh.store),{createSuccessNotice:l,createErrorNotice:s}=(0,fc.useDispatch)(ch.store),u=async()=>{if(!e||!e.trim())return;let f=e.trim();n(!0);try{let m=await a("postType",Ty,{title:f,status:"publish"},{throwOnError:!0});m&&(l((0,dr.__)("Navigation menu created successfully."),{type:"snackbar"}),i({to:`/navigation/edit/${encodeURIComponent(m.id)}`}))}catch(m){let d=m instanceof Error?m.message:"Unknown error";s((0,dr.sprintf)((0,dr.__)("Unable to create navigation menu: %s"),d),{type:"snackbar"})}n(!1),t?.()};return React.createElement(qt.Modal,{title:(0,dr.__)("Add New Navigation Menu"),onRequestClose:()=>t?.(),focusOnMount:"firstContentElement",size:"small"},React.createElement("form",{onSubmit:f=>{f.preventDefault(),u()}},React.createElement(qt.__experimentalVStack,{spacing:4},React.createElement(qt.TextControl,{autoComplete:"off",value:e,onChange:r,label:(0,dr.__)("Name"),placeholder:(0,dr.__)("Enter menu name"),disabled:o}),React.createElement(qt.__experimentalHStack,{justify:"right",spacing:2},React.createElement(qt.Button,{variant:"tertiary",onClick:t,disabled:o,accessibleWhenDisabled:!0},(0,dr.__)("Cancel")),React.createElement(qt.Button,{variant:"primary",type:"submit","aria-busy":o,disabled:o||!e?.trim(),accessibleWhenDisabled:!0},(0,dr.__)("Create Menu"))))))};if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='4cd54e4f28']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","4cd54e4f28"),t.appendChild(document.createTextNode("")),document.head.appendChild(t)}var{useEntityRecordsWithPermissions:Ny}=uc(dh.privateApis),{usePostActions:Dy,usePostFields:ky}=uc(ph.privateApis),Ps="wp_navigation",My={per_page:100,status:["publish","draft"],order:"desc",orderby:"date"};function Fy(t){return t.id.toString()}function Ly(){let t=Ry(),e=Vy({from:"/navigation/list"}),r=(0,fo.useMemo)(()=>nh(),[]),o=(0,fo.useCallback)(T=>{t({search:{...e,...T}})},[e,t]),{view:n,updateView:i,isModified:a,resetToDefault:l}=Ds({kind:"postType",name:Ps,slug:"default-new",defaultView:r,queryParams:e,onChangeQueryParams:o}),{records:s,totalItems:u,totalPages:f,isResolving:m}=Ny("postType",Ps,My),d=ky({postType:Ps}),[p,v]=(0,fo.useState)(!1),y=ah(),g=Dy({postType:Ps,context:"list"}),b=(0,fo.useMemo)(()=>[y,...g?.flatMap(T=>T.id==="view-post-revisions"?[]:[T])??[]],[y,g]),S=(e.ids??[]).map(T=>T.toString())??[],A=(0,fo.useMemo)(()=>s&&s.length>0?s[0].id.toString():null,[s]);return S.length===0&&A&&S.push(A),n.type==="list"&&S.splice(1),React.createElement(React.Fragment,null,React.createElement(Os,{title:(0,dc.__)("Navigation"),className:"navigation-page",hasPadding:!1,actions:React.createElement(mh.Button,{variant:"primary",size:"compact",onClick:()=>v(!0)},(0,dc.__)("Add New"))},React.createElement(lc,{data:s,fields:d,view:n,onChangeView:i,isLoading:m||!d,actions:b,paginationInfo:{totalItems:u,totalPages:f},defaultLayouts:{list:{}},getItemId:Fy,selection:S,onReset:a?l:!1,onChangeSelection:T=>{t({search:{...e,ids:T.length>0?T.map(O=>Number(O)):void 0}})}})),p&&React.createElement(fh,{closeModal:()=>v(!1)}))}var By=Ly;export{By 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..996e737bdd1ea --- /dev/null +++ b/src/wp-includes/build/routes/pattern-list/content.js @@ -0,0 +1,17745 @@ +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 = useState25({ + 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] + ); + useEffect19( + 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, useState25 = React9.useState, useEffect19 = 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 +var SCALAR_VALUES = [ + "titleField", + "mediaField", + "descriptionField", + "showTitle", + "showMedia", + "showDescription", + "showLevels", + "infiniteScrollEnabled" +]; +function mergeActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + for (const key of SCALAR_VALUES) { + if (key in activeViewOverrides) { + result = { ...result, [key]: activeViewOverrides[key] }; + } + } + 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 + }; + } + } + if (activeViewOverrides.layout) { + result = { + ...result, + layout: { + ...result.layout, + ...activeViewOverrides.layout + } + }; + } + if (activeViewOverrides.groupBy) { + result = { + ...result, + groupBy: activeViewOverrides.groupBy + }; + } + return result; +} +function stripActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + for (const key of SCALAR_VALUES) { + if (key in activeViewOverrides) { + const { [key]: _, ...rest } = result; + result = rest; + } + } + 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 + }; + } + if (activeViewOverrides.layout && "layout" in result && result.layout) { + const layout = { ...result.layout }; + for (const key of Object.keys(activeViewOverrides.layout)) { + delete layout[key]; + } + result = { + ...result, + layout: Object.keys(layout).length > 0 ? layout : void 0 + }; + } + if (activeViewOverrides.groupBy && "groupBy" in result) { + const { groupBy: _, ...rest } = result; + result = rest; + } + 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_element56 = __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/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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.Path, { fillRule: "evenodd", clipRule: "evenodd", 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" }) }); + +// 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", clipRule: "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" }) }); + +// 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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/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 gapTokens = { + xs: "var(--wpds-dimension-gap-xs, 4px)", + sm: "var(--wpds-dimension-gap-sm, 8px)", + md: "var(--wpds-dimension-gap-md, 12px)", + lg: "var(--wpds-dimension-gap-lg, 16px)", + xl: "var(--wpds-dimension-gap-xl, 24px)", + "2xl": "var(--wpds-dimension-gap-2xl, 32px)", + "3xl": "var(--wpds-dimension-gap-3xl, 40px)" +}; +var Stack = (0, import_element2.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render: render4, ...props }, ref) { + const style = { + gap: gap && gapTokens[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/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: () => { + }, + hasInitiallyLoaded: false, + 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_element11 = __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), + 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)(void 0); + 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 = void 0; + } + 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/hooks/use-delayed-loading.mjs +var import_element10 = __toESM(require_element(), 1); +function useDelayedLoading(isLoading, options = { delay: 400 }) { + const [showLoader, setShowLoader] = (0, import_element10.useState)(false); + (0, import_element10.useEffect)(() => { + if (!isLoading) { + return; + } + const timeout = setTimeout(() => { + setShowLoader(true); + }, options.delay); + return () => { + clearTimeout(timeout); + setShowLoader(false); + }; + }, [isLoading, options.delay]); + return showLoader; +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs +var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); +function getEffectiveAlign(explicitAlign, fieldType) { + if (explicitAlign) { + return explicitAlign; + } + if (fieldType === "integer" || fieldType === "number") { + return "end"; + } + return void 0; +} +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_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_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] ?? {}; + const field = fields.find((f2) => f2.id === column); + const effectiveAlign = getEffectiveAlign(align, field?.type); + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "td", + { + style: { + width, + maxWidth, + minWidth + }, + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + TableColumnField, + { + fields, + item, + column, + align: effectiveAlign + } + ) + }, + 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_element11.useContext)(dataviews_context_default); + const isDelayedLoading = useDelayedLoading(isLoading); + const headerMenuRefs = (0, import_element11.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element11.useRef)(void 0); + const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element11.useState)(); + 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 + }); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data); + 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)(); + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + id: tableNoticeId, + children: empty + } + ); + } + 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, + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }), + "aria-busy": isLoading, + "aria-describedby": tableNoticeId, + role: isInfiniteScroll ? "feed" : void 0, + inert: !isInfiniteScroll && isLoading ? "true" : 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 field = fields.find( + (f2) => f2.id === column + ); + const effectiveAlign = getEffectiveAlign( + align, + field?.type + ); + const canInsertOrMove = view.layout?.enableMoving ?? true; + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "th", + { + style: { + width, + maxWidth, + minWidth, + textAlign: effectiveAlign + }, + "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) + )) }) + ] + } + ), + isInfiniteScroll && isLoading && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "dataviews-loading", id: tableNoticeId, children: /* @__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_element13 = __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_element12 = __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_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_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_element13.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, + inert, + isLoading, + view, + fields, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId, + 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_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, + inert, + 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 isDelayedLoading = useDelayedLoading(!!isLoading); + 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; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + children: empty + } + ); + } + const gridProps = { + className: clsx_default(className, { + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }), + inert: !isInfiniteScroll && !!isLoading ? "true" : void 0, + 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. + !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( + CompositeGrid, + { + ...gridProps, + data, + isInfiniteScroll: !!isInfiniteScroll + } + ), + isInfiniteScroll && 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_element14 = __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_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_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_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_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 isDelayedLoading = useDelayedLoading(!!isLoading); + 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_element14.useCallback)( + (item) => `${baseId}-${getItemId(item)}`, + [baseId, getItemId] + ); + 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; + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = hasData && groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + children: empty + } + ); + } + 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 + ), + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }), + role: view.infiniteScrollEnabled ? "feed" : "grid", + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + inert: !isInfiniteScroll && !!isLoading ? "true" : void 0, + 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 + ); + }) + } + ), + isInfiniteScroll && 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_element15 = __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_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_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_element16 = __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_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_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_element16.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 isDelayedLoading = useDelayedLoading(!!isLoading); + const hasData = !!data?.length; + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = hasData && groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + children: empty + } + ); + } + const isInert = !isInfiniteScroll && !!isLoading; + const wrapperClassName = clsx_default("dataviews-view-activity", className, { + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }); + 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, + inert: isInert ? "true" : void 0, + 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, + inert: isInert ? "true" : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(ActivityItems, { ...props }) + } + ), + isInfiniteScroll && 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_element20 = __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_element18 = __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_element17 = __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_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_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_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_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_element17.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_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_runtime41 = __toESM(require_jsx_runtime(), 1); +var GridItems = (0, import_element19.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_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_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_element21 = __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_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_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_element21.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element21.useRef)(void 0); + 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_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_element22 = __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_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_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_element23 = __toESM(require_element(), 1); +var import_jsx_runtime45 = __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_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_element31 = __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_element28 = __toESM(require_element(), 1); + +// node_modules/@ariakit/core/esm/__chunks/XMCVU3LR.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 = { ...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/YXGXYGQX.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 = { ...element.props }; + return props.ref || element.ref; +} +function mergeProps2(base, overrides) { + const props = { ...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] ? { ...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/3DNM6L6E.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) { + var _a; + const { activeElement } = getDocument(node); + if (!(activeElement == null ? void 0 : activeElement.nodeName)) { + return null; + } + if (isFrame(activeElement) && ((_a = activeElement.contentDocument) == null ? void 0 : _a.body)) { + 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/SNHYQNEZ.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 = { ...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/KPHZR4MB.js +var React6 = __toESM(require_react(), 1); +var import_react5 = __toESM(require_react(), 1); +var _React = { ...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 { ...props, wrapElement }; +} +function useMetadataProps(props, key, value) { + const parent = props.onLoadedMetadataCapture; + const onLoadedMetadataCapture = (0, import_react5.useMemo)(() => { + return Object.assign(() => { + }, { ...parent, [key]: value }); + }, [parent, key, value]); + return [parent == null ? void 0 : parent[key], { onLoadedMetadataCapture }]; +} +var hasInstalledGlobalEventListeners = false; +function useIsMouseMoving() { + (0, import_react5.useEffect)(() => { + if (hasInstalledGlobalEventListeners) return; + addGlobalEventListener("mousemove", setMouseMoving, true); + addGlobalEventListener("mousedown", resetMouseMoving, true); + addGlobalEventListener("mouseup", resetMouseMoving, true); + addGlobalEventListener("keydown", resetMouseMoving, true); + addGlobalEventListener("scroll", resetMouseMoving, true); + hasInstalledGlobalEventListeners = 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/GWSL6KNJ.js +var React7 = __toESM(require_react(), 1); +var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1); +function forwardRef22(render4) { + const Role = React7.forwardRef( + // @ts-ignore Incompatible with React 19 types. Ignore for now. + (props, ref) => render4({ ...props, ref }) + ); + Role.displayName = render4.displayName || render4.name; + return Role; +} +function memo22(Component, propsAreEqual) { + return React7.memo(Component, propsAreEqual); +} +function createElement3(Type, props) { + const { wrapElement, render: render4, ...rest } = props; + const mergedRef = useMergeRefs(props.ref, getRefProperty(render4)); + let element; + if (React7.isValidElement(render4)) { + const renderProps = { + // @ts-ignore Incompatible with React 19 types. Ignore for now. + ...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, { ...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, { ...props, children }), + /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(context.Provider, { ...props }) + ); + }; + const ScopedContextProvider = (props) => { + return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ContextProvider, { ...props, children: scopedProviders.reduceRight( + (children, Provider) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Provider, { ...props, children }), + /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(scopedContext.Provider, { ...props }) + ) }); + }; + return { + context, + scopedContext, + useContext: useContext28, + useScopedContext, + useProviderContext, + ContextProvider, + ScopedContextProvider + }; +} + +// node_modules/@ariakit/react-core/esm/__chunks/SMPCIMZM.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/AVVXDJMZ.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/5VQZOHHZ.js +function findFirstEnabledItem(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 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 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/Z2O3VLAQ.js +var import_react7 = __toESM(require_react(), 1); +var TagName = "div"; +var useCollectionItem = createHook( + function useCollectionItem2({ + store, + shouldRegisterItem = true, + getItem = identity, + // @ts-expect-error This prop may come from a collection renderer. + element, + ...props + }) { + const context = useCollectionContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react7.useRef)(element); + (0, import_react7.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 = { + ...props, + ref: useMergeRefs(ref, props.ref) + }; + return removeUndefinedValues(props); + } +); +var CollectionItem = forwardRef22(function CollectionItem2(props) { + const htmlProps = useCollectionItem(props); + return createElement3(TagName, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/SWN3JYXT.js +var import_react8 = __toESM(require_react(), 1); +var FocusableContext = (0, import_react8.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({ block: "nearest", inline: "nearest", ...options }); + } +} + +// node_modules/@ariakit/react-core/esm/__chunks/U6HHPQDW.js +var import_react9 = __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 hasInstalledGlobalEventListeners2 = false; +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({ + focusable = true, + accessibleWhenDisabled, + autoFocus, + onFocusVisible, + ...props + }) { + const ref = (0, import_react9.useRef)(null); + (0, import_react9.useEffect)(() => { + if (!focusable) return; + if (hasInstalledGlobalEventListeners2) return; + addGlobalEventListener("mousedown", onGlobalMouseDown, true); + addGlobalEventListener("keydown", onGlobalKeyDown, true); + hasInstalledGlobalEventListeners2 = true; + }, [focusable]); + if (isSafariBrowser) { + (0, import_react9.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_react9.useState)(false); + (0, import_react9.useEffect)(() => { + if (!focusable) return; + if (trulyDisabled && focusVisible) { + setFocusVisible(false); + } + }, [focusable, trulyDisabled, focusVisible]); + (0, import_react9.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; + event.currentTarget.removeAttribute("data-focus-visible"); + setFocusVisible(false); + }); + const autoFocusOnShow = (0, import_react9.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_react9.useMemo)(() => { + if (trulyDisabled) { + return { pointerEvents: "none", ...styleProp }; + } + return styleProp; + }, [trulyDisabled, styleProp]); + props = { + "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/PZ3OL7I2.js +var import_react10 = __toESM(require_react(), 1); +var TagName3 = "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({ clickOnEnter = true, clickOnSpace = true, ...props }) { + const ref = (0, import_react10.useRef)(null); + const [isNativeButton, setIsNativeButton] = (0, import_react10.useState)(false); + (0, import_react10.useEffect)(() => { + if (!ref.current) return; + setIsNativeButton(isButton(ref.current)); + }, []); + const [active, setActive] = (0, import_react10.useState)(false); + const activeRef = (0, import_react10.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 { view, ...eventInit } = event; + 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 { view, ...eventInit } = event; + queueMicrotask(() => fireClickEvent(element, eventInit)); + } + } + }); + props = { + "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(TagName3, htmlProps); +}); + +// node_modules/@ariakit/core/esm/__chunks/SXKM4CGU.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 = { ...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) { + var _a; + const initialState = {}; + for (const store2 of stores) { + const nextState = (_a = store2 == null ? void 0 : store2.getState) == null ? void 0 : _a.call(store2); + if (nextState) { + Object.assign(initialState, 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/Q5W46E73.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 = { ...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 useState25 = React8.useCallback( + (keyOrSelector) => useStoreState(store, keyOrSelector), + [store] + ); + const memoizedStore = React8.useMemo( + () => ({ ...store, useState: useState25 }), + [store, useState25] + ); + const updateStore = useEvent(() => { + setStore((store2) => createStore2({ ...props, ...store2.getState() })); + }); + return [memoizedStore, updateStore]; +} + +// node_modules/@ariakit/react-core/esm/__chunks/WZWDIE3S.js +var import_react11 = __toESM(require_react(), 1); +var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); +var TagName4 = "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({ + store, + rowId: rowIdProp, + preventScrollOnKeyDown = false, + moveOnKeyPress = true, + tabbable = false, + getItem: getItemProp, + "aria-setsize": ariaSetSizeProp, + "aria-posinset": ariaPosInSetProp, + ...props + }) { + const context = useCompositeContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react11.useRef)(null); + const row = (0, import_react11.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_react11.useCallback)( + (item) => { + var _a; + const nextItem = { + ...item, + id: id || item.id, + rowId, + disabled: !!trulyDisabled, + children: (_a = item.element) == null ? void 0 : _a.textContent + }; + if (getItemProp) { + return getItemProp(nextItem); + } + return nextItem; + }, + [id, rowId, trulyDisabled, getItemProp] + ); + const onFocusProp = props.onFocus; + const hasFocusedComposite = (0, import_react11.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_react11.useMemo)( + () => ({ id, baseElement }), + [id, baseElement] + ); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(CompositeItemContext.Provider, { value: providerValue, children: element }), + [providerValue] + ); + props = { + 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({ + store, + ...props, + getItem, + shouldRegisterItem: id ? props.shouldRegisterItem : false + }); + return removeUndefinedValues({ + ...props, + "aria-setsize": ariaSetSize, + "aria-posinset": ariaPosInSet + }); + } +); +var CompositeItem = memo22( + forwardRef22(function CompositeItem2(props) { + const htmlProps = useCompositeItem(props); + return createElement3(TagName4, htmlProps); + }) +); + +// 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/react-core/esm/__chunks/ZMWF7ASR.js +var import_react12 = __toESM(require_react(), 1); +var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1); +var TagName5 = "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 { view, ...eventInit } = event; + 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 findFirstEnabledItem( + flatten2DArray(reverseArray(groupItemsByRows(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({ + store, + composite = true, + focusOnMove = composite, + moveOnKeyPress = true, + ...props + }) { + 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 _a; + if (!store) return; + if (!moves) return; + if (!composite) return; + if (!focusOnMove) return; + const { activeId: activeId2 } = store.getState(); + const itemElement = (_a = getEnabledItem(store, activeId2)) == null ? void 0 : _a.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 _a; + if (!store) return; + if (!composite) return; + if (!virtualFocus) return; + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (!previousElement) return; + const activeElement = (_a = getEnabledItem(store, activeId)) == null ? void 0 : _a.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 _a; + 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 = (_a = getEnabledItem(store, activeId2)) == null ? void 0 : _a.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 _a; + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.nativeEvent.isComposing) return; + if (event.defaultPrevented) return; + if (!store) return; + if (!isSelfTarget(event)) return; + const { orientation, renderedItems, activeId: activeId2 } = store.getState(); + const activeItem = getEnabledItem(store, activeId2); + if ((_a = activeItem == null ? void 0 : activeItem.element) == null ? void 0 : _a.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_runtime48.jsx)(CompositeContextProvider, { value: store, children: element }), + [store] + ); + const activeDescendant = store.useState((state) => { + var _a; + if (!store) return; + if (!composite) return; + if (!state.virtualFocus) return; + return (_a = getEnabledItem(store, state.activeId)) == null ? void 0 : _a.id; + }); + props = { + "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({ focusable, ...props }); + return props; + } +); +var Composite5 = forwardRef22(function Composite22(props) { + const htmlProps = useComposite(props); + return createElement3(TagName5, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/LVDQFHCH.js +var ctx3 = createStoreContext(); +var useDisclosureContext = ctx3.useContext; +var useDisclosureScopedContext = ctx3.useScopedContext; +var useDisclosureProviderContext = ctx3.useProviderContext; +var DisclosureContextProvider = ctx3.ContextProvider; +var DisclosureScopedContextProvider = ctx3.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/A62MDFCW.js +var import_react13 = __toESM(require_react(), 1); +var ctx4 = createStoreContext( + [DisclosureContextProvider], + [DisclosureScopedContextProvider] +); +var useDialogContext = ctx4.useContext; +var useDialogScopedContext = ctx4.useScopedContext; +var useDialogProviderContext = ctx4.useProviderContext; +var DialogContextProvider = ctx4.ContextProvider; +var DialogScopedContextProvider = ctx4.ScopedContextProvider; +var DialogHeadingContext = (0, import_react13.createContext)(void 0); +var DialogDescriptionContext = (0, import_react13.createContext)(void 0); + +// node_modules/@ariakit/react-core/esm/__chunks/6B3RXHKP.js +var import_react14 = __toESM(require_react(), 1); +var import_react_dom = __toESM(require_react_dom(), 1); +var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1); +var TagName6 = "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({ store, alwaysVisible, ...props }) { + 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_react14.useRef)(null); + const id = useId3(props.id); + const [transition, setTransition] = (0, import_react14.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_runtime49.jsx)(DialogScopedContextProvider, { value: store, children: element }), + [store] + ); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const styleProp = props.style; + const style = (0, import_react14.useMemo)(() => { + if (hidden) { + return { ...styleProp, display: "none" }; + } + return styleProp; + }, [hidden, styleProp]); + props = { + 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(TagName6, htmlProps); +}); +var DisclosureContent = forwardRef22(function DisclosureContent2({ + unmountOnHide, + ...props +}) { + 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_runtime49.jsx)(DisclosureContentImpl, { ...props }); +}); + +// node_modules/@ariakit/core/esm/__chunks/75BJEVSH.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 { + ...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/WLZ6H5FH.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/react-core/esm/__chunks/JMU4N4M5.js +var ctx5 = createStoreContext( + [DialogContextProvider], + [DialogScopedContextProvider] +); +var usePopoverContext = ctx5.useContext; +var usePopoverScopedContext = ctx5.useScopedContext; +var usePopoverProviderContext = ctx5.useProviderContext; +var PopoverContextProvider = ctx5.ContextProvider; +var PopoverScopedContextProvider = ctx5.ScopedContextProvider; + +// node_modules/@ariakit/core/esm/__chunks/N5XGANPW.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 = { ...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 { + ...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/GVAFFF2B.js +function useCollectionStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.store]); + useStoreProps(store, props, "items", "setItems"); + return store; +} + +// node_modules/@ariakit/core/esm/__chunks/RVTIKFRL.js +var NULL_ITEM = { id: null }; +function findFirstEnabledItem2(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 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 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 ? findFirstEnabledItem2(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 = groupItemsByRows2(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({ + ...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 = { + ...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 = findFirstEnabledItem2(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(groupItemsByRows2(renderedItems), activeId2, canShift) + ); + items = canReverse ? reverseArray(items) : items; + items = isVerticalDirection ? verticalizeItems(items) : items; + if (activeId2 == null) { + return (_a2 = findFirstEnabledItem2(items)) == null ? void 0 : _a2.id; + } + const activeItem = items.find((item) => item.id === activeId2); + if (!activeItem) { + return (_b = findFirstEnabledItem2(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 = findFirstEnabledItem2(sortedItems, activeId2); + return nextItem2 == null ? void 0 : nextItem2.id; + } + if (canWrap) { + const nextItem2 = findFirstEnabledItem2( + // 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 = findFirstEnabledItem2(nextItemsInRow, activeId2); + if (!nextItem && hasNullItem) { + return null; + } + return nextItem == null ? void 0 : nextItem.id; + }; + return { + ...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 = findFirstEnabledItem2(composite.getState().renderedItems)) == null ? void 0 : _a2.id; + }, + last: () => { + var _a2; + return (_a2 = findFirstEnabledItem2(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/IQYAUKXT.js +function useCompositeStoreOptions(props) { + const id = useId3(props.id); + return { 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/react-core/esm/__chunks/CVCFNOHX.js +var import_react15 = __toESM(require_react(), 1); +var ComboboxListRoleContext = (0, import_react15.createContext)( + void 0 +); +var ctx6 = createStoreContext( + [PopoverContextProvider, CompositeContextProvider], + [PopoverScopedContextProvider, CompositeScopedContextProvider] +); +var useComboboxContext = ctx6.useContext; +var useComboboxScopedContext = ctx6.useScopedContext; +var useComboboxProviderContext = ctx6.useProviderContext; +var ComboboxContextProvider = ctx6.ContextProvider; +var ComboboxScopedContextProvider = ctx6.ScopedContextProvider; +var ComboboxItemValueContext = (0, import_react15.createContext)( + void 0 +); +var ComboboxItemCheckedContext = (0, import_react15.createContext)(false); + +// node_modules/@ariakit/core/esm/__chunks/KMAUV3TY.js +function createDialogStore(props = {}) { + return createDisclosureStore(props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/4NYSH4UO.js +function useDialogStoreProps(store, update2, props) { + return useDisclosureStoreProps(store, update2, props); +} + +// node_modules/@ariakit/core/esm/__chunks/BFGNM53A.js +function createPopoverStore({ + popover: otherPopover, + ...props +} = {}) { + 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({ ...props, store }); + const placement = defaultValue( + props.placement, + syncState == null ? void 0 : syncState.placement, + "bottom" + ); + const initialState = { + ...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 { + ...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/B6FLPFJM.js +function usePopoverStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.popover]); + useStoreProps(store, props, "placement"); + return useDialogStoreProps(store, update2, props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/4POTBZ2J.js +var TagName7 = "div"; +var usePopoverAnchor = createHook( + function usePopoverAnchor2({ store, ...props }) { + const context = usePopoverProviderContext(); + store = store || context; + props = { + ...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(TagName7, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/X6LNAU2F.js +var import_react16 = __toESM(require_react(), 1); +var TagName8 = "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({ + store, + focusOnHover = true, + blurOnHoverEnd = !!focusOnHover, + ...props + }) { + 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 _a; + 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); + (_a = store == null ? void 0 : store.getState().baseElement) == null ? void 0 : _a.focus(); + }); + const ref = (0, import_react16.useCallback)((element) => { + if (!element) return; + element[symbol2] = true; + }, []); + props = { + ...props, + ref: useMergeRefs(ref, props.ref), + onMouseMove, + onMouseLeave + }; + return removeUndefinedValues(props); + } +); +var CompositeHover = memo22( + forwardRef22(function CompositeHover2(props) { + const htmlProps = useCompositeHover(props); + return createElement3(TagName8, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/combobox/combobox.js +var import_react17 = __toESM(require_react(), 1); +var TagName9 = "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({ + store, + focusable = true, + autoSelect: autoSelectProp = false, + getAutoSelectId, + setValueOnChange, + showMinLength = 0, + showOnChange, + showOnMouseDown, + showOnClick = showOnMouseDown, + showOnKeyDown, + showOnKeyPress = showOnKeyDown, + blurActiveItemOnClick, + setValueOnClick = true, + moveOnKeyPress = true, + autoComplete = "list", + ...props + }) { + 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_react17.useRef)(null); + const [valueUpdated, forceValueUpdate] = useForceUpdate(); + const canAutoSelectRef = (0, import_react17.useRef)(false); + const composingRef = (0, import_react17.useRef)(false); + const autoSelect = store.useState( + (state) => state.virtualFocus && autoSelectProp + ); + const inline = autoComplete === "inline" || autoComplete === "both"; + const [canInline, setCanInline] = (0, import_react17.useState)(inline); + useUpdateLayoutEffect(() => { + if (!inline) return; + setCanInline(true); + }, [inline]); + const storeValue = store.useState("value"); + const prevSelectedValueRef = (0, import_react17.useRef)(void 0); + (0, import_react17.useEffect)(() => { + return sync(store, ["selectedValue", "activeId"], (_, prev) => { + prevSelectedValueRef.current = prev.selectedValue; + }); + }, []); + const inlineActiveValue = store.useState((state) => { + var _a; + if (!inline) return; + if (!canInline) return; + if (state.activeValue && Array.isArray(state.selectedValue)) { + if (state.selectedValue.includes(state.activeValue)) return; + if ((_a = prevSelectedValueRef.current) == null ? void 0 : _a.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_react17.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_react17.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_react17.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_react17.useRef)(null); + const getAutoSelectIdProp = useEvent(getAutoSelectId); + const autoSelectIdRef = (0, import_react17.useRef)(null); + (0, import_react17.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 _a, _b; + 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 : (_a = getDefaultAutoSelectId(items)) != null ? _a : store.first(); + autoSelectIdRef.current = autoSelectId; + store.move(autoSelectId != null ? autoSelectId : null); + } else { + const element = (_b = store.item(activeId || store.first())) == null ? void 0 : _b.element; + if (element && "scrollIntoView" in element) { + element.scrollIntoView({ block: "nearest", inline: "nearest" }); + } + } + return; + }, [ + store, + open, + valueUpdated, + storeValue, + autoSelect, + resetValueOnSelect, + getAutoSelectIdProp, + items + ]); + (0, import_react17.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 = { + 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({ + 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({ store, ...props }); + return { autoComplete: "off", ...props }; + } +); +var Combobox = forwardRef22(function Combobox2(props) { + const htmlProps = useCombobox(props); + return createElement3(TagName9, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/IBXZ2LQC.js +var import_react18 = __toESM(require_react(), 1); +var import_jsx_runtime50 = __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({ + store, + value, + hideOnClick, + setValueOnClick, + selectValueOnClick = true, + resetValueOnSelect, + focusOnHover = false, + moveOnKeyPress = true, + getItem: getItemProp, + ...props + }) { + var _a; + 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_react18.useCallback)( + (item) => { + const nextItem = { ...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( + (_a = resetValueOnSelect != null ? resetValueOnSelect : resetValueOnSelectState) != null ? _a : 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 = { + "aria-selected": selected, + ...props + }; + } + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ComboboxItemValueContext.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ComboboxItemCheckedContext.Provider, { value: selected != null ? selected : false, children: element }) }), + [value, selected] + ); + const popupRole = (0, import_react18.useContext)(ComboboxListRoleContext); + props = { + role: getItemRole(popupRole), + children: value, + ...props, + onClick, + onKeyDown + }; + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + props = useCompositeItem({ + 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({ 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-item-value.js +var import_react19 = __toESM(require_react(), 1); +var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); +var TagName11 = "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_runtime51.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({ store, value, userValue, ...props }) { + const context = useComboboxScopedContext(); + store = store || context; + const itemContext = (0, import_react19.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_react19.useMemo)(() => { + if (!itemValue) return; + if (!inputValue) return itemValue; + return splitValue(itemValue, inputValue); + }, [itemValue, inputValue]); + props = { + children, + ...props + }; + return removeUndefinedValues(props); +}); +var ComboboxItemValue = forwardRef22(function ComboboxItemValue2(props) { + const htmlProps = useComboboxItemValue(props); + return createElement3(TagName11, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-label.js +var TagName12 = "label"; +var useComboboxLabel = createHook( + function useComboboxLabel2({ store, ...props }) { + 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 _a; + return (_a = state.baseElement) == null ? void 0 : _a.id; + }); + props = { + htmlFor: comboboxId, + ...props + }; + return removeUndefinedValues(props); + } +); +var ComboboxLabel = memo22( + forwardRef22(function ComboboxLabel2(props) { + const htmlProps = useComboboxLabel(props); + return createElement3(TagName12, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/2G6YEJT4.js +var import_react20 = __toESM(require_react(), 1); +var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); +var TagName13 = "div"; +var useComboboxList = createHook( + function useComboboxList2({ store, alwaysVisible, ...props }) { + 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_react20.useRef)(null); + const id = useId3(props.id); + const mounted = store.useState("mounted"); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const style = hidden ? { ...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_react20.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 = { + role: "listbox", + "aria-multiselectable": ariaMultiSelectable, + ...props + }; + } + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ComboboxScopedContextProvider, { value: store, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ComboboxListRoleContext.Provider, { value: role, children: element }) }), + [store, role] + ); + const setContentElement = id && (!scopedContext || !scopedContextSameStore) ? store.setContentElement : null; + props = { + 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); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/XSIEPKGA.js +var import_react21 = __toESM(require_react(), 1); +var TagValueContext = (0, import_react21.createContext)(null); +var TagRemoveIdContext = (0, import_react21.createContext)( + null +); +var ctx7 = createStoreContext( + [CompositeContextProvider], + [CompositeScopedContextProvider] +); +var useTagContext = ctx7.useContext; +var useTagScopedContext = ctx7.useScopedContext; +var useTagProviderContext = ctx7.useProviderContext; +var TagContextProvider = ctx7.ContextProvider; +var TagScopedContextProvider = ctx7.ScopedContextProvider; + +// node_modules/@ariakit/core/esm/combobox/combobox-store.js +var isTouchSafari = isSafari() && isTouchDevice(); +function createComboboxStore({ + tag, + ...props +} = {}) { + 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({ + ...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({ + ...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 = { + ...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 { + ...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/SVN33SY6.js +function useComboboxStoreOptions(props) { + const tag = useTagContext(); + props = { + ...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/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 }); +} + +// 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_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_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_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_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_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", + { + className: "dataviews-filters__search-widget-listitem-value", + title: element.label, + 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_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", + { + className: "dataviews-filters__search-widget-listitem-value", + title: element.label, + 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_element26 = __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_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_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_element27 = __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_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_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_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_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_element29 = __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_element29.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_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_runtime60 = __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_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_element31.memo)(Filters); + +// packages/dataviews/build-module/components/dataviews-filters/toggle.mjs +var import_element32 = __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_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] + ); + if (filters.length === 0) { + return null; + } + const hasVisibleFilters = filters.some((filter) => filter.isVisible); + 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 hasPrimaryOrLockedFilters = filters.some( + (filter) => filter.isPrimary || filter.isLocked + ); + const buttonComponent = /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + import_components24.Button, + { + ref: buttonRef, + className: "dataviews-filters__visibility-toggle", + size: "compact", + icon: funnel_default, + disabled: hasPrimaryOrLockedFilters, + accessibleWhenDisabled: true, + ...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_element32.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_element33 = __toESM(require_element(), 1); +var import_jsx_runtime62 = __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_runtime62.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_runtime63 = __toESM(require_jsx_runtime(), 1); +function DataViewsLayout({ className }) { + const { + actions = [], + data, + fields, + getItemId, + getItemLevel, + hasInitiallyLoaded, + 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_element34.useContext)(dataviews_context_default); + if (!hasInitiallyLoaded) { + return null; + } + 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_element35 = __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, + isLoading, + hasInitiallyLoaded, + hasInfiniteScrollHandler + } = (0, import_element35.useContext)(dataviews_context_default); + const isRefreshing = !!isLoading && hasInitiallyLoaded && !hasInfiniteScrollHandler && !!data?.length; + const isDelayedRefreshing = useDelayedLoading(!!isRefreshing); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data) && [LAYOUT_TABLE, LAYOUT_GRID].includes(view.type); + if (!isRefreshing && (!totalItems || !totalPages || totalPages <= 1 && !hasBulkActions)) { + return null; + } + return (!!totalItems || isRefreshing) && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)( + "div", + { + className: "dataviews-footer", + inert: isRefreshing ? "true" : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)( + Stack, + { + direction: "row", + justify: "end", + align: "center", + className: clsx_default("dataviews-footer__content", { + "is-refreshing": isDelayedRefreshing + }), + 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_element36 = __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_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_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_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_components26 = __toESM(require_components(), 1); +var import_i18n30 = __toESM(require_i18n(), 1); +var import_element37 = __toESM(require_element(), 1); +var import_jsx_runtime66 = __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_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_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_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_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_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_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_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_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_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 ResetViewButton() { + const { onReset } = (0, import_element38.useContext)(dataviews_context_default); + if (onReset === void 0) { + return null; + } + const isDisabled = onReset === false; + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.Button, + { + variant: "tertiary", + size: "compact", + disabled: isDisabled, + accessibleWhenDisabled: true, + className: "dataviews-view-config__reset-button", + onClick: () => { + if (typeof onReset === "function") { + onReset(); + } + }, + children: (0, import_i18n31.__)("Reset view") + } + ); +} +function DataviewsViewConfigDropdown() { + const { view, onReset } = (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 + ); + const isModified = typeof onReset === "function"; + 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.jsxs)("div", { className: "dataviews-view-config__toggle-wrapper", children: [ + /* @__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 + } + ), + isModified && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "dataviews-view-config__modified-indicator" }) + ] }); + }, + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalDropdownContentWrapper, + { + paddingSize: "medium", + className: "dataviews-config__popover-content-wrapper", + children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)( + Stack, + { + direction: "column", + className: "dataviews-view-config", + gap: "xl", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)( + Stack, + { + direction: "row", + justify: "space-between", + align: "center", + className: "dataviews-view-config__header", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalHeading, + { + level: 2, + className: "dataviews-settings-section__title", + children: (0, import_i18n31.__)("Appearance") + } + ), + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(ResetViewButton, {}) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + className: "dataviews-view-config__sort-controls", + 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_element38.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_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_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_element39.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_element40 = __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_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_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_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_components30 = __toESM(require_components(), 1); +var import_element41 = __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_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_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 = (value) => { + if (!value) { + return ""; + } + return (0, import_date3.dateI18n)("Y-m-d\\TH:i", (0, import_date3.getDate)(value)); +}; +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)(void 0); + 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) { + const wpDate = (0, import_date3.dateI18n)("Y-m-d", newDate); + let wpTime; + if (value) { + wpTime = (0, import_date3.dateI18n)("H:i", (0, import_date3.getDate)(value)); + } else { + wpTime = (0, import_date3.dateI18n)("H:i", newDate); + } + const finalDateTime = (0, import_date3.getDate)(`${wpDate}T${wpTime}`); + 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 = (0, import_date3.getDate)(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: formatDateTime(value), + 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_element43 = __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_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_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_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_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_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_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/select.mjs +var import_components33 = __toESM(require_components(), 1); +var import_element44 = __toESM(require_element(), 1); +var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1); +var { ValidatedSelectControl } = unlock(import_components33.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_element44.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_components33.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime73.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/adaptive-select.mjs +var import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1); +var ELEMENTS_THRESHOLD = 10; +function AdaptiveSelect(props) { + const { field } = props; + const { elements } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (elements.length >= ELEMENTS_THRESHOLD) { + return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Combobox3, { ...props }); + } + return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Select, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/email.mjs +var import_components35 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-input.mjs +var import_components34 = __toESM(require_components(), 1); +var import_element45 = __toESM(require_element(), 1); +var import_jsx_runtime75 = __toESM(require_jsx_runtime(), 1); +var { ValidatedInputControl: ValidatedInputControl2 } = unlock(import_components34.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_element45.useCallback)( + (newValue) => onChange( + setValue({ + item: data, + value: newValue + }) + ), + [data, setValue, onChange] + ); + return /* @__PURE__ */ (0, import_jsx_runtime75.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_runtime76 = __toESM(require_jsx_runtime(), 1); +function Email({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "email", + prefix: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_components35.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_components35.Icon, { icon: envelope_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/telephone.mjs +var import_components36 = __toESM(require_components(), 1); +var import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1); +function Telephone({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "tel", + prefix: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_components36.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_components36.Icon, { icon: mobile_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/url.mjs +var import_components37 = __toESM(require_components(), 1); +var import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1); +function Url({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "url", + prefix: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_components37.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_components37.Icon, { icon: link_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-number.mjs +var import_components38 = __toESM(require_components(), 1); +var import_element46 = __toESM(require_element(), 1); +var import_i18n35 = __toESM(require_i18n(), 1); +var import_jsx_runtime79 = __toESM(require_jsx_runtime(), 1); +var { ValidatedNumberControl } = unlock(import_components38.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_element46.useCallback)( + (newValue) => onChange([toNumberOrEmpty(newValue), max]), + [onChange, max] + ); + const onChangeMax = (0, import_element46.useCallback)( + (newValue) => onChange([min, toNumberOrEmpty(newValue)]), + [onChange, min] + ); + return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)( + import_components38.BaseControl, + { + help: (0, import_i18n35.__)("The max. value must be greater than the min. value."), + children: /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(import_components38.Flex, { direction: "row", gap: 4, children: [ + /* @__PURE__ */ (0, import_jsx_runtime79.jsx)( + import_components38.__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_runtime79.jsx)( + import_components38.__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_element46.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_element46.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_runtime79.jsx)( + BetweenControls, + { + value: valueBetween, + onChange: onChangeBetweenControls, + hideLabelFromVision, + step + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime79.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_runtime80 = __toESM(require_jsx_runtime(), 1); +function Integer(props) { + return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/number.mjs +var import_jsx_runtime81 = __toESM(require_jsx_runtime(), 1); +function Number2(props) { + return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/radio.mjs +var import_components39 = __toESM(require_components(), 1); +var import_element47 = __toESM(require_element(), 1); +var import_jsx_runtime82 = __toESM(require_jsx_runtime(), 1); +var { ValidatedRadioControl } = unlock(import_components39.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_element47.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_components39.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime82.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/text.mjs +var import_element48 = __toESM(require_element(), 1); +var import_jsx_runtime83 = __toESM(require_jsx_runtime(), 1); +function Text({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + config, + validity +}) { + const { prefix, suffix } = config || {}; + return /* @__PURE__ */ (0, import_jsx_runtime83.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_components40 = __toESM(require_components(), 1); +var import_element49 = __toESM(require_element(), 1); +var import_jsx_runtime84 = __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_element49.useCallback)(() => { + onChange( + setValue({ item: data, value: !getValue({ item: data }) }) + ); + }, [onChange, setValue, data, getValue]); + return /* @__PURE__ */ (0, import_jsx_runtime84.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_element50 = __toESM(require_element(), 1); +var import_jsx_runtime85 = __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_element50.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime85.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_element51 = __toESM(require_element(), 1); +var import_jsx_runtime86 = __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_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_runtime86.jsx)(import_components42.Spinner, {}); + } + if (elements.length === 0) { + return null; + } + const selectedOption = elements.find((el) => el.value === value); + return /* @__PURE__ */ (0, import_jsx_runtime86.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_runtime86.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_element52 = __toESM(require_element(), 1); +var import_jsx_runtime87 = __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_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_runtime87.jsx)(import_components43.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime87.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_runtime87.jsx)("span", { children: element?.label || item }); + } + return /* @__PURE__ */ (0, import_jsx_runtime87.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_element53 = __toESM(require_element(), 1); +var import_i18n36 = __toESM(require_i18n(), 1); +var import_jsx_runtime88 = __toESM(require_jsx_runtime(), 1); +var { ValidatedInputControl: ValidatedInputControl3 } = unlock(import_components44.privateApis); +var ColorPickerDropdown = ({ + color, + onColorChange +}) => { + const validColor = color && w(color).isValid() ? color : "#ffffff"; + return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + import_components44.Dropdown, + { + className: "dataviews-controls__color-picker-dropdown", + popoverProps: { resize: false }, + renderToggle: ({ onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + import_components44.Button, + { + onClick: onToggle, + "aria-label": (0, import_i18n36.__)("Open color picker"), + size: "small", + icon: () => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_components44.ColorIndicator, { colorValue: validColor }) + } + ), + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_components44.__experimentalDropdownContentWrapper, { paddingSize: "none", children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + import_components44.ColorPicker, + { + color: 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)( + (newColor) => { + onChange(setValue({ item: data, value: newColor })); + }, + [data, onChange, setValue] + ); + const handleInputChange = (0, import_element53.useCallback)( + (newValue) => { + onChange(setValue({ item: data, value: newValue || "" })); + }, + [data, onChange, setValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime88.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_runtime88.jsx)(import_components44.__experimentalInputControlPrefixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + ColorPickerDropdown, + { + color: value, + onColorChange: handleColorChange + } + ) }) + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/password.mjs +var import_components45 = __toESM(require_components(), 1); +var import_element54 = __toESM(require_element(), 1); +var import_i18n37 = __toESM(require_i18n(), 1); +var import_jsx_runtime89 = __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_runtime89.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: isVisible2 ? "text" : "password", + suffix: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_components45.__experimentalInputControlSuffixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)( + import_components45.Button, + { + icon: isVisible2 ? unseen_default : seen_default, + onClick: toggleVisibility, + size: "small", + label: isVisible2 ? (0, import_i18n37.__)("Hide password") : (0, import_i18n37.__)("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_runtime90 = __toESM(require_jsx_runtime(), 1); +var FORM_CONTROLS = { + adaptiveSelect: AdaptiveSelect, + 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: Text, + 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_runtime90.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("adaptiveSelect"); + } + 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_i18n38 = __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_runtime91 = __toESM(require_jsx_runtime(), 1); +function render({ + item, + field +}) { + if (field.hasElements) { + return /* @__PURE__ */ (0, import_jsx_runtime91.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_i18n38.__)("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_i18n39 = __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_i18n39.__)("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_i18n40 = __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_i18n40.__)("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_i18n41 = __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_i18n41.__)("True"); + } + if (value === false) { + return (0, import_i18n41.__)("False"); + } + return ""; +} +function isValidCustom4(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && ![true, false].includes(value)) { + return (0, import_i18n41.__)("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_i18n42 = __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_i18n42.__)("Value must be an array."); + } + if (!value.every((v2) => typeof v2 === "string")) { + return (0, import_i18n42.__)("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_i18n43 = __toESM(require_i18n(), 1); +var import_jsx_runtime92 = __toESM(require_jsx_runtime(), 1); +function render3({ item, field }) { + if (field.hasElements) { + return /* @__PURE__ */ (0, import_jsx_runtime92.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_runtime92.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [ + /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + "div", + { + style: { + width: "16px", + height: "16px", + borderRadius: "50%", + backgroundColor: value, + border: "1px solid #ddd", + flexShrink: 0 + } + } + ), + /* @__PURE__ */ (0, import_jsx_runtime92.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_i18n43.__)("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/hooks/use-data.mjs +var import_element55 = __toESM(require_element(), 1); +function useData(data, isLoading, paginationInfo) { + const previousDataRef = (0, import_element55.useRef)(data); + const previousPaginationInfoRef = (0, import_element55.useRef)(paginationInfo); + const [hasInitiallyLoaded, setHasInitiallyLoaded] = (0, import_element55.useState)( + !isLoading + ); + (0, import_element55.useEffect)(() => { + if (!isLoading) { + previousDataRef.current = data; + previousPaginationInfoRef.current = paginationInfo; + setHasInitiallyLoaded(true); + } + }, [data, isLoading, paginationInfo]); + return { + data: isLoading && previousDataRef.current?.length ? previousDataRef.current : data, + paginationInfo: isLoading && previousDataRef.current?.length ? previousPaginationInfoRef.current : paginationInfo, + hasInitiallyLoaded + }; +} + +// packages/dataviews/build-module/dataviews/index.mjs +var import_jsx_runtime93 = __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_runtime93.jsxs)(import_jsx_runtime93.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)( + Stack, + { + direction: "row", + align: "top", + justify: "space-between", + className: "dataviews__view-actions", + gap: "xs", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)( + Stack, + { + direction: "row", + justify: "start", + gap: "sm", + className: "dataviews__search", + children: [ + search && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(dataviews_search_default, { label: searchLabel }), + /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(toggle_default, {}) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(Stack, { direction: "row", gap: "xs", style: { flexShrink: 0 }, children: [ + /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(dataviews_view_config_default, {}), + header + ] }) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(filters_toggled_default, { className: "dataviews-filters__container" }), + /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(DataViewsLayout, {}), + /* @__PURE__ */ (0, import_jsx_runtime93.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, + onReset +}) { + const { infiniteScrollHandler } = paginationInfo; + const containerRef = (0, import_element56.useRef)(null); + const [containerWidth, setContainerWidth] = (0, import_element56.useState)(0); + const resizeObserverRef = (0, import_compose12.useResizeObserver)( + (resizeObserverEntries) => { + setContainerWidth( + resizeObserverEntries[0].borderBoxSize[0].inlineSize + ); + }, + { box: "border-box" } + ); + const [selectionState, setSelectionState] = (0, import_element56.useState)([]); + const isUncontrolled = selectionProperty === void 0 || onChangeSelection === void 0; + const selection = isUncontrolled ? selectionState : selectionProperty; + const [openedFilter, setOpenedFilter] = (0, import_element56.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_element56.useMemo)(() => normalizeFields(fields), [fields]); + const _selection = (0, import_element56.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_element56.useMemo)( + () => (filters || []).some( + (filter) => filter.isPrimary || filter.isLocked + ), + [filters] + ); + const [isShowingFilter, setIsShowingFilter] = (0, import_element56.useState)( + hasPrimaryOrLockedFilters + ); + (0, import_element56.useEffect)(() => { + if (hasPrimaryOrLockedFilters && !isShowingFilter) { + setIsShowingFilter(true); + } + }, [hasPrimaryOrLockedFilters, isShowingFilter]); + (0, import_element56.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_element56.useMemo)( + () => Object.fromEntries( + Object.entries(defaultLayoutsProperty).filter( + ([layoutType]) => { + return dataViewsLayouts.some( + (viewLayout) => viewLayout.type === layoutType + ); + } + ) + ), + [defaultLayoutsProperty] + ); + const { + data: displayData, + paginationInfo: displayPaginationInfo, + hasInitiallyLoaded + } = useData(data, isLoading, paginationInfo); + if (!defaultLayouts[view.type]) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( + dataviews_context_default.Provider, + { + value: { + view, + onChangeView, + fields: _fields, + actions, + data: displayData, + isLoading, + paginationInfo: displayPaginationInfo, + selection: _selection, + onChangeSelection: setSelectionWithChange, + openedFilter, + setOpenedFilter, + getItemId, + getItemLevel, + isItemClickable, + onClickItem, + renderItemLink, + containerWidth, + containerRef, + resizeObserverRef, + defaultLayouts, + filters, + isShowingFilter, + setIsShowingFilter, + config, + empty, + hasInitiallyLoaded, + hasInfiniteScrollHandler: !!infiniteScrollHandler, + onReset + }, + children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("div", { className: "dataviews-wrapper", ref: containerRef, children: children ?? /* @__PURE__ */ (0, import_jsx_runtime93.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_element57 = __toESM(require_element(), 1); +var import_jsx_runtime94 = __toESM(require_jsx_runtime(), 1); +var NavigableRegion = (0, import_element57.forwardRef)( + ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { + return /* @__PURE__ */ (0, import_jsx_runtime94.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_runtime95 = __toESM(require_jsx_runtime(), 1); +function Header({ + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle = true +}) { + return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_components47.__experimentalVStack, { className: "admin-ui-page__header", as: "header", children: [ + /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_components47.__experimentalHStack, { justify: "space-between", spacing: 2, children: [ + /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_components47.__experimentalHStack, { spacing: 2, justify: "left", children: [ + showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)( + SidebarToggleSlot, + { + bubblesVirtually: true, + className: "admin-ui-page__sidebar-toggle-slot" + } + ), + title && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_components47.__experimentalHeading, { as: "h2", level: 3, weight: 500, truncate: true, children: title }), + breadcrumbs, + badges + ] }), + /* @__PURE__ */ (0, import_jsx_runtime95.jsx)( + import_components47.__experimentalHStack, + { + style: { width: "auto", flexShrink: 0 }, + spacing: 2, + className: "admin-ui-page__header-actions", + children: actions + } + ) + ] }), + subTitle && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) + ] }); +} + +// packages/admin-ui/build-module/page/index.mjs +var import_jsx_runtime96 = __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_runtime96.jsxs)(navigable_region_default, { className: classes, ariaLabel: title, children: [ + (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)( + Header, + { + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle + } + ), + hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime96.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_element60 = __toESM(require_element()); +var import_editor = __toESM(require_editor()); +var import_patterns3 = __toESM(require_patterns()); +var import_i18n48 = __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_i18n44 = __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_i18n44.__)("All patterns") + }, + { + slug: "my-patterns", + label: (0, import_i18n44.__)("My patterns") + }, + { + slug: "registered", + label: (0, import_i18n44.__)("Registered") + } +]; +var DEFAULT_LAYOUTS = { + [LAYOUT_TABLE2]: {}, + [LAYOUT_GRID2]: { + layout: { + badgeFields: ["sync-status"] + } + } +}; + +// routes/pattern-list/fields/preview.tsx +var import_i18n45 = __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_i18n45.__)("Preview"), + id: "preview", + render: PreviewField, + enableSorting: false +}; + +// routes/pattern-list/fields/sync-status.tsx +var import_i18n46 = __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_i18n46._x)("Synced", "pattern (singular)"), + description: (0, import_i18n46.__)("Patterns that are kept in sync across the site.") + }, + { + value: PATTERN_SYNC_TYPES.unsynced, + label: (0, import_i18n46._x)("Not synced", "pattern (singular)"), + description: (0, import_i18n46.__)( + "Patterns that can be changed freely without affecting the site." + ) + } +]; +var patternStatusField = { + label: (0, import_i18n46.__)("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_i18n47 = __toESM(require_i18n()); +var import_data8 = __toESM(require_data()); +var import_core_data = __toESM(require_core_data()); +var import_element58 = __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_element58.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_element58.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_i18n47.__)("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_element59 = __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_element59.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_element59.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_element60.useState)(false); + const handleQueryParamsChange = (0, import_element60.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_element60.useMemo)(() => { + const filter = view.filters?.find((f2) => f2.field === "category"); + return filter?.value || "all-patterns"; + }, [view.filters]); + const syncStatusFilter = (0, import_element60.useMemo)(() => { + const filter = view.filters?.find((f2) => f2.field === "sync-status"); + return filter?.value; + }, [view.filters]); + const patternType = (0, import_element60.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_element60.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_element60.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_element60.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_element60.useMemo)(() => { + return [ + ...postTypeActions?.flatMap((action) => { + if (action.id === "view-post-revisions") { + return []; + } + return [action]; + }) + ]; + }, [postTypeActions]); + const handleTabChange = (0, import_element60.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_i18n48.__)("Patterns"), + subTitle: (0, import_i18n48.__)( + "Reusable design elements for your site. Create once, use everywhere." + ), + className: "pattern-page", + actions: 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, + onReset: isModified ? onReset : false, + 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..e057a3ac910b3 --- /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' => 'f187a8ed84eb97f615a9'); \ 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..c4afaecf9c36a --- /dev/null +++ b/src/wp-includes/build/routes/pattern-list/content.min.js @@ -0,0 +1,14 @@ +var Zh=Object.create;var Ic=Object.defineProperty;var Qh=Object.getOwnPropertyDescriptor;var Jh=Object.getOwnPropertyNames;var eb=Object.getPrototypeOf,tb=Object.prototype.hasOwnProperty;var Ee=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var rb=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Jh(t))!tb.call(e,n)&&n!==r&&Ic(e,n,{get:()=>t[n],enumerable:!(o=Qh(t,n))||o.enumerable});return e};var c=(e,t,r)=>(r=e!=null?Zh(eb(e)):{},rb(t||!e||!e.__esModule?Ic(r,"default",{value:e,enumerable:!0}):r,e));var z=Ee((R1,Vc)=>{Vc.exports=window.wp.element});var jt=Ee((V1,kc)=>{kc.exports=window.wp.data});var Ls=Ee((k1,Nc)=>{Nc.exports=window.wp.preferences});var Et=Ee((q1,Mc)=>{Mc.exports=window.wp.compose});var le=Ee(($1,Fc)=>{Fc.exports=window.React});var R=Ee((X1,Hc)=>{Hc.exports=window.ReactJSXRuntime});var ef=Ee((SS,Jc)=>{Jc.exports=window.ReactDOM});var rf=Ee(tf=>{"use strict";var Wo=le();function bb(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var xb=typeof Object.is=="function"?Object.is:bb,yb=Wo.useState,wb=Wo.useEffect,Sb=Wo.useLayoutEffect,_b=Wo.useDebugValue;function Cb(e,t){var r=t(),o=yb({inst:{value:r,getSnapshot:t}}),n=o[0].inst,i=o[1];return Sb(function(){n.value=r,n.getSnapshot=t,Xs(n)&&i({inst:n})},[e,r,t]),wb(function(){return Xs(n)&&i({inst:n}),e(function(){Xs(n)&&i({inst:n})})},[e]),_b(r),r}function Xs(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!xb(e,r)}catch{return!0}}function Eb(e,t){return t()}var Pb=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?Eb:Cb;tf.useSyncExternalStore=Wo.useSyncExternalStore!==void 0?Wo.useSyncExternalStore:Pb});var nf=Ee((CS,of)=>{"use strict";of.exports=rf()});var G=Ee((TS,lf)=>{lf.exports=window.wp.i18n});var Se=Ee((IS,uf)=>{uf.exports=window.wp.primitives});var Nl=Ee((__,cf)=>{cf.exports=window.wp.privateApis});var U=Ee((V_,xf)=>{xf.exports=window.wp.components});var Ml=Ee((k_,yf)=>{yf.exports=window.wp.keycodes});var Fu=Ee((tO,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("|"),O0=new RegExp(ep,"g"),R0=new RegExp(ep,"");function V0(e){return Jm[e]}var tp=function(e){return e.replace(O0,V0)},k0=function(e){return!!e.match(R0)};Ma.exports=tp;Ma.exports.has=k0;Ma.exports.remove=tp});var dp=Ee((uO,fp)=>{"use strict";fp.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 Do=Ee((IV,Gp)=>{Gp.exports=window.wp.date});var hg=Ee((Ck,vg)=>{vg.exports=window.wp.warning});var ih=Ee((NL,nh)=>{nh.exports=window.wp.deprecated});var Os=Ee((JL,bh)=>{bh.exports=window.wp.coreData});var yh=Ee((e3,xh)=>{xh.exports=window.wp.editor});var Rs=Ee((t3,wh)=>{wh.exports=window.wp.patterns});var Dh=Ee((c3,Nh)=>{Nh.exports=window.wp.blockEditor});import{useParams as x1,useNavigate as y1,useSearch as w1,Link as S1,useInvalidate as _1}from"@wordpress/route";var Oc=Object.prototype.hasOwnProperty;function Rc(e,t,r){for(r of e.keys())if(Lr(r,t))return r}function Lr(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--&&Lr(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=Rc(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=Rc(t,n),!n)||!Lr(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(Oc.call(e,r)&&++o&&!Oc.call(t,r)||!(r in t)||!Lr(e[r],t[r]))return!1;return Object.keys(t).length===o}}return e!==e&&t!==t}var An=c(z(),1),bi=c(jt(),1),zs=c(Ls(),1);function Bs(e,t,r){return`dataviews-${e}-${t}-${r}`}var Dc=["titleField","mediaField","descriptionField","showTitle","showMedia","showDescription","showLevels","infiniteScrollEnabled"];function Hs(e,t,r){if(!t)return e;let o=e;for(let n of Dc)n in t&&(o={...o,[n]:t[n]});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}),t.layout&&(o={...o,layout:{...o.layout,...t.layout}}),t.groupBy&&(o={...o,groupBy:t.groupBy}),o}function hi(e,t,r){if(!t)return e;let o=e;for(let n of Dc)if(n in t){let{[n]:i,...a}=o;o=a}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))}}if(t.sort&&e.sort?.field===t.sort.field&&e.sort?.direction===t.sort.direction&&(o={...o,sort:r?.sort}),t.layout&&"layout"in o&&o.layout){let n={...o.layout};for(let i of Object.keys(t.layout))delete n[i];o={...o,layout:Object.keys(n).length>0?n:void 0}}if(t.groupBy&&"groupBy"in o){let{groupBy:n,...i}=o;o=i}return o}function ob(e,t){let r={...e};for(let o of t)delete r[o];return r}function js(e){let{kind:t,name:r,slug:o,defaultView:n,activeViewOverrides:i,queryParams:a,onChangeQueryParams:l}=e,s=Bs(t,r,o),u=(0,bi.useSelect)(_=>_(zs.store).get("core/views",s),[s]),{set:f}=(0,bi.useDispatch)(zs.store),d=u??n,m=Number(a?.page??d.page??1),p=a?.search??d.search??"",g=(0,An.useMemo)(()=>Hs({...d,page:m,search:p},i,n),[d,m,p,i,n]),S=!!u,b=(0,An.useCallback)(_=>{let A={page:_?.page,search:_?.search},V=hi(ob(_,["page","search"]),i,n);l&&!Lr(A,{page:m,search:p})&&l(A);let I=hi(d,i,n),M=hi(n,i,n);Lr(I,V)||(Lr(V,M)?f("core/views",s,void 0):f("core/views",s,V))},[l,m,p,d,n,i,f,s]),y=(0,An.useCallback)(()=>{f("core/views",s,void 0)},[s,f]);return{view:g,isModified:S,updateView:b,resetToDefault:y}}var nb=c(jt(),1),ib=c(Ls(),1);var bt=c(z(),1),Is=c(Et(),1);var Bc=c(le(),1),Lc={};function Ws(e,t){let r=Bc.useRef(Lc);return r.current===Lc&&(r.current=e(t)),r}function Ys(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 yi=c(le(),1);function Gs(e,t,r,o){let n=Ws(jc).current;return ab(n,e,t,r,o)&&Wc(n,[e,t,r,o]),n.callback}function zc(e){let t=Ws(jc).current;return sb(t,e)&&Wc(t,e),t.callback}function jc(){return{callback:null,cleanup:null,refs:[]}}function ab(e,t,r,o,n){return e.refs[0]!==t||e.refs[1]!==r||e.refs[2]!==o||e.refs[3]!==n}function sb(e,t){return e.refs.length!==t.length||e.refs.some((r,o)=>r!==t[o])}function Wc(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 Us(e){if(!Uc.isValidElement(e))return null;let t=e,r=t.props;return(Gc(19)?r?.ref:t.ref)??null}function Tn(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function qc(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 $c(e,t){return typeof e=="function"?e(t):e}function Kc(e,t){return typeof e=="function"?e(t):e}var On={};function xi(e,t,r,o,n){let i={...qs(e,On)};return t&&(i=In(i,t)),r&&(i=In(i,r)),o&&(i=In(i,o)),n&&(i=In(i,n)),i}function Xc(e){if(e.length===0)return On;if(e.length===1)return qs(e[0],On);let t={...qs(e[0],On)};for(let r=1;r=65&&n<=90&&(typeof t=="function"||typeof t>"u")}function Zc(e){return typeof e=="function"}function qs(e,t){return Zc(e)?e(t):e??On}function fb(e,t){return t?e?r=>{if(mb(r)){let n=r;db(n);let i=t(n);return n.baseUIHandlerPrevented||e?.(n),i}let o=t(r);return e?.(r),o}:t:e}function db(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function $s(e,t){return t?e?t+" "+e:t:e}function mb(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var pb=Object.freeze([]),Br=Object.freeze({});var Ks=c(le(),1);function Qc(e,t,r={}){let o=t.render,n=gb(t,r);if(r.enabled===!1)return null;let i=r.state??Br;return vb(e,o,n,i)}function gb(e,t={}){let{className:r,style:o,render:n}=e,{state:i=Br,ref:a,props:l,stateAttributesMapping:s,enabled:u=!0}=t,f=u?$c(r,i):void 0,d=u?Kc(o,i):void 0,m=u?qc(i,s):Br,p=u?Tn(m,Array.isArray(l)?Xc(l):l)??Br:Br;return typeof document<"u"&&(u?Array.isArray(a)?p.ref=zc([p.ref,Us(n),...a]):p.ref=Gs(p.ref,Us(n),a):Gs(null,null)),u?(f!==void 0&&(p.className=$s(p.className,f)),d!==void 0&&(p.style=Tn(p.style,d)),p):Br}function vb(e,t,r,o){if(t){if(typeof t=="function")return t(r,o);let n=xi(r,t.props);return n.ref=r.ref,yi.cloneElement(t,n)}if(e&&typeof e=="string")return hb(e,r);throw new Error(Ys(8))}function hb(e,t){return e==="button"?(0,Ks.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,Ks.createElement)("img",{alt:"",...t,key:t.key}):yi.createElement(e,t)}function af(e){return Qc(e.defaultTagName??"div",e,e)}function sf(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:()=>{},hasInitiallyLoaded:!1,hasInfiniteScrollHandler:!1,config:{perPageSizes:[]}});bf.displayName="DataViewsContext";var Y=bf;var _r=c(G(),1);var yo=c(G(),1),aa=c(U(),1),yt=c(z(),1),jl=c(Ml(),1);var wf=c(U(),1),Sf=c(G(),1),_f=c(R(),1);function Xr({selection:e,onChangeSelection:t,item:r,getItemId:o,titleField:n,disabled:i,...a}){let l=o(r),s=!i&&e.includes(l),u=n?.getValue?.({item:r})||(0,Sf.__)("(no title)");return(0,_f.jsx)(wf.CheckboxControl,{className:"dataviews-selection-checkbox","aria-label":u,"aria-disabled":i,checked:s,onChange:()=>{i||t(e.includes(l)?e.filter(f=>l!==f):[...e,l])},...a})}var bo=c(U(),1),Pf=c(G(),1),Uo=c(z(),1);var Af=c(jt(),1),Fl=c(Et(),1);var Cf=c(Nl(),1),{lock:D_,unlock:K}=(0,Cf.__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=c(R(),1),{Menu:Go,kebabCase:Ob}=K(bo.privateApis);function Rb({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 Vb({action:e,onClick:t,items:r}){let o=typeof e.label=="string"?e.label:e.label(r);return(0,be.jsx)(Go.Item,{disabled:e.disabled,onClick:t,children:(0,be.jsx)(Go.ItemLabel,{children:o})})}function xo({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__${Ob(e.id)}`,children:(0,be.jsx)(e.RenderModal,{items:t,closeModal:r})})}function Ll({actions:e,item:t,registry:r,setActiveModalAction:o}){let{primaryActions:n,regularActions:i}=(0,Uo.useMemo)(()=>e.reduce((l,s)=>((s.isPrimary?l.primaryActions:l.regularActions).push(s),l),{primaryActions:[],regularActions:[]}),[e]),a=l=>l.map(s=>(0,be.jsx)(Vb,{action:s,onClick:()=>{if("RenderModal"in s){o(s);return}s.callback([t],{registry:r})},items:[t]},s.id));return(0,be.jsxs)(Go.Group,{children:[a(n),a(i)]})}function qo({item:e,actions:t,isCompact:r}){let o=(0,Af.useRegistry)(),{primaryActions:n,eligibleActions:i}=(0,Uo.useMemo)(()=>{let l=t.filter(u=>!u.isEligible||u.isEligible(e));return{primaryActions:l.filter(u=>u.isPrimary),eligibleActions:l}},[t,e]),a=(0,Fl.useViewportMatch)("medium","<");return r?(0,be.jsx)(Ef,{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)(Bl,{item:e,actions:n,registry:o}),(n.lengthi(null)})]})}function Bl({item:e,actions:t,registry:r,buttonVariant:o}){let[n,i]=(0,Uo.useState)(null);return(0,Fl.useViewportMatch)("medium","<")||!Array.isArray(t)||t.length===0?null:(0,be.jsxs)(be.Fragment,{children:[t.map(l=>(0,be.jsx)(Rb,{action:l,onClick:()=>{if("RenderModal"in l){i(l);return}l.callback([e],{registry:r})},items:[e],variant:o},l.id)),!!n&&(0,be.jsx)(xo,{action:n,items:[e],closeModal:()=>i(null)})]})}var $o=c(U(),1),Ji=c(G(),1),at=c(z(),1),Rf=c(jt(),1);var Hl=c(Et(),1);var Zr=c(G(),1);function Tf(e,t,r){return e>0?(0,Zr.sprintf)((0,Zr._n)("%d Item selected","%d Items selected",e),e):r>t?(0,Zr.sprintf)((0,Zr._n)("%1$d of %2$d Item","%1$d of %2$d Items",r),t,r):(0,Zr.sprintf)((0,Zr._n)("%d Item","%d Items",t),t)}var We=c(R(),1);function kb({action:e,items:t,ActionTriggerComponent:r}){let[o,n]=(0,at.useState)(!1);return(0,We.jsxs)(We.Fragment,{children:[(0,We.jsx)(r,{...{action:e,onClick:()=>{n(!0)},items:t}}),o&&(0,We.jsx)(xo,{action:e,items:t,closeModal:()=>n(!1)})]})}function ea(e,t){return(0,at.useMemo)(()=>e.some(r=>r.supportsBulk&&(!r.isEligible||r.isEligible(t))),[e,t])}function Ko(e,t){return(0,at.useMemo)(()=>t.some(r=>e.some(o=>o.supportsBulk&&(!o.isEligible||o.isEligible(r)))),[e,t])}function Mn({selection:e,onChangeSelection:t,data:r,actions:o,getItemId:n}){let i=(0,at.useMemo)(()=>r.filter(s=>o.some(u=>u.supportsBulk&&(!u.isEligible||u.isEligible(s)))),[r,o]),a=r.filter(s=>e.includes(n(s))&&i.includes(s)),l=a.length===i.length;return(0,We.jsx)($o.CheckboxControl,{className:"dataviews-view-table-selection-checkbox",checked:l,indeterminate:!l&&!!a.length,onChange:()=>{t(l?[]:i.map(s=>n(s)))},"aria-label":l?(0,Ji.__)("Deselect all"):(0,Ji.__)("Select all")})}function If({action:e,onClick:t,isBusy:r,items:o}){let n=typeof e.label=="string"?e.label:e.label(o);return(0,Hl.useViewportMatch)("medium","<")?(0,We.jsx)($o.Button,{disabled:r,accessibleWhenDisabled:!0,label:n,icon:e.icon,size:"compact",onClick:t,isBusy:r}):(0,We.jsx)($o.Button,{disabled:r,accessibleWhenDisabled:!0,size:"compact",onClick:t,isBusy:r,children:n})}var Vf=[];function Nb({action:e,selectedItems:t,actionInProgress:r,setActionInProgress:o}){let n=(0,Rf.useRegistry)(),i=(0,at.useMemo)(()=>t.filter(a=>!e.isEligible||e.isEligible(a)),[e,t]);return"RenderModal"in e?(0,We.jsx)(kb,{action:e,items:i,ActionTriggerComponent:If},e.id):(0,We.jsx)(If,{action:e,onClick:async()=>{o(e.id),await e.callback(t,{registry:n}),o(null)},items:i,isBusy:r===e.id},e.id)}function Of(e,t,r,o,n,i,a,l,s,u){let f=Tf(o.length,e.length,u.totalItems);return(0,We.jsxs)(F,{direction:"row",className:"dataviews-bulk-actions-footer__container",gap:"md",align:"center",children:[(0,We.jsx)(Mn,{selection:o,onChangeSelection:s,data:e,actions:t,getItemId:r}),(0,We.jsx)("span",{className:"dataviews-bulk-actions-footer__item-count",children:f}),(0,We.jsxs)(F,{direction:"row",className:"dataviews-bulk-actions-footer__action-buttons",gap:"xs",children:[n.map(d=>(0,We.jsx)(Nb,{action:d,selectedItems:i,actionInProgress:a,setActionInProgress:l},d.id)),i.length>0&&(0,We.jsx)($o.Button,{icon:Vn,showTooltip:!0,tooltipPosition:"top",size:"compact",label:(0,Ji.__)("Cancel"),disabled:!!a,accessibleWhenDisabled:!1,onClick:()=>{s(Vf)}})]})]})}function Db({selection:e,actions:t,onChangeSelection:r,data:o,getItemId:n,paginationInfo:i}){let[a,l]=(0,at.useState)(null),s=(0,at.useRef)(void 0),u=(0,Hl.useViewportMatch)("medium","<"),f=(0,at.useMemo)(()=>t.filter(g=>g.supportsBulk),[t]),d=(0,at.useMemo)(()=>o.filter(g=>f.some(S=>!S.isEligible||S.isEligible(g))),[o,f]),m=(0,at.useMemo)(()=>o.filter(g=>e.includes(n(g))&&d.includes(g)),[e,o,n,d]),p=(0,at.useMemo)(()=>t.filter(g=>g.supportsBulk&&(!u||g.icon)&&m.some(S=>!g.isEligible||g.isEligible(S))),[t,m,u]);if(a)s.current||(s.current=Of(o,t,n,e,p,m,a,l,r,i));else return s.current&&(s.current=void 0),Of(o,t,n,e,p,m,a,l,r,i);return s.current}function ta(){let{data:e,selection:t,actions:r=Vf,onChangeSelection:o,getItemId:n,paginationInfo:i}=(0,at.useContext)(Y);return(0,We.jsx)(Db,{selection:t,onChangeSelection:o,data:e,actions:r,getItemId:n,paginationInfo:i})}var yr=c(G(),1);var wr=c(U(),1),Qr=c(z(),1);function ra(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 Z=c(R(),1),{Menu:ue}=K(wr.privateApis);function Mb({children:e}){return Qr.Children.toArray(e).filter(Boolean).map((t,r)=>(0,Z.jsxs)(Qr.Fragment,{children:[r>0&&(0,Z.jsx)(ue.Separator,{}),t]},r))}var Fb=(0,Qr.forwardRef)(function({fieldId:t,view:r,fields:o,onChangeView:n,onHide:i,setOpenedFilter:a,canMove:l=!0,canInsertLeft:s=!0,canInsertRight:u=!0},f){let d=r.fields??[],m=d?.indexOf(t),p=r.sort?.field===t,g=!1,S=!1,b=!1,y=[],_=o.find(C=>C.id===t),{setIsShowingFilter:A}=(0,Qr.useContext)(Y);if(!_)return null;g=_.enableHiding!==!1,S=_.enableSorting!==!1;let V=_.header;if(y=!!_.filterBy&&_.filterBy?.operators||[],b=!r.filters?.some(C=>t===C.field)&&!!(_.hasElements||_.Edit)&&_.filterBy!==!1&&!_.filterBy?.isPrimary,!S&&!l&&!g&&!b)return V;let I=ra(r,o).filter(C=>!d.includes(C.id)),M=(s||u)&&!!I.length,N=(0,yr.isRTL)();return(0,Z.jsxs)(ue,{children:[(0,Z.jsxs)(ue.TriggerButton,{render:(0,Z.jsx)(wr.Button,{size:"compact",className:"dataviews-view-table-header-button",ref:f,variant:"tertiary"}),children:[V,r.sort&&p&&(0,Z.jsx)("span",{"aria-hidden":"true",children:df[r.sort.direction]})]}),(0,Z.jsx)(ue.Popover,{style:{minWidth:"240px"},children:(0,Z.jsxs)(Mb,{children:[S&&(0,Z.jsx)(ue.Group,{children:$i.map(C=>{let T=r.sort&&p&&r.sort.direction===C,k=`${t}-${C}`;return(0,Z.jsx)(ue.RadioItem,{name:"view-table-sorting",value:k,checked:T,onChange:()=>{n({...r,sort:{field:t,direction:C},showLevels:!1})},children:(0,Z.jsx)(ue.ItemLabel,{children:Xi[C]})},k)})}),b&&(0,Z.jsx)(ue.Group,{children:(0,Z.jsx)(ue.Item,{prefix:(0,Z.jsx)(wr.Icon,{icon:kn}),onClick:()=>{a(t),A(!0),n({...r,page:1,filters:[...r.filters||[],{field:t,value:void 0,operator:y[0]}]})},children:(0,Z.jsx)(ue.ItemLabel,{children:(0,yr.__)("Add filter")})})}),(l||g||M)&&_&&(0,Z.jsxs)(ue.Group,{children:[l&&(0,Z.jsx)(ue.Item,{prefix:(0,Z.jsx)(wr.Icon,{icon:el}),disabled:N?m>=d.length-1:m<1,onClick:()=>{let C=N?m+1:m-1,T=[...d];T.splice(m,1),T.splice(C,0,t),n({...r,fields:T})},children:(0,Z.jsx)(ue.ItemLabel,{children:(0,yr.__)("Move left")})}),l&&(0,Z.jsx)(ue.Item,{prefix:(0,Z.jsx)(wr.Icon,{icon:rl}),disabled:N?m<1:m>=d.length-1,onClick:()=>{let C=N?m-1:m+1,T=[...d];T.splice(m,1),T.splice(C,0,t),n({...r,fields:T})},children:(0,Z.jsx)(ue.ItemLabel,{children:(0,yr.__)("Move right")})}),s&&!!I.length&&(0,Z.jsxs)(ue,{children:[(0,Z.jsx)(ue.SubmenuTriggerItem,{children:(0,Z.jsx)(ue.ItemLabel,{children:(0,yr.__)("Insert left")})}),(0,Z.jsx)(ue.Popover,{children:I.map(C=>{let T=N?m+1:m;return(0,Z.jsx)(ue.Item,{onClick:()=>{n({...r,fields:[...d.slice(0,T),C.id,...d.slice(T)]})},children:(0,Z.jsx)(ue.ItemLabel,{children:C.label})},C.id)})})]}),u&&!!I.length&&(0,Z.jsxs)(ue,{children:[(0,Z.jsx)(ue.SubmenuTriggerItem,{children:(0,Z.jsx)(ue.ItemLabel,{children:(0,yr.__)("Insert right")})}),(0,Z.jsx)(ue.Popover,{children:I.map(C=>{let T=N?m:m+1;return(0,Z.jsx)(ue.Item,{onClick:()=>{n({...r,fields:[...d.slice(0,T),C.id,...d.slice(T)]})},children:(0,Z.jsx)(ue.ItemLabel,{children:C.label})},C.id)})})]}),g&&_&&(0,Z.jsx)(ue.Item,{prefix:(0,Z.jsx)(wr.Icon,{icon:Dn}),onClick:()=>{i(_),n({...r,fields:d.filter(C=>C!==t)})},children:(0,Z.jsx)(ue.ItemLabel,{children:(0,yr.__)("Hide column")})})]})]})})]})}),Lb=Fb,Xo=Lb;var kf=c(z(),1),zl=c(R(),1);function Bb({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 Jr({item:e,isItemClickable:t,onClickItem:r,renderItemLink:o,className:n,children:i,...a}){if(!t(e))return(0,zl.jsx)("div",{className:n,...a,children:i});if(o){let s=o({item:e,className:`${n} ${n}--clickable`,...a,children:i});return(0,kf.cloneElement)(s,{onClick:u=>{u.stopPropagation(),s.props.onClick&&s.props.onClick(u)},onKeyDown:u=>{(u.key==="Enter"||u.key===""||u.key===" ")&&(u.stopPropagation(),s.props.onKeyDown&&s.props.onKeyDown(u))}})}let l=Bb({item:e,isItemClickable:t,onClickItem:r,className:n});return(0,zl.jsx)("div",{...l,...a,children:i})}var Zt=c(R(),1);function Hb({item:e,level:t,titleField:r,mediaField:o,descriptionField:n,onClickItem:i,renderItemLink:a,isItemClickable:l}){return(0,Zt.jsxs)(F,{direction:"row",gap:"md",align:"flex-start",justify:"flex-start",children:[o&&(0,Zt.jsx)(Jr,{item:e,isItemClickable:l,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-column-primary__media","aria-label":l(e)&&(i||a)&&r?r.getValue?.({item:e}):void 0,children:(0,Zt.jsx)(o.render,{item:e,field:o,config:{sizes:"32px"}})}),(0,Zt.jsxs)(F,{direction:"column",align:"flex-start",className:"dataviews-view-table__primary-column-content",children:[r&&(0,Zt.jsxs)(Jr,{item:e,isItemClickable:l,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-title-field",children:[t!==void 0&&t>0&&(0,Zt.jsxs)("span",{className:"dataviews-view-table__level",children:[Array(t).fill("\u2014").join(" "),"\xA0"]}),(0,Zt.jsx)(r.render,{item:e,field:r})]}),n&&(0,Zt.jsx)(n.render,{item:e,field:n})]})]})}var oa=Hb;var Nf=c(Et(),1),Zo=c(z(),1),Df=c(G(),1),zb=e=>(0,Df.isRTL)()?Math.abs(e.scrollLeft)<=1:e.scrollLeft+e.clientWidth>=e.scrollWidth-1;function Mf({scrollContainerRef:e,enabled:t=!1}){let[r,o]=(0,Zo.useState)(!1),n=(0,Nf.useDebounce)((0,Zo.useCallback)(()=>{let i=e.current;i&&o(zb(i))},[e,o]),200);return(0,Zo.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 Dt(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 eo=c(U(),1),Lf=c(G(),1),Bf=c(z(),1);var Pt=c(R(),1);function Ff({field:e,isVisible:t,onToggleVisibility:r}){return(0,Pt.jsx)(eo.__experimentalItem,{onClick:e.enableHiding?r:void 0,children:(0,Pt.jsxs)(F,{direction:"row",gap:"sm",justify:"flex-start",align:"center",children:[(0,Pt.jsx)("div",{style:{height:24,width:24},children:t&&(0,Pt.jsx)(eo.Icon,{icon:Rn})}),(0,Pt.jsx)("span",{className:"dataviews-view-config__label",children:e.label})]})})}function jb(e){return!!e}function na({showLabel:e=!0}){let{view:t,fields:r,onChangeView:o}=(0,Bf.useContext)(Y),n=ra(t,r);if(!n?.length)return null;let i=r.find(g=>g.id===t.titleField),a=r.find(g=>g.id===t.mediaField),l=r.find(g=>g.id===t.descriptionField),s=[{field:i,isVisibleFlag:"showTitle"},{field:a,isVisibleFlag:"showMedia"},{field:l,isVisibleFlag:"showDescription"}].filter(({field:g})=>jb(g)),u=t.fields??[],f=n.filter(g=>u.includes(g.id)).length,d=s.filter(({isVisibleFlag:g})=>t[g]??!0),m=d.length+f,p=m===1&&d.length===1;return(0,Pt.jsxs)(F,{direction:"column",className:"dataviews-field-control",children:[e&&(0,Pt.jsx)(eo.BaseControl.VisualLabel,{children:(0,Lf.__)("Properties")}),(0,Pt.jsx)(F,{direction:"column",className:"dataviews-view-config__properties",children:(0,Pt.jsxs)(eo.__experimentalItemGroup,{isBordered:!0,isSeparated:!0,size:"medium",children:[s.map(({field:g,isVisibleFlag:S})=>{let b=t[S]??!0,y=p&&b?{...g,enableHiding:!1}:g;return(0,Pt.jsx)(Ff,{field:y,isVisible:b,onToggleVisibility:()=>{o({...t,[S]:!b})}},g.id)}),n.map(g=>{let S=u.includes(g.id),b=m===1&&S?{...g,enableHiding:!1}:g;return(0,Pt.jsx)(Ff,{field:b,isVisible:S,onToggleVisibility:()=>{o({...t,fields:S?u.filter(y=>y!==g.id):[...u,g.id]})}},g.id)})]})})]})}var ia=c(z(),1);function Qt(e,t={delay:400}){let[r,o]=(0,ia.useState)(!1);return(0,ia.useEffect)(()=>{if(!e)return;let n=setTimeout(()=>{o(!0)},t.delay);return()=>{clearTimeout(n),o(!1)}},[e,t.delay]),r}var $=c(R(),1);function zf(e,t){if(e)return e;if(t==="integer"||t==="number")return"end"}function Wb({item:e,fields:t,column:r,align:o}){let n=t.find(a=>a.id===r);if(!n)return null;let i=j("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,$.jsx)("div",{className:i,children:(0,$.jsx)(n.render,{item:e,field:n})})}function Hf({hasBulkActions:e,item:t,level:r,actions:o,fields:n,id:i,view:a,titleField:l,mediaField:s,descriptionField:u,selection:f,getItemId:d,isItemClickable:m,onClickItem:p,renderItemLink:g,onChangeSelection:S,isActionsColumnSticky:b,posinset:y}){let{paginationInfo:_}=(0,yt.useContext)(Y),A=ea(o,t),V=A&&f.includes(i),{showTitle:I=!0,showMedia:M=!0,showDescription:N=!0,infiniteScrollEnabled:C}=a,T=(0,yt.useRef)(!1),k=a.fields??[],h=l&&I||s&&M||u&&N;return(0,$.jsxs)("tr",{className:j("dataviews-view-table__row",{"is-selected":A&&V,"has-bulk-actions":A}),onTouchStart:()=>{T.current=!0},"aria-setsize":C?_.totalItems:void 0,"aria-posinset":y,role:C?"article":void 0,onMouseDown:E=>{let P=(0,jl.isAppleOS)()?E.metaKey:E.ctrlKey;E.button===0&&P&&window.navigator.userAgent.toLowerCase().includes("firefox")&&E?.preventDefault()},onClick:E=>{if(!A)return;((0,jl.isAppleOS)()?E.metaKey:E.ctrlKey)&&!T.current&&document.getSelection()?.type!=="Range"&&S(f.includes(i)?f.filter(w=>i!==w):[...f,i])},children:[e&&(0,$.jsx)("td",{className:"dataviews-view-table__checkbox-column",children:(0,$.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,$.jsx)(Xr,{item:t,selection:f,onChangeSelection:S,getItemId:d,titleField:l,disabled:!A})})}),h&&(0,$.jsx)("td",{children:(0,$.jsx)(oa,{item:t,level:r,titleField:I?l:void 0,mediaField:M?s:void 0,descriptionField:N?u:void 0,isItemClickable:m,onClickItem:p,renderItemLink:g})}),k.map(E=>{let{width:P,maxWidth:w,minWidth:O,align:x}=a.layout?.styles?.[E]??{},v=n.find(B=>B.id===E),D=zf(x,v?.type);return(0,$.jsx)("td",{style:{width:P,maxWidth:w,minWidth:O},children:(0,$.jsx)(Wb,{fields:n,item:t,column:E,align:D})},E)}),!!o?.length&&(0,$.jsx)("td",{className:j("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":b}),onClick:E=>E.stopPropagation(),children:(0,$.jsx)(qo,{item:t,actions:o})})]})}function Yb({actions:e,data:t,fields:r,getItemId:o,getItemLevel:n,isLoading:i=!1,onChangeView:a,onChangeSelection:l,selection:s,setOpenedFilter:u,onClickItem:f,isItemClickable:d,renderItemLink:m,view:p,className:g,empty:S}){let{containerRef:b}=(0,yt.useContext)(Y),y=Qt(i),_=(0,yt.useRef)(new Map),A=(0,yt.useRef)(void 0),[V,I]=(0,yt.useState)(),[M,N]=(0,yt.useState)(null);(0,yt.useEffect)(()=>{A.current&&(A.current.focus(),A.current=void 0)});let C=(0,yt.useId)(),T=Mf({scrollContainerRef:b,enabled:!!e?.length}),k=Ko(e,t);if(V){A.current=V,I(void 0);return}let h=q=>{let Q=_.current.get(q.id),he=Q?_.current.get(Q.fallback):void 0;I(he?.node)},E=q=>{q.preventDefault(),q.stopPropagation();let Q={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(Q)})},P=!!t?.length,w=r.find(q=>q.id===p.titleField),O=r.find(q=>q.id===p.mediaField),x=r.find(q=>q.id===p.descriptionField),v=p.groupBy?.field?r.find(q=>q.id===p.groupBy?.field):null,D=v?Dt(t,v):null,{showTitle:B=!0,showMedia:oe=!0,showDescription:fe=!0}=p,Ne=w&&B||O&&oe||x&&fe,He=p.fields??[],ot=(q,Q)=>he=>{he?_.current.set(q,{node:he,fallback:He[Q>0?Q-1:1]}):_.current.delete(q)},qt=p.infiniteScrollEnabled&&!D,vr=(0,yo.isRTL)();return P?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)("table",{className:j("dataviews-view-table",g,{[`has-${p.layout?.density}-density`]:p.layout?.density&&["compact","comfortable"].includes(p.layout.density),"has-bulk-actions":k,"is-refreshing":!qt&&y}),"aria-busy":i,"aria-describedby":C,role:qt?"feed":void 0,inert:!qt&&i?"true":void 0,children:[(0,$.jsxs)("colgroup",{children:[k&&(0,$.jsx)("col",{className:"dataviews-view-table__col-checkbox"}),Ne&&(0,$.jsx)("col",{className:"dataviews-view-table__col-first-data"}),He.map((q,Q)=>(0,$.jsx)("col",{className:j(`dataviews-view-table__col-${q}`,{"dataviews-view-table__col-first-data":!Ne&&Q===0})},`col-${q}`)),!!e?.length&&(0,$.jsx)("col",{className:"dataviews-view-table__col-actions"})]}),M&&(0,$.jsx)(aa.Popover,{anchor:M,onClose:()=>N(null),placement:"bottom-start",children:(0,$.jsx)(na,{showLabel:!1})}),(0,$.jsx)("thead",{onContextMenu:E,children:(0,$.jsxs)("tr",{className:"dataviews-view-table__row",children:[k&&(0,$.jsx)("th",{className:"dataviews-view-table__checkbox-column",scope:"col",onContextMenu:E,children:(0,$.jsx)(Mn,{selection:s,onChangeSelection:l,data:t,actions:e,getItemId:o})}),Ne&&(0,$.jsx)("th",{scope:"col",children:w&&(0,$.jsx)(Xo,{ref:ot(w.id,0),fieldId:w.id,view:p,fields:r,onChangeView:a,onHide:h,setOpenedFilter:u,canMove:!1,canInsertLeft:vr?p.layout?.enableMoving??!0:!1,canInsertRight:vr?!1:p.layout?.enableMoving??!0})}),He.map((q,Q)=>{let{width:he,maxWidth:hr,minWidth:br,align:go}=p.layout?.styles?.[q]??{},vo=r.find(Fs=>Fs.id===q),jo=zf(go,vo?.type),Pn=p.layout?.enableMoving??!0;return(0,$.jsx)("th",{style:{width:he,maxWidth:hr,minWidth:br,textAlign:jo},"aria-sort":p.sort?.direction&&p.sort?.field===q?Ki[p.sort.direction]:void 0,scope:"col",children:(0,$.jsx)(Xo,{ref:ot(q,Q),fieldId:q,view:p,fields:r,onChangeView:a,onHide:h,setOpenedFilter:u,canMove:Pn,canInsertLeft:Pn,canInsertRight:Pn})},q)}),!!e?.length&&(0,$.jsx)("th",{className:j("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":!T}),children:(0,$.jsx)("span",{className:"dataviews-view-table-header",children:(0,yo.__)("Actions")})})]})}),P&&v&&D?Array.from(D.entries()).map(([q,Q])=>(0,$.jsxs)("tbody",{children:[(0,$.jsx)("tr",{className:"dataviews-view-table__group-header-row",children:(0,$.jsx)("td",{colSpan:He.length+(Ne?1:0)+(k?1:0)+(e?.length?1:0),className:"dataviews-view-table__group-header-cell",children:p.groupBy?.showLabel===!1?q:(0,yo.sprintf)((0,yo.__)("%1$s: %2$s"),v.label,q)})}),Q.map((he,hr)=>(0,$.jsx)(Hf,{item:he,level:p.showLevels&&typeof n=="function"?n(he):void 0,hasBulkActions:k,actions:e,fields:r,id:o(he)||hr.toString(),view:p,titleField:w,mediaField:O,descriptionField:x,selection:s,getItemId:o,onChangeSelection:l,onClickItem:f,renderItemLink:m,isItemClickable:d,isActionsColumnSticky:!T},o(he)))]},`group-${q}`)):(0,$.jsx)("tbody",{children:P&&t.map((q,Q)=>(0,$.jsx)(Hf,{item:q,level:p.showLevels&&typeof n=="function"?n(q):void 0,hasBulkActions:k,actions:e,fields:r,id:o(q)||Q.toString(),view:p,titleField:w,mediaField:O,descriptionField:x,selection:s,getItemId:o,onChangeSelection:l,onClickItem:f,renderItemLink:m,isItemClickable:d,isActionsColumnSticky:!T,posinset:qt?Q+1:void 0},o(q)))})]}),qt&&i&&(0,$.jsx)("div",{className:"dataviews-loading",id:C,children:(0,$.jsx)("p",{className:"dataviews-loading-more",children:(0,$.jsx)(aa.Spinner,{})})})]}):(0,$.jsx)("div",{className:j("dataviews-no-results",{"is-refreshing":y}),id:C,children:S})}var jf=Yb;var Uf=c(U(),1),ua=c(G(),1);var At=c(U(),1);var Fn=c(G(),1),Yf=c(Et(),1),Gf=c(Ml(),1),la=c(z(),1);var Gb=c(U(),1),Ub=c(G(),1),sa=c(z(),1);var qb=c(R(),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}],Kb=$b[2].value;function Wf(){let e=(0,sa.useContext)(Y),t=e.view;return(0,sa.useMemo)(()=>{let r=e.containerWidth,o=32,n=t.layout?.previewSize??Kb,i=Math.floor((r+o)/(n+o));return Math.max(1,i)},[e.containerWidth,t.layout?.previewSize])}var ie=c(R(),1),{Badge:Xb}=K(At.privateApis);function Zb(e,t){let r=[];for(let o=0,n=e.length;o{if(y.onClickCapture?.(x),(0,Gf.isAppleOS)()?x.metaKey:x.ctrlKey){if(x.stopPropagation(),x.preventDefault(),!M)return;o(r.includes(N)?r.filter(v=>N!==v):[...r,N])}},children:[(0,ie.jsx)(Jr,{item:s,isItemClickable:i,onClickItem:n,renderItemLink:a,className:j("dataviews-view-grid__media",{"dataviews-view-grid__media--placeholder":!h}),...w,children:E}),S&&(0,ie.jsx)(Xr,{item:s,selection:r,onChangeSelection:o,getItemId:l,titleField:d,disabled:!M}),!!u?.length&&(0,ie.jsx)("div",{className:"dataviews-view-grid__media-actions",children:(0,ie.jsx)(qo,{item:s,actions:u,isCompact:!0})}),A&&(0,ie.jsx)("div",{className:"dataviews-view-grid__title",children:(0,ie.jsx)(Jr,{item:s,isItemClickable:i,onClickItem:n,renderItemLink:a,className:"dataviews-view-grid__title-field dataviews-title-field",...O,title:d?.getValueFormatted({item:s,field:d})||void 0,children:P})}),(0,ie.jsxs)(F,{direction:"column",gap:"xs",children:[I&&m?.render&&(0,ie.jsx)(m.render,{item:s,field:m}),!!g?.length&&(0,ie.jsx)(F,{direction:"row",className:"dataviews-view-grid__badge-fields",gap:"sm",wrap:"wrap",align:"top",justify:"flex-start",children:g.map(x=>(0,ie.jsx)(Xb,{className:"dataviews-view-grid__field-value",children:(0,ie.jsx)(x.render,{item:s,field:x})},x.id))}),!!p?.length&&(0,ie.jsx)(F,{direction:"column",className:"dataviews-view-grid__fields",gap:"xs",children:p.map(x=>(0,ie.jsx)(At.Flex,{className:"dataviews-view-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,ie.jsxs)(ie.Fragment,{children:[(0,ie.jsx)(At.Tooltip,{text:x.label,children:(0,ie.jsx)(At.FlexItem,{className:"dataviews-view-grid__field-name",children:x.header})}),(0,ie.jsx)(At.FlexItem,{className:"dataviews-view-grid__field-value",style:{maxHeight:"none"},children:(0,ie.jsx)(x.render,{item:s,field:x})})]})},x.id))})]})]})});function Wl({data:e,isInfiniteScroll:t,className:r,inert:o,isLoading:n,view:i,fields:a,selection:l,onChangeSelection:s,onClickItem:u,isItemClickable:f,renderItemLink:d,getItemId:m,actions:p}){let{paginationInfo:g,resizeObserverRef:S}=(0,la.useContext)(Y),b=Wf(),y=Ko(p,e),_=a.find(k=>k.id===i?.titleField),A=a.find(k=>k.id===i?.mediaField),V=a.find(k=>k.id===i?.descriptionField),I=i.fields??[],{regularFields:M,badgeFields:N}=I.reduce((k,h)=>{let E=a.find(w=>w.id===h);if(!E)return k;let P=i.layout?.badgeFields?.includes(h)?"badgeFields":"regularFields";return k[P].push(E),k},{regularFields:[],badgeFields:[]}),C="900px",T=Math.ceil(e.length/b);return(0,ie.jsx)(At.Composite,{role:t?"feed":"grid",className:j("dataviews-view-grid",r),focusWrap:!0,"aria-busy":n,"aria-rowcount":t?void 0:T,ref:S,inert:o,children:Zb(e,b).map((k,h)=>(0,ie.jsx)(At.Composite.Row,{render:(0,ie.jsx)("div",{role:"row","aria-rowindex":h+1,"aria-label":(0,Fn.sprintf)((0,Fn.__)("Row %d"),h+1),className:"dataviews-view-grid__row",style:{gridTemplateColumns:`repeat( ${b}, minmax(0, 1fr) )`}}),children:k.map((E,P)=>{let w=h*b+P;return(0,ie.jsx)(At.Composite.Item,{render:O=>(0,ie.jsx)(Qb,{...O,role:t?"article":"gridcell","aria-setsize":t?g.totalItems:void 0,"aria-posinset":t?w+1:void 0,view:i,selection:l,onChangeSelection:s,onClickItem:u,isItemClickable:f,renderItemLink:d,getItemId:m,item:E,actions:p,mediaField:A,titleField:_,descriptionField:V,regularFields:M,badgeFields:N,hasBulkActions:y,config:{sizes:C}})},m(E))})},h))})}var Tt=c(R(),1);function Jb({actions:e,data:t,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,onClickItem:a,isItemClickable:l,renderItemLink:s,selection:u,view:f,className:d,empty:m}){let p=Qt(!!n),g=!!t?.length,S=f.groupBy?.field?r.find(A=>A.id===f.groupBy?.field):null,b=S?Dt(t,S):null,y=f.infiniteScrollEnabled&&!b;if(!g)return(0,Tt.jsx)("div",{className:j("dataviews-no-results",{"is-refreshing":p}),children:m});let _={className:j(d,{"is-refreshing":!y&&p}),inert:!y&&n?"true":void 0,isLoading:n,view:f,fields:r,selection:u,onChangeSelection:i,onClickItem:a,isItemClickable:l,renderItemLink:s,getItemId:o,actions:e};return(0,Tt.jsxs)(Tt.Fragment,{children:[g&&S&&b&&(0,Tt.jsx)(F,{direction:"column",gap:"lg",children:Array.from(b.entries()).map(([A,V])=>(0,Tt.jsxs)(F,{direction:"column",gap:"sm",children:[(0,Tt.jsx)("h3",{className:"dataviews-view-grid__group-header",children:f.groupBy?.showLabel===!1?A:(0,ua.sprintf)((0,ua.__)("%1$s: %2$s"),S.label,A)}),(0,Tt.jsx)(Wl,{..._,data:V,isInfiniteScroll:!1})]},A))}),!b&&(0,Tt.jsx)(Wl,{..._,data:t,isInfiniteScroll:!!y}),y&&n&&(0,Tt.jsx)("p",{className:"dataviews-loading-more",children:(0,Tt.jsx)(Uf.Spinner,{})})]})}var qf=Jb;var ca=c(Et(),1),qe=c(U(),1),Be=c(z(),1),Ln=c(G(),1);var ql=c(jt(),1);var W=c(R(),1),{Menu:Yl}=K(qe.privateApis);function Gl(e){return`${e}-item-wrapper`}function ex(e,t){return`${e}-primary-action-${t}`}function Ul(e){return`${e}-dropdown`}function tx({idPrefix:e,primaryAction:t,item:r}){let o=(0,ql.useRegistry)(),[n,i]=(0,Be.useState)(!1),a=ex(e,t.id),l=typeof t.label=="string"?t.label:t.label([r]);return"RenderModal"in t?(0,W.jsx)("div",{role:"gridcell",children:(0,W.jsx)(qe.Composite.Item,{id:a,render:(0,W.jsx)(qe.Button,{disabled:!!t.disabled,accessibleWhenDisabled:!0,text:l,size:"small",onClick:()=>i(!0)}),children:n&&(0,W.jsx)(xo,{action:t,items:[r],closeModal:()=>i(!1)})})},t.id):(0,W.jsx)("div",{role:"gridcell",children:(0,W.jsx)(qe.Composite.Item,{id:a,render:(0,W.jsx)(qe.Button,{disabled:!!t.disabled,accessibleWhenDisabled:!0,size:"small",onClick:()=>{t.callback([r],{registry:o})},children:l})})},t.id)}function $f({view:e,actions:t,idPrefix:r,isSelected:o,item:n,titleField:i,mediaField:a,descriptionField:l,onSelect:s,otherFields:u,onDropdownTriggerKeyDown:f,posinset:d}){let{showTitle:m=!0,showMedia:p=!0,showDescription:g=!0,infiniteScrollEnabled:S}=e,b=(0,Be.useRef)(null),y=`${r}-label`,_=`${r}-description`,A=(0,ql.useRegistry)(),[V,I]=(0,Be.useState)(!1),[M,N]=(0,Be.useState)(null),C=({type:x})=>{I(x==="mouseenter")},{paginationInfo:T}=(0,Be.useContext)(Y);(0,Be.useEffect)(()=>{o&&b.current?.scrollIntoView({behavior:"auto",block:"nearest",inline:"nearest"})},[o]);let{primaryAction:k,eligibleActions:h}=(0,Be.useMemo)(()=>{let x=t.filter(D=>!D.isEligible||D.isEligible(n));return{primaryAction:x.filter(D=>D.isPrimary)[0],eligibleActions:x}},[t,n]),E=k&&t.length===1,P=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,w=m&&i?.render?(0,W.jsx)(i.render,{item:n,field:i}):null,O=h?.length>0&&(0,W.jsxs)(F,{direction:"row",gap:"md",className:"dataviews-view-list__item-actions",children:[k&&(0,W.jsx)(tx,{idPrefix:r,primaryAction:k,item:n}),!E&&(0,W.jsxs)("div",{role:"gridcell",children:[(0,W.jsxs)(Yl,{placement:"bottom-end",children:[(0,W.jsx)(Yl.TriggerButton,{render:(0,W.jsx)(qe.Composite.Item,{id:Ul(r),render:(0,W.jsx)(qe.Button,{size:"small",icon:Nn,label:(0,Ln.__)("Actions"),accessibleWhenDisabled:!0,disabled:!t.length,onKeyDown:f})})}),(0,W.jsx)(Yl.Popover,{children:(0,W.jsx)(Ll,{actions:h,item:n,registry:A,setActiveModalAction:N})})]}),!!M&&(0,W.jsx)(xo,{action:M,items:[n],closeModal:()=>N(null)})]})]});return(0,W.jsx)(qe.Composite.Row,{ref:b,render:(0,W.jsx)("div",{"aria-posinset":d,"aria-setsize":S?T.totalItems:void 0}),role:S?"article":"row",className:j({"is-selected":o,"is-hovered":V}),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)(qe.Composite.Item,{id:Gl(r),"aria-pressed":o,"aria-labelledby":y,"aria-describedby":_,className:"dataviews-view-list__item",onClick:()=>s(n)})}),(0,W.jsxs)(F,{direction:"row",gap:"md",justify:"start",align:"flex-start",style:{flex:1,minWidth:0},children:[P,(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:w}),O]}),g&&l?.render&&(0,W.jsx)("div",{className:"dataviews-view-list__field",children:(0,W.jsx)(l.render,{item:n,field:l})}),(0,W.jsx)("div",{className:"dataviews-view-list__fields",id:_,children:u.map(x=>(0,W.jsxs)("div",{className:"dataviews-view-list__field",children:[(0,W.jsx)(qe.VisuallyHidden,{as:"span",className:"dataviews-view-list__field-label",children:x.label}),(0,W.jsx)("span",{className:"dataviews-view-list__field-value",children:(0,W.jsx)(x.render,{item:n,field:x})})]},x.id))})]})]})]})})}function rx(e){return!!e}function $l(e){let{actions:t,data:r,fields:o,getItemId:n,isLoading:i,onChangeSelection:a,selection:l,view:s,className:u,empty:f}=e,d=(0,ca.useInstanceId)($l,"view-list"),m=Qt(!!i),p=r?.findLast(x=>l.includes(n(x))),g=o.find(x=>x.id===s.titleField),S=o.find(x=>x.id===s.mediaField),b=o.find(x=>x.id===s.descriptionField),y=(s?.fields??[]).map(x=>o.find(v=>x===v.id)).filter(rx),_=x=>a([n(x)]),A=(0,Be.useCallback)(x=>`${d}-${n(x)}`,[d,n]),V=(0,Be.useCallback)((x,v)=>v.startsWith(A(x)),[A]),[I,M]=(0,Be.useState)(void 0);(0,Be.useEffect)(()=>{p&&M(Gl(A(p)))},[p,A]);let N=r.findIndex(x=>V(x,I??"")),C=(0,ca.usePrevious)(N),T=N!==-1,k=(0,Be.useCallback)((x,v)=>{let D=Math.min(r.length-1,Math.max(0,x));if(!r[D])return;let B=A(r[D]),oe=v(B);M(oe),document.getElementById(oe)?.focus()},[r,A]);(0,Be.useEffect)(()=>{!T&&(C!==void 0&&C!==-1)&&k(C,Gl)},[T,k,C]);let h=(0,Be.useCallback)(x=>{x.key==="ArrowDown"&&(x.preventDefault(),k(N+1,Ul)),x.key==="ArrowUp"&&(x.preventDefault(),k(N-1,Ul))},[k,N]),E=!!r?.length,P=s.groupBy?.field?o.find(x=>x.id===s.groupBy?.field):null,w=E&&P?Dt(r,P):null,O=s.infiniteScrollEnabled&&!w;return E?E&&P&&w?(0,W.jsx)(qe.Composite,{id:`${d}`,render:(0,W.jsx)("div",{}),className:"dataviews-view-list__group",role:"grid",activeId:I,setActiveId:M,children:(0,W.jsx)(F,{direction:"column",gap:"lg",className:j("dataviews-view-list",u),children:Array.from(w.entries()).map(([x,v])=>(0,W.jsxs)(F,{direction:"column",gap:"sm",children:[(0,W.jsx)("h3",{className:"dataviews-view-list__group-header",children:s.groupBy?.showLabel===!1?x:(0,Ln.sprintf)((0,Ln.__)("%1$s: %2$s"),P.label,x)}),v.map(D=>{let B=A(D);return(0,W.jsx)($f,{view:s,idPrefix:B,actions:t,item:D,isSelected:D===p,onSelect:_,mediaField:S,titleField:g,descriptionField:b,otherFields:y,onDropdownTriggerKeyDown:h},B)})]},x))})}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(qe.Composite,{id:d,render:(0,W.jsx)("div",{}),className:j("dataviews-view-list",u,{[`has-${s.layout?.density}-density`]:s.layout?.density&&["compact","comfortable"].includes(s.layout.density),"is-refreshing":!O&&m}),role:s.infiniteScrollEnabled?"feed":"grid",activeId:I,setActiveId:M,inert:!O&&i?"true":void 0,children:r.map((x,v)=>{let D=A(x);return(0,W.jsx)($f,{view:s,idPrefix:D,actions:t,item:x,isSelected:x===p,onSelect:_,mediaField:S,titleField:g,descriptionField:b,otherFields:y,onDropdownTriggerKeyDown:h,posinset:s.infiniteScrollEnabled?v+1:void 0},D)})}),O&&i&&(0,W.jsx)("p",{className:"dataviews-loading-more",children:(0,W.jsx)(qe.Spinner,{})})]}):(0,W.jsx)("div",{className:j("dataviews-no-results",{"is-refreshing":m}),children:f})}var rd=c(U(),1);var fa=c(G(),1),Kf=c(z(),1);var Qo=c(R(),1);function Xf({groupName:e,groupData:t,groupField:r,showLabel:o=!0,children:n}){let i=o?(0,Kf.createInterpolateElement)((0,fa.sprintf)((0,fa.__)("%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 Zf=c(U(),1),wo=c(z(),1),Qf=c(jt(),1),Jf=c(Et(),1);var De=c(R(),1);function ox(e){let{view:t,actions:r,item:o,titleField:n,mediaField:i,descriptionField:a,otherFields:l,posinset:s,onClickItem:u,renderItemLink:f,isItemClickable:d}=e,{showTitle:m=!0,showMedia:p=!0,showDescription:g=!0,infiniteScrollEnabled:S}=t,b=(0,wo.useRef)(null),y=(0,Qf.useRegistry)(),{paginationInfo:_}=(0,wo.useContext)(Y),{primaryActions:A,eligibleActions:V}=(0,wo.useMemo)(()=>{let h=r.filter(P=>!P.isEligible||P.isEligible(o));return{primaryActions:h.filter(P=>P.isPrimary),eligibleActions:h}},[r,o]),I=(0,Jf.useViewportMatch)("medium","<"),M=t.layout?.density??"balanced",N=p&&M!=="compact"&&i?.render?(0,De.jsx)(i.render,{item:o,field:i,config:{sizes:M==="comfortable"?"32px":"24px"}}):null,C=(0,De.jsx)("div",{className:"dataviews-view-activity__item-type-icon",children:N||(0,De.jsx)("span",{className:"dataviews-view-activity__item-bullet","aria-hidden":"true"})}),T=m&&n?.render?(0,De.jsx)(n.render,{item:o,field:n}):null,k=(0,wo.useMemo)(()=>M==="comfortable"?"md":"sm",[M]);return(0,De.jsx)("div",{ref:b,role:S?"article":void 0,"aria-posinset":s,"aria-setsize":S?_.totalItems:void 0,className:j("dataviews-view-activity__item",M==="compact"&&"is-compact",M==="balanced"&&"is-balanced",M==="comfortable"&&"is-comfortable"),children:(0,De.jsxs)(F,{direction:"row",gap:"lg",justify:"start",align:"flex-start",children:[(0,De.jsx)(F,{direction:"column",gap:"xs",align:"center",className:"dataviews-view-activity__item-type",children:C}),(0,De.jsxs)(F,{direction:"column",gap:k,align:"flex-start",className:"dataviews-view-activity__item-content",children:[T&&(0,De.jsx)(Jr,{item:o,isItemClickable:d,onClickItem:u,renderItemLink:f,className:"dataviews-view-activity__item-title",children:T}),g&&a&&(0,De.jsx)("div",{className:"dataviews-view-activity__item-description",children:(0,De.jsx)(a.render,{item:o,field:a})}),(0,De.jsx)("div",{className:"dataviews-view-activity__item-fields",children:l.map(h=>(0,De.jsxs)("div",{className:"dataviews-view-activity__item-field",children:[(0,De.jsx)(Zf.VisuallyHidden,{as:"span",className:"dataviews-view-activity__item-field-label",children:h.label}),(0,De.jsx)("span",{className:"dataviews-view-activity__item-field-value",children:(0,De.jsx)(h.render,{item:o,field:h})})]},h.id))}),!!A?.length&&(0,De.jsx)(Bl,{item:o,actions:A,registry:y,buttonVariant:"secondary"})]}),(A.length0)&&(0,De.jsx)("div",{className:"dataviews-view-activity__item-actions",children:(0,De.jsx)(qo,{item:o,actions:V,isCompact:!0})})]})})}var ed=ox;var td=c(le(),1);function nx(e){return!!e}function Kl(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),l=r.find(u=>u.id===n.descriptionField),s=(n?.fields??[]).map(u=>r.find(f=>u===f.id)).filter(nx);return t.map((u,f)=>(0,td.createElement)(ed,{...e,key:o(u),item:u,mediaField:a,titleField:i,descriptionField:l,otherFields:s,posinset:n.infiniteScrollEnabled?f+1:void 0}))}var It=c(R(),1);function od(e){let{empty:t,data:r,fields:o,isLoading:n,view:i,className:a}=e,l=Qt(!!n),s=!!r?.length,u=i.groupBy?.field?o.find(S=>S.id===i.groupBy?.field):null,f=s&&u?Dt(r,u):null,d=i.infiniteScrollEnabled&&!f;if(!s)return(0,It.jsx)("div",{className:j("dataviews-no-results",{"is-refreshing":l}),children:t});let m=!d&&!!n,p=j("dataviews-view-activity",a,{"is-refreshing":!d&&l}),g=f?Array.from(f.entries()):[];return s&&u&&f?(0,It.jsx)(F,{direction:"column",gap:"sm",className:p,inert:m?"true":void 0,children:g.map(([S,b])=>(0,It.jsx)(Xf,{groupName:S,groupData:b,groupField:u,showLabel:i.groupBy?.showLabel!==!1,children:(0,It.jsx)(Kl,{...e,data:b})},S))}):(0,It.jsxs)(It.Fragment,{children:[(0,It.jsx)("div",{className:p,role:i.infiniteScrollEnabled?"feed":void 0,inert:m?"true":void 0,children:(0,It.jsx)(Kl,{...e})}),d&&n&&(0,It.jsx)("p",{className:"dataviews-loading-more",children:(0,It.jsx)(rd.Spinner,{})})]})}var wt=c(U(),1),Hn=c(G(),1),cd=c(Et(),1),fd=c(z(),1);var id=c(U(),1),ix=c(jt(),1),da=c(z(),1);var ax=c(G(),1);var Bn=c(U(),1),Jo=c(z(),1),Ot=c(G(),1);var Sr=c(R(),1);function Xl(){let{view:e,onChangeView:t,paginationInfo:{totalItems:r=0,totalPages:o}}=(0,Jo.useContext)(Y);if(!r||!o||e.infiniteScrollEnabled)return null;let n=e.page??1,i=Array.from(Array(o)).map((a,l)=>{let s=l+1;return{value:s.toString(),label:s.toString(),"aria-label":n===s?(0,Ot.sprintf)((0,Ot.__)("Page %1$d of %2$d"),n,o):s.toString()}});return!!r&&o!==1&&(0,Sr.jsxs)(F,{direction:"row",className:"dataviews-pagination",justify:"end",align:"center",gap:"xl",children:[(0,Sr.jsx)(F,{direction:"row",justify:"flex-start",align:"center",gap:"xs",className:"dataviews-pagination__page-select",children:(0,Jo.createInterpolateElement)((0,Ot.sprintf)((0,Ot._x)("
Page
%1$s
of %2$d
","paging"),"",o),{div:(0,Sr.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,Sr.jsx)(Bn.SelectControl,{"aria-label":(0,Ot.__)("Current page"),value:n.toString(),options:i,onChange:a=>{t({...e,page:+a})},size:"small",variant:"minimal"})})}),(0,Sr.jsxs)(F,{direction:"row",gap:"xs",align:"center",children:[(0,Sr.jsx)(Bn.Button,{onClick:()=>t({...e,page:n-1}),disabled:n===1,accessibleWhenDisabled:!0,label:(0,Ot.__)("Previous page"),icon:(0,Ot.isRTL)()?zi:Wi,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,Sr.jsx)(Bn.Button,{onClick:()=>t({...e,page:n+1}),disabled:n>=o,accessibleWhenDisabled:!0,label:(0,Ot.__)("Next page"),icon:(0,Ot.isRTL)()?Wi:zi,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})}var nd=(0,Jo.memo)(Xl);var ad=c(R(),1);function ma(e){return(0,da.useMemo)(()=>e?.every(t=>t.supportsBulk),[e])}var sd=c(z(),1);var ld=c(R(),1),Zl=(0,sd.forwardRef)(({className:e,previewSize:t,...r},o)=>(0,ld.jsx)("div",{ref:o,className:j("dataviews-view-grid-items",e),style:{gridTemplateColumns:t&&`repeat(auto-fill, minmax(${t}px, 1fr))`},...r}));var X=c(R(),1),{Badge:sx}=K(wt.privateApis);function ud({view:e,multiselect:t,selection:r,onChangeSelection:o,getItemId:n,item:i,mediaField:a,titleField:l,descriptionField:s,regularFields:u,badgeFields:f,config:d,posinset:m,setsize:p}){let{showTitle:g=!0,showMedia:S=!0,showDescription:b=!0}=e,y=n(i),_=r.includes(y),A=a?.render?(0,X.jsx)(a.render,{item:i,field:a,config:d}):null,V=g&&l?.render?(0,X.jsx)(l.render,{item:i,field:l}):null;return(0,X.jsxs)(wt.Composite.Item,{"aria-label":l?l.getValue({item:i})||(0,Hn.__)("(no title)"):void 0,render:({children:I,...M})=>(0,X.jsx)(F,{direction:"column",children:I,...M}),role:"option","aria-posinset":m,"aria-setsize":p,className:j("dataviews-view-picker-grid__card",{"is-selected":_}),"aria-selected":_,onClick:()=>{if(_)o(r.filter(I=>y!==I));else{let I=t?[...r,y]:[y];o(I)}},children:[S&&A&&(0,X.jsx)("div",{className:"dataviews-view-picker-grid__media",children:A}),S&&A&&(0,X.jsx)(Xr,{item:i,selection:r,onChangeSelection:o,getItemId:n,titleField:l,disabled:!1,"aria-hidden":!0,tabIndex:-1}),g&&(0,X.jsx)(F,{direction:"row",justify:"space-between",className:"dataviews-view-picker-grid__title-actions",children:(0,X.jsx)("div",{className:"dataviews-view-picker-grid__title-field dataviews-title-field",children:V})}),(0,X.jsxs)(F,{direction:"column",gap:"xs",children:[b&&s?.render&&(0,X.jsx)(s.render,{item:i,field:s}),!!f?.length&&(0,X.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,X.jsx)(sx,{className:"dataviews-view-picker-grid__field-value",children:(0,X.jsx)(I.render,{item:i,field:I})},I.id))}),!!u?.length&&(0,X.jsx)(F,{direction:"column",className:"dataviews-view-picker-grid__fields",gap:"xs",children:u.map(I=>(0,X.jsx)(wt.Flex,{className:"dataviews-view-picker-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(wt.FlexItem,{className:"dataviews-view-picker-grid__field-name",children:I.header}),(0,X.jsx)(wt.FlexItem,{className:"dataviews-view-picker-grid__field-value",style:{maxHeight:"none"},children:(0,X.jsx)(I.render,{item:i,field:I})})]})},I.id))})]})]},y)}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,X.jsxs)(F,{direction:"column",gap:"sm",role:"group","aria-labelledby":n,children:[(0,X.jsx)("h3",{className:"dataviews-view-picker-grid-group__header",id:n,children:r?(0,Hn.sprintf)((0,Hn.__)("%1$s: %2$s"),t.label,e):e}),o]},e)}function lx({actions:e,data:t,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,selection:a,view:l,className:s,empty:u}){let{resizeObserverRef:f,paginationInfo:d,itemListLabel:m}=(0,fd.useContext)(Y),p=r.find(P=>P.id===l?.titleField),g=r.find(P=>P.id===l?.mediaField),S=r.find(P=>P.id===l?.descriptionField),b=l.fields??[],{regularFields:y,badgeFields:_}=b.reduce((P,w)=>{let O=r.find(v=>v.id===w);if(!O)return P;let x=l.layout?.badgeFields?.includes(w)?"badgeFields":"regularFields";return P[x].push(O),P},{regularFields:[],badgeFields:[]}),A=!!t?.length,V=l.layout?.previewSize,I=ma(e),M="900px",N=l.groupBy?.field?r.find(P=>P.id===l.groupBy?.field):null,C=N?Dt(t,N):null,T=l.infiniteScrollEnabled&&!C,k=l?.page??1,h=l?.perPage??0,E=T?d?.totalItems:void 0;return(0,X.jsxs)(X.Fragment,{children:[A&&N&&C&&(0,X.jsx)(wt.Composite,{virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":I,className:j("dataviews-view-picker-grid",s),"aria-label":m,render:({children:P,...w})=>(0,X.jsx)(F,{direction:"column",gap:"lg",children:P,...w}),children:Array.from(C.entries()).map(([P,w])=>(0,X.jsx)(dd,{groupName:P,groupField:N,showLabel:l.groupBy?.showLabel!==!1,children:(0,X.jsx)(Zl,{previewSize:V,style:{gridTemplateColumns:V&&`repeat(auto-fill, minmax(${V}px, 1fr))`},"aria-busy":n,ref:f,children:w.map(O=>{let x=(k-1)*h+t.indexOf(O)+1;return(0,X.jsx)(ud,{view:l,multiselect:I,selection:a,onChangeSelection:i,getItemId:o,item:O,mediaField:g,titleField:p,descriptionField:S,regularFields:y,badgeFields:_,config:{sizes:M},posinset:x,setsize:E},o(O))})})},P))}),A&&!C&&(0,X.jsx)(wt.Composite,{render:(0,X.jsx)(Zl,{className:j("dataviews-view-picker-grid",s),previewSize:V,"aria-busy":n,ref:f}),virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":I,"aria-label":m,children:t.map((P,w)=>{let O=T?w+1:void 0;return T||(O=(k-1)*h+w+1),(0,X.jsx)(ud,{view:l,multiselect:I,selection:a,onChangeSelection:i,getItemId:o,item:P,mediaField:g,titleField:p,descriptionField:S,regularFields:y,badgeFields:_,config:{sizes:M},posinset:O,setsize:E},o(P))})}),!A&&(0,X.jsx)("div",{className:j({"dataviews-loading":n,"dataviews-no-results":!n}),children:n?(0,X.jsx)("p",{children:(0,X.jsx)(wt.Spinner,{})}):u}),A&&n&&(0,X.jsx)("p",{className:"dataviews-loading-more",children:(0,X.jsx)(wt.Spinner,{})})]})}var md=lx;var pa=c(G(),1),So=c(U(),1),Mt=c(z(),1);var J=c(R(),1);function ux({item:e,fields:t,column:r,align:o}){let n=t.find(a=>a.id===r);if(!n)return null;let i=j("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,J.jsx)("div",{className:i,children:(0,J.jsx)(n.render,{item:e,field:n})})}function pd({item:e,fields:t,id:r,view:o,titleField:n,mediaField:i,descriptionField:a,selection:l,getItemId:s,onChangeSelection:u,multiselect:f,posinset:d}){let{paginationInfo:m}=(0,Mt.useContext)(Y),p=l.includes(r),[g,S]=(0,Mt.useState)(!1),{showTitle:b=!0,showMedia:y=!0,showDescription:_=!0,infiniteScrollEnabled:A}=o,V=()=>{S(!0)},I=()=>{S(!1)},M=o.fields??[],N=n&&b||i&&y||a&&_;return(0,J.jsxs)(So.Composite.Item,{render:({children:C,...T})=>(0,J.jsx)("tr",{className:j("dataviews-view-table__row",{"is-selected":p,"is-hovered":g}),onMouseEnter:V,onMouseLeave:I,children:C,...T}),"aria-selected":p,"aria-setsize":m.totalItems||void 0,"aria-posinset":d,role:A?"article":"option",onClick:()=>{if(p)u(l.filter(C=>r!==C));else{let C=f?[...l,r]:[r];u(C)}},children:[(0,J.jsx)("td",{className:"dataviews-view-table__checkbox-column",role:"presentation",children:(0,J.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,J.jsx)(Xr,{item:e,selection:l,onChangeSelection:u,getItemId:s,titleField:n,disabled:!1,"aria-hidden":!0,tabIndex:-1})})}),N&&(0,J.jsx)("td",{role:"presentation",children:(0,J.jsx)(oa,{item:e,titleField:b?n:void 0,mediaField:y?i:void 0,descriptionField:_?a:void 0,isItemClickable:()=>!1})}),M.map(C=>{let{width:T,maxWidth:k,minWidth:h,align:E}=o.layout?.styles?.[C]??{};return(0,J.jsx)("td",{style:{width:T,maxWidth:k,minWidth:h},role:"presentation",children:(0,J.jsx)(ux,{fields:t,item:e,column:C,align:E})},C)})]},r)}function cx({actions:e,data:t,fields:r,getItemId:o,isLoading:n=!1,onChangeView:i,onChangeSelection:a,selection:l,setOpenedFilter:s,view:u,className:f,empty:d}){let m=(0,Mt.useRef)(new Map),p=(0,Mt.useRef)(void 0),[g,S]=(0,Mt.useState)(),b=ma(e)??!1;(0,Mt.useEffect)(()=>{p.current&&(p.current.focus(),p.current=void 0)});let y=(0,Mt.useId)();if(g){p.current=g,S(void 0);return}let _=x=>{let v=m.current.get(x.id),D=v?m.current.get(v.fallback):void 0;S(D?.node)},A=!!t?.length,V=r.find(x=>x.id===u.titleField),I=r.find(x=>x.id===u.mediaField),M=r.find(x=>x.id===u.descriptionField),N=u.groupBy?.field?r.find(x=>x.id===u.groupBy?.field):null,C=N?Dt(t,N):null,{showTitle:T=!0,showMedia:k=!0,showDescription:h=!0}=u,E=V&&T||I&&k||M&&h,P=u.fields??[],w=(x,v)=>D=>{D?m.current.set(x,{node:D,fallback:P[v>0?v-1:1]}):m.current.delete(x)},O=u.infiniteScrollEnabled&&!C;return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)("table",{className:j("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,J.jsx)("thead",{role:"presentation",children:(0,J.jsxs)("tr",{className:"dataviews-view-table__row",role:"presentation",children:[(0,J.jsx)("th",{className:"dataviews-view-table__checkbox-column",children:b&&(0,J.jsx)(Mn,{selection:l,onChangeSelection:a,data:t,actions:e,getItemId:o})}),E&&(0,J.jsx)("th",{children:V&&(0,J.jsx)(Xo,{ref:w(V.id,0),fieldId:V.id,view:u,fields:r,onChangeView:i,onHide:_,setOpenedFilter:s,canMove:!1})}),P.map((x,v)=>{let{width:D,maxWidth:B,minWidth:oe,align:fe}=u.layout?.styles?.[x]??{};return(0,J.jsx)("th",{style:{width:D,maxWidth:B,minWidth:oe,textAlign:fe},"aria-sort":u.sort?.direction&&u.sort?.field===x?Ki[u.sort.direction]:void 0,scope:"col",children:(0,J.jsx)(Xo,{ref:w(x,v),fieldId:x,view:u,fields:r,onChangeView:i,onHide:_,setOpenedFilter:s,canMove:u.layout?.enableMoving??!0})},x)})]})}),A&&N&&C?Array.from(C.entries()).map(([x,v])=>(0,J.jsxs)(So.Composite,{virtualFocus:!0,orientation:"vertical",render:(0,J.jsx)("tbody",{role:"group"}),children:[(0,J.jsx)("tr",{className:"dataviews-view-table__group-header-row",role:"presentation",children:(0,J.jsx)("td",{colSpan:P.length+(E?1:0)+1,className:"dataviews-view-table__group-header-cell",role:"presentation",children:u.groupBy?.showLabel===!1?x:(0,pa.sprintf)((0,pa.__)("%1$s: %2$s"),N.label,x)})}),v.map((D,B)=>(0,J.jsx)(pd,{item:D,fields:r,id:o(D)||B.toString(),view:u,titleField:V,mediaField:I,descriptionField:M,selection:l,getItemId:o,onChangeSelection:a,multiselect:b},o(D)))]},`group-${x}`)):(0,J.jsx)(So.Composite,{render:(0,J.jsx)("tbody",{role:"presentation"}),virtualFocus:!0,orientation:"vertical",children:A&&t.map((x,v)=>(0,J.jsx)(pd,{item:x,fields:r,id:o(x)||v.toString(),view:u,titleField:V,mediaField:I,descriptionField:M,selection:l,getItemId:o,onChangeSelection:a,multiselect:b,posinset:v+1},o(x)))})]}),(0,J.jsxs)("div",{className:j({"dataviews-loading":n,"dataviews-no-results":!A&&!n}),id:y,children:[!A&&(n?(0,J.jsx)("p",{children:(0,J.jsx)(So.Spinner,{})}):d),A&&n&&(0,J.jsx)("p",{className:"dataviews-loading-more",children:(0,J.jsx)(So.Spinner,{})})]})]})}var gd=cx;var vd=c(U(),1),hd=c(G(),1),bd=c(z(),1);var xd=c(R(),1),fx=[{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,bd.useContext)(Y),t=e.view,r=fx.filter(a=>e.containerWidth>=a.breakpoint),o=t.layout?.previewSize??230,n=r.map((a,l)=>({...a,index:l})).filter(a=>a.value<=o).sort((a,l)=>l.value-a.value)[0]?.index??0,i=r.map((a,l)=>({value:l}));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 en=c(U(),1),tn=c(G(),1),yd=c(z(),1);var rn=c(R(),1);function zn(){let e=(0,yd.useContext)(Y),t=e.view;return(0,rn.jsxs)(en.__experimentalToggleGroupControl,{size:"__unstable-large",label:(0,tn.__)("Density"),value:t.layout?.density||"balanced",onChange:r=>{e.onChangeView({...t,layout:{...t.layout,density:r}})},isBlock:!0,children:[(0,rn.jsx)(en.__experimentalToggleGroupControlOption,{value:"comfortable",label:(0,tn._x)("Comfortable","Density option for DataView layout")},"comfortable"),(0,rn.jsx)(en.__experimentalToggleGroupControlOption,{value:"balanced",label:(0,tn._x)("Balanced","Density option for DataView layout")},"balanced"),(0,rn.jsx)(en.__experimentalToggleGroupControlOption,{value:"compact",label:(0,tn._x)("Compact","Density option for DataView layout")},"compact")]})}var to=[{type:Yo,label:(0,_r.__)("Table"),component:jf,icon:Pi,viewConfigOptions:zn},{type:Zi,label:(0,_r.__)("Grid"),component:qf,icon:Ti,viewConfigOptions:Ql},{type:pf,label:(0,_r.__)("List"),component:$l,icon:(0,_r.isRTL)()?vl:bl,viewConfigOptions:zn},{type:gf,label:(0,_r.__)("Activity"),component:od,icon:Tl,viewConfigOptions:zn},{type:vf,label:(0,_r.__)("Grid"),component:md,icon:Ti,viewConfigOptions:Ql,isPicker:!0},{type:hf,label:(0,_r.__)("Table"),component:gd,icon:Pi,viewConfigOptions:zn,isPicker:!0}];var bn=c(z(),1);var Wt=c(U(),1),Rr=c(G(),1),qa=c(z(),1);function jn(...e){}function Jl(e,t){if(dx(e)){let r=mx(t)?t():t;return e(r)}return e}function dx(e){return typeof e=="function"}function mx(e){return typeof e=="function"}function St(e,t){return typeof Object.hasOwn=="function"?Object.hasOwn(e,t):Object.prototype.hasOwnProperty.call(e,t)}function ro(...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 eu(e,t){let r={...e};for(let o of t)St(r,o)&&delete r[o];return r}function tu(e,t){let r={};for(let o of t)St(e,o)&&(r[o]=e[o]);return r}function Yn(e){return e}function Qe(e,t){if(!e)throw typeof t!="string"?new Error("Invariant failed"):new Error(t)}function ru(e){return Object.keys(e)}function ou(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 Je(e){let t={};for(let r in e)e[r]!==void 0&&(t[r]=e[r]);return t}function ee(...e){for(let t of e)if(t!==void 0)return t}var wd=c(le(),1);function Sd(e,t){typeof e=="function"?e(t):e&&(e.current=t)}function px(e){return!e||!(0,wd.isValidElement)(e)?!1:"ref"in e.props||"ref"in e}function _d(e){return px(e)?{...e.props}.ref||e.ref:null}function Cd(e,t){let r={...e};for(let o in t){if(!St(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]?{...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 oo=gx();function gx(){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 Co(e,t=!1){var r;let{activeElement:o}=Cr(e);if(!o?.nodeName)return null;if(nu(o)&&((r=o.contentDocument)!=null&&r.body))return Co(o.contentDocument.body,t);if(t){let n=o.getAttribute("aria-activedescendant");if(n){let i=Cr(o).getElementById(n);if(i)return i}}return o}function Jt(e,t){return e===t||e.contains(t)}function nu(e){return e.tagName==="IFRAME"}function Er(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 iu(e){if(typeof e.checkVisibility=="function")return e.checkVisibility();let t=e;return t.offsetWidth>0||t.offsetHeight>0||e.getClientRects().length>0}function mt(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||mt(e)}function au(e){if(mt(e))return e.value;if(e.isContentEditable){let t=Cr(e).createRange();return t.selectNodeContents(e),t.toString()}return""}function on(e){let t=0,r=0;if(mt(e))t=e.selectionStart||0,r=e.selectionEnd||0;else if(e.isContentEditable){let o=Cr(e).getSelection();if(o?.rangeCount&&o.anchorNode&&Jt(e,o.anchorNode)&&o.focusNode&&Jt(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 su(e,t){let r=["dialog","menu","listbox","tree","grid"],o=e?.getAttribute("role");return o&&r.indexOf(o)!==-1?o:t}function nn(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 nn(e.parentElement)||document.scrollingElement||document.body}function Un(e,...t){/text|search|password|tel|url/i.test(e.type)&&e.setSelectionRange(...t)}function lu(e,t){let r=e.map((n,i)=>[i,n]),o=!1;return r.sort(([n,i],[a,l])=>{let s=t(i),u=t(l);return s===u||!s||!u?0:hx(s,u)?(n>a&&(o=!0),-1):(ni):e}function hx(e,t){return!!(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)}function uu(){return oo&&!!navigator.maxTouchPoints}function ga(){return oo?/mac|iphone|ipad|ipod/i.test(navigator.platform):!1}function Eo(){return oo&&ga()&&/apple/i.test(navigator.vendor)}function cu(){return oo&&/firefox\//i.test(navigator.userAgent)}function va(e){return!!(e.currentTarget&&!Jt(e.currentTarget,e.target))}function st(e){return e.target===e.currentTarget}function Ed(e){let t=e.currentTarget;if(!t)return!1;let r=ga();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 Pd(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={...t,bubbles:!0};return e.dispatchEvent(new FocusEvent("focusout",n)),o}function Ad(e,t,r){let o=new KeyboardEvent(t,r);return e.dispatchEvent(o)}function fu(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||!Jt(r,o)}function no(e,t,r,o){let i=(l=>{if(o){let u=setTimeout(l,o);return()=>clearTimeout(u)}let s=requestAnimationFrame(l);return()=>cancelAnimationFrame(s)})(()=>{e.removeEventListener(t,a,!0),r()}),a=()=>{i(),r()};return e.addEventListener(t,a,{once:!0,capture:!0}),i}function er(e,t,r,o=window){let n=[];try{o.document.addEventListener(e,t,r);for(let a of Array.from(o.frames))n.push(er(e,t,r,a))}catch{}return()=>{try{o.document.removeEventListener(e,t,r)}catch{}for(let a of n)a()}}var bx=c(le(),1),me=c(le(),1),du={...bx},Td=du.useId,O2=du.useDeferredValue,Id=du.useInsertionEffect,Te=oo?me.useLayoutEffect:me.useEffect;function xx(e){let[t]=(0,me.useState)(e);return t}function kd(e){let t=(0,me.useRef)(e);return Te(()=>{t.current=e}),t}function te(e){let t=(0,me.useRef)(()=>{throw new Error("Cannot call an event handler while rendering.")});return Id?Id(()=>{t.current=e}):t.current=e,(0,me.useCallback)((...r)=>{var o;return(o=t.current)==null?void 0:o.call(t,...r)},[])}function Nd(e){let[t,r]=(0,me.useState)(null);return Te(()=>{if(t==null||!e)return;let o=null;return e(n=>(o=n,t)),()=>{e(o)}},[t,e]),[t,r]}function Ie(...e){return(0,me.useMemo)(()=>{if(e.some(Boolean))return t=>{for(let r of e)Sd(r,t)}},e)}function Ft(e){if(Td){let o=Td();return e||o}let[t,r]=(0,me.useState)(e);return Te(()=>{if(e||t)return;let o=Math.random().toString(36).slice(2,8);r(`id-${o}`)},[e,t]),e||t}function Dd(e,t){let r=i=>{if(typeof i=="string")return i},[o,n]=(0,me.useState)(()=>r(t));return Te(()=>{let i=e&&"current"in e?e.current:e;n(i?.tagName.toLowerCase()||r(t))},[e,t]),o}function Md(e,t,r){let o=xx(r),[n,i]=(0,me.useState)(o);return(0,me.useEffect)(()=>{let a=e&&"current"in e?e.current:e;if(!a)return;let l=()=>{let u=a.getAttribute(t);i(u??o)},s=new MutationObserver(l);return s.observe(a,{attributeFilter:[t]}),l(),()=>s.disconnect()},[e,t,o]),n}function tr(e,t){let r=(0,me.useRef)(!1);(0,me.useEffect)(()=>{if(r.current)return e();r.current=!0},t),(0,me.useEffect)(()=>()=>{r.current=!1},[])}function Fd(e,t){let r=(0,me.useRef)(!1);Te(()=>{if(r.current)return e();r.current=!0},t),Te(()=>()=>{r.current=!1},[])}function Ld(){return(0,me.useReducer)(()=>[],[])}function Me(e){return te(typeof e=="function"?e:()=>e)}function rr(e,t,r=[]){let o=(0,me.useCallback)(n=>(e.wrapElement&&(n=e.wrapElement(n)),t(n)),[...r,e.wrapElement]);return{...e,wrapElement:o}}function Bd(e,t,r){let o=e.onLoadedMetadataCapture,n=(0,me.useMemo)(()=>Object.assign(()=>{},{...o,[t]:r}),[o,t,r]);return[o?.[t],{onLoadedMetadataCapture:n}]}var Od=!1;function Hd(){return(0,me.useEffect)(()=>{Od||(er("mousemove",wx,!0),er("mousedown",ba,!0),er("mouseup",ba,!0),er("keydown",ba,!0),er("scroll",ba,!0),Od=!0)},[]),te(()=>mu)}var mu=!1,Rd=0,Vd=0;function yx(e){let t=e.movementX||e.screenX-Rd,r=e.movementY||e.screenY-Vd;return Rd=e.screenX,Vd=e.screenY,t||r||!1}function wx(e){yx(e)&&(mu=!0)}function ba(){mu=!1}var pt=c(le(),1),Ao=c(R(),1);function pe(e){let t=pt.forwardRef((r,o)=>e({...r,ref:o}));return t.displayName=e.displayName||e.name,t}function io(e,t){return pt.memo(e,t)}function xe(e,t){let{wrapElement:r,render:o,...n}=t,i=Ie(t.ref,_d(o)),a;if(pt.isValidElement(o)){let l={...o.props,ref:i};a=pt.cloneElement(o,Cd(n,l))}else o?a=o(n):a=(0,Ao.jsx)(e,{...n});return r?r(a):a}function ye(e){let t=(r={})=>e(r);return t.displayName=e.name,t}function _t(e=[],t=[]){let r=pt.createContext(void 0),o=pt.createContext(void 0),n=()=>pt.useContext(r),i=(u=!1)=>{let f=pt.useContext(o),d=n();return u?f:f||d},a=()=>{let u=pt.useContext(o),f=n();if(!(u&&u===f))return f},l=u=>e.reduceRight((f,d)=>(0,Ao.jsx)(d,{...u,children:f}),(0,Ao.jsx)(r.Provider,{...u}));return{context:r,scopedContext:o,useContext:n,useScopedContext:i,useProviderContext:a,ContextProvider:l,ScopedContextProvider:u=>(0,Ao.jsx)(l,{...u,children:t.reduceRight((f,d)=>(0,Ao.jsx)(d,{...u,children:f}),(0,Ao.jsx)(o.Provider,{...u}))})}}var qn=_t(),zd=qn.useContext,M2=qn.useScopedContext,F2=qn.useProviderContext,jd=qn.ContextProvider,Wd=qn.ScopedContextProvider;var pu=c(le(),1),$n=_t([jd],[Wd]),xa=$n.useContext,z2=$n.useScopedContext,Yd=$n.useProviderContext,an=$n.ContextProvider,ya=$n.ScopedContextProvider,Gd=(0,pu.createContext)(void 0),Ud=(0,pu.createContext)(void 0);function qd(e,t){return e.find(r=>t?!r.disabled&&r.id!==t:!r.disabled)}function or(e,t){return t&&e.item(t)||null}function $d(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 Kd(e,t=!1){if(mt(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 gu=Symbol("FOCUS_SILENTLY");function Xd(e){e[gu]=!0,e.focus({preventScroll:!0})}function Zd(e){let t=e[gu];return delete e[gu],t}function To(e,t,r){if(!t||t===r)return!1;let o=e.item(t.id);return!(!o||r&&o.element===r)}var wa=c(le(),1),Sx="div",vu=ye(function({store:t,shouldRegisterItem:r=!0,getItem:o=Yn,element:n,...i}){let a=zd();t=t||a;let l=Ft(i.id),s=(0,wa.useRef)(n);return(0,wa.useEffect)(()=>{let u=s.current;if(!l||!u||!r)return;let f=o({id:l,element:u});return t?.renderItem(f)},[l,r,o,t]),i={...i,ref:Ie(s,i.ref)},Je(i)}),K2=pe(function(t){let r=vu(t);return xe(Sx,r)});var Qd=c(le(),1),Jd=(0,Qd.createContext)(!0);var em="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 Kn(e){return!(!e.matches(em)||!iu(e)||e.closest("[inert]"))}function tm(e){for(;e&&!Kn(e);)e=e.closest(em);return e||null}function Lt(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(Jt(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 rm(e){!hu(e)&&Kn(e)&&e.focus()}function om(e,t){"scrollIntoView"in e?(e.focus({preventScroll:!0}),e.scrollIntoView({block:"nearest",inline:"nearest",...t})):e.focus()}var Rt=c(le(),1),_x="div",nm=Eo(),Cx=["text","search","url","tel","email","password","number","date","month","week","time","datetime","datetime-local"],Ex=Symbol("safariFocusAncestor");function im(e,t){e&&(e[Ex]=t)}function Px(e){let{tagName:t,readOnly:r,type:o}=e;return t==="TEXTAREA"&&!r||t==="SELECT"&&!r?!0:t==="INPUT"&&!r?Cx.includes(o):!!(e.isContentEditable||e.getAttribute("role")==="combobox"&&e.dataset.name)}function Ax(e){return"labels"in e?e.labels:null}function am(e){return e.tagName.toLowerCase()==="input"&&e.type?e.type==="radio"||e.type==="checkbox":!1}function Tx(e){return e?e==="button"||e==="summary"||e==="input"||e==="select"||e==="textarea"||e==="a":!0}function Ix(e){return e?e==="button"||e==="input"||e==="select"||e==="textarea":!0}function Ox(e,t,r,o,n){return e?t?r&&!o?-1:void 0:r?n:n||0:n}function bu(e,t){return te(r=>{e?.(r),!r.defaultPrevented&&t&&(r.stopPropagation(),r.preventDefault())})}var sm=!1,xu=!0;function Rx(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=ye(function({focusable:t=!0,accessibleWhenDisabled:r,autoFocus:o,onFocusVisible:n,...i}){let a=(0,Rt.useRef)(null);(0,Rt.useEffect)(()=>{t&&(sm||(er("mousedown",Rx,!0),er("keydown",Vx,!0),sm=!0))},[t]),nm&&(0,Rt.useEffect)(()=>{if(!t)return;let w=a.current;if(!w||!am(w))return;let O=Ax(w);if(!O)return;let x=()=>queueMicrotask(()=>w.focus());for(let v of O)v.addEventListener("mouseup",x);return()=>{for(let v of O)v.removeEventListener("mouseup",x)}},[t]);let l=t&&_o(i),s=!!l&&!r,[u,f]=(0,Rt.useState)(!1);(0,Rt.useEffect)(()=>{t&&s&&u&&f(!1)},[t,s,u]),(0,Rt.useEffect)(()=>{if(!t||!u)return;let w=a.current;if(!w||typeof IntersectionObserver>"u")return;let O=new IntersectionObserver(()=>{Kn(w)||f(!1)});return O.observe(w),()=>O.disconnect()},[t,u]);let d=bu(i.onKeyPressCapture,l),m=bu(i.onMouseDownCapture,l),p=bu(i.onClickCapture,l),g=i.onMouseDown,S=te(w=>{if(g?.(w),w.defaultPrevented||!t)return;let O=w.currentTarget;if(!nm||va(w)||!Er(O)&&!am(O))return;let x=!1,v=()=>{x=!0},D={capture:!0,once:!0};O.addEventListener("focusin",v,D);let B=tm(O.parentElement);im(B,!0),no(O,"mouseup",()=>{O.removeEventListener("focusin",v,!0),im(B,!1),!x&&rm(O)})}),b=(w,O)=>{if(O&&(w.currentTarget=O),!t)return;let x=w.currentTarget;x&&Lt(x)&&(n?.(w),!w.defaultPrevented&&(x.dataset.focusVisible="true",f(!0)))},y=i.onKeyDownCapture,_=te(w=>{if(y?.(w),w.defaultPrevented||!t||u||w.metaKey||w.altKey||w.ctrlKey||!st(w))return;let O=w.currentTarget;no(O,"focusout",()=>b(w,O))}),A=i.onFocusCapture,V=te(w=>{if(A?.(w),w.defaultPrevented||!t)return;if(!st(w)){f(!1);return}let O=w.currentTarget,x=()=>b(w,O);xu||Px(w.target)?no(w.target,"focusout",x):f(!1)}),I=i.onBlur,M=te(w=>{I?.(w),t&&ha(w)&&(w.currentTarget.removeAttribute("data-focus-visible"),f(!1))}),N=(0,Rt.useContext)(Jd),C=te(w=>{t&&o&&w&&N&&queueMicrotask(()=>{Lt(w)||Kn(w)&&w.focus()})}),T=Dd(a),k=t&&Tx(T),h=t&&Ix(T),E=i.style,P=(0,Rt.useMemo)(()=>s?{pointerEvents:"none",...E}:E,[s,E]);return i={"data-focus-visible":t&&u||void 0,"data-autofocus":o||void 0,"aria-disabled":l||void 0,...i,ref:Ie(a,C,i.ref),style:P,tabIndex:Ox(t,s,k,h,i.tabIndex),disabled:h&&s?!0:void 0,contentEditable:l?void 0:i.contentEditable,onKeyPressCapture:d,onClickCapture:p,onMouseDownCapture:m,onMouseDown:S,onKeyDownCapture:_,onFocusCapture:V,onBlur:M},Je(i)}),fP=pe(function(t){let r=Xn(t);return xe(_x,r)});var ao=c(le(),1),kx="button";function lm(e){if(!e.isTrusted)return!1;let t=e.currentTarget;return e.key==="Enter"?Er(t)||t.tagName==="SUMMARY"||t.tagName==="A":e.key===" "?Er(t)||t.tagName==="SUMMARY"||t.tagName==="INPUT"||t.tagName==="SELECT":!1}var Nx=Symbol("command"),yu=ye(function({clickOnEnter:t=!0,clickOnSpace:r=!0,...o}){let n=(0,ao.useRef)(null),[i,a]=(0,ao.useState)(!1);(0,ao.useEffect)(()=>{n.current&&a(Er(n.current))},[]);let[l,s]=(0,ao.useState)(!1),u=(0,ao.useRef)(!1),f=_o(o),[d,m]=Bd(o,Nx,!0),p=o.onKeyDown,g=te(y=>{p?.(y);let _=y.currentTarget;if(y.defaultPrevented||d||f||!st(y)||mt(_)||_.isContentEditable)return;let A=t&&y.key==="Enter",V=r&&y.key===" ",I=y.key==="Enter"&&!t,M=y.key===" "&&!r;if(I||M){y.preventDefault();return}if(A||V){let N=lm(y);if(A){if(!N){y.preventDefault();let{view:C,...T}=y,k=()=>fu(_,T);cu()?no(_,"keyup",k):queueMicrotask(k)}}else V&&(u.current=!0,N||(y.preventDefault(),s(!0)))}}),S=o.onKeyUp,b=te(y=>{if(S?.(y),y.defaultPrevented||d||f||y.metaKey)return;let _=r&&y.key===" ";if(u.current&&_&&(u.current=!1,!lm(y))){y.preventDefault(),s(!1);let A=y.currentTarget,{view:V,...I}=y;queueMicrotask(()=>fu(A,I))}});return o={"data-active":l||void 0,type:i?"button":void 0,...m,...o,ref:Ie(n,o.ref),onKeyDown:g,onKeyUp:b},o=Xn(o),o}),yP=pe(function(t){let r=yu(t);return xe(kx,r)});function Io(e,t){let r=e.__unstableInternals;return Qe(r,"Invalid store"),r[t]}function gt(e,...t){let r=e,o=r,n=Symbol(),i=jn,a=new Set,l=new Set,s=new Set,u=new Set,f=new Set,d=new WeakMap,m=new WeakMap,p=C=>(s.add(C),()=>s.delete(C)),g=()=>{let C=a.size,T=Symbol();a.add(T);let k=()=>{a.delete(T),!a.size&&i()};if(C)return k;let h=ru(r).map(w=>ro(...t.map(O=>{var x;let v=(x=O?.getState)==null?void 0:x.call(O);if(v&&St(v,w))return Ke(O,[w],D=>{M(w,D[w],!0)})}))),E=[];for(let w of s)E.push(w());let P=t.map(sn);return i=ro(...h,...E,...P),k},S=(C,T,k=u)=>(k.add(T),m.set(T,C),()=>{var h;(h=d.get(T))==null||h(),d.delete(T),m.delete(T),k.delete(T)}),b=(C,T)=>S(C,T),y=(C,T)=>(d.set(T,T(r,r)),S(C,T)),_=(C,T)=>(d.set(T,T(r,o)),S(C,T,f)),A=C=>gt(tu(r,C),N),V=C=>gt(eu(r,C),N),I=()=>r,M=(C,T,k=!1)=>{var h;if(!St(r,C))return;let E=Jl(T,r[C]);if(E===r[C])return;if(!k)for(let x of t)(h=x?.setState)==null||h.call(x,C,E);let P=r;r={...r,[C]:E};let w=Symbol();n=w,l.add(C);let O=(x,v,D)=>{var B;let oe=m.get(x),fe=Ne=>D?D.has(Ne):Ne===C;(!oe||oe.some(fe))&&((B=d.get(x))==null||B(),d.set(x,x(r,v)))};for(let x of u)O(x,P);queueMicrotask(()=>{if(n!==w)return;let x=r;for(let v of f)O(v,o,l);o=x,l.clear()})},N={getState:I,setState:M,__unstableInternals:{setup:p,init:g,subscribe:b,sync:y,batch:_,pick:A,omit:V}};return N}function $e(e,...t){if(e)return Io(e,"setup")(...t)}function sn(e,...t){if(e)return Io(e,"init")(...t)}function ln(e,...t){if(e)return Io(e,"subscribe")(...t)}function Ke(e,...t){if(e)return Io(e,"sync")(...t)}function so(e,...t){if(e)return Io(e,"batch")(...t)}function Zn(e,...t){if(e)return Io(e,"omit")(...t)}function wu(e,...t){if(e)return Io(e,"pick")(...t)}function Oo(...e){var t;let r={};for(let n of e){let i=(t=n?.getState)==null?void 0:t.call(n);i&&Object.assign(r,i)}let o=gt(r,...e);return Object.assign({},...e,o)}var nr=c(le(),1),um=c(nf(),1),{useSyncExternalStore:cm}=um.default,fm=()=>()=>{};function un(e,t=Yn){let r=nr.useCallback(n=>e?ln(e,null,n):fm(),[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&&St(a,n))return a[n]};return cm(r,o,o)}function _a(e,t){let r=nr.useRef({}),o=nr.useCallback(i=>e?ln(e,null,i):fm(),[e]),n=()=>{let i=e?.getState(),a=!1,l=r.current;for(let s in t){let u=t[s];if(typeof u=="function"){let f=u(i);f!==l[s]&&(l[s]=f,a=!0)}if(typeof u=="string"){if(!i||!St(i,u))continue;let f=i[u];f!==l[s]&&(l[s]=f,a=!0)}}return a&&(r.current={...l}),r.current};return cm(o,n,n)}function Oe(e,t,r,o){let n=St(t,r)?t[r]:void 0,i=o?t[o]:void 0,a=kd({value:n,setValue:i});Te(()=>Ke(e,[r],(l,s)=>{let{value:u,setValue:f}=a.current;f&&l[r]!==s[r]&&l[r]!==u&&f(l[r])}),[e,r]),Te(()=>{if(n!==void 0)return e.setState(r,n),so(e,[r],()=>{n!==void 0&&e.setState(r,n)})})}function cn(e,t){let[r,o]=nr.useState(()=>e(t));Te(()=>sn(r),[r]);let n=nr.useCallback(l=>un(r,l),[r]),i=nr.useMemo(()=>({...r,useState:n}),[r,n]),a=te(()=>{o(l=>e({...t,...l.getState()}))});return[i,a]}var Pr=c(le(),1),mm=c(R(),1),Dx="button";function Mx(e){return Gn(e)?!0:e.tagName==="INPUT"&&!Er(e)}function Fx(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 Lx(e,t=!1){let{top:r}=e.getBoundingClientRect();return t?r+e.clientHeight:r}function dm(e,t,r,o=!1){var n;if(!t||!r)return;let{renderedItems:i}=t.getState(),a=nn(e);if(!a)return;let l=Fx(a,o),s,u;for(let f=0;f=0){u!==void 0&&uB.rowId===b);return p.ariaPosInSet+D.findIndex(B=>B.id===d)},isTabbable(v){if(!v?.renderedItems.length)return!0;if(v.virtualFocus)return!1;if(i)return!0;if(v.activeId===null)return!1;let D=t?.item(v.activeId);return D?.disabled||!D?.element?!0:v.activeId===d}}),M=(0,Pr.useCallback)(v=>{var D;let B={...v,id:d||v.id,rowId:b,disabled:!!S,children:(D=v.element)==null?void 0:D.textContent};return a?a(B):B},[d,b,S,a]),N=u.onFocus,C=(0,Pr.useRef)(!1),T=te(v=>{if(N?.(v),v.defaultPrevented||va(v)||!d||!t||Bx(v,t))return;let{virtualFocus:D,baseElement:B}=t.getState();if(t.setActiveId(d),Gn(v.currentTarget)&&Kd(v.currentTarget),!D||!st(v)||Mx(v.currentTarget)||!B?.isConnected)return;Eo()&&v.currentTarget.hasAttribute("data-autofocus")&&v.currentTarget.scrollIntoView({block:"nearest",inline:"nearest"}),C.current=!0,v.relatedTarget===B||To(t,v.relatedTarget)?Xd(B):B.focus()}),k=u.onBlurCapture,h=te(v=>{if(k?.(v),v.defaultPrevented)return;let D=t?.getState();D?.virtualFocus&&C.current&&(C.current=!1,v.preventDefault(),v.stopPropagation())}),E=u.onKeyDown,P=Me(o),w=Me(n),O=te(v=>{if(E?.(v),v.defaultPrevented||!st(v)||!t)return;let{currentTarget:D}=v,B=t.getState(),oe=t.item(d),fe=!!oe?.rowId,Ne=B.orientation!=="horizontal",He=B.orientation!=="vertical",ot=()=>!!(fe||He||!B.baseElement||!mt(B.baseElement)),vr={ArrowUp:(fe||Ne)&&t.up,ArrowRight:(fe||He)&&t.next,ArrowDown:(fe||Ne)&&t.down,ArrowLeft:(fe||He)&&t.previous,Home:()=>{if(ot())return!fe||v.ctrlKey?t?.first():t?.previous(-1)},End:()=>{if(ot())return!fe||v.ctrlKey?t?.last():t?.next(-1)},PageUp:()=>dm(D,t,t?.up,!0),PageDown:()=>dm(D,t,t?.down)}[v.key];if(vr){if(Gn(D)){let Q=on(D),he=He&&v.key==="ArrowLeft",hr=He&&v.key==="ArrowRight",br=Ne&&v.key==="ArrowUp",go=Ne&&v.key==="ArrowDown";if(hr||go){let{length:vo}=au(D);if(Q.end!==vo)return}else if((he||br)&&Q.start!==0)return}let q=vr();if(P(v)||q!==void 0){if(!w(v))return;v.preventDefault(),t.move(q)}}}),x=(0,Pr.useMemo)(()=>({id:d,baseElement:y}),[d,y]);return u=rr(u,v=>(0,mm.jsx)(Gd.Provider,{value:x,children:v}),[x]),u={id:d,"data-active-item":_||void 0,...u,ref:Ie(m,u.ref),tabIndex:I?u.tabIndex:-1,onFocus:T,onBlurCapture:h,onKeyDown:O},u=yu(u),u=vu({store:t,...u,getItem:M,shouldRegisterItem:d?u.shouldRegisterItem:!1}),Je({...u,"aria-setsize":A,"aria-posinset":V})}),zP=io(pe(function(t){let r=Su(t);return xe(Dx,r)}));function _u(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 fn(e){return e.slice().reverse()}var ir=c(le(),1),gm=c(R(),1),Hx="div";function zx(e){return e.some(t=>!!t.rowId)}function jx(e){let t=e.target;return t&&!mt(t)?!1:e.key.length===1&&!e.ctrlKey&&!e.metaKey}function Wx(e){return e.key==="Shift"||e.key==="Control"||e.key==="Alt"||e.key==="Meta"}function pm(e,t,r){return te(o=>{var n;if(t?.(o),o.defaultPrevented||o.isPropagationStopped()||!st(o)||Wx(o)||jx(o))return;let i=e.getState(),a=(n=or(e,i.activeId))==null?void 0:n.element;if(!a)return;let{view:l,...s}=o,u=r?.current;a!==u&&a.focus(),Ad(a,o.type,s)||o.preventDefault(),o.currentTarget.contains(a)&&o.stopPropagation()})}function Yx(e){return qd(Qn(fn($d(e))))}function Gx(e){let[t,r]=(0,ir.useState)(!1),o=(0,ir.useCallback)(()=>r(!0),[]),n=e.useState(i=>or(e,i.activeId));return(0,ir.useEffect)(()=>{let i=n?.element;t&&i&&(r(!1),i.focus({preventScroll:!0}))},[n,t]),o}var Cu=ye(function({store:t,composite:r=!0,focusOnMove:o=r,moveOnKeyPress:n=!0,...i}){let a=Yd();t=t||a,Qe(t,!1);let l=(0,ir.useRef)(null),s=(0,ir.useRef)(null),u=Gx(t),f=t.useState("moves"),[,d]=Nd(r?t.setBaseElement:null);(0,ir.useEffect)(()=>{var h;if(!t||!f||!r||!o)return;let{activeId:E}=t.getState(),P=(h=or(t,E))==null?void 0:h.element;P&&om(P)},[t,f,r,o]),Te(()=>{if(!t||!f||!r)return;let{baseElement:h,activeId:E}=t.getState();if(!(E===null)||!h)return;let w=s.current;s.current=null,w&&Po(w,{relatedTarget:h}),Lt(h)||h.focus()},[t,f,r]);let m=t.useState("activeId"),p=t.useState("virtualFocus");Te(()=>{var h;if(!t||!r||!p)return;let E=s.current;if(s.current=null,!E)return;let w=((h=or(t,m))==null?void 0:h.element)||Co(E);w!==E&&Po(E,{relatedTarget:w})},[t,m,p,r]);let g=pm(t,i.onKeyDownCapture,s),S=pm(t,i.onKeyUpCapture,s),b=i.onFocusCapture,y=te(h=>{if(b?.(h),h.defaultPrevented||!t)return;let{virtualFocus:E}=t.getState();if(!E)return;let P=h.relatedTarget,w=Zd(h.currentTarget);st(h)&&w&&(h.stopPropagation(),s.current=P)}),_=i.onFocus,A=te(h=>{if(_?.(h),h.defaultPrevented||!r||!t)return;let{relatedTarget:E}=h,{virtualFocus:P}=t.getState();P?st(h)&&!To(t,E)&&queueMicrotask(u):st(h)&&t.setActiveId(null)}),V=i.onBlurCapture,I=te(h=>{var E;if(V?.(h),h.defaultPrevented||!t)return;let{virtualFocus:P,activeId:w}=t.getState();if(!P)return;let O=(E=or(t,w))==null?void 0:E.element,x=h.relatedTarget,v=To(t,x),D=s.current;s.current=null,st(h)&&v?(x===O?D&&D!==x&&Po(D,h):O?Po(O,h):D&&Po(D,h),h.stopPropagation()):!To(t,h.target)&&O&&Po(O,h)}),M=i.onKeyDown,N=Me(n),C=te(h=>{var E;if(M?.(h),h.nativeEvent.isComposing||h.defaultPrevented||!t||!st(h))return;let{orientation:P,renderedItems:w,activeId:O}=t.getState(),x=or(t,O);if((E=x?.element)!=null&&E.isConnected)return;let v=P!=="horizontal",D=P!=="vertical",B=zx(w);if((h.key==="ArrowLeft"||h.key==="ArrowRight"||h.key==="Home"||h.key==="End")&&mt(h.currentTarget))return;let He={ArrowUp:(B||v)&&(()=>{if(B){let ot=Yx(w);return ot?.id}return t?.last()}),ArrowRight:(B||D)&&t.first,ArrowDown:(B||v)&&t.first,ArrowLeft:(B||D)&&t.last,Home:t.first,End:t.last,PageUp:t.first,PageDown:t.last}[h.key];if(He){let ot=He();if(ot!==void 0){if(!N(h))return;h.preventDefault(),t.move(ot)}}});i=rr(i,h=>(0,gm.jsx)(an,{value:t,children:h}),[t]),i={"aria-activedescendant":t.useState(h=>{var E;if(t&&r&&h.virtualFocus)return(E=or(t,h.activeId))==null?void 0:E.id}),...i,ref:Ie(l,d,i.ref),onKeyDownCapture:g,onKeyUpCapture:S,onFocusCapture:y,onFocus:A,onBlurCapture:I,onKeyDown:C};let k=t.useState(h=>r&&(h.virtualFocus||h.activeId===null));return i=Xn({focusable:k,...i}),i}),oA=pe(function(t){let r=Cu(t);return xe(Hx,r)});var Jn=_t(),aA=Jn.useContext,sA=Jn.useScopedContext,Eu=Jn.useProviderContext,vm=Jn.ContextProvider,hm=Jn.ScopedContextProvider;var Pu=c(le(),1),ei=_t([vm],[hm]),fA=ei.useContext,dA=ei.useScopedContext,mA=ei.useProviderContext,bm=ei.ContextProvider,Ca=ei.ScopedContextProvider,pA=(0,Pu.createContext)(void 0),gA=(0,Pu.createContext)(void 0);var dn=c(le(),1),wm=c(ef(),1),Au=c(R(),1),Ux="div";function xm(e,t){let r=setTimeout(t,e);return()=>clearTimeout(r)}function qx(e){let t=requestAnimationFrame(()=>{t=requestAnimationFrame(e)});return()=>cancelAnimationFrame(t)}function ym(...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 Tu(e,t,r){return!r&&t!==!1&&(!e||!!t)}var $x=ye(function({store:t,alwaysVisible:r,...o}){let n=Eu();t=t||n,Qe(t,!1);let i=(0,dn.useRef)(null),a=Ft(o.id),[l,s]=(0,dn.useState)(null),u=t.useState("open"),f=t.useState("mounted"),d=t.useState("animated"),m=t.useState("contentElement"),p=un(t.disclosure,"contentElement");Te(()=>{i.current&&t?.setContentElement(i.current)},[t]),Te(()=>{let y;return t?.setState("animated",_=>(y=_,!0)),()=>{y!==void 0&&t?.setState("animated",y)}},[t]),Te(()=>{if(d){if(!m?.isConnected){s(null);return}return qx(()=>{s(u?"enter":f?"leave":null)})}},[d,m,u,f]),Te(()=>{if(!t||!d||!l||!m)return;let y=()=>t?.setState("animating",!1),_=()=>(0,wm.flushSync)(y);if(l==="leave"&&u||l==="enter"&&!u)return;if(typeof d=="number")return xm(d,_);let{transitionDuration:A,animationDuration:V,transitionDelay:I,animationDelay:M}=getComputedStyle(m),{transitionDuration:N="0",animationDuration:C="0",transitionDelay:T="0",animationDelay:k="0"}=p?getComputedStyle(p):{},h=ym(I,M,T,k),E=ym(A,V,N,C),P=h+E;if(!P){l==="enter"&&t.setState("animated",!1),y();return}let w=1e3/60,O=Math.max(P-w,0);return xm(O,_)},[t,d,m,p,u,l]),o=rr(o,y=>(0,Au.jsx)(Ca,{value:t,children:y}),[t]);let g=Tu(f,o.hidden,r),S=o.style,b=(0,dn.useMemo)(()=>g?{...S,display:"none"}:S,[g,S]);return o={id:a,"data-open":u||void 0,"data-enter":l==="enter"||void 0,"data-leave":l==="leave"||void 0,hidden:g,...o,ref:Ie(a?t.setContentElement:null,i,o.ref),style:b},Je(o)}),Kx=pe(function(t){let r=$x(t);return xe(Ux,r)}),_A=pe(function({unmountOnHide:t,...r}){let o=Eu(),n=r.store||o;return un(n,a=>!t||a?.mounted)===!1?null:(0,Au.jsx)(Kx,{...r})});function Sm(e={}){let t=Oo(e.store,Zn(e.disclosure,["contentElement","disclosureElement"]));let r=t?.getState(),o=ee(e.open,r?.open,e.defaultOpen,!1),n=ee(e.animated,r?.animated,!1),i={open:o,animated:n,animating:!!n&&o,mounted:o,contentElement:ee(r?.contentElement,null),disclosureElement:ee(r?.disclosureElement,null)},a=gt(i,t);return $e(a,()=>Ke(a,["animated","animating"],l=>{l.animated||a.setState("animating",!1)})),$e(a,()=>ln(a,["open"],()=>{a.getState().animated&&a.setState("animating",!0)})),$e(a,()=>Ke(a,["open","animating"],l=>{a.setState("mounted",l.open||l.animating)})),{...a,disclosure:e.disclosure,setOpen:l=>a.setState("open",l),show:()=>a.setState("open",!0),hide:()=>a.setState("open",!1),toggle:()=>a.setState("open",l=>!l),stopAnimation:()=>a.setState("animating",!1),setContentElement:l=>a.setState("contentElement",l),setDisclosureElement:l=>a.setState("disclosureElement",l)}}function _m(e,t,r){return tr(t,[r.store,r.disclosure]),Oe(e,r,"open","setOpen"),Oe(e,r,"mounted","setMounted"),Oe(e,r,"animated"),Object.assign(e,{disclosure:r.disclosure})}var ti=_t([bm],[Ca]),kA=ti.useContext,NA=ti.useScopedContext,Cm=ti.useProviderContext,Em=ti.ContextProvider,Pm=ti.ScopedContextProvider;function Xx(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 Zx(e){return e?.__unstablePrivateStore}function Am(e={}){var t;e.store;let r=(t=e.store)==null?void 0:t.getState(),o=ee(e.items,r?.items,e.defaultItems,[]),n=new Map(o.map(m=>[m.id,m])),i={items:o,renderedItems:ee(r?.renderedItems,[])},a=Zx(e.store),l=gt({items:o,renderedItems:i.renderedItems},a),s=gt(i,e.store),u=m=>{let p=lu(m,g=>g.element);l.setState("renderedItems",p),s.setState("renderedItems",p)};$e(s,()=>sn(l)),$e(l,()=>so(l,["items"],m=>{s.setState("items",m.items)})),$e(l,()=>so(l,["renderedItems"],m=>{let p=!0,g=requestAnimationFrame(()=>{let{renderedItems:_}=s.getState();m.renderedItems!==_&&u(m.renderedItems)});if(typeof IntersectionObserver!="function")return()=>cancelAnimationFrame(g);let S=()=>{if(p){p=!1;return}cancelAnimationFrame(g),g=requestAnimationFrame(()=>u(m.renderedItems))},b=Xx(m.renderedItems),y=new IntersectionObserver(S,{root:b});for(let _ of m.renderedItems)_.element&&y.observe(_.element);return()=>{cancelAnimationFrame(g),y.disconnect()}}));let f=(m,p,g=!1)=>{let S;return p(y=>{let _=y.findIndex(({id:V})=>V===m.id),A=y.slice();if(_!==-1){S=y[_];let V={...S,...m};A[_]=V,n.set(m.id,V)}else A.push(m),n.set(m.id,m);return A}),()=>{p(y=>{if(!S)return g&&n.delete(m.id),y.filter(({id:V})=>V!==m.id);let _=y.findIndex(({id:V})=>V===m.id);if(_===-1)return y;let A=y.slice();return A[_]=S,n.set(m.id,S),A})}},d=m=>f(m,p=>l.setState("items",p),!0);return{...s,registerItem:d,renderItem:m=>ro(d(m),f(m,p=>l.setState("renderedItems",p))),item:m=>{if(!m)return null;let p=n.get(m);if(!p){let{items:g}=l.getState();p=g.find(S=>S.id===m),p&&n.set(m,p)}return p||null},__unstablePrivateStore:l}}function Tm(e,t,r){return tr(t,[r.store]),Oe(e,r,"items","setItems"),e}var Qx={id:null};function Ar(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 Im(e,t){return e.filter(r=>r.rowId===t)}function e0(e,t,r=!1){let o=e.findIndex(n=>n.id===t);return[...e.slice(o+1),...r?[Qx]:[],...e.slice(0,o)]}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 Rm(e){let t=0;for(let{length:r}of e)r>t&&(t=r);return t}function t0(e){return{id:"__EMPTY_ITEM__",disabled:!0,rowId:e}}function r0(e,t,r){let o=Rm(e);for(let n of e)for(let i=0;iKe(a,["renderedItems","activeId"],s=>{a.setState("activeId",u=>{var f;return u!==void 0?u:(f=Ar(s.renderedItems))==null?void 0:f.id})}));let l=(s="next",u={})=>{var f,d;let m=a.getState(),{skip:p=0,activeId:g=m.activeId,focusShift:S=m.focusShift,focusLoop:b=m.focusLoop,focusWrap:y=m.focusWrap,includesBaseElement:_=m.includesBaseElement,renderedItems:A=m.renderedItems,rtl:V=m.rtl}=u,I=s==="up"||s==="down",M=s==="next"||s==="down",N=M?V&&!I:!V||I,C=S&&!p,T=I?Qn(r0(Om(A),g,C)):A;if(T=N?fn(T):T,T=I?o0(T):T,g==null)return(f=Ar(T))==null?void 0:f.id;let k=T.find(B=>B.id===g);if(!k)return(d=Ar(T))==null?void 0:d.id;let h=T.some(B=>B.rowId),E=T.indexOf(k),P=T.slice(E+1),w=Im(P,k.rowId);if(p){let B=Jx(w,g),oe=B.slice(p)[0]||B[B.length-1];return oe?.id}let O=b&&(I?b!=="horizontal":b!=="vertical"),x=h&&y&&(I?y!=="horizontal":y!=="vertical"),v=M?(!h||I)&&O&&_:I?_:!1;if(O){let B=x&&!v?T:Im(T,k.rowId),oe=e0(B,g,v),fe=Ar(oe,g);return fe?.id}if(x){let B=Ar(v?w:P,g);return v?B?.id||null:B?.id}let D=Ar(w,g);return!D&&v?null:D?.id};return{...o,...a,setBaseElement:s=>a.setState("baseElement",s),setActiveId:s=>a.setState("activeId",s),move:s=>{s!==void 0&&(a.setState("activeId",s),a.setState("moves",u=>u+1))},first:()=>{var s;return(s=Ar(a.getState().renderedItems))==null?void 0:s.id},last:()=>{var s;return(s=Ar(fn(a.getState().renderedItems)))==null?void 0:s.id},next:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("next",s)),previous:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("previous",s)),down:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("down",s)),up:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("up",s))}}function km(e){return{id:Ft(e.id),...e}}function Nm(e,t,r){return e=Tm(e,t,r),Oe(e,r,"activeId","setActiveId"),Oe(e,r,"includesBaseElement"),Oe(e,r,"virtualFocus"),Oe(e,r,"orientation"),Oe(e,r,"rtl"),Oe(e,r,"focusLoop"),Oe(e,r,"focusWrap"),Oe(e,r,"focusShift"),e}var Ea=c(le(),1),Pa=(0,Ea.createContext)(void 0),ri=_t([Em,an],[Pm,ya]),Iu=ri.useContext,mn=ri.useScopedContext,Aa=ri.useProviderContext,Dm=ri.ContextProvider,Mm=ri.ScopedContextProvider,Ta=(0,Ea.createContext)(void 0),Fm=(0,Ea.createContext)(!1);function Lm(e={}){return Sm(e)}function Bm(e,t,r){return _m(e,t,r)}function Hm({popover:e,...t}={}){let r=Oo(t.store,Zn(e,["arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));let o=r?.getState(),n=Lm({...t,store:r}),i=ee(t.placement,o?.placement,"bottom"),a={...n.getState(),placement:i,currentPlacement:i,anchorElement:ee(o?.anchorElement,null),popoverElement:ee(o?.popoverElement,null),arrowElement:ee(o?.arrowElement,null),rendered:Symbol("rendered")},l=gt(a,n,r);return{...n,...l,setAnchorElement:s=>l.setState("anchorElement",s),setPopoverElement:s=>l.setState("popoverElement",s),setArrowElement:s=>l.setState("arrowElement",s),render:()=>l.setState("rendered",Symbol("rendered"))}}function zm(e,t,r){return tr(t,[r.popover]),Oe(e,r,"placement"),Bm(e,t,r)}var n0="div",Ou=ye(function({store:t,...r}){let o=Cm();return t=t||o,r={...r,ref:Ie(t?.setAnchorElement,r.ref)},r}),hT=pe(function(t){let r=Ou(t);return xe(n0,r)});var jm=c(le(),1),i0="div";function Wm(e){let t=e.relatedTarget;return t?.nodeType===Node.ELEMENT_NODE?t:null}function a0(e){let t=Wm(e);return t?Jt(e.currentTarget,t):!1}var Ru=Symbol("composite-hover");function s0(e){let t=Wm(e);if(!t)return!1;do{if(St(t,Ru)&&t[Ru])return!0;t=t.parentElement}while(t);return!1}var Vu=ye(function({store:t,focusOnHover:r=!0,blurOnHoverEnd:o=!!r,...n}){let i=xa();t=t||i,Qe(t,!1);let a=Hd(),l=n.onMouseMove,s=Me(r),u=te(g=>{if(l?.(g),!g.defaultPrevented&&a()&&s(g)){if(!hu(g.currentTarget)){let S=t?.getState().baseElement;S&&!Lt(S)&&S.focus()}t?.setActiveId(g.currentTarget.id)}}),f=n.onMouseLeave,d=Me(o),m=te(g=>{var S;f?.(g),!g.defaultPrevented&&a()&&(a0(g)||s0(g)||s(g)&&d(g)&&(t?.setActiveId(null),(S=t?.getState().baseElement)==null||S.focus()))}),p=(0,jm.useCallback)(g=>{g&&(g[Ru]=!0)},[]);return n={...n,ref:Ie(p,n.ref),onMouseMove:u,onMouseLeave:m},Je(n)}),ET=io(pe(function(t){let r=Vu(t);return xe(i0,r)}));var et=c(le(),1),l0="input";function Ym(e,t,r){if(!r)return!1;let o=e.find(n=>!n.disabled&&n.value);return o?.value===t}function Gm(e,t){return!t||e==null?!1:(e=Wn(e),t.length>e.length&&t.toLowerCase().indexOf(e.toLowerCase())===0)}function u0(e){return e.type==="input"}function c0(e){return e==="inline"||e==="list"||e==="both"||e==="none"}function f0(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 d0=ye(function({store:t,focusable:r=!0,autoSelect:o=!1,getAutoSelectId:n,setValueOnChange:i,showMinLength:a=0,showOnChange:l,showOnMouseDown:s,showOnClick:u=s,showOnKeyDown:f,showOnKeyPress:d=f,blurActiveItemOnClick:m,setValueOnClick:p=!0,moveOnKeyPress:g=!0,autoComplete:S="list",...b}){let y=Aa();t=t||y,Qe(t,!1);let _=(0,et.useRef)(null),[A,V]=Ld(),I=(0,et.useRef)(!1),M=(0,et.useRef)(!1),N=t.useState(L=>L.virtualFocus&&o),C=S==="inline"||S==="both",[T,k]=(0,et.useState)(C);Fd(()=>{C&&k(!0)},[C]);let h=t.useState("value"),E=(0,et.useRef)(void 0);(0,et.useEffect)(()=>Ke(t,["selectedValue","activeId"],(L,se)=>{E.current=se.selectedValue}),[]);let P=t.useState(L=>{var se;if(C&&T&&!(L.activeValue&&Array.isArray(L.selectedValue)&&(L.selectedValue.includes(L.activeValue)||(se=E.current)!=null&&se.includes(L.activeValue))))return L.activeValue}),w=t.useState("renderedItems"),O=t.useState("open"),x=t.useState("contentElement"),v=(0,et.useMemo)(()=>{if(!C||!T)return h;if(Ym(w,P,N)){if(Gm(h,P)){let se=P?.slice(h.length)||"";return h+se}return h}return P||h},[C,T,w,P,N,h]);(0,et.useEffect)(()=>{let L=_.current;if(!L)return;let se=()=>k(!0);return L.addEventListener("combobox-item-move",se),()=>{L.removeEventListener("combobox-item-move",se)}},[]),(0,et.useEffect)(()=>{if(!C||!T||!P||!Ym(w,P,N)||!Gm(h,P))return;let se=jn;return queueMicrotask(()=>{let ze=_.current;if(!ze)return;let{start:je,end:Nt}=on(ze),xr=h.length,nt=P.length;Un(ze,xr,nt),se=()=>{if(!Lt(ze))return;let{start:ho,end:Xh}=on(ze);ho===xr&&Xh===nt&&Un(ze,je,Nt)}}),()=>se()},[A,C,T,P,w,N,h]);let D=(0,et.useRef)(null),B=te(n),oe=(0,et.useRef)(null);(0,et.useEffect)(()=>{if(!O||!x)return;let L=nn(x);if(!L)return;D.current=L;let se=()=>{I.current=!1},ze=()=>{if(!t||!I.current)return;let{activeId:Nt}=t.getState();Nt!==null&&Nt!==oe.current&&(I.current=!1)},je={passive:!0,capture:!0};return L.addEventListener("wheel",se,je),L.addEventListener("touchmove",se,je),L.addEventListener("scroll",ze,je),()=>{L.removeEventListener("wheel",se,!0),L.removeEventListener("touchmove",se,!0),L.removeEventListener("scroll",ze,!0)}},[O,x,t]),Te(()=>{h&&(M.current||(I.current=!0))},[h]),Te(()=>{N!=="always"&&O||(I.current=O)},[N,O]);let fe=t.useState("resetValueOnSelect");tr(()=>{var L,se;let ze=I.current;if(!t||!O||!ze&&!fe)return;let{baseElement:je,contentElement:Nt,activeId:xr}=t.getState();if(!(je&&!Lt(je))){if(Nt?.hasAttribute("data-placing")){let nt=new MutationObserver(V);return nt.observe(Nt,{attributeFilter:["data-placing"]}),()=>nt.disconnect()}if(N&&ze){let nt=B(w),ho=nt!==void 0?nt:(L=f0(w))!=null?L:t.first();oe.current=ho,t.move(ho??null)}else{let nt=(se=t.item(xr||t.first()))==null?void 0:se.element;nt&&"scrollIntoView"in nt&&nt.scrollIntoView({block:"nearest",inline:"nearest"})}}},[t,O,A,h,N,fe,B,w]),(0,et.useEffect)(()=>{if(!C)return;let L=_.current;if(!L)return;let se=[L,x].filter(je=>!!je),ze=je=>{se.every(Nt=>ha(je,Nt))&&t?.setValue(v)};for(let je of se)je.addEventListener("focusout",ze);return()=>{for(let je of se)je.removeEventListener("focusout",ze)}},[C,x,t,v]);let Ne=L=>L.currentTarget.value.length>=a,He=b.onChange,ot=Me(l??Ne),qt=Me(i??!t.tag),vr=te(L=>{if(He?.(L),L.defaultPrevented||!t)return;let se=L.currentTarget,{value:ze,selectionStart:je,selectionEnd:Nt}=se,xr=L.nativeEvent;if(I.current=!0,u0(xr)&&(xr.isComposing&&(I.current=!1,M.current=!0),C)){let nt=xr.inputType==="insertText"||xr.inputType==="insertCompositionText",ho=je===ze.length;k(nt&&ho)}if(qt(L)){let nt=ze===t.getState().value;t.setValue(ze),queueMicrotask(()=>{Un(se,je,Nt)}),C&&N&&nt&&V()}ot(L)&&t.show(),(!N||!I.current)&&t.setActiveId(null)}),q=b.onCompositionEnd,Q=te(L=>{I.current=!0,M.current=!1,q?.(L),!L.defaultPrevented&&N&&V()}),he=b.onMouseDown,hr=Me(m??(()=>!!t?.getState().includesBaseElement)),br=Me(p),go=Me(u??Ne),vo=te(L=>{he?.(L),!L.defaultPrevented&&(L.button||L.ctrlKey||t&&(hr(L)&&t.setActiveId(null),br(L)&&t.setValue(v),go(L)&&no(L.currentTarget,"mouseup",t.show)))}),jo=b.onKeyDown,Pn=Me(d??Ne),Fs=te(L=>{if(jo?.(L),L.repeat||(I.current=!1),L.defaultPrevented||L.ctrlKey||L.altKey||L.shiftKey||L.metaKey||!t)return;let{open:se}=t.getState();se||(L.key==="ArrowUp"||L.key==="ArrowDown")&&Pn(L)&&(L.preventDefault(),t.show())}),Tc=b.onBlur,Uh=te(L=>{I.current=!1,Tc?.(L),L.defaultPrevented}),qh=Ft(b.id),$h=c0(S)?S:void 0,Kh=t.useState(L=>L.activeId===null);return b={id:qh,role:"combobox","aria-autocomplete":$h,"aria-haspopup":su(x,"listbox"),"aria-expanded":O,"aria-controls":x?.id,"data-active-item":Kh||void 0,value:v,...b,ref:Ie(_,b.ref),onChange:vr,onCompositionEnd:Q,onMouseDown:vo,onKeyDown:Fs,onBlur:Uh},b=Cu({store:t,focusable:r,...b,moveOnKeyPress:L=>ou(g,L)?!1:(C&&k(!0),!0)}),b=Ou({store:t,...b}),{autoComplete:"off",...b}}),Ia=pe(function(t){let r=d0(t);return xe(l0,r)});var Oa=c(le(),1),ku=c(R(),1),m0="div";function p0(e,t){if(t!=null)return e==null?!1:Array.isArray(e)?e.includes(t):e===t}function g0(e){var t;return(t={menu:"menuitem",listbox:"option",tree:"treeitem"}[e])!=null?t:"option"}var Um=ye(function({store:t,value:r,hideOnClick:o,setValueOnClick:n,selectValueOnClick:i=!0,resetValueOnSelect:a,focusOnHover:l=!1,moveOnKeyPress:s=!0,getItem:u,...f}){var d;let m=mn();t=t||m,Qe(t,!1);let{resetValueOnSelectState:p,multiSelectable:g,selected:S}=_a(t,{resetValueOnSelectState:"resetValueOnSelect",multiSelectable(h){return Array.isArray(h.selectedValue)},selected(h){return p0(h.selectedValue,r)}}),b=(0,Oa.useCallback)(h=>{let E={...h,value:r};return u?u(E):E},[r,u]);n=n??!g,o=o??(r!=null&&!g);let y=f.onClick,_=Me(n),A=Me(i),V=Me((d=a??p)!=null?d:g),I=Me(o),M=te(h=>{y?.(h),!h.defaultPrevented&&(Pd(h)||Ed(h)||(r!=null&&(A(h)&&(V(h)&&t?.resetValue(),t?.setSelectedValue(E=>Array.isArray(E)?E.includes(r)?E.filter(P=>P!==r):[...E,r]:r)),_(h)&&t?.setValue(r)),I(h)&&t?.hide()))}),N=f.onKeyDown,C=te(h=>{if(N?.(h),h.defaultPrevented)return;let E=t?.getState().baseElement;if(!E||Lt(E))return;(h.key.length===1||h.key==="Backspace"||h.key==="Delete")&&(queueMicrotask(()=>E.focus()),mt(E)&&t?.setValue(E.value))});g&&S!=null&&(f={"aria-selected":S,...f}),f=rr(f,h=>(0,ku.jsx)(Ta.Provider,{value:r,children:(0,ku.jsx)(Fm.Provider,{value:S??!1,children:h})}),[r,S]);let T=(0,Oa.useContext)(Pa);f={role:g0(T),children:r,...f,onClick:M,onKeyDown:C};let k=Me(s);return f=Su({store:t,...f,getItem:b,moveOnKeyPress:h=>{if(!k(h))return!1;let E=new Event("combobox-item-move"),P=t?.getState().baseElement;return P?.dispatchEvent(E),!0}}),f=Vu({store:t,focusOnHover:l,...f}),f}),oi=io(pe(function(t){let r=Um(t);return xe(m0,r)}));var Ra=c(le(),1),$m=c(R(),1),v0="span";function qm(e){return Wn(e).toLowerCase()}function h0(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 b0(e){return e.filter(([t,r],o,n)=>!n.some(([i,a],l)=>l!==o&&i<=t&&i+a>=t+r))}function x0(e){return e.sort(([t],[r])=>t-r)}function y0(e,t){if(!e||!t)return e;let r=_u(t).filter(Boolean).map(qm),o=[],n=(s,u=!1)=>(0,$m.jsx)("span",{"data-autocomplete-value":u?"":void 0,"data-user-value":u?void 0:"",children:s},o.length),i=x0(b0(h0(qm(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(([s,u],f)=>{var d;let m=e.slice(s,s+u),p=(d=i[f+1])==null?void 0:d[0],g=e.slice(s+u,p);return[m,g]})].forEach((s,u)=>{s&&o.push(n(s,u%2===0))}),o}var w0=ye(function({store:t,value:r,userValue:o,...n}){let i=mn();t=t||i;let a=(0,Ra.useContext)(Ta),l=r??a,s=un(t,f=>o??f?.value);return n={children:(0,Ra.useMemo)(()=>{if(l)return s?y0(l,s):l},[l,s]),...n},Je(n)}),Va=pe(function(t){let r=w0(t);return xe(v0,r)});var S0="label",_0=ye(function({store:t,...r}){let o=Aa();return t=t||o,Qe(t,!1),r={htmlFor:t.useState(i=>{var a;return(a=i.baseElement)==null?void 0:a.id}),...r},Je(r)}),ka=io(pe(function(t){let r=_0(t);return xe(S0,r)}));var Na=c(le(),1),Nu=c(R(),1),C0="div",Km=ye(function({store:t,alwaysVisible:r,...o}){let n=mn(!0),i=Iu();t=t||i;let a=!!t&&t===n;Qe(t,!1);let l=(0,Na.useRef)(null),s=Ft(o.id),u=t.useState("mounted"),f=Tu(u,o.hidden,r),d=f?{...o.style,display:"none"}:o.style,m=t.useState(V=>Array.isArray(V.selectedValue)),p=Md(l,"role",o.role),S=(p==="listbox"||p==="tree"||p==="grid")&&m||void 0,[b,y]=(0,Na.useState)(!1),_=t.useState("contentElement");Te(()=>{if(!u)return;let V=l.current;if(!V||_!==V)return;let I=()=>{y(!!V.querySelector("[role='listbox']"))},M=new MutationObserver(I);return M.observe(V,{subtree:!0,childList:!0,attributeFilter:["role"]}),I(),()=>M.disconnect()},[u,_]),b||(o={role:"listbox","aria-multiselectable":S,...o}),o=rr(o,V=>(0,Nu.jsx)(Mm,{value:t,children:(0,Nu.jsx)(Pa.Provider,{value:p,children:V})}),[t,p]);let A=s&&(!n||!a)?t.setContentElement:null;return o={id:s,hidden:f,...o,ref:Ie(A,l,o.ref),style:d},Je(o)}),ni=pe(function(t){let r=Km(t);return xe(C0,r)});var Du=c(le(),1),hI=(0,Du.createContext)(null),bI=(0,Du.createContext)(null),ii=_t([an],[ya]),Xm=ii.useContext,xI=ii.useScopedContext,yI=ii.useProviderContext,wI=ii.ContextProvider,SI=ii.ScopedContextProvider;var E0=Eo()&&uu();function Zm({tag:e,...t}={}){let r=Oo(t.store,wu(e,["value","rtl"]));let o=e?.getState(),n=r?.getState(),i=ee(t.activeId,n?.activeId,t.defaultActiveId,null),a=Vm({...t,activeId:i,includesBaseElement:ee(t.includesBaseElement,n?.includesBaseElement,!0),orientation:ee(t.orientation,n?.orientation,"vertical"),focusLoop:ee(t.focusLoop,n?.focusLoop,!0),focusWrap:ee(t.focusWrap,n?.focusWrap,!0),virtualFocus:ee(t.virtualFocus,n?.virtualFocus,!0)}),l=Hm({...t,placement:ee(t.placement,n?.placement,"bottom-start")}),s=ee(t.value,n?.value,t.defaultValue,""),u=ee(t.selectedValue,n?.selectedValue,o?.values,t.defaultSelectedValue,""),f=Array.isArray(u),d={...a.getState(),...l.getState(),value:s,selectedValue:u,resetValueOnSelect:ee(t.resetValueOnSelect,n?.resetValueOnSelect,f),resetValueOnHide:ee(t.resetValueOnHide,n?.resetValueOnHide,f&&!e),activeValue:n?.activeValue},m=gt(d,a,l,r);return E0&&$e(m,()=>Ke(m,["virtualFocus"],()=>{m.setState("virtualFocus",!1)})),$e(m,()=>{if(e)return ro(Ke(m,["selectedValue"],p=>{Array.isArray(p.selectedValue)&&e.setValues(p.selectedValue)}),Ke(e,["values"],p=>{m.setState("selectedValue",p.values)}))}),$e(m,()=>Ke(m,["resetValueOnHide","mounted"],p=>{p.resetValueOnHide&&(p.mounted||m.setState("value",s))})),$e(m,()=>Ke(m,["open"],p=>{p.open||(m.setState("activeId",i),m.setState("moves",0))})),$e(m,()=>Ke(m,["moves","activeId"],(p,g)=>{p.moves===g.moves&&m.setState("activeValue",void 0)})),$e(m,()=>so(m,["moves","renderedItems"],(p,g)=>{if(p.moves===g.moves)return;let{activeId:S}=m.getState(),b=a.item(S);m.setState("activeValue",b?.value)})),{...l,...a,...m,tag:e,setValue:p=>m.setState("value",p),resetValue:()=>m.setState("value",d.value),setSelectedValue:p=>m.setState("selectedValue",p)}}function A0(e){let t=Xm();return e={...e,tag:e.tag!==void 0?e.tag:t},km(e)}function T0(e,t,r){return tr(t,[r.tag]),Oe(e,r,"value","setValue"),Oe(e,r,"selectedValue","setSelectedValue"),Oe(e,r,"resetValueOnHide"),Oe(e,r,"resetValueOnSelect"),Object.assign(Nm(zm(e,t,r),t,r),{tag:r.tag})}function Mu(e={}){e=A0(e);let[t,r]=cn(Zm,e);return T0(t,r,e)}var Qm=c(R(),1);function Da(e={}){let t=Mu(e);return(0,Qm.jsx)(Dm,{value:t,children:e.children})}var ip=c(Fu(),1);var ap=c(Et(),1),Tr=c(G(),1),Ro=c(z(),1),Bt=c(U(),1);var N0=[],ai=(e,t)=>e.singleSelection?t?.value:Array.isArray(t?.value)?t.value:!Array.isArray(t?.value)&&t?.value?[t.value]:N0;var si=c(z(),1),D0=[];function Xe({elements:e,getElements:t}){let r=Array.isArray(e)&&e.length>0?e:D0,[o,n]=(0,si.useState)(r),[i,a]=(0,si.useState)(!1);return(0,si.useEffect)(()=>{if(!t){n(r);return}let l=!1;return a(!0),t().then(s=>{if(!l){let u=Array.isArray(s)&&s.length>0?s:r;n(u)}}).catch(()=>{l||n(r)}).finally(()=>{l||a(!1)}),()=>{l=!0}},[t,r]),{elements:o,isLoading:i}}var ne=c(R(),1);function rp(e=""){return(0,ip.default)(e.trim().toLowerCase())}var op=(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 np(e,t){return`${e}-${t}`}var sp=({selected:e})=>(0,ne.jsx)("span",{className:j("dataviews-filters__search-widget-listitem-multi-selection",{"is-selected":e}),children:e&&(0,ne.jsx)(Bt.Icon,{icon:Rn})}),lp=({selected:e})=>(0,ne.jsx)("span",{className:j("dataviews-filters__search-widget-listitem-single-selection",{"is-selected":e})});function up({view:e,filter:t,onChangeView:r}){let o=(0,ap.useInstanceId)(up,"dataviews-filter-list-box"),[n,i]=(0,Ro.useState)(t.operators?.length===1?void 0:null),a=e.filters?.find(s=>s.field===t.field),l=ai(t,a);return(0,ne.jsx)(Bt.Composite,{virtualFocus:!0,focusLoop:!0,activeId:n,setActiveId:i,role:"listbox",className:"dataviews-filters__search-widget-listbox","aria-label":(0,Tr.sprintf)((0,Tr.__)("List of: %1$s"),t.name),onFocusVisible:()=>{!n&&t.elements.length&&i(np(o,t.elements[0].value))},render:(0,ne.jsx)(Bt.Composite.Typeahead,{}),children:t.elements.map(s=>(0,ne.jsxs)(Bt.Composite.Hover,{render:(0,ne.jsx)(Bt.Composite.Item,{id:np(o,s.value),render:(0,ne.jsx)("div",{"aria-label":s.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:op(t,a,s.value)}:f)]:[...e.filters??[],{field:t.field,operator:t.operators[0],value:op(t,a,s.value)}];r({...e,page:1,filters:u})}}),children:[t.singleSelection&&(0,ne.jsx)(lp,{selected:l===s.value}),!t.singleSelection&&(0,ne.jsx)(sp,{selected:l.includes(s.value)}),(0,ne.jsx)("span",{className:"dataviews-filters__search-widget-listitem-value",title:s.label,children:s.label})]},s.value))})}function M0({view:e,filter:t,onChangeView:r}){let[o,n]=(0,Ro.useState)(""),i=(0,Ro.useDeferredValue)(o),a=e.filters?.find(u=>u.field===t.field),l=ai(t,a),s=(0,Ro.useMemo)(()=>{let u=rp(i);return t.elements.filter(f=>rp(f.label).includes(u))},[t.elements,i]);return(0,ne.jsxs)(Da,{selectedValue:l,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,ne.jsxs)("div",{className:"dataviews-filters__search-widget-filter-combobox__wrapper",children:[(0,ne.jsx)(ka,{render:(0,ne.jsx)(Bt.VisuallyHidden,{children:(0,Tr.__)("Search items")}),children:(0,Tr.__)("Search items")}),(0,ne.jsx)(Ia,{autoSelect:"always",placeholder:(0,Tr.__)("Search"),className:"dataviews-filters__search-widget-filter-combobox__input"}),(0,ne.jsx)("div",{className:"dataviews-filters__search-widget-filter-combobox__icon",children:(0,ne.jsx)(Bt.Icon,{icon:Ol})})]}),(0,ne.jsxs)(ni,{className:"dataviews-filters__search-widget-filter-combobox-list",alwaysVisible:!0,children:[s.map(u=>(0,ne.jsxs)(oi,{resetValueOnSelect:!1,value:u.value,className:"dataviews-filters__search-widget-listitem",hideOnClick:!1,setValueOnClick:!1,focusOnHover:!0,children:[t.singleSelection&&(0,ne.jsx)(lp,{selected:l===u.value}),!t.singleSelection&&(0,ne.jsx)(sp,{selected:l.includes(u.value)}),(0,ne.jsxs)("span",{className:"dataviews-filters__search-widget-listitem-value",title:u.label,children:[(0,ne.jsx)(Va,{className:"dataviews-filters__search-widget-filter-combobox-item-value",value:u.label}),!!u.description&&(0,ne.jsx)("span",{className:"dataviews-filters__search-widget-listitem-description",children:u.description})]})]},u.value)),!s.length&&(0,ne.jsx)("p",{children:(0,Tr.__)("No results found")})]})]})}function cp(e){let{elements:t,isLoading:r}=Xe({elements:e.filter.elements,getElements:e.filter.getElements});if(r)return(0,ne.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,ne.jsx)(Bt.Spinner,{})});if(t.length===0)return(0,ne.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,Tr.__)("No elements found")});let o=t.length>10?M0:up;return(0,ne.jsx)(o,{...e,filter:{...e.filter,elements:t}})}var mp=c(dp(),1),pp=c(Et(),1),Lu=c(z(),1),gp=c(U(),1);var Bu=c(R(),1);function vp({filter:e,view:t,onChangeView:r,fields:o}){let n=t.filters?.find(u=>u.field===e.field),i=ai(e,n),a=(0,Lu.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]),l=(0,Lu.useMemo)(()=>(t.filters??[]).reduce((u,f)=>(u[f.field]=f.value,u),{}),[t.filters]),s=(0,pp.useEvent)(u=>{if(!a||!n)return;let f=a.getValue({item:u});(0,mp.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,Bu.jsx)(gp.Flex,{className:"dataviews-filters__user-input-widget",gap:2.5,direction:"column",children:(0,Bu.jsx)(a.Edit,{hideLabelFromVision:!0,data:l,field:a,operator:n.operator,onChange:s})})}var F0=Math.pow(10,8)*24*60*60*1e3,dO=-F0,Fa=6048e5,hp=864e5;var L0=3600;var bp=L0*24,mO=bp*7,B0=bp*365.2425,H0=B0/12,pO=H0*3,Hu=Symbol.for("constructDateFrom");function Ye(e,t){return typeof e=="function"?e(t):e&&typeof e=="object"&&Hu in e?e[Hu](t):e instanceof Date?new e.constructor(t):new Date(t)}function de(e,t){return Ye(t||e,e)}function La(e,t,r){let o=de(e,r?.in);return isNaN(t)?Ye(r?.in||e,NaN):(t&&o.setDate(o.getDate()+t),o)}function Ba(e,t,r){let o=de(e,r?.in);if(isNaN(t))return Ye(r?.in||e,NaN);if(!t)return o;let n=o.getDate(),i=Ye(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 z0={};function lo(){return z0}function Ir(e,t){let r=lo(),o=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,n=de(e,t?.in),i=n.getDay(),a=(i=i.getTime()?o+1:r.getTime()>=l.getTime()?o:o-1}function zu(e){let t=de(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 xp(e,...t){let r=Ye.bind(null,e||t.find(o=>typeof o=="object"));return t.map(r)}function ju(e,t){let r=de(e,t?.in);return r.setHours(0,0,0,0),r}function yp(e,t,r){let[o,n]=xp(r?.in,e,t),i=ju(o),a=ju(n),l=+i-zu(i),s=+a-zu(a);return Math.round((l-s)/hp)}function wp(e,t){let r=Ha(e,t),o=Ye(t?.in||e,0);return o.setFullYear(r,0,4),o.setHours(0,0,0,0),Vo(o)}function Sp(e,t,r){return La(e,t*7,r)}function _p(e,t,r){return Ba(e,t*12,r)}function Cp(e){return e instanceof Date||typeof e=="object"&&Object.prototype.toString.call(e)==="[object Date]"}function pn(e){return!(!Cp(e)&&typeof e!="number"||isNaN(+de(e)))}function Ep(e,t){let r=de(e,t?.in);return r.setDate(1),r.setHours(0,0,0,0),r}function za(e,t){let r=de(e,t?.in);return r.setFullYear(r.getFullYear(),0,1),r.setHours(0,0,0,0),r}var j0={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=j0[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 ja(e){return(t={})=>{let r=t.width?String(t.width):e.defaultWidth;return e.formats[r]||e.formats[e.defaultWidth]}}var W0={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Y0={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},G0={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Ap={date:ja({formats:W0,defaultWidth:"full"}),time:ja({formats:Y0,defaultWidth:"full"}),dateTime:ja({formats:G0,defaultWidth:"full"})};var U0={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},Tp=(e,t,r,o)=>U0[e];function gn(e){return(t,r)=>{let o=r?.context?String(r.context):"standalone",n;if(o==="formatting"&&e.formattingValues){let a=e.defaultFormattingWidth||e.defaultWidth,l=r?.width?String(r.width):a;n=e.formattingValues[l]||e.formattingValues[a]}else{let a=e.defaultWidth,l=r?.width?String(r.width):e.defaultWidth;n=e.values[l]||e.values[a]}let i=e.argumentCallback?e.argumentCallback(t):t;return n[i]}}var q0={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},$0={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},K0={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"]},X0={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"]},Z0={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"}},Q0={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"}},J0=(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"},Ip={ordinalNumber:J0,era:gn({values:q0,defaultWidth:"wide"}),quarter:gn({values:$0,defaultWidth:"wide",argumentCallback:e=>e-1}),month:gn({values:K0,defaultWidth:"wide"}),day:gn({values:X0,defaultWidth:"wide"}),dayPeriod:gn({values:Z0,defaultWidth:"wide",formattingValues:Q0,defaultFormattingWidth:"wide"})};function vn(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],l=o&&e.parsePatterns[o]||e.parsePatterns[e.defaultParseWidth],s=Array.isArray(l)?ty(l,d=>d.test(a)):ey(l,d=>d.test(a)),u;u=e.valueCallback?e.valueCallback(s):s,u=r.valueCallback?r.valueCallback(u):u;let f=t.slice(a.length);return{value:u,rest:f}}}function ey(e,t){for(let r in e)if(Object.prototype.hasOwnProperty.call(e,r)&&t(e[r]))return r}function ty(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 l=t.slice(n.length);return{value:a,rest:l}}}var ry=/^(\d+)(th|st|nd|rd)?/i,oy=/\d+/i,ny={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},iy={any:[/^b/i,/^(a|c)/i]},ay={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},sy={any:[/1/i,/2/i,/3/i,/4/i]},ly={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},uy={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]},cy={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},fy={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]},dy={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},my={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:Op({matchPattern:ry,parsePattern:oy,valueCallback:e=>parseInt(e,10)}),era:vn({matchPatterns:ny,defaultMatchWidth:"wide",parsePatterns:iy,defaultParseWidth:"any"}),quarter:vn({matchPatterns:ay,defaultMatchWidth:"wide",parsePatterns:sy,defaultParseWidth:"any",valueCallback:e=>e+1}),month:vn({matchPatterns:ly,defaultMatchWidth:"wide",parsePatterns:uy,defaultParseWidth:"any"}),day:vn({matchPatterns:cy,defaultMatchWidth:"wide",parsePatterns:fy,defaultParseWidth:"any"}),dayPeriod:vn({matchPatterns:dy,defaultMatchWidth:"any",parsePatterns:my,defaultParseWidth:"any"})};var Wu={code:"en-US",formatDistance:Pp,formatLong:Ap,formatRelative:Tp,localize:Ip,match:Rp,options:{weekStartsOn:0,firstWeekContainsDate:1}};function Vp(e,t){let r=de(e,t?.in);return yp(r,za(r))+1}function kp(e,t){let r=de(e,t?.in),o=+Vo(r)-+wp(r);return Math.round(o/Fa)+1}function Wa(e,t){let r=de(e,t?.in),o=r.getFullYear(),n=lo(),i=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,a=Ye(t?.in||e,0);a.setFullYear(o+1,0,i),a.setHours(0,0,0,0);let l=Ir(a,t),s=Ye(t?.in||e,0);s.setFullYear(o,0,i),s.setHours(0,0,0,0);let u=Ir(s,t);return+r>=+l?o+1:+r>=+u?o:o-1}function Np(e,t){let r=lo(),o=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,n=Wa(e,t),i=Ye(t?.in||e,0);return i.setFullYear(n,0,o),i.setHours(0,0,0,0),Ir(i,t)}function Dp(e,t){let r=de(e,t?.in),o=+Ir(r,t)-+Np(r,t);return Math.round(o/Fa)+1}function ae(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 ae(t==="yy"?o%100:o,t.length)},M(e,t){let r=e.getMonth();return t==="M"?String(r+1):ae(r+1,2)},d(e,t){return ae(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 ae(e.getHours()%12||12,t.length)},H(e,t){return ae(e.getHours(),t.length)},m(e,t){return ae(e.getMinutes(),t.length)},s(e,t){return ae(e.getSeconds(),t.length)},S(e,t){let r=t.length,o=e.getMilliseconds(),n=Math.trunc(o*Math.pow(10,r-3));return ae(n,t.length)}};var hn={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Yu={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=Wa(e,o),i=n>0?n:1-n;if(t==="YY"){let a=i%100;return ae(a,2)}return t==="Yo"?r.ordinalNumber(i,{unit:"year"}):ae(i,t.length)},R:function(e,t){let r=Ha(e);return ae(r,t.length)},u:function(e,t){let r=e.getFullYear();return ae(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 ae(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 ae(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 ae(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=Dp(e,o);return t==="wo"?r.ordinalNumber(n,{unit:"week"}):ae(n,t.length)},I:function(e,t,r){let o=kp(e);return t==="Io"?r.ordinalNumber(o,{unit:"week"}):ae(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=Vp(e);return t==="Do"?r.ordinalNumber(o,{unit:"dayOfYear"}):ae(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 ae(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 ae(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 ae(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=hn.noon:o===0?n=hn.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=hn.evening:o>=12?n=hn.afternoon:o>=4?n=hn.morning:n=hn.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"}):ae(o,t.length)},k:function(e,t,r){let o=e.getHours();return o===0&&(o=24),t==="ko"?r.ordinalNumber(o,{unit:"hour"}):ae(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 Fp(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 Fp(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"+Mp(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"+Mp(o,":");default:return"GMT"+ko(o,":")}},t:function(e,t,r){let o=Math.trunc(+e/1e3);return ae(o,t.length)},T:function(e,t,r){return ae(+e,t.length)}};function Mp(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+ae(i,2)}function Fp(e,t){return e%60===0?(e>0?"-":"+")+ae(Math.abs(e)/60,2):ko(e,t)}function ko(e,t=""){let r=e>0?"-":"+",o=Math.abs(e),n=ae(Math.trunc(o/60),2),i=ae(o%60,2);return r+n+t+i}var Lp=(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"})}},Bp=(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"})}},py=(e,t)=>{let r=e.match(/(P+)(p+)?/)||[],o=r[1],n=r[2];if(!n)return Lp(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}}",Lp(o,t)).replace("{{time}}",Bp(n,t))},Hp={p:Bp,P:py};var gy=/^D+$/,vy=/^Y+$/,hy=["D","DD","YY","YYYY"];function zp(e){return gy.test(e)}function jp(e){return vy.test(e)}function Wp(e,t,r){let o=by(e,t,r);if(console.warn(o),hy.includes(e))throw new RangeError(o)}function by(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 xy=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,yy=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,wy=/^'([^]*?)'?$/,Sy=/''/g,_y=/[a-zA-Z]/;function Gu(e,t,r){let o=lo(),n=r?.locale??o.locale??Wu,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,l=de(e,r?.in);if(!pn(l))throw new RangeError("Invalid time value");let s=t.match(yy).map(f=>{let d=f[0];if(d==="p"||d==="P"){let m=Hp[d];return m(f,n.formatLong)}return f}).join("").match(xy).map(f=>{if(f==="''")return{isToken:!1,value:"'"};let d=f[0];if(d==="'")return{isToken:!1,value:Cy(f)};if(Yu[d])return{isToken:!0,value:f};if(d.match(_y))throw new RangeError("Format string contains an unescaped latin alphabet character `"+d+"`");return{isToken:!1,value:f}});n.localize.preprocessor&&(s=n.localize.preprocessor(l,s));let u={firstWeekContainsDate:i,weekStartsOn:a,locale:n};return s.map(f=>{if(!f.isToken)return f.value;let d=f.value;(!r?.useAdditionalWeekYearTokens&&jp(d)||!r?.useAdditionalDayOfYearTokens&&zp(d))&&Wp(d,t,String(e));let m=Yu[d[0]];return m(l,d,n.localize,u)}).join("")}function Cy(e){let t=e.match(wy);return t?t[1].replace(Sy,"'"):e}function No(e,t,r){return La(e,-t,r)}function Ya(e,t,r){return Ba(e,-t,r)}function Yp(e,t,r){return Sp(e,-t,r)}function Ga(e,t,r){return _p(e,-t,r)}var H=c(G(),1),Re=c(z(),1),vt=c(Do(),1);var Uu=c(R(),1),Fe={Name:(0,Uu.jsx)("span",{className:"dataviews-filters__summary-filter-text-name"}),Value:(0,Uu.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 Yp(new Date,e);case"months":return Ya(new Date,e);case"years":return Ga(new Date,e);default:return new Date}}var qp={label:(0,H.__)("Is none of"),filterText:(e,t)=>(0,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is none of: %2$s"),e.name,t.map(r=>r.label).join(", ")),Fe),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"},Ua=[{name:_e,label:(0,H.__)("Includes"),filterText:(e,t)=>(0,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s includes: %2$s"),e.name,t.map(r=>r.label).join(", ")),Fe),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:Ce,...qp},{name:it,label:(0,H.__)("Includes all"),filterText:(e,t)=>(0,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s includes all: %2$s"),e.name,t.map(r=>r.label).join(", ")),Fe),filter(e,t,r){return r?.length?r.every(o=>t.getValue({item:e})?.includes(o)):!0},selection:"multi"},{name:Ue,...qp},{name:ft,label:(0,H.__)("Between (inc)"),filterText:(e,t)=>(0,Re.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]),Fe),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:dt,label:(0,H.__)("In the past"),filterText:(e,t)=>(0,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is in the past: %2$s"),e.name,`${t[0].value.value} ${t[0].value.unit}`),Fe),filter(e,t,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=Up(r.value,r.unit),n=(0,vt.getDate)(t.getValue({item:e}));return n>=o&&n<=new Date},selection:"custom"},{name:xt,label:(0,H.__)("Over"),filterText:(e,t)=>(0,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is over: %2$s"),e.name,`${t[0].value.value} ${t[0].value.unit}`),Fe),filter(e,t,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=Up(r.value,r.unit);return(0,vt.getDate)(t.getValue({item:e}))(0,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is: %2$s"),e.name,t[0].label),Fe),filter(e,t,r){return r===t.getValue({item:e})||r===void 0},selection:"single"},{name:Ae,label:(0,H.__)("Is not"),filterText:(e,t)=>(0,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is not: %2$s"),e.name,t[0].label),Fe),filter(e,t,r){return r!==t.getValue({item:e})},selection:"single"},{name:Hr,label:(0,H.__)("Less than"),filterText:(e,t)=>(0,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is less than: %2$s"),e.name,t[0].label),Fe),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})(0,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is greater than: %2$s"),e.name,t[0].label),Fe),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,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is less than or equal to: %2$s"),e.name,t[0].label),Fe),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})<=r},selection:"single"},{name:Wr,label:(0,H.__)("Greater than or equal"),filterText:(e,t)=>(0,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is greater than or equal to: %2$s"),e.name,t[0].label),Fe),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})>=r},selection:"single"},{name:Yr,label:(0,H.__)("Before"),filterText:(e,t)=>(0,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is before: %2$s"),e.name,t[0].label),Fe),filter(e,t,r){if(r===void 0)return!0;let o=(0,vt.getDate)(r);return(0,vt.getDate)(t.getValue({item:e}))(0,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is after: %2$s"),e.name,t[0].label),Fe),filter(e,t,r){if(r===void 0)return!0;let o=(0,vt.getDate)(r);return(0,vt.getDate)(t.getValue({item:e}))>o},selection:"single"},{name:Ur,label:(0,H.__)("Before (inc)"),filterText:(e,t)=>(0,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is on or before: %2$s"),e.name,t[0].label),Fe),filter(e,t,r){if(r===void 0)return!0;let o=(0,vt.getDate)(r);return(0,vt.getDate)(t.getValue({item:e}))<=o},selection:"single"},{name:qr,label:(0,H.__)("After (inc)"),filterText:(e,t)=>(0,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is on or after: %2$s"),e.name,t[0].label),Fe),filter(e,t,r){if(r===void 0)return!0;let o=(0,vt.getDate)(r);return(0,vt.getDate)(t.getValue({item:e}))>=o},selection:"single"},{name:$t,label:(0,H.__)("Contains"),filterText:(e,t)=>(0,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s contains: %2$s"),e.name,t[0].label),Fe),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:Kt,label:(0,H.__)("Doesn't contain"),filterText:(e,t)=>(0,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s doesn't contain: %2$s"),e.name,t[0].label),Fe),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.__)("Starts with"),filterText:(e,t)=>(0,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s starts with: %2$s"),e.name,t[0].label),Fe),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:$r,label:(0,H.__)("On"),filterText:(e,t)=>(0,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is: %2$s"),e.name,t[0].label),Fe),filter(e,t,r){if(r===void 0)return!0;let o=(0,vt.getDate)(r),n=(0,vt.getDate)(t.getValue({item:e}));return o.getTime()===n.getTime()},selection:"single"},{name:Kr,label:(0,H.__)("Not on"),filterText:(e,t)=>(0,Re.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is not: %2$s"),e.name,t[0].label),Fe),filter(e,t,r){if(r===void 0)return!0;let o=(0,vt.getDate)(r),n=(0,vt.getDate)(t.getValue({item:e}));return o.getTime()!==n.getTime()},selection:"single"}],Mo=e=>Ua.find(t=>t.name===e),$p=()=>Ua.map(e=>e.name),Kp=e=>Ua.filter(t=>t.selection==="single").some(t=>t.name===e),Xp=e=>Ua.some(t=>t.name===e);var tt=c(R(),1),Ey="Enter",Py=" ",Ay=({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,Rr.sprintf)((0,Rr.__)("Unknown status for %1$s"),r.name)};function Ty({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,tt.jsxs)(F,{direction:"row",gap:"sm",justify:"flex-start",className:"dataviews-filters__summary-operators-container",align:"center",children:[(0,tt.jsx)(Wt.FlexItem,{className:"dataviews-filters__summary-operators-filter-name",children:e.name}),(0,tt.jsx)(Wt.SelectControl,{className:"dataviews-filters__summary-operators-filter-select",label:(0,Rr.__)("Conditions"),value:i,options:o,onChange:a=>{let l=a,s=n?.operator,u=n?[...(t.filters??[]).map(f=>{if(f.field===e.field){let d=Mo(s)?.selection,m=Mo(l)?.selection,p=d!==m||[d,m].includes("custom");return{...f,value:p?void 0:f.value,operator:l}}return f})]:[...t.filters??[],{field:e.field,operator:l,value:void 0}];r({...t,page:1,filters:u})},size:"small",variant:"minimal",hideLabelFromVision:!0})]})}function Zp({addFilterRef:e,openedFilter:t,fields:r,...o}){let n=(0,qa.useRef)(null),{filter:i,view:a,onChangeView:l}=o,s=a.filters?.find(b=>b.field===i.field),u=[],f=(0,qa.useMemo)(()=>{let b=r.find(y=>y.id===i.field);return b&&{...b,getValue:({item:y})=>y[b.id]}},[r,i.field]),{elements:d}=Xe({elements:i.elements,getElements:i.getElements});if(d.length>0)u=d.filter(b=>i.singleSelection?b.value===s?.value:s?.value?.includes(b.value));else if(Array.isArray(s?.value)){let b=s.value.map(y=>f?.getValueFormatted({item:{[f.id]:y},field:f})||String(y));u=[{value:s.value,label:b}]}else if(typeof s?.value=="object")u=[{value:s.value,label:s.value}];else if(s?.value!==void 0){let b=f!==void 0?f.getValueFormatted({item:{[f.id]:s.value},field:f}):String(s.value);u=[{value:s.value,label:b}]}let m=i.isPrimary,p=s?.isLocked,g=!p&&s?.value!==void 0,S=!p&&(!m||g);return(0,tt.jsx)(Wt.Dropdown,{defaultOpen:t===i.field,contentClassName:"dataviews-filters__summary-popover",popoverProps:{placement:"bottom-start",role:"dialog"},onClose:()=>{n.current?.focus()},renderToggle:({isOpen:b,onToggle:y})=>(0,tt.jsxs)("div",{className:"dataviews-filters__summary-chip-container",children:[(0,tt.jsx)(Wt.Tooltip,{text:(0,Rr.sprintf)((0,Rr.__)("Filter by: %1$s"),i.name.toLowerCase()),placement:"top",children:(0,tt.jsx)("div",{className:j("dataviews-filters__summary-chip",{"has-reset":S,"has-values":g,"is-not-clickable":p}),role:"button",tabIndex:p?-1:0,onClick:()=>{p||y()},onKeyDown:_=>{!p&&[Ey,Py].includes(_.key)&&(y(),_.preventDefault())},"aria-disabled":p,"aria-pressed":b,"aria-expanded":b,ref:n,children:(0,tt.jsx)(Ay,{activeElements:u,filterInView:s,filter:i})})}),S&&(0,tt.jsx)(Wt.Tooltip,{text:m?(0,Rr.__)("Reset"):(0,Rr.__)("Remove"),placement:"top",children:(0,tt.jsx)("button",{className:j("dataviews-filters__summary-chip-remove",{"has-values":g}),onClick:()=>{l({...a,page:1,filters:a.filters?.filter(_=>_.field!==i.field)}),m?n.current?.focus():e.current?.focus()},children:(0,tt.jsx)(Wt.Icon,{icon:Vn})})})]}),renderContent:()=>(0,tt.jsxs)(F,{direction:"column",justify:"flex-start",children:[(0,tt.jsx)(Ty,{...o}),o.filter.hasElements?(0,tt.jsx)(cp,{...o,filter:{...o.filter,elements:d}}):(0,tt.jsx)(vp,{...o,fields:r})]})})}var $a=c(U(),1),Qp=c(G(),1),Jp=c(z(),1);var Vr=c(R(),1),{Menu:li}=K($a.privateApis);function qu({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 Iy({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)(qu,{triggerProps:{render:(0,Vr.jsx)($a.Button,{accessibleWhenDisabled:!0,size:"compact",className:"dataviews-filters-button",variant:"tertiary",disabled:!i.length,ref:n}),children:(0,Qp.__)("Add filter")},filters:e,view:t,onChangeView:r,setOpenedFilter:o})}var eg=(0,Jp.forwardRef)(Iy);var tg=c(U(),1),rg=c(G(),1),og=c(R(),1);function ng({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,og.jsx)(tg.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,rg.__)("Reset")})}var ig=c(z(),1);function Oy(e,t){return(0,ig.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(l=>l.field===o.id&&!!l.isLocked)??!1;r.push({field:o.id,name:o.label,elements:o.elements,getElements:o.getElements,hasElements:o.hasElements,singleSelection:n.some(l=>Kp(l)),operators:n,isVisible:a||i||!!t.filters?.some(l=>l.field===o.id&&Xp(l.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=Oy;var ci=c(R(),1);function Ry({className:e}){let{fields:t,view:r,onChangeView:o,openedFilter:n,setOpenedFilter:i}=(0,bn.useContext)(Y),a=(0,bn.useRef)(null),l=ui(t,r),s=(0,ci.jsx)(eg,{filters:l,view:r,onChangeView:o,ref:a,setOpenedFilter:i},"add-filter"),u=l.filter(d=>d.isVisible);if(u.length===0)return null;let f=[...u.map(d=>(0,ci.jsx)(Zp,{filter:d,view:r,fields:t,onChangeView:o,addFilterRef:a,openedFilter:n},d.field)),s];return f.push((0,ci.jsx)(ng,{filters:l,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:f})}var fi=(0,bn.memo)(Ry);var uo=c(z(),1),ag=c(U(),1);var Ka=c(G(),1);var ar=c(R(),1);function Vy(){let{filters:e,view:t,onChangeView:r,setOpenedFilter:o,isShowingFilter:n,setIsShowingFilter:i}=(0,uo.useContext)(Y),a=(0,uo.useRef)(null),l=(0,uo.useCallback)(p=>{r(p),i(!0)},[r,i]);if(e.length===0)return null;let s=e.some(p=>p.isVisible),u={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)}},d=e.some(p=>p.isPrimary||p.isLocked),m=(0,ar.jsx)(ag.Button,{ref:a,className:"dataviews-filters__visibility-toggle",size:"compact",icon:kn,disabled:d,accessibleWhenDisabled:!0,...s?f:u});return(0,ar.jsx)("div",{className:"dataviews-filters__container-visibility-toggle",children:s?(0,ar.jsx)(ky,{buttonRef:a,filtersCount:t.filters?.length,children:m}):(0,ar.jsx)(qu,{filters:e,view:t,onChangeView:l,setOpenedFilter:o,triggerProps:{render:m}})})}function ky({buttonRef:e,filtersCount:t,children:r}){return(0,uo.useEffect)(()=>()=>{e.current?.focus()},[e]),(0,ar.jsxs)(ar.Fragment,{children:[r,!!t&&(0,ar.jsx)("span",{className:"dataviews-filters-toggle__count",children:t})]})}var Xa=Vy;var sg=c(z(),1);var lg=c(R(),1);function Ny(e){let{isShowingFilter:t}=(0,sg.useContext)(Y);return t?(0,lg.jsx)(fi,{...e}):null}var Za=Ny;var ug=c(z(),1),cg=c(G(),1);var $u=c(R(),1);function Ku({className:e}){let{actions:t=[],data:r,fields:o,getItemId:n,getItemLevel:i,hasInitiallyLoaded:a,isLoading:l,view:s,onChangeView:u,selection:f,onChangeSelection:d,setOpenedFilter:m,onClickItem:p,isItemClickable:g,renderItemLink:S,defaultLayouts:b,empty:y=(0,$u.jsx)("p",{children:(0,cg.__)("No results")})}=(0,ug.useContext)(Y);if(!a)return null;let _=to.find(A=>A.type===s.type&&b[A.type])?.component;return(0,$u.jsx)(_,{className:e,actions:t,data:r,fields:o,getItemId:n,getItemLevel:i,isLoading:l,onChangeView:u,onChangeSelection:d,selection:f,setOpenedFilter:m,onClickItem:p,renderItemLink:S,isItemClickable:g,view:s,empty:y})}var fg=c(z(),1);var xn=c(R(),1),Dy=[];function Xu(){let{view:e,paginationInfo:{totalItems:t=0,totalPages:r},data:o,actions:n=Dy,isLoading:i,hasInitiallyLoaded:a,hasInfiniteScrollHandler:l}=(0,fg.useContext)(Y),s=!!i&&a&&!l&&!!o?.length,u=Qt(!!s),f=Ko(n,o)&&[Yo,Zi].includes(e.type);return!s&&(!t||!r||r<=1&&!f)?null:(!!t||s)&&(0,xn.jsx)("div",{className:"dataviews-footer",inert:s?"true":void 0,children:(0,xn.jsxs)(F,{direction:"row",justify:"end",align:"center",className:j("dataviews-footer__content",{"is-refreshing":u}),gap:"sm",children:[f&&(0,xn.jsx)(ta,{}),(0,xn.jsx)(nd,{})]})})}var dg=c(G(),1),Yt=c(z(),1),mg=c(U(),1),pg=c(Et(),1);var gg=c(R(),1),My=(0,Yt.memo)(function({label:t}){let{view:r,onChangeView:o}=(0,Yt.useContext)(Y),[n,i,a]=(0,pg.useDebouncedInput)(r.search);(0,Yt.useEffect)(()=>{i(r.search??"")},[r.search,i]);let l=(0,Yt.useRef)(o),s=(0,Yt.useRef)(r);(0,Yt.useEffect)(()=>{l.current=o,s.current=r},[o,r]),(0,Yt.useEffect)(()=>{a!==s.current?.search&&l.current({...s.current,page:1,search:a})},[a]);let u=t||(0,dg.__)("Search");return(0,gg.jsx)(mg.SearchControl,{className:"dataviews-search",onChange:i,value:n,label:u,placeholder:u,size:"compact"})}),Zu=My;var Le=c(U(),1),kr=c(G(),1),Gt=c(z(),1);var Ju=c(hg(),1),Sg=c(Et(),1);var bg=c(U(),1),Qu=c(G(),1),xg=c(z(),1);var yg=c(R(),1);function wg(){let e=(0,xg.useContext)(Y),{view:t,onChangeView:r}=e,o=t.infiniteScrollEnabled??!1;return e.hasInfiniteScrollHandler?(0,yg.jsx)(bg.ToggleControl,{label:(0,Qu.__)("Enable infinite scroll"),help:(0,Qu.__)("Automatically load more content as you scroll, instead of showing pagination links."),checked:o,onChange:n=>{r({...t,infiniteScrollEnabled:n})}}):null}var re=c(R(),1),{Menu:di}=K(Le.privateApis),Fy={className:"dataviews-config__popover",placement:"bottom-end",offset:9};function ec(){let{view:e,onChangeView:t,defaultLayouts:r}=(0,Gt.useContext)(Y),o=Object.keys(r);if(o.length<=1)return null;let n=to.find(i=>e.type===i.type);return(0,re.jsxs)(di,{children:[(0,re.jsx)(di.TriggerButton,{render:(0,re.jsx)(Le.Button,{size:"compact",icon:n?.icon,label:(0,kr.__)("Layout")})}),(0,re.jsx)(di.Popover,{children:o.map(i=>{let a=to.find(l=>l.type===i);return a?(0,re.jsx)(di.RadioItem,{value:i,name:"view-actions-available-view",checked:i===e.type,hideOnClick:!0,onChange:l=>{switch(l.target.value){case"list":case"grid":case"table":case"pickerGrid":case"pickerTable":case"activity":let s={...e};return"layout"in s&&delete s.layout,t({...s,type:l.target.value,...r[l.target.value]})}(0,Ju.default)("Invalid dataview")},children:(0,re.jsx)(di.ItemLabel,{children:a.label})},i):null})})]})}function Ly(){let{view:e,fields:t,onChangeView:r}=(0,Gt.useContext)(Y),o=(0,Gt.useMemo)(()=>t.filter(i=>i.enableSorting!==!1).map(i=>({label:i.label,value:i.id})),[t]);return(0,re.jsx)(Le.SelectControl,{__next40pxDefaultSize:!0,label:(0,kr.__)("Sort by"),value:e.sort?.field,options:o,onChange:n=>{r({...e,sort:{direction:e?.sort?.direction||"desc",field:n},showLevels:!1})}})}function By(){let{view:e,fields:t,onChangeView:r}=(0,Gt.useContext)(Y);if(t.filter(i=>i.enableSorting!==!1).length===0)return null;let n=e.sort?.direction;return!n&&e.sort?.field&&(n="desc"),(0,re.jsx)(Le.__experimentalToggleGroupControl,{className:"dataviews-view-config__sort-direction",__next40pxDefaultSize:!0,isBlock:!0,label:(0,kr.__)("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,Ju.default)("Invalid direction")},children:$i.map(i=>(0,re.jsx)(Le.__experimentalToggleGroupControlOptionIcon,{value:i,icon:mf[i],label:Xi[i]},i))})}function Hy(){let{view:e,config:t,onChangeView:r}=(0,Gt.useContext)(Y),{infiniteScrollEnabled:o}=e;return!t||!t.perPageSizes||t.perPageSizes.length<2||t.perPageSizes.length>6||o?null:(0,re.jsx)(Le.__experimentalToggleGroupControl,{__next40pxDefaultSize:!0,isBlock:!0,label:(0,kr.__)("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,re.jsx)(Le.__experimentalToggleGroupControlOption,{value:n,label:n.toString()},n))})}function zy(){let{onReset:e}=(0,Gt.useContext)(Y);return e===void 0?null:(0,re.jsx)(Le.Button,{variant:"tertiary",size:"compact",disabled:e===!1,accessibleWhenDisabled:!0,className:"dataviews-view-config__reset-button",onClick:()=>{typeof e=="function"&&e()},children:(0,kr.__)("Reset view")})}function tc(){let{view:e,onReset:t}=(0,Gt.useContext)(Y),r=(0,Sg.useInstanceId)(_g,"dataviews-view-config-dropdown"),o=to.find(i=>i.type===e.type),n=typeof t=="function";return(0,re.jsx)(Le.Dropdown,{expandOnMobile:!0,popoverProps:{...Fy,id:r},renderToggle:({onToggle:i,isOpen:a})=>(0,re.jsxs)("div",{className:"dataviews-view-config__toggle-wrapper",children:[(0,re.jsx)(Le.Button,{size:"compact",icon:cl,label:(0,kr._x)("View options","View is used as a noun"),onClick:i,"aria-expanded":a?"true":"false","aria-controls":r}),n&&(0,re.jsx)("span",{className:"dataviews-view-config__modified-indicator"})]}),renderContent:()=>(0,re.jsx)(Le.__experimentalDropdownContentWrapper,{paddingSize:"medium",className:"dataviews-config__popover-content-wrapper",children:(0,re.jsxs)(F,{direction:"column",className:"dataviews-view-config",gap:"xl",children:[(0,re.jsxs)(F,{direction:"row",justify:"space-between",align:"center",className:"dataviews-view-config__header",children:[(0,re.jsx)(Le.__experimentalHeading,{level:2,className:"dataviews-settings-section__title",children:(0,kr.__)("Appearance")}),(0,re.jsx)(zy,{})]}),(0,re.jsxs)(F,{direction:"column",gap:"lg",children:[(0,re.jsxs)(F,{direction:"row",gap:"sm",className:"dataviews-view-config__sort-controls",children:[(0,re.jsx)(Ly,{}),(0,re.jsx)(By,{})]}),!!o?.viewConfigOptions&&(0,re.jsx)(o.viewConfigOptions,{}),(0,re.jsx)(wg,{}),(0,re.jsx)(Hy,{}),(0,re.jsx)(na,{})]})]})})})}function _g(){return(0,re.jsxs)(re.Fragment,{children:[(0,re.jsx)(ec,{}),(0,re.jsx)(tc,{})]})}var jy=(0,Gt.memo)(_g),Cg=jy;var Eg=c(U(),1),Pg=c(z(),1);function ge(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 Ag=c(R(),1),{ValidatedCheckboxControl:Wy}=K(Eg.privateApis);function Tg({field:e,onChange:t,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:l,label:s,description:u,isValid:f}=e,d=(0,Pg.useCallback)(()=>{t(l({item:r,value:!a({item:r})}))},[r,a,t,l]);return(0,Ag.jsx)(Wy,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:ge(f,i),hidden:o,label:s,help:u,checked:a({item:r}),onChange:d})}var Qa=c(U(),1),Ig=c(z(),1);var rc=c(R(),1),{ValidatedComboboxControl:Yy}=K(Qa.privateApis);function Ja({data:e,field:t,onChange:r,hideLabelFromVision:o,validity:n}){let{label:i,description:a,placeholder:l,getValue:s,setValue:u,isValid:f}=t,d=s({item:e})??"",m=(0,Ig.useCallback)(S=>r(u({item:e,value:S??""})),[e,r,u]),{elements:p,isLoading:g}=Xe({elements:t.elements,getElements:t.getElements});return g?(0,rc.jsx)(Qa.Spinner,{}):(0,rc.jsx)(Yy,{required:!!t.isValid?.required,customValidity:ge(f,n),label:i,value:d,help:a,placeholder:l,options:p,onChange:m,hideLabelFromVision:o,allowReset:!0,expandOnFocus:!0})}var os=c(U(),1),Ht=c(z(),1),rs=c(G(),1),Vt=c(Do(),1);var wn=c(U(),1),oc=c(z(),1),sr=c(G(),1);var yn=c(R(),1),Gy={[dt]:[{value:"days",label:(0,sr.__)("Days")},{value:"weeks",label:(0,sr.__)("Weeks")},{value:"months",label:(0,sr.__)("Months")},{value:"years",label:(0,sr.__)("Years")}],[xt]:[{value:"days",label:(0,sr.__)("Days ago")},{value:"weeks",label:(0,sr.__)("Weeks ago")},{value:"months",label:(0,sr.__)("Months ago")},{value:"years",label:(0,sr.__)("Years ago")}]};function es({className:e,data:t,field:r,onChange:o,hideLabelFromVision:n,operator:i}){let a=Gy[i===dt?"inThePast":"over"],{id:l,label:s,getValue:u,setValue:f}=r,d=u({item:t}),{value:m="",unit:p=a[0].value}=d&&typeof d=="object"?d:{},g=(0,oc.useCallback)(b=>o(f({item:t,value:{value:Number(b),unit:p}})),[o,f,t,p]),S=(0,oc.useCallback)(b=>o(f({item:t,value:{value:m,unit:b}})),[o,f,t,m]);return(0,yn.jsx)(wn.BaseControl,{id:l,className:j(e,"dataviews-controls__relative-date"),label:s,hideLabelFromVision:n,children:(0,yn.jsxs)(F,{direction:"row",gap:"sm",children:[(0,yn.jsx)(wn.__experimentalNumberControl,{__next40pxDefaultSize:!0,className:"dataviews-controls__relative-date-number",spinControls:"none",min:1,step:1,value:m,onChange:g}),(0,yn.jsx)(wn.SelectControl,{className:"dataviews-controls__relative-date-unit",__next40pxDefaultSize:!0,label:(0,sr.__)("Unit"),value:p,options:a,onChange:S,hideLabelFromVision:!0})]})})}var Og=c(Do(),1);function ts(e){if(!e)return null;let t=(0,Og.getDate)(e);return t&&pn(t)?t:null}var co=c(R(),1),{DateCalendar:Uy,ValidatedInputControl:qy}=K(os.privateApis),$y=e=>e?(0,Vt.dateI18n)("Y-m-d\\TH:i",(0,Vt.getDate)(e)):"";function Ky({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:l,description:s,setValue:u,getValue:f,isValid:d}=t,m=f({item:e}),p=typeof m=="string"?m:void 0,[g,S]=(0,Ht.useState)(()=>ts(p)||new Date),b=(0,Ht.useRef)(null),y=(0,Ht.useRef)(void 0),_=(0,Ht.useRef)(null),A=(0,Ht.useCallback)(k=>r(u({item:e,value:k})),[e,r,u]);(0,Ht.useEffect)(()=>()=>{y.current&&clearTimeout(y.current)},[]);let V=(0,Ht.useCallback)(k=>{let h;if(k){let E=(0,Vt.dateI18n)("Y-m-d",k),P;p?P=(0,Vt.dateI18n)("H:i",(0,Vt.getDate)(p)):P=(0,Vt.dateI18n)("H:i",k),h=(0,Vt.getDate)(`${E}T${P}`).toISOString(),A(h),y.current&&clearTimeout(y.current)}else A(void 0);_.current=b.current&&b.current.ownerDocument.activeElement,y.current=setTimeout(()=>{b.current&&(b.current.focus(),b.current.blur(),A(h),_.current&&_.current instanceof HTMLElement&&_.current.focus())},0)},[A,p]),I=(0,Ht.useCallback)(k=>{if(k){let h=(0,Vt.getDate)(k);A(h.toISOString());let E=ts(h.toISOString());E&&S(E)}else A(void 0)},[A]),{format:M}=t,N=M.weekStartsOn??(0,Vt.getSettings)().l10n.startOfWeek,{timezone:{string:C}}=(0,Vt.getSettings)(),T=l;return d?.required&&!n&&!o?T=`${l} (${(0,rs.__)("Required")})`:!d?.required&&n&&!o&&(T=`${l} (${(0,rs.__)("Optional")})`),(0,co.jsx)(os.BaseControl,{id:a,label:T,help:s,hideLabelFromVision:o,children:(0,co.jsxs)(F,{direction:"column",gap:"lg",children:[(0,co.jsx)(Uy,{style:{width:"100%"},selected:p&&ts(p)||void 0,onSelect:V,month:g,onMonthChange:S,timeZone:C||void 0,weekStartsOn:N}),(0,co.jsx)(qy,{ref:b,__next40pxDefaultSize:!0,required:!!d?.required,customValidity:ge(d,i),type:"datetime-local",label:(0,rs.__)("Date time"),hideLabelFromVision:!0,value:$y(p),onChange:I})]})})}function Rg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===dt||i===xt?(0,co.jsx)(es,{className:"dataviews-controls__datetime",data:e,field:t,onChange:r,hideLabelFromVision:o,operator:i}):(0,co.jsx)(Ky,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var ut=c(U(),1),ce=c(z(),1),Ge=c(G(),1),lt=c(Do(),1);var ve=c(R(),1),{DateCalendar:Xy,DateRangeCalendar:Zy}=K(ut.privateApis),Qy=[{id:"today",label:(0,Ge.__)("Today"),getValue:()=>(0,lt.getDate)(null)},{id:"yesterday",label:(0,Ge.__)("Yesterday"),getValue:()=>{let e=(0,lt.getDate)(null);return No(e,1)}},{id:"past-week",label:(0,Ge.__)("Past week"),getValue:()=>{let e=(0,lt.getDate)(null);return No(e,7)}},{id:"past-month",label:(0,Ge.__)("Past month"),getValue:()=>{let e=(0,lt.getDate)(null);return Ya(e,1)}}],Jy=[{id:"last-7-days",label:(0,Ge.__)("Last 7 days"),getValue:()=>{let e=(0,lt.getDate)(null);return[No(e,7),e]}},{id:"last-30-days",label:(0,Ge.__)("Last 30 days"),getValue:()=>{let e=(0,lt.getDate)(null);return[No(e,30),e]}},{id:"month-to-date",label:(0,Ge.__)("Month to date"),getValue:()=>{let e=(0,lt.getDate)(null);return[Ep(e),e]}},{id:"last-year",label:(0,Ge.__)("Last year"),getValue:()=>{let e=(0,lt.getDate)(null);return[Ga(e,1),e]}},{id:"year-to-date",label:(0,Ge.__)("Year to date"),getValue:()=>{let e=(0,lt.getDate)(null);return[za(e),e]}}],Sn=e=>{if(!e)return null;let t=(0,lt.getDate)(e);return t&&pn(t)?t:null},nc=e=>e?typeof e=="string"?e:Gu(e,"yyyy-MM-dd"):"";function Vg({field:e,validity:t,inputRefs:r,isTouched:o,setIsTouched:n,children:i}){let{isValid:a}=e,[l,s]=(0,ce.useState)(void 0),u=(0,ce.useCallback)(()=>{let d=Array.isArray(r)?r:[r];for(let m of d){let p=m.current;if(p&&!p.validity.valid){s({type:"invalid",message:p.validationMessage});return}}s(void 0)},[r]);return(0,ce.useEffect)(()=>{let d=Array.isArray(r)?r:[r],m=t?ge(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,ce.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,ce.useEffect)(()=>{if(!o)return;let d=t?ge(a,t):void 0;d?s(d):u()},[o,a,t,u]),(0,ve.jsxs)("div",{onBlur:d=>{o||(!d.relatedTarget||!d.currentTarget.contains(d.relatedTarget))&&n(!0)},children:[i,(0,ve.jsx)("div",{"aria-live":"polite",children:l&&(0,ve.jsxs)("p",{className:j("components-validated-control__indicator",l.type==="invalid"?"is-invalid":void 0),children:[(0,ve.jsx)(ut.Icon,{className:"components-validated-control__indicator-icon",icon:pl,size:16,fill:"currentColor"}),l.message]})})]})}function ew({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:l,setValue:s,getValue:u,isValid:f,format:d}=t,[m,p]=(0,ce.useState)(null),g=d.weekStartsOn??(0,lt.getSettings)().l10n.startOfWeek,S=u({item:e}),b=typeof S=="string"?S:void 0,[y,_]=(0,ce.useState)(()=>Sn(b)||new Date),[A,V]=(0,ce.useState)(!1),I=(0,ce.useRef)(null),M=(0,ce.useCallback)(E=>r(s({item:e,value:E})),[e,r,s]),N=(0,ce.useCallback)(E=>{let P=E?Gu(E,"yyyy-MM-dd"):void 0;M(P),p(null),V(!0)},[M]),C=(0,ce.useCallback)(E=>{let P=E.getValue(),w=nc(P);_(P),M(w),p(E.id),V(!0)},[M]),T=(0,ce.useCallback)(E=>{if(M(E),E){let P=Sn(E);P&&_(P)}p(null),V(!0)},[M]),{timezone:{string:k}}=(0,lt.getSettings)(),h=l;return f?.required&&!n?h=`${l} (${(0,Ge.__)("Required")})`:!f?.required&&n&&(h=`${l} (${(0,Ge.__)("Optional")})`),(0,ve.jsx)(Vg,{field:t,validity:i,inputRefs:I,isTouched:A,setIsTouched:V,children:(0,ve.jsx)(ut.BaseControl,{id:a,className:"dataviews-controls__date",label:h,hideLabelFromVision:o,children:(0,ve.jsxs)(F,{direction:"column",gap:"lg",children:[(0,ve.jsxs)(F,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[Qy.map(E=>{let P=m===E.id;return(0,ve.jsx)(ut.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:P,size:"small",onClick:()=>C(E),children:E.label},E.id)}),(0,ve.jsx)(ut.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!m,size:"small",disabled:!!m,accessibleWhenDisabled:!1,children:(0,Ge.__)("Custom")})]}),(0,ve.jsx)(ut.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:I,type:"date",label:(0,Ge.__)("Date"),hideLabelFromVision:!0,value:b,onChange:T,required:!!t.isValid?.required}),(0,ve.jsx)(Xy,{style:{width:"100%"},selected:b&&Sn(b)||void 0,onSelect:N,month:y,onMonthChange:_,timeZone:k||void 0,weekStartsOn:g})]})})})}function tw({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:l,getValue:s,setValue:u,format:f}=t,d,m=s({item:e});Array.isArray(m)&&m.length===2&&m.every(w=>typeof w=="string")&&(d=m);let p=f.weekStartsOn??(0,lt.getSettings)().l10n.startOfWeek,g=(0,ce.useCallback)(w=>{r(u({item:e,value:w}))},[e,r,u]),[S,b]=(0,ce.useState)(null),y=(0,ce.useMemo)(()=>{if(!d)return{from:void 0,to:void 0};let[w,O]=d;return{from:Sn(w)||void 0,to:Sn(O)||void 0}},[d]),[_,A]=(0,ce.useState)(()=>y.from||new Date),[V,I]=(0,ce.useState)(!1),M=(0,ce.useRef)(null),N=(0,ce.useRef)(null),C=(0,ce.useCallback)((w,O)=>{w&&O?g([nc(w),nc(O)]):!w&&!O&&g(void 0)},[g]),T=(0,ce.useCallback)(w=>{C(w?.from,w?.to),b(null),I(!0)},[C]),k=(0,ce.useCallback)(w=>{let[O,x]=w.getValue();A(O),C(O,x),b(w.id),I(!0)},[C]),h=(0,ce.useCallback)((w,O)=>{let[x,v]=d||[void 0,void 0];if(C(w==="from"?O:x,w==="to"?O:v),O){let oe=Sn(O);oe&&A(oe)}b(null),I(!0)},[d,C]),{timezone:E}=(0,lt.getSettings)(),P=l;return t.isValid?.required&&!n?P=`${l} (${(0,Ge.__)("Required")})`:!t.isValid?.required&&n&&(P=`${l} (${(0,Ge.__)("Optional")})`),(0,ve.jsx)(Vg,{field:t,validity:i,inputRefs:[M,N],isTouched:V,setIsTouched:I,children:(0,ve.jsx)(ut.BaseControl,{id:a,className:"dataviews-controls__date",label:P,hideLabelFromVision:o,children:(0,ve.jsxs)(F,{direction:"column",gap:"lg",children:[(0,ve.jsxs)(F,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[Jy.map(w=>{let O=S===w.id;return(0,ve.jsx)(ut.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:O,size:"small",onClick:()=>k(w),children:w.label},w.id)}),(0,ve.jsx)(ut.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!S,size:"small",accessibleWhenDisabled:!1,disabled:!!S,children:(0,Ge.__)("Custom")})]}),(0,ve.jsxs)(F,{direction:"row",gap:"sm",justify:"space-between",className:"dataviews-controls__date-range-inputs",children:[(0,ve.jsx)(ut.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:M,type:"date",label:(0,Ge.__)("From"),hideLabelFromVision:!0,value:d?.[0],onChange:w=>h("from",w),required:!!t.isValid?.required}),(0,ve.jsx)(ut.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:N,type:"date",label:(0,Ge.__)("To"),hideLabelFromVision:!0,value:d?.[1],onChange:w=>h("to",w),required:!!t.isValid?.required})]}),(0,ve.jsx)(Zy,{style:{width:"100%"},selected:y,onSelect:T,month:_,onMonthChange:A,timeZone:E.string||void 0,weekStartsOn:p})]})})})}function kg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===dt||i===xt?(0,ve.jsx)(es,{className:"dataviews-controls__date",data:e,field:t,onChange:r,hideLabelFromVision:o,operator:i}):i===ft?(0,ve.jsx)(tw,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a}):(0,ve.jsx)(ew,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var ns=c(U(),1),Ng=c(z(),1);var ic=c(R(),1),{ValidatedSelectControl:rw}=K(ns.privateApis);function is({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{type:a,label:l,description:s,getValue:u,setValue:f,isValid:d}=t,m=a==="array",p=u({item:e})??(m?[]:""),g=(0,Ng.useCallback)(y=>r(f({item:e,value:y})),[e,r,f]),{elements:S,isLoading:b}=Xe({elements:t.elements,getElements:t.getElements});return b?(0,ic.jsx)(ns.Spinner,{}):(0,ic.jsx)(rw,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:ge(d,i),label:l,value:p,help:s,options:S,onChange:g,__next40pxDefaultSize:!0,hideLabelFromVision:o,multiple:m})}var ac=c(R(),1),ow=10;function Dg(e){let{field:t}=e,{elements:r}=Xe({elements:t.elements,getElements:t.getElements});return r.length>=ow?(0,ac.jsx)(Ja,{...e}):(0,ac.jsx)(is,{...e})}var ss=c(U(),1);var Mg=c(U(),1),Fg=c(z(),1);var Lg=c(R(),1),{ValidatedInputControl:nw}=K(Mg.privateApis);function lr({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,type:i,prefix:a,suffix:l,validity:s}){let{label:u,placeholder:f,description:d,getValue:m,setValue:p,isValid:g}=t,S=m({item:e}),b=(0,Fg.useCallback)(y=>r(p({item:e,value:y})),[e,p,r]);return(0,Lg.jsx)(nw,{required:!!g.required,markWhenOptional:n,customValidity:ge(g,s),label:u,placeholder:f,value:S??"",help:d,onChange:b,hideLabelFromVision:o,type:i,prefix:a,suffix:l,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(R(),1);function Bg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,as.jsx)(lr,{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:dl})})})}var us=c(U(),1);var ls=c(R(),1);function Hg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,ls.jsx)(lr,{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:_l})})})}var fs=c(U(),1);var cs=c(R(),1);function zg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,cs.jsx)(lr,{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:wl})})})}var Nr=c(U(),1),mi=c(z(),1),ds=c(G(),1);var fo=c(R(),1),{ValidatedNumberControl:iw}=K(Nr.privateApis);function jg(e){if(e===""||e===void 0)return"";let t=Number(e);return Number.isFinite(t)?t:""}function aw({value:e,onChange:t,hideLabelFromVision:r,step:o}){let[n="",i=""]=e,a=(0,mi.useCallback)(s=>t([jg(s),i]),[t,i]),l=(0,mi.useCallback)(s=>t([n,jg(s)]),[t,n]);return(0,fo.jsx)(Nr.BaseControl,{help:(0,ds.__)("The max. value must be greater than the min. value."),children:(0,fo.jsxs)(Nr.Flex,{direction:"row",gap:4,children:[(0,fo.jsx)(Nr.__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)(Nr.__experimentalNumberControl,{label:(0,ds.__)("Max."),value:i,min:n?Number(n)+o:void 0,onChange:l,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o})]})})}function ms({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){let l=t.format?.decimals??0,s=Math.pow(10,Math.abs(l)*-1),{label:u,description:f,getValue:d,setValue:m,isValid:p}=t,g=d({item:e})??"",S=(0,mi.useCallback)(y=>{r(m({item:e,value:["",void 0].includes(y)?void 0:Number(y)}))},[e,r,m]),b=(0,mi.useCallback)(y=>{r(m({item:e,value:y}))},[e,r,m]);if(i===ft){let y=["",""];return Array.isArray(g)&&g.length===2&&g.every(_=>typeof _=="number"||_==="")&&(y=g),(0,fo.jsx)(aw,{value:y,onChange:b,hideLabelFromVision:o,step:s})}return(0,fo.jsx)(iw,{required:!!p.required,markWhenOptional:n,customValidity:ge(p,a),label:u,help:f,value:g,onChange:S,__next40pxDefaultSize:!0,hideLabelFromVision:o,step:s,min:p.min?p.min.constraint:void 0,max:p.max?p.max.constraint:void 0})}var Wg=c(R(),1);function Yg(e){return(0,Wg.jsx)(ms,{...e})}var Gg=c(R(),1);function Ug(e){return(0,Gg.jsx)(ms,{...e})}var ps=c(U(),1),qg=c(z(),1);var sc=c(R(),1),{ValidatedRadioControl:sw}=K(ps.privateApis);function $g({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:l,getValue:s,setValue:u,isValid:f}=t,{elements:d,isLoading:m}=Xe({elements:t.elements,getElements:t.getElements}),p=s({item:e}),g=(0,qg.useCallback)(S=>r(u({item:e,value:S})),[e,r,u]);return m?(0,sc.jsx)(ps.Spinner,{}):(0,sc.jsx)(sw,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:ge(f,i),label:a,help:l,onChange:g,options:d,selected:p,hideLabelFromVision:o})}var lc=c(z(),1);var Kg=c(R(),1);function Xg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{prefix:l,suffix:s}=i||{};return(0,Kg.jsx)(lr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a,prefix:l?(0,lc.createElement)(l):void 0,suffix:s?(0,lc.createElement)(s):void 0})}var Zg=c(U(),1),Qg=c(z(),1);var Jg=c(R(),1),{ValidatedToggleControl:lw}=K(Zg.privateApis);function ev({field:e,onChange:t,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:l,getValue:s,setValue:u,isValid:f}=e,d=(0,Qg.useCallback)(()=>{t(u({item:r,value:!s({item:r})}))},[t,u,r,s]);return(0,Jg.jsx)(lw,{required:!!f.required,markWhenOptional:n,customValidity:ge(f,i),hidden:o,label:a,help:l,checked:s({item:r}),onChange:d})}var tv=c(U(),1),rv=c(z(),1);var ov=c(R(),1),{ValidatedTextareaControl:uw}=K(tv.privateApis);function nv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{rows:l=4}=i||{},{label:s,placeholder:u,description:f,setValue:d,isValid:m}=t,p=t.getValue({item:e}),g=(0,rv.useCallback)(S=>r(d({item:e,value:S})),[e,r,d]);return(0,ov.jsx)(uw,{required:!!m.required,markWhenOptional:n,customValidity:ge(m,a),label:s,placeholder:u,value:p??"",help:f,onChange:g,rows:l,minLength:m.minLength?m.minLength.constraint:void 0,maxLength:m.maxLength?m.maxLength.constraint:void 0,__next40pxDefaultSize:!0,hideLabelFromVision:o})}var _n=c(U(),1),iv=c(z(),1);var gs=c(R(),1),{ValidatedToggleGroupControl:cw}=K(_n.privateApis);function av({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:l,isValid:s}=t,u=a({item:e}),f=(0,iv.useCallback)(g=>r(l({item:e,value:g})),[e,r,l]),{elements:d,isLoading:m}=Xe({elements:t.elements,getElements:t.getElements});if(m)return(0,gs.jsx)(_n.Spinner,{});if(d.length===0)return null;let p=d.find(g=>g.value===u);return(0,gs.jsx)(cw,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:ge(s,i),__next40pxDefaultSize:!0,isBlock:!0,label:t.label,help:p?.description||t.description,onChange:f,value:u,hideLabelFromVision:o,children:d.map(g=>(0,gs.jsx)(_n.__experimentalToggleGroupControlOption,{label:g.label,value:g.value},g.value))})}var vs=c(U(),1),hs=c(z(),1);var pi=c(R(),1),{ValidatedFormTokenField:fw}=K(vs.privateApis);function sv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:l,getValue:s,setValue:u,isValid:f}=t,d=s({item:e}),{elements:m,isLoading:p}=Xe({elements:t.elements,getElements:t.getElements}),g=(0,hs.useMemo)(()=>Array.isArray(d)?d.map(b=>m?.find(_=>_.value===b)||{value:b,label:b}):[],[d,m]),S=(0,hs.useCallback)(b=>{let y=b.map(_=>typeof _=="object"&&"value"in _?_.value:_);r(u({item:e,value:y}))},[r,u,e]);return p?(0,pi.jsx)(vs.Spinner,{}):(0,pi.jsx)(fw,{required:!!f?.required,markWhenOptional:n,customValidity:ge(f,i),label:o?void 0:a,value:g,onChange:S,placeholder:l,suggestions:m?.map(b=>b.value),__experimentalValidateInput:b=>t.isValid?.elements&&m?m.some(y=>y.value===b||y.label===b):!0,__experimentalExpandOnFocus:m&&m.length>0,__experimentalShowHowTo:!t.isValid?.elements,displayTransform:b=>typeof b=="object"&&"label"in b?b.label:typeof b=="string"&&m&&m.find(_=>_.value===b)?.label||b,__experimentalRenderItem:({item:b})=>{if(typeof b=="string"&&m){let y=m.find(_=>_.value===b);return(0,pi.jsx)("span",{children:y?.label||b})}return(0,pi.jsx)("span",{children:b})}})}var dw={grad:.9,turn:360,rad:360/(2*Math.PI)},Dr=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},Ze=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},zt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e>t?e:t},vv=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},lv=function(e){return{r:zt(e.r,0,255),g:zt(e.g,0,255),b:zt(e.b,0,255),a:zt(e.a)}},uc=function(e){return{r:Ze(e.r),g:Ze(e.g),b:Ze(e.b),a:Ze(e.a,3)}},mw=/^#([0-9a-f]{3,8})$/i,bs=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},hv=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),l=a?i===t?(r-o)/a:i===r?2+(o-t)/a:4+(t-r)/a:0;return{h:60*(l<0?l+6:l),s:i?a/i*100:0,v:i/255*100,a:n}},bv=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),l=o*(1-(t-i)*r),s=o*(1-(1-t+i)*r),u=i%6;return{r:255*[o,l,a,a,s,o][u],g:255*[s,o,o,l,a,a][u],b:255*[a,a,s,o,o,l][u],a:n}},uv=function(e){return{h:vv(e.h),s:zt(e.s,0,100),l:zt(e.l,0,100),a:zt(e.a)}},cv=function(e){return{h:Ze(e.h),s:Ze(e.s),l:Ze(e.l),a:Ze(e.a,3)}},fv=function(e){return bv((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=hv(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},pw=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,gw=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,vw=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,hw=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,dv={string:[[function(e){var t=mw.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?Ze(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?Ze(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=vw.exec(e)||hw.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:lv({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=pw.exec(e)||gw.exec(e);if(!t)return null;var r,o,n=uv({h:(r=t[1],o=t[2],o===void 0&&(o="deg"),Number(r)*(dw[o]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return fv(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 Dr(t)&&Dr(r)&&Dr(o)?lv({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(!Dr(t)||!Dr(r)||!Dr(o))return null;var a=uv({h:Number(t),s:Number(r),l:Number(o),a:Number(i)});return fv(a)},"hsl"],[function(e){var t=e.h,r=e.s,o=e.v,n=e.a,i=n===void 0?1:n;if(!Dr(t)||!Dr(r)||!Dr(o))return null;var a=(function(l){return{h:vv(l.h),s:zt(l.s,0,100),v:zt(l.v,0,100),a:zt(l.a)}})({h:Number(t),s:Number(r),v:Number(o),a:Number(i)});return bv(a)},"hsv"]]},mv=function(e,t){for(var r=0;r=.5},e.prototype.toHex=function(){return t=uc(this.rgba),r=t.r,o=t.g,n=t.b,a=(i=t.a)<1?bs(Ze(255*i)):"","#"+bs(r)+bs(o)+bs(n)+a;var t,r,o,n,i,a},e.prototype.toRgb=function(){return uc(this.rgba)},e.prototype.toRgbString=function(){return t=uc(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 cv(gi(this.rgba))},e.prototype.toHslString=function(){return t=cv(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=hv(this.rgba),{h:Ze(t.h),s:Ze(t.s),v:Ze(t.v),a:Ze(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(cc(this.rgba,t))},e.prototype.desaturate=function(t){return t===void 0&&(t=.1),ct(cc(this.rgba,-t))},e.prototype.grayscale=function(){return ct(cc(this.rgba,-1))},e.prototype.lighten=function(t){return t===void 0&&(t=.1),ct(pv(this.rgba,t))},e.prototype.darken=function(t){return t===void 0&&(t=.1),ct(pv(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}):Ze(this.rgba.a,3);var r},e.prototype.hue=function(t){var r=gi(this.rgba);return typeof t=="number"?ct({h:t,s:r.s,l:r.l,a:r.a}):Ze(r.h)},e.prototype.isEqual=function(t){return this.toHex()===ct(t).toHex()},e})(),ct=function(e){return e instanceof gv?e:new gv(e)};var Ct=c(U(),1),dc=c(z(),1),xv=c(G(),1);var Mr=c(R(),1),{ValidatedInputControl:xw}=K(Ct.privateApis),yw=({color:e,onColorChange:t})=>{let r=e&&ct(e).isValid()?e:"#ffffff";return(0,Mr.jsx)(Ct.Dropdown,{className:"dataviews-controls__color-picker-dropdown",popoverProps:{resize:!1},renderToggle:({onToggle:o})=>(0,Mr.jsx)(Ct.Button,{onClick:o,"aria-label":(0,xv.__)("Open color picker"),size:"small",icon:()=>(0,Mr.jsx)(Ct.ColorIndicator,{colorValue:r})}),renderContent:()=>(0,Mr.jsx)(Ct.__experimentalDropdownContentWrapper,{paddingSize:"none",children:(0,Mr.jsx)(Ct.ColorPicker,{color:r,onChange:t,enableAlpha:!0})})})};function yv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:l,description:s,setValue:u,isValid:f}=t,d=t.getValue({item:e})||"",m=(0,dc.useCallback)(g=>{r(u({item:e,value:g}))},[e,r,u]),p=(0,dc.useCallback)(g=>{r(u({item:e,value:g||""}))},[e,r,u]);return(0,Mr.jsx)(xw,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:ge(f,i),label:a,placeholder:l,value:d,help:s,onChange:p,hideLabelFromVision:o,type:"text",prefix:(0,Mr.jsx)(Ct.__experimentalInputControlPrefixWrapper,{variant:"control",children:(0,Mr.jsx)(yw,{color:d,onColorChange:m})})})}var ys=c(U(),1),ws=c(z(),1),mc=c(G(),1);var xs=c(R(),1);function wv({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let[a,l]=(0,ws.useState)(!1),s=(0,ws.useCallback)(()=>{l(u=>!u)},[]);return(0,xs.jsx)(lr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:a?"text":"password",suffix:(0,xs.jsx)(ys.__experimentalInputControlSuffixWrapper,{variant:"control",children:(0,xs.jsx)(ys.Button,{icon:a?Dn:Vl,onClick:s,size:"small",label:a?(0,mc.__)("Hide password"):(0,mc.__)("Show password")})})})}function Ss(e){return Array.isArray(e.elements)&&e.elements.length>0||typeof e.getElements=="function"}var _v=c(R(),1),Sv={adaptiveSelect:Dg,array:sv,checkbox:Tg,color:yv,combobox:Ja,datetime:Rg,date:kg,email:Bg,telephone:Hg,url:zg,integer:Yg,number:Ug,password:wv,radio:$g,select:is,text:Xg,toggle:ev,textarea:nv,toggleGroup:av};function ww(e){return e&&typeof e=="object"&&typeof e.control=="string"}function Sw(e){let{control:t,...r}=e,o=_s(t);return o===null?null:function(i){return(0,_v.jsx)(o,{...i,config:r})}}function Cv(e,t){return typeof e.Edit=="function"?e.Edit:typeof e.Edit=="string"?_s(e.Edit):ww(e.Edit)?Sw(e.Edit):Ss(e)&&e.type!=="array"?_s("adaptiveSelect"):t===null?null:_s(t)}function _s(e){return Object.keys(Sv).includes(e)?Sv[e]:null}function _w(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 Ev=_w;var Cw=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},Pv=Cw;var Ew=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},Av=Ew;var Iv=c(G(),1);function Cs({item:e,field:t}){let{elements:r,isLoading:o}=Xe({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 Tv=c(R(),1);function Ve({item:e,field:t}){return t.hasElements?(0,Tv.jsx)(Cs,{item:e,field:t}):t.getValueFormatted({item:e,field:t})}var ur=(e,t,r)=>r==="asc"?e.localeCompare(t):t.localeCompare(e);function ke(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)}function cr(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 fr(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 dr(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 we(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 Pw({item:e,field:t}){return t.getValue({item:e})}var ht=Pw;var Aw=/^[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 Tw(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!Aw.test(r)?(0,Iv.__)("Value must be a valid email address."):null}var Ov={type:"email",render:Ve,Edit:"email",sort:ur,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[_e,Ce],validOperators:[Pe,Ae,$t,Kt,Xt,_e,Ce,it,Ue],format:{},getValueFormatted:ht,validate:{required:ke,pattern:dr,minLength:cr,maxLength:fr,elements:we,custom:Tw}};var Rv=c(G(),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 Ps(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 Vv={separatorThousand:","};function Iw({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=Vv: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 Ow(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!Number.isInteger(r)?(0,Rv.__)("Value must be an integer."):null}var kv={type:"integer",render:Ve,Edit:"integer",sort:Cn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Pe,Ae,Hr,zr,jr,Wr,ft],validOperators:[Pe,Ae,Hr,zr,jr,Wr,ft,_e,Ce,it,Ue],format:Vv,getValueFormatted:Iw,validate:{required:ke,min:Es,max:Ps,elements:we,custom:Ow}};var Nv=c(G(),1);var Dv={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=Dv:o=t.format;let{separatorThousand:n,separatorDecimal:i,decimals:a}=o,l=r.toFixed(a),[s,u]=l.split("."),f=n?s.replace(/\B(?=(\d{3})+(?!\d))/g,n):s;return a===0?f:f+i+u}function Vw(e){return e===""||e===void 0||e===null}function kw(e,t){let r=t.getValue({item:e});return!Vw(r)&&!Number.isFinite(r)?(0,Nv.__)("Value must be a number."):null}var Mv={type:"number",render:Ve,Edit:"number",sort:Cn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Pe,Ae,Hr,zr,jr,Wr,ft],validOperators:[Pe,Ae,Hr,zr,jr,Wr,ft,_e,Ce,it,Ue],format:Dv,getValueFormatted:Rw,validate:{required:ke,min:Es,max:Ps,elements:we,custom:kw}};var Fv={type:"text",render:Ve,Edit:"text",sort:ur,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[_e,Ce],validOperators:[Pe,Ae,$t,Kt,Xt,_e,Ce,it,Ue],format:{},getValueFormatted:ht,validate:{required:ke,pattern:dr,minLength:cr,maxLength:fr,elements:we}};var Fo=c(Do(),1);var Lv={datetime:(0,Fo.getSettings)().formats.datetime,weekStartsOn:(0,Fo.getSettings)().l10n.startOfWeek};function Nw({item:e,field:t}){let r=t.getValue({item:e});if(["",void 0,null].includes(r))return"";let o;return t.type!=="datetime"?o=Lv:o=t.format,(0,Fo.dateI18n)(o.datetime,(0,Fo.getDate)(r))}var Dw=(e,t,r)=>{let o=new Date(e).getTime(),n=new Date(t).getTime();return r==="asc"?o-n:n-o},Bv={type:"datetime",render:Ve,Edit:"datetime",sort:Dw,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[$r,Kr,Yr,Gr,Ur,qr,dt,xt],validOperators:[$r,Kr,Yr,Gr,Ur,qr,dt,xt],format:Lv,getValueFormatted:Nw,validate:{required:ke,elements:we}};var Lo=c(Do(),1);var Hv={date:(0,Lo.getSettings)().formats.date,weekStartsOn:(0,Lo.getSettings)().l10n.startOfWeek};function Mw({item:e,field:t}){let r=t.getValue({item:e});if(["",void 0,null].includes(r))return"";let o;return t.type!=="date"?o=Hv:o=t.format,(0,Lo.dateI18n)(o.date,(0,Lo.getDate)(r))}var Fw=(e,t,r)=>{let o=new Date(e).getTime(),n=new Date(t).getTime();return r==="asc"?o-n:n-o},zv={type:"date",render:Ve,Edit:"date",sort:Fw,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[$r,Kr,Yr,Gr,Ur,qr,dt,xt,ft],validOperators:[$r,Kr,Yr,Gr,Ur,qr,dt,xt,ft],format:Hv,getValueFormatted:Mw,validate:{required:ke,elements:we}};var As=c(G(),1);function jv(e,t){return t.getValue({item:e})===!0}function Lw({item:e,field:t}){let r=t.getValue({item:e});return r===!0?(0,As.__)("True"):r===!1?(0,As.__)("False"):""}function Bw(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 Hw=(e,t,r)=>{let o=!!e;return o===!!t?0:r==="asc"?o?1:-1:o?-1:1},Wv={type:"boolean",render:Ve,Edit:"checkbox",sort:Hw,validate:{required:jv,elements:we,custom:Bw},enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Pe,Ae],validOperators:[Pe,Ae],format:{},getValueFormatted:Lw};var Yv={type:"media",render:()=>null,Edit:null,sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:ht,validate:{}};var pc=c(G(),1);function Gv(e,t){let r=t.getValue({item:e});return Array.isArray(r)&&r.length>0&&r.every(o=>![void 0,"",null].includes(o))}function Uv({item:e,field:t}){let r=t.getValue({item:e});return(Array.isArray(r)?r:[]).join(", ")}function zw({item:e,field:t}){return Uv({item:e,field:t})}function jw(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!Array.isArray(r)?(0,pc.__)("Value must be an array."):r.every(o=>typeof o=="string")?null:(0,pc.__)("Every value must be a string.")}var Ww=(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)},qv={type:"array",render:zw,Edit:"array",sort:Ww,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[_e,Ce],validOperators:[_e,Ce,it,Ue],format:{},getValueFormatted:Uv,validate:{required:Gv,elements:we,custom:jw}};function Yw({item:e,field:t}){return t.getValue({item:e})?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":""}var $v={type:"password",render:Ve,Edit:"password",sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:Yw,validate:{required:ke,pattern:dr,minLength:cr,maxLength:fr,elements:we}};var Kv={type:"telephone",render:Ve,Edit:"telephone",sort:ur,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[_e,Ce],validOperators:[Pe,Ae,$t,Kt,Xt,_e,Ce,it,Ue],format:{},getValueFormatted:ht,validate:{required:ke,pattern:dr,minLength:cr,maxLength:fr,elements:we}};var Xv=c(G(),1);var En=c(R(),1);function Gw({item:e,field:t}){if(t.hasElements)return(0,En.jsx)(Cs,{item:e,field:t});let r=ht({item:e,field:t});return!r||!ct(r).isValid()?r:(0,En.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,En.jsx)("div",{style:{width:"16px",height:"16px",borderRadius:"50%",backgroundColor:r,border:"1px solid #ddd",flexShrink:0}}),(0,En.jsx)("span",{children:r})]})}function Uw(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!ct(r).isValid()?(0,Xv.__)("Value must be a valid color."):null}var qw=(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},Zv={type:"color",render:Gw,Edit:"color",sort:qw,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[_e,Ce],validOperators:[Pe,Ae,_e,Ce],format:{},getValueFormatted:ht,validate:{required:ke,elements:we,custom:Uw}};var Qv={type:"url",render:Ve,Edit:"url",sort:ur,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[_e,Ce],validOperators:[Pe,Ae,$t,Kt,Xt,_e,Ce,it,Ue],format:{},getValueFormatted:ht,validate:{required:ke,pattern:dr,minLength:cr,maxLength:fr,elements:we}};var $w=(e,t,r)=>typeof e=="number"&&typeof t=="number"?Cn(e,t,r):ur(e,t,r),Jv={render:Ve,Edit:null,sort:$w,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Pe,Ae],validOperators:$p(),format:{},getValueFormatted:ht,validate:{required:ke,elements:we}};function eh(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 l;typeof e.isValid?.maxLength=="number"&&t.validate.maxLength!==void 0&&(l={constraint:e.isValid.maxLength,validate:t.validate.maxLength});let s;e.isValid?.pattern!==void 0&&t.validate.pattern!==void 0&&(s={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:l,pattern:s,custom:u}}function th(e){return e.validOperators.reduce((t,r)=>{let o=Mo(r);return o?.filter&&(t[r]=o.filter),t},{})}function Kw(e,t){return{...t.format,...e.format}}var rh=Kw;function Xw(e){let t=[Ov,kv,Mv,Fv,Bv,zv,Wv,Yv,qv,$v,Kv,Zv,Qv].find(r=>r?.type===e);return t||Jv}function Ts(e){return e.map(t=>{let r=Xw(t.type),o=t.getValue||Pv(t.id),n=function(i,a,l){let s=o({item:i}),u=o({item:a});return t.sort?t.sort(s,u,l):r.sort(s,u,l)};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||Av(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:Cv(t,r.Edit),sort:n,enableSorting:t.enableSorting??r.enableSorting,enableGlobalSearch:t.enableGlobalSearch??r.enableGlobalSearch,isValid:eh(t,r),filterBy:Ev(t,r.defaultOperators,r.validOperators),filter:th(r),format:rh(t,r),getValueFormatted:t.getValueFormatted??r.getValueFormatted}})}var Bo=c(z(),1);function oh(e,t,r){let o=(0,Bo.useRef)(e),n=(0,Bo.useRef)(r),[i,a]=(0,Bo.useState)(!t);return(0,Bo.useEffect)(()=>{t||(o.current=e,n.current=r,a(!0))},[e,t,r]),{data:t&&o.current?.length?o.current:e,paginationInfo:t&&o.current?.length?n.current:r,hasInitiallyLoaded:i}}var rt=c(R(),1),Zw=e=>e.id,Qw=()=>!0,Jw=[],e1=to.filter(e=>!e.isPicker);function t1({header:e,search:t=!0,searchLabel:r=void 0}){return(0,rt.jsxs)(rt.Fragment,{children:[(0,rt.jsxs)(F,{direction:"row",align:"top",justify:"space-between",className:"dataviews__view-actions",gap:"xs",children:[(0,rt.jsxs)(F,{direction:"row",justify:"start",gap:"sm",className:"dataviews__search",children:[t&&(0,rt.jsx)(Zu,{label:r}),(0,rt.jsx)(Xa,{})]}),(0,rt.jsxs)(F,{direction:"row",gap:"xs",style:{flexShrink:0},children:[(0,rt.jsx)(Cg,{}),e]})]}),(0,rt.jsx)(Za,{className:"dataviews-filters__container"}),(0,rt.jsx)(Ku,{}),(0,rt.jsx)(Xu,{})]})}function r1({view:e,onChangeView:t,fields:r,search:o=!0,searchLabel:n=void 0,actions:i=Jw,data:a,getItemId:l=Zw,getItemLevel:s,isLoading:u=!1,paginationInfo:f,defaultLayouts:d,selection:m,onChangeSelection:p,onClickItem:g,renderItemLink:S,isItemClickable:b=Qw,header:y,children:_,config:A={perPageSizes:[10,20,50,100]},empty:V,onReset:I}){let{infiniteScrollHandler:M}=f,N=(0,bt.useRef)(null),[C,T]=(0,bt.useState)(0),k=(0,Is.useResizeObserver)(Q=>{T(Q[0].borderBoxSize[0].inlineSize)},{box:"border-box"}),[h,E]=(0,bt.useState)([]),P=m===void 0||p===void 0,w=P?h:m,[O,x]=(0,bt.useState)(null);function v(Q){let he=typeof Q=="function"?Q(w):Q;P&&E(he),p&&p(he)}let D=(0,bt.useMemo)(()=>Ts(r),[r]),B=(0,bt.useMemo)(()=>w.filter(Q=>a.some(he=>l(he)===Q)),[w,a,l]),oe=ui(D,e),fe=(0,bt.useMemo)(()=>(oe||[]).some(Q=>Q.isPrimary||Q.isLocked),[oe]),[Ne,He]=(0,bt.useState)(fe);(0,bt.useEffect)(()=>{fe&&!Ne&&He(!0)},[fe,Ne]),(0,bt.useEffect)(()=>{if(!e.infiniteScrollEnabled||!N.current)return;let Q=(0,Is.throttle)(hr=>{let br=hr.target,go=br.scrollTop,vo=br.scrollHeight,jo=br.clientHeight;go+jo>=vo-100&&M?.()},100),he=N.current;return he.addEventListener("scroll",Q),()=>{he.removeEventListener("scroll",Q),Q.cancel()}},[M,e.infiniteScrollEnabled]);let ot=(0,bt.useMemo)(()=>Object.fromEntries(Object.entries(d).filter(([Q])=>e1.some(he=>he.type===Q))),[d]),{data:qt,paginationInfo:vr,hasInitiallyLoaded:q}=oh(a,u,f);return ot[e.type]?(0,rt.jsx)(Y.Provider,{value:{view:e,onChangeView:t,fields:D,actions:i,data:qt,isLoading:u,paginationInfo:vr,selection:B,onChangeSelection:v,openedFilter:O,setOpenedFilter:x,getItemId:l,getItemLevel:s,isItemClickable:b,onClickItem:g,renderItemLink:S,containerWidth:C,containerRef:N,resizeObserverRef:k,defaultLayouts:ot,filters:oe,isShowingFilter:Ne,setIsShowingFilter:He,config:A,empty:V,hasInitiallyLoaded:q,hasInfiniteScrollHandler:!!M,onReset:I},children:(0,rt.jsx)("div",{className:"dataviews-wrapper",ref:N,children:_??(0,rt.jsx)(t1,{header:y,search:o,searchLabel:n})})}):null}var Ut=r1;Ut.BulkActionToolbar=ta;Ut.Filters=fi;Ut.FiltersToggled=Za;Ut.FiltersToggle=Xa;Ut.Layout=Ku;Ut.LayoutSwitcher=ec;Ut.Pagination=Xl;Ut.Search=Zu;Ut.ViewConfig=tc;Ut.Footer=Xu;var gc=Ut;var sh=c(Fu(),1),lh=c(ih(),1);function ah(e=""){return(0,sh.default)(e.trim().toLowerCase())}var o1=[];function vc(e,t,r){if(!e)return{data:o1,paginationInfo:{totalItems:0,totalPages:0}};let o=Ts(r),n=[...e];if(t.search){let u=ah(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=>ah(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===Ue&&(0,lh.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 l=n.length,s=1;if(t.page!==void 0&&t.perPage!==void 0){let u=(t.page-1)*t.perPage;l=n?.length||0,s=Math.ceil(l/t.perPage),n=n?.slice(u,u+t.perPage)}return{data:n,paginationInfo:{totalItems:l,totalPages:s}}}var uh=c(z(),1),ch=c(R(),1),fh=(0,uh.forwardRef)(({children:e,className:t,ariaLabel:r,as:o="div",...n},i)=>(0,ch.jsx)(o,{ref:i,className:j("admin-ui-navigable-region",t),"aria-label":r,role:"region",tabIndex:"-1",...n,children:e}));fh.displayName="NavigableRegion";var dh=fh;var mo=c(U(),1);var mh=c(U(),1),{Fill:ph,Slot:gh}=(0,mh.createSlotFill)("SidebarToggle");var Fr=c(R(),1);function vh({breadcrumbs:e,badges:t,title:r,subTitle:o,actions:n,showSidebarToggle:i=!0}){return(0,Fr.jsxs)(mo.__experimentalVStack,{className:"admin-ui-page__header",as:"header",children:[(0,Fr.jsxs)(mo.__experimentalHStack,{justify:"space-between",spacing:2,children:[(0,Fr.jsxs)(mo.__experimentalHStack,{spacing:2,justify:"left",children:[i&&(0,Fr.jsx)(gh,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),r&&(0,Fr.jsx)(mo.__experimentalHeading,{as:"h2",level:3,weight:500,truncate:!0,children:r}),e,t]}),(0,Fr.jsx)(mo.__experimentalHStack,{style:{width:"auto",flexShrink:0},spacing:2,className:"admin-ui-page__header-actions",children:n})]}),o&&(0,Fr.jsx)("p",{className:"admin-ui-page__header-subtitle",children:o})]})}var vi=c(R(),1);function hh({breadcrumbs:e,badges:t,title:r,subTitle:o,children:n,className:i,actions:a,hasPadding:l=!1,showSidebarToggle:s=!0}){let u=j("admin-ui-page",i);return(0,vi.jsxs)(dh,{className:u,ariaLabel:r,children:[(r||e||t)&&(0,vi.jsx)(vh,{breadcrumbs:e,badges:t,title:r,subTitle:o,actions:a,showSidebarToggle:s}),l?(0,vi.jsx)("div",{className:"admin-ui-page__content has-padding",children:n}):n]})}hh.SidebarToggleFill=ph;var hc=hh;var Ec=c(Os()),Ms=c(U()),Pc=c(jt()),kt=c(z()),Yh=c(yh()),Gh=c(Rs()),Ac=c(G());var Sh=c(Nl()),{lock:r3,unlock:mr}=(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 Vs=c(G()),_h="grid",n1="table",Ch={type:_h,perPage:20,sort:{field:"title",direction:"asc"},filters:[],fields:["sync-status"],layout:{badgeFields:["sync-status"]},titleField:"title",mediaField:"preview"},bc=[{slug:"all",label:(0,Vs.__)("All patterns")},{slug:"my-patterns",label:(0,Vs.__)("My patterns")},{slug:"registered",label:(0,Vs.__)("Registered")}],Eh={[n1]:{},[_h]:{layout:{badgeFields:["sync-status"]}}};var Ph=c(G());import{Preview as i1}from"@wordpress/lazy-editor";function a1({item:e}){return React.createElement(i1,{blocks:e.blocks,content:e.content,description:e.description})}var Ah={label:(0,Ph.__)("Preview"),id:"preview",render:a1,enableSorting:!1};var Ho=c(G()),Oh=c(Rs());var{PATTERN_SYNC_TYPES:Th}=mr(Oh.privateApis),s1="is",Ih=[{value:Th.full,label:(0,Ho._x)("Synced","pattern (singular)"),description:(0,Ho.__)("Patterns that are kept in sync across the site.")},{value:Th.unsynced,label:(0,Ho._x)("Not synced","pattern (singular)"),description:(0,Ho.__)("Patterns that can be changed freely without affecting the site.")}],Rh={label:(0,Ho.__)("Sync status"),id:"sync-status",render:({item:e})=>{let t=e.syncStatus;return React.createElement("span",{className:`routes-pattern-list__field-sync-status-${t}`},Ih.find(({value:r})=>r===t)?.label)},elements:Ih,filterBy:{operators:[s1],isPrimary:!0},enableSorting:!1};var Vh=c(G()),ks=c(jt()),Ns=c(Os()),xc=c(z()),l1="is";function u1({item:e}){let t=(0,ks.useSelect)(o=>o(Ns.store).getBlockPatternCategories(),[]),r=(0,xc.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 c1(){let e=(0,ks.useSelect)(r=>r(Ns.store).getUserPatternCategories(),[]),t=(0,ks.useSelect)(r=>r(Ns.store).getBlockPatternCategories(),[]);return(0,xc.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 kh(){let e=c1();return{label:(0,Vh.__)("Category"),id:"category",render:u1,elements:e,getValue:({item:t})=>t.categories,filterBy:{operators:[l1],isPrimary:!0},enableSorting:!1}}var zo=c(jt()),pr=c(Os()),yc=c(z()),Lh=c(Rs()),Bh=c(Dh());var Mh=(e,t,r)=>t===r.findIndex(o=>e.name===o.name);var{PATTERN_TYPES:gr,PATTERN_SYNC_TYPES:Hh,EXCLUDED_PATTERN_SOURCES:f1,PATTERN_DEFAULT_CATEGORY:po}=mr(Lh.privateApis),{extractWords:d1,getNormalizedSearchTerms:zh,normalizeString:Fh}=mr(Bh.privateApis);function m1(e){return{id:e.name,title:e.title,content:e.content,keywords:e.keywords||[],type:gr.theme,categories:e.categories||[],syncStatus:Hh.unsynced,description:e.description||""}}function p1(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:gr.user,categories:r,syncStatus:e.wp_pattern_sync_status||Hh.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 g1=(e,t)=>e.filter(r=>!zh(t).some(o=>o.includes(r)));function v1(e,t,r){let{categoryId:o,hasCategory:n,onlyFilterByCategory:i}=r,a=o===po||o==="my-patterns"&&e.type===gr.user||n&&n(e,o||"")?1:0;if(!a||i)return a;let l=Fh(t),s=Fh(e.title);if(l===s)a+=30;else if(s.startsWith(l))a+=20;else{let u=[e.id,e.title,e.description,...e.keywords].join(" "),f=d1(l);g1(f,u).length===0&&(a+=10)}return a}function Ds(e=[],t="",r={}){let o=zh(t),n=r.categoryId!==po&&!o.length,i={...r,onlyFilterByCategory:n},a=n?0:1,l=e.map(s=>[s,v1(s,t,i)]).filter(([,s])=>s>a);return o.length===0?l.map(([s])=>s):(l.sort(([,s],[,u])=>u-s),l.map(([s])=>s))}var wc=(0,zo.createSelector)(e=>{let{getBlockPatterns:t}=e(pr.store),{isResolving:r}=e(pr.store);return{patterns:(t()||[]).filter(i=>!f1.includes(i.source)).filter(Mh).filter(i=>i.inserter!==!1).map(m1),isResolving:r("getBlockPatterns")}},e=>[e(pr.store).getBlockPatterns(),e(pr.store).isResolving("getBlockPatterns")]),Sc=(0,zo.createSelector)((e,t=void 0,r="")=>{let{getEntityRecords:o,isResolving:n,getUserPatternCategories:i}=e(pr.store),a={per_page:-1},l=o("postType",gr.user,a),s=i(),u=(l??[]).map(d=>p1(d,s)),f=n("getEntityRecords",["postType",gr.user,a]);return t&&(u=u.filter(d=>d.syncStatus===t)),u=Ds(u,r,{categoryId:po,hasCategory:()=>!0}),{patterns:u,isResolving:f,categories:s}},e=>[e(pr.store).getEntityRecords("postType",gr.user,{per_page:-1}),e(pr.store).isResolving("getEntityRecords",["postType",gr.user,{per_page:-1}]),e(pr.store).getUserPatternCategories()]),h1=(0,zo.createSelector)((e,t,r,o="")=>{let{patterns:n,isResolving:i}=wc(e),{patterns:a,isResolving:l}=Sc(e),s=[...n||[],...a||[]];return r&&(s=s.filter(u=>u.syncStatus===r)),t&&t!==po?s=Ds(s,o,{categoryId:t,hasCategory:(u,f)=>u.categories?.includes(f)}):s=Ds(s,o,{categoryId:po,hasCategory:()=>!0}),{patterns:s,isResolving:i||l}},e=>[wc(e),Sc(e)]);function jh(e){let t=(0,yc.useMemo)(()=>e?.filter(o=>o.type!==gr.theme).map(o=>[o.type,o._recordId,o.id])??[],[e]),r=(0,zo.useSelect)(o=>{let{getEntityRecordPermissions:n}=mr(o(pr.store));return t.reduce((i,[a,l,s])=>(i[s]=n("postType",a,l),i),{})},[t]);return(0,yc.useMemo)(()=>e?.map(o=>({...o,permissions:r?.[o.id]??{}}))??[],[e,r])}var b1=(e,t,{search:r="",syncStatus:o}={})=>(0,zo.useSelect)(n=>{if(e===gr.user){let i=Sc(n,o,r),{patterns:a}=i;return t&&t!==po&&(a=a.filter(l=>l.categories.includes(t))),{patterns:a,isResolving:i.isResolving}}else if(e===gr.theme){let i=wc(n),{patterns:a}=i;return t&&t!==po&&(a=a.filter(l=>l.categories.includes(t))),a=Ds(a,r,{categoryId:t||po,hasCategory:()=>!0}),{patterns:a,isResolving:i.isResolving}}return h1(n,t,o,r)},[t,e,r,o]),Wh=b1;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:C1,patternTitleField:E1}=mr(Yh.privateApis),{Tabs:_c}=mr(Ms.privateApis),{PATTERN_TYPES:Cc,CreatePatternModal:P1}=mr(Gh.privateApis);function A1(){let e=_1(),{type:t="all"}=x1({from:"/patterns/list/$type"}),r=y1(),o=w1({from:"/patterns/list/$type"}),n=(0,Pc.useSelect)(v=>v(Ec.store).getPostType("wp_block"),[]),i=n?.labels,a=(0,Pc.useSelect)(v=>v(Ec.store).canUser("create",{kind:"postType",name:"wp_block"}),[]),[l,s]=(0,kt.useState)(!1),u=(0,kt.useCallback)(v=>{r({search:{...o,...v}})},[o,r]),{view:f,isModified:d,updateView:m,resetToDefault:p}=js({kind:"postType",name:"wp_block",slug:"default-new",defaultView:Ch,queryParams:o,onChangeQueryParams:u}),g=()=>{p(),e()},S=v=>{m(v),v.type!==f.type&&e()},b=(0,kt.useMemo)(()=>f.filters?.find(D=>D.field==="category")?.value||"all-patterns",[f.filters]),y=(0,kt.useMemo)(()=>f.filters?.find(D=>D.field==="sync-status")?.value,[f.filters]),_=(0,kt.useMemo)(()=>t==="my-patterns"?Cc.user:t==="registered"?Cc.theme:null,[t]),{patterns:A,isResolving:V}=Wh(_,b,{search:f.search,syncStatus:y}),I=jh(A),M=kh(),N=(0,kt.useMemo)(()=>{let v=[Ah,E1,M];return(t==="my-patterns"||t==="all")&&v.push(Rh),v},[t,M]),{data:C,paginationInfo:T}=(0,kt.useMemo)(()=>{let v={...f};return delete v.search,v.filters=[],vc(I,v,N)},[I,f,N]),{totalItems:k,totalPages:h}=T,E=(0,kt.useCallback)(v=>{let D=v.map(fe=>fe.id),B=o.postIds||[],oe=B.filter(fe=>!D.includes(fe));oe.length!==B.length?r({search:{...o,postIds:oe.length>0?oe:void 0}}):e()},[e,o,r]),P=C1({postType:"wp_block",context:"list",onActionPerformed:(v,D)=>{(v==="move-to-trash"||v==="permanently-delete")&&E(D)}}),w=(0,kt.useMemo)(()=>[...P?.flatMap(v=>v.id==="view-post-revisions"?[]:[v])],[P]),O=(0,kt.useCallback)(v=>{r({to:`/patterns/list/${v}`})},[r]);if(!n)return null;let x=o.postIds??[];return f.type==="list"&&x.length===0&&C?.length>0&&x.push(C[0].id),f.type==="list"&&x.splice(1),React.createElement(hc,{title:(0,Ac.__)("Patterns"),subTitle:(0,Ac.__)("Reusable design elements for your site. Create once, use everywhere."),className:"pattern-page",actions:i?.add_new_item&&a&&React.createElement(Ms.Button,{variant:"primary",onClick:()=>s(!0),size:"compact"},i.add_new_item),hasPadding:!1},bc.length>1&&React.createElement("div",{className:"routes-pattern-list__tabs-wrapper"},React.createElement(_c,{onSelect:O,selectedTabId:t??"all"},React.createElement(_c.TabList,null,bc.map(v=>React.createElement(_c.Tab,{tabId:v.slug,key:v.slug},v.label))))),React.createElement(gc,{data:C,fields:N,view:f,onChangeView:S,actions:w,isLoading:V,paginationInfo:{totalItems:k,totalPages:h},defaultLayouts:Eh,selection:x,onReset:d?g:!1,onChangeSelection:v=>{r({search:{...o,postIds:v.length>0?v:void 0,edit:v.length===0?void 0:o.edit}})},isItemClickable:v=>v.type!==Cc.theme,renderItemLink:({item:v,...D})=>React.createElement(S1,{to:`/types/wp_block/edit/${encodeURIComponent(v.id)}`,...D,onClick:B=>{B.stopPropagation()}})}),l&&React.createElement(P1,{onClose:()=>s(!1),onSuccess:({pattern:v})=>{s(!1),r({to:`/types/wp_block/edit/${encodeURIComponent(v.id)}`})},content:[]}))}var T1=A1;export{T1 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..9100d52a624f5 --- /dev/null +++ b/src/wp-includes/build/routes/post-list/content.js @@ -0,0 +1,17291 @@ +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] + ); + useEffect19( + 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, useEffect19 = 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 +var SCALAR_VALUES = [ + "titleField", + "mediaField", + "descriptionField", + "showTitle", + "showMedia", + "showDescription", + "showLevels", + "infiniteScrollEnabled" +]; +function mergeActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + for (const key of SCALAR_VALUES) { + if (key in activeViewOverrides) { + result = { ...result, [key]: activeViewOverrides[key] }; + } + } + 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 + }; + } + } + if (activeViewOverrides.layout) { + result = { + ...result, + layout: { + ...result.layout, + ...activeViewOverrides.layout + } + }; + } + if (activeViewOverrides.groupBy) { + result = { + ...result, + groupBy: activeViewOverrides.groupBy + }; + } + return result; +} +function stripActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + for (const key of SCALAR_VALUES) { + if (key in activeViewOverrides) { + const { [key]: _, ...rest } = result; + result = rest; + } + } + 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 + }; + } + if (activeViewOverrides.layout && "layout" in result && result.layout) { + const layout = { ...result.layout }; + for (const key of Object.keys(activeViewOverrides.layout)) { + delete layout[key]; + } + result = { + ...result, + layout: Object.keys(layout).length > 0 ? layout : void 0 + }; + } + if (activeViewOverrides.groupBy && "groupBy" in result) { + const { groupBy: _, ...rest } = result; + result = rest; + } + 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_element56 = __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/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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.Path, { fillRule: "evenodd", clipRule: "evenodd", 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" }) }); + +// 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", clipRule: "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" }) }); + +// 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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/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 gapTokens = { + xs: "var(--wpds-dimension-gap-xs, 4px)", + sm: "var(--wpds-dimension-gap-sm, 8px)", + md: "var(--wpds-dimension-gap-md, 12px)", + lg: "var(--wpds-dimension-gap-lg, 16px)", + xl: "var(--wpds-dimension-gap-xl, 24px)", + "2xl": "var(--wpds-dimension-gap-2xl, 32px)", + "3xl": "var(--wpds-dimension-gap-3xl, 40px)" +}; +var Stack = (0, import_element2.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render: render4, ...props }, ref) { + const style = { + gap: gap && gapTokens[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/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: () => { + }, + hasInitiallyLoaded: false, + 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_element11 = __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), + 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)(void 0); + 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 = void 0; + } + 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/hooks/use-delayed-loading.mjs +var import_element10 = __toESM(require_element(), 1); +function useDelayedLoading(isLoading, options = { delay: 400 }) { + const [showLoader, setShowLoader] = (0, import_element10.useState)(false); + (0, import_element10.useEffect)(() => { + if (!isLoading) { + return; + } + const timeout = setTimeout(() => { + setShowLoader(true); + }, options.delay); + return () => { + clearTimeout(timeout); + setShowLoader(false); + }; + }, [isLoading, options.delay]); + return showLoader; +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs +var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); +function getEffectiveAlign(explicitAlign, fieldType) { + if (explicitAlign) { + return explicitAlign; + } + if (fieldType === "integer" || fieldType === "number") { + return "end"; + } + return void 0; +} +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_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_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] ?? {}; + const field = fields.find((f2) => f2.id === column); + const effectiveAlign = getEffectiveAlign(align, field?.type); + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "td", + { + style: { + width, + maxWidth, + minWidth + }, + children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + TableColumnField, + { + fields, + item, + column, + align: effectiveAlign + } + ) + }, + 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_element11.useContext)(dataviews_context_default); + const isDelayedLoading = useDelayedLoading(isLoading); + const headerMenuRefs = (0, import_element11.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element11.useRef)(void 0); + const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element11.useState)(); + 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 + }); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data); + 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)(); + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + id: tableNoticeId, + children: empty + } + ); + } + 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, + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }), + "aria-busy": isLoading, + "aria-describedby": tableNoticeId, + role: isInfiniteScroll ? "feed" : void 0, + inert: !isInfiniteScroll && isLoading ? "true" : 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 field = fields.find( + (f2) => f2.id === column + ); + const effectiveAlign = getEffectiveAlign( + align, + field?.type + ); + const canInsertOrMove = view.layout?.enableMoving ?? true; + return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)( + "th", + { + style: { + width, + maxWidth, + minWidth, + textAlign: effectiveAlign + }, + "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) + )) }) + ] + } + ), + isInfiniteScroll && isLoading && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "dataviews-loading", id: tableNoticeId, children: /* @__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_element13 = __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_element12 = __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_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_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_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_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, + inert, + 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_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, + inert, + 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 isDelayedLoading = useDelayedLoading(!!isLoading); + 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; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + children: empty + } + ); + } + const gridProps = { + className: clsx_default(className, { + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }), + inert: !isInfiniteScroll && !!isLoading ? "true" : void 0, + 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. + !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)( + CompositeGrid, + { + ...gridProps, + data, + isInfiniteScroll: !!isInfiniteScroll + } + ), + isInfiniteScroll && 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_element14 = __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_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_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_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_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 isDelayedLoading = useDelayedLoading(!!isLoading); + 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; + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = hasData && groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + children: empty + } + ); + } + 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 + ), + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }), + role: view.infiniteScrollEnabled ? "feed" : "grid", + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + inert: !isInfiniteScroll && !!isLoading ? "true" : void 0, + 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 + ); + }) + } + ), + isInfiniteScroll && 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_element15 = __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_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_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_element16 = __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_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_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_element16.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 isDelayedLoading = useDelayedLoading(!!isLoading); + const hasData = !!data?.length; + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = hasData && groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + children: empty + } + ); + } + const isInert = !isInfiniteScroll && !!isLoading; + const wrapperClassName = clsx_default("dataviews-view-activity", className, { + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }); + 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, + inert: isInert ? "true" : void 0, + 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, + inert: isInert ? "true" : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(ActivityItems, { ...props }) + } + ), + isInfiniteScroll && 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_element20 = __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_element18 = __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_element17 = __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_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_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_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_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_element17.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_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_runtime41 = __toESM(require_jsx_runtime(), 1); +var GridItems = (0, import_element19.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_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_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_element21 = __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_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_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_element21.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element21.useRef)(void 0); + 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_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_element22 = __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_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_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_element23 = __toESM(require_element(), 1); +var import_jsx_runtime45 = __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_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_element31 = __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_element28 = __toESM(require_element(), 1); + +// node_modules/@ariakit/core/esm/__chunks/XMCVU3LR.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 = { ...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/YXGXYGQX.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 = { ...element.props }; + return props.ref || element.ref; +} +function mergeProps2(base, overrides) { + const props = { ...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] ? { ...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/3DNM6L6E.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) { + var _a; + const { activeElement } = getDocument(node); + if (!(activeElement == null ? void 0 : activeElement.nodeName)) { + return null; + } + if (isFrame(activeElement) && ((_a = activeElement.contentDocument) == null ? void 0 : _a.body)) { + 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/SNHYQNEZ.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 = { ...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/KPHZR4MB.js +var React6 = __toESM(require_react(), 1); +var import_react5 = __toESM(require_react(), 1); +var _React = { ...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 { ...props, wrapElement }; +} +function useMetadataProps(props, key, value) { + const parent = props.onLoadedMetadataCapture; + const onLoadedMetadataCapture = (0, import_react5.useMemo)(() => { + return Object.assign(() => { + }, { ...parent, [key]: value }); + }, [parent, key, value]); + return [parent == null ? void 0 : parent[key], { onLoadedMetadataCapture }]; +} +var hasInstalledGlobalEventListeners = false; +function useIsMouseMoving() { + (0, import_react5.useEffect)(() => { + if (hasInstalledGlobalEventListeners) return; + addGlobalEventListener("mousemove", setMouseMoving, true); + addGlobalEventListener("mousedown", resetMouseMoving, true); + addGlobalEventListener("mouseup", resetMouseMoving, true); + addGlobalEventListener("keydown", resetMouseMoving, true); + addGlobalEventListener("scroll", resetMouseMoving, true); + hasInstalledGlobalEventListeners = 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/GWSL6KNJ.js +var React7 = __toESM(require_react(), 1); +var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1); +function forwardRef22(render4) { + const Role = React7.forwardRef( + // @ts-ignore Incompatible with React 19 types. Ignore for now. + (props, ref) => render4({ ...props, ref }) + ); + Role.displayName = render4.displayName || render4.name; + return Role; +} +function memo22(Component, propsAreEqual) { + return React7.memo(Component, propsAreEqual); +} +function createElement3(Type, props) { + const { wrapElement, render: render4, ...rest } = props; + const mergedRef = useMergeRefs(props.ref, getRefProperty(render4)); + let element; + if (React7.isValidElement(render4)) { + const renderProps = { + // @ts-ignore Incompatible with React 19 types. Ignore for now. + ...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, { ...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, { ...props, children }), + /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(context.Provider, { ...props }) + ); + }; + const ScopedContextProvider = (props) => { + return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ContextProvider, { ...props, children: scopedProviders.reduceRight( + (children, Provider) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Provider, { ...props, children }), + /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(scopedContext.Provider, { ...props }) + ) }); + }; + return { + context, + scopedContext, + useContext: useContext28, + useScopedContext, + useProviderContext, + ContextProvider, + ScopedContextProvider + }; +} + +// node_modules/@ariakit/react-core/esm/__chunks/SMPCIMZM.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/AVVXDJMZ.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/5VQZOHHZ.js +function findFirstEnabledItem(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 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 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/Z2O3VLAQ.js +var import_react7 = __toESM(require_react(), 1); +var TagName = "div"; +var useCollectionItem = createHook( + function useCollectionItem2({ + store, + shouldRegisterItem = true, + getItem = identity, + // @ts-expect-error This prop may come from a collection renderer. + element, + ...props + }) { + const context = useCollectionContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react7.useRef)(element); + (0, import_react7.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 = { + ...props, + ref: useMergeRefs(ref, props.ref) + }; + return removeUndefinedValues(props); + } +); +var CollectionItem = forwardRef22(function CollectionItem2(props) { + const htmlProps = useCollectionItem(props); + return createElement3(TagName, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/SWN3JYXT.js +var import_react8 = __toESM(require_react(), 1); +var FocusableContext = (0, import_react8.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({ block: "nearest", inline: "nearest", ...options }); + } +} + +// node_modules/@ariakit/react-core/esm/__chunks/U6HHPQDW.js +var import_react9 = __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 hasInstalledGlobalEventListeners2 = false; +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({ + focusable = true, + accessibleWhenDisabled, + autoFocus, + onFocusVisible, + ...props + }) { + const ref = (0, import_react9.useRef)(null); + (0, import_react9.useEffect)(() => { + if (!focusable) return; + if (hasInstalledGlobalEventListeners2) return; + addGlobalEventListener("mousedown", onGlobalMouseDown, true); + addGlobalEventListener("keydown", onGlobalKeyDown, true); + hasInstalledGlobalEventListeners2 = true; + }, [focusable]); + if (isSafariBrowser) { + (0, import_react9.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_react9.useState)(false); + (0, import_react9.useEffect)(() => { + if (!focusable) return; + if (trulyDisabled && focusVisible) { + setFocusVisible(false); + } + }, [focusable, trulyDisabled, focusVisible]); + (0, import_react9.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; + event.currentTarget.removeAttribute("data-focus-visible"); + setFocusVisible(false); + }); + const autoFocusOnShow = (0, import_react9.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_react9.useMemo)(() => { + if (trulyDisabled) { + return { pointerEvents: "none", ...styleProp }; + } + return styleProp; + }, [trulyDisabled, styleProp]); + props = { + "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/PZ3OL7I2.js +var import_react10 = __toESM(require_react(), 1); +var TagName3 = "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({ clickOnEnter = true, clickOnSpace = true, ...props }) { + const ref = (0, import_react10.useRef)(null); + const [isNativeButton, setIsNativeButton] = (0, import_react10.useState)(false); + (0, import_react10.useEffect)(() => { + if (!ref.current) return; + setIsNativeButton(isButton(ref.current)); + }, []); + const [active, setActive] = (0, import_react10.useState)(false); + const activeRef = (0, import_react10.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 { view, ...eventInit } = event; + 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 { view, ...eventInit } = event; + queueMicrotask(() => fireClickEvent(element, eventInit)); + } + } + }); + props = { + "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(TagName3, htmlProps); +}); + +// node_modules/@ariakit/core/esm/__chunks/SXKM4CGU.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 = { ...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) { + var _a; + const initialState = {}; + for (const store2 of stores) { + const nextState = (_a = store2 == null ? void 0 : store2.getState) == null ? void 0 : _a.call(store2); + if (nextState) { + Object.assign(initialState, 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/Q5W46E73.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 = { ...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( + () => ({ ...store, useState: useState24 }), + [store, useState24] + ); + const updateStore = useEvent(() => { + setStore((store2) => createStore2({ ...props, ...store2.getState() })); + }); + return [memoizedStore, updateStore]; +} + +// node_modules/@ariakit/react-core/esm/__chunks/WZWDIE3S.js +var import_react11 = __toESM(require_react(), 1); +var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); +var TagName4 = "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({ + store, + rowId: rowIdProp, + preventScrollOnKeyDown = false, + moveOnKeyPress = true, + tabbable = false, + getItem: getItemProp, + "aria-setsize": ariaSetSizeProp, + "aria-posinset": ariaPosInSetProp, + ...props + }) { + const context = useCompositeContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react11.useRef)(null); + const row = (0, import_react11.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_react11.useCallback)( + (item) => { + var _a; + const nextItem = { + ...item, + id: id || item.id, + rowId, + disabled: !!trulyDisabled, + children: (_a = item.element) == null ? void 0 : _a.textContent + }; + if (getItemProp) { + return getItemProp(nextItem); + } + return nextItem; + }, + [id, rowId, trulyDisabled, getItemProp] + ); + const onFocusProp = props.onFocus; + const hasFocusedComposite = (0, import_react11.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_react11.useMemo)( + () => ({ id, baseElement }), + [id, baseElement] + ); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(CompositeItemContext.Provider, { value: providerValue, children: element }), + [providerValue] + ); + props = { + 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({ + store, + ...props, + getItem, + shouldRegisterItem: id ? props.shouldRegisterItem : false + }); + return removeUndefinedValues({ + ...props, + "aria-setsize": ariaSetSize, + "aria-posinset": ariaPosInSet + }); + } +); +var CompositeItem = memo22( + forwardRef22(function CompositeItem2(props) { + const htmlProps = useCompositeItem(props); + return createElement3(TagName4, htmlProps); + }) +); + +// 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/react-core/esm/__chunks/ZMWF7ASR.js +var import_react12 = __toESM(require_react(), 1); +var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1); +var TagName5 = "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 { view, ...eventInit } = event; + 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 findFirstEnabledItem( + flatten2DArray(reverseArray(groupItemsByRows(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({ + store, + composite = true, + focusOnMove = composite, + moveOnKeyPress = true, + ...props + }) { + 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 _a; + if (!store) return; + if (!moves) return; + if (!composite) return; + if (!focusOnMove) return; + const { activeId: activeId2 } = store.getState(); + const itemElement = (_a = getEnabledItem(store, activeId2)) == null ? void 0 : _a.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 _a; + if (!store) return; + if (!composite) return; + if (!virtualFocus) return; + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (!previousElement) return; + const activeElement = (_a = getEnabledItem(store, activeId)) == null ? void 0 : _a.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 _a; + 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 = (_a = getEnabledItem(store, activeId2)) == null ? void 0 : _a.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 _a; + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.nativeEvent.isComposing) return; + if (event.defaultPrevented) return; + if (!store) return; + if (!isSelfTarget(event)) return; + const { orientation, renderedItems, activeId: activeId2 } = store.getState(); + const activeItem = getEnabledItem(store, activeId2); + if ((_a = activeItem == null ? void 0 : activeItem.element) == null ? void 0 : _a.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_runtime48.jsx)(CompositeContextProvider, { value: store, children: element }), + [store] + ); + const activeDescendant = store.useState((state) => { + var _a; + if (!store) return; + if (!composite) return; + if (!state.virtualFocus) return; + return (_a = getEnabledItem(store, state.activeId)) == null ? void 0 : _a.id; + }); + props = { + "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({ focusable, ...props }); + return props; + } +); +var Composite5 = forwardRef22(function Composite22(props) { + const htmlProps = useComposite(props); + return createElement3(TagName5, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/LVDQFHCH.js +var ctx3 = createStoreContext(); +var useDisclosureContext = ctx3.useContext; +var useDisclosureScopedContext = ctx3.useScopedContext; +var useDisclosureProviderContext = ctx3.useProviderContext; +var DisclosureContextProvider = ctx3.ContextProvider; +var DisclosureScopedContextProvider = ctx3.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/A62MDFCW.js +var import_react13 = __toESM(require_react(), 1); +var ctx4 = createStoreContext( + [DisclosureContextProvider], + [DisclosureScopedContextProvider] +); +var useDialogContext = ctx4.useContext; +var useDialogScopedContext = ctx4.useScopedContext; +var useDialogProviderContext = ctx4.useProviderContext; +var DialogContextProvider = ctx4.ContextProvider; +var DialogScopedContextProvider = ctx4.ScopedContextProvider; +var DialogHeadingContext = (0, import_react13.createContext)(void 0); +var DialogDescriptionContext = (0, import_react13.createContext)(void 0); + +// node_modules/@ariakit/react-core/esm/__chunks/6B3RXHKP.js +var import_react14 = __toESM(require_react(), 1); +var import_react_dom = __toESM(require_react_dom(), 1); +var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1); +var TagName6 = "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({ store, alwaysVisible, ...props }) { + 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_react14.useRef)(null); + const id = useId3(props.id); + const [transition, setTransition] = (0, import_react14.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_runtime49.jsx)(DialogScopedContextProvider, { value: store, children: element }), + [store] + ); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const styleProp = props.style; + const style = (0, import_react14.useMemo)(() => { + if (hidden) { + return { ...styleProp, display: "none" }; + } + return styleProp; + }, [hidden, styleProp]); + props = { + 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(TagName6, htmlProps); +}); +var DisclosureContent = forwardRef22(function DisclosureContent2({ + unmountOnHide, + ...props +}) { + 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_runtime49.jsx)(DisclosureContentImpl, { ...props }); +}); + +// node_modules/@ariakit/core/esm/__chunks/75BJEVSH.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 { + ...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/WLZ6H5FH.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/react-core/esm/__chunks/JMU4N4M5.js +var ctx5 = createStoreContext( + [DialogContextProvider], + [DialogScopedContextProvider] +); +var usePopoverContext = ctx5.useContext; +var usePopoverScopedContext = ctx5.useScopedContext; +var usePopoverProviderContext = ctx5.useProviderContext; +var PopoverContextProvider = ctx5.ContextProvider; +var PopoverScopedContextProvider = ctx5.ScopedContextProvider; + +// node_modules/@ariakit/core/esm/__chunks/N5XGANPW.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 = { ...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 { + ...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/GVAFFF2B.js +function useCollectionStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.store]); + useStoreProps(store, props, "items", "setItems"); + return store; +} + +// node_modules/@ariakit/core/esm/__chunks/RVTIKFRL.js +var NULL_ITEM = { id: null }; +function findFirstEnabledItem2(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 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 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 ? findFirstEnabledItem2(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 = groupItemsByRows2(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({ + ...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 = { + ...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 = findFirstEnabledItem2(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(groupItemsByRows2(renderedItems), activeId2, canShift) + ); + items = canReverse ? reverseArray(items) : items; + items = isVerticalDirection ? verticalizeItems(items) : items; + if (activeId2 == null) { + return (_a2 = findFirstEnabledItem2(items)) == null ? void 0 : _a2.id; + } + const activeItem = items.find((item) => item.id === activeId2); + if (!activeItem) { + return (_b = findFirstEnabledItem2(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 = findFirstEnabledItem2(sortedItems, activeId2); + return nextItem2 == null ? void 0 : nextItem2.id; + } + if (canWrap) { + const nextItem2 = findFirstEnabledItem2( + // 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 = findFirstEnabledItem2(nextItemsInRow, activeId2); + if (!nextItem && hasNullItem) { + return null; + } + return nextItem == null ? void 0 : nextItem.id; + }; + return { + ...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 = findFirstEnabledItem2(composite.getState().renderedItems)) == null ? void 0 : _a2.id; + }, + last: () => { + var _a2; + return (_a2 = findFirstEnabledItem2(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/IQYAUKXT.js +function useCompositeStoreOptions(props) { + const id = useId3(props.id); + return { 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/react-core/esm/__chunks/CVCFNOHX.js +var import_react15 = __toESM(require_react(), 1); +var ComboboxListRoleContext = (0, import_react15.createContext)( + void 0 +); +var ctx6 = createStoreContext( + [PopoverContextProvider, CompositeContextProvider], + [PopoverScopedContextProvider, CompositeScopedContextProvider] +); +var useComboboxContext = ctx6.useContext; +var useComboboxScopedContext = ctx6.useScopedContext; +var useComboboxProviderContext = ctx6.useProviderContext; +var ComboboxContextProvider = ctx6.ContextProvider; +var ComboboxScopedContextProvider = ctx6.ScopedContextProvider; +var ComboboxItemValueContext = (0, import_react15.createContext)( + void 0 +); +var ComboboxItemCheckedContext = (0, import_react15.createContext)(false); + +// node_modules/@ariakit/core/esm/__chunks/KMAUV3TY.js +function createDialogStore(props = {}) { + return createDisclosureStore(props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/4NYSH4UO.js +function useDialogStoreProps(store, update2, props) { + return useDisclosureStoreProps(store, update2, props); +} + +// node_modules/@ariakit/core/esm/__chunks/BFGNM53A.js +function createPopoverStore({ + popover: otherPopover, + ...props +} = {}) { + 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({ ...props, store }); + const placement = defaultValue( + props.placement, + syncState == null ? void 0 : syncState.placement, + "bottom" + ); + const initialState = { + ...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 { + ...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/B6FLPFJM.js +function usePopoverStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.popover]); + useStoreProps(store, props, "placement"); + return useDialogStoreProps(store, update2, props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/4POTBZ2J.js +var TagName7 = "div"; +var usePopoverAnchor = createHook( + function usePopoverAnchor2({ store, ...props }) { + const context = usePopoverProviderContext(); + store = store || context; + props = { + ...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(TagName7, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/X6LNAU2F.js +var import_react16 = __toESM(require_react(), 1); +var TagName8 = "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({ + store, + focusOnHover = true, + blurOnHoverEnd = !!focusOnHover, + ...props + }) { + 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 _a; + 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); + (_a = store == null ? void 0 : store.getState().baseElement) == null ? void 0 : _a.focus(); + }); + const ref = (0, import_react16.useCallback)((element) => { + if (!element) return; + element[symbol2] = true; + }, []); + props = { + ...props, + ref: useMergeRefs(ref, props.ref), + onMouseMove, + onMouseLeave + }; + return removeUndefinedValues(props); + } +); +var CompositeHover = memo22( + forwardRef22(function CompositeHover2(props) { + const htmlProps = useCompositeHover(props); + return createElement3(TagName8, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/combobox/combobox.js +var import_react17 = __toESM(require_react(), 1); +var TagName9 = "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({ + store, + focusable = true, + autoSelect: autoSelectProp = false, + getAutoSelectId, + setValueOnChange, + showMinLength = 0, + showOnChange, + showOnMouseDown, + showOnClick = showOnMouseDown, + showOnKeyDown, + showOnKeyPress = showOnKeyDown, + blurActiveItemOnClick, + setValueOnClick = true, + moveOnKeyPress = true, + autoComplete = "list", + ...props + }) { + 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_react17.useRef)(null); + const [valueUpdated, forceValueUpdate] = useForceUpdate(); + const canAutoSelectRef = (0, import_react17.useRef)(false); + const composingRef = (0, import_react17.useRef)(false); + const autoSelect = store.useState( + (state) => state.virtualFocus && autoSelectProp + ); + const inline = autoComplete === "inline" || autoComplete === "both"; + const [canInline, setCanInline] = (0, import_react17.useState)(inline); + useUpdateLayoutEffect(() => { + if (!inline) return; + setCanInline(true); + }, [inline]); + const storeValue = store.useState("value"); + const prevSelectedValueRef = (0, import_react17.useRef)(void 0); + (0, import_react17.useEffect)(() => { + return sync(store, ["selectedValue", "activeId"], (_, prev) => { + prevSelectedValueRef.current = prev.selectedValue; + }); + }, []); + const inlineActiveValue = store.useState((state) => { + var _a; + if (!inline) return; + if (!canInline) return; + if (state.activeValue && Array.isArray(state.selectedValue)) { + if (state.selectedValue.includes(state.activeValue)) return; + if ((_a = prevSelectedValueRef.current) == null ? void 0 : _a.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_react17.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_react17.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_react17.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_react17.useRef)(null); + const getAutoSelectIdProp = useEvent(getAutoSelectId); + const autoSelectIdRef = (0, import_react17.useRef)(null); + (0, import_react17.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 _a, _b; + 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 : (_a = getDefaultAutoSelectId(items)) != null ? _a : store.first(); + autoSelectIdRef.current = autoSelectId; + store.move(autoSelectId != null ? autoSelectId : null); + } else { + const element = (_b = store.item(activeId || store.first())) == null ? void 0 : _b.element; + if (element && "scrollIntoView" in element) { + element.scrollIntoView({ block: "nearest", inline: "nearest" }); + } + } + return; + }, [ + store, + open, + valueUpdated, + storeValue, + autoSelect, + resetValueOnSelect, + getAutoSelectIdProp, + items + ]); + (0, import_react17.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 = { + 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({ + 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({ store, ...props }); + return { autoComplete: "off", ...props }; + } +); +var Combobox = forwardRef22(function Combobox2(props) { + const htmlProps = useCombobox(props); + return createElement3(TagName9, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/IBXZ2LQC.js +var import_react18 = __toESM(require_react(), 1); +var import_jsx_runtime50 = __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({ + store, + value, + hideOnClick, + setValueOnClick, + selectValueOnClick = true, + resetValueOnSelect, + focusOnHover = false, + moveOnKeyPress = true, + getItem: getItemProp, + ...props + }) { + var _a; + 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_react18.useCallback)( + (item) => { + const nextItem = { ...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( + (_a = resetValueOnSelect != null ? resetValueOnSelect : resetValueOnSelectState) != null ? _a : 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 = { + "aria-selected": selected, + ...props + }; + } + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ComboboxItemValueContext.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ComboboxItemCheckedContext.Provider, { value: selected != null ? selected : false, children: element }) }), + [value, selected] + ); + const popupRole = (0, import_react18.useContext)(ComboboxListRoleContext); + props = { + role: getItemRole(popupRole), + children: value, + ...props, + onClick, + onKeyDown + }; + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + props = useCompositeItem({ + 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({ 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-item-value.js +var import_react19 = __toESM(require_react(), 1); +var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); +var TagName11 = "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_runtime51.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({ store, value, userValue, ...props }) { + const context = useComboboxScopedContext(); + store = store || context; + const itemContext = (0, import_react19.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_react19.useMemo)(() => { + if (!itemValue) return; + if (!inputValue) return itemValue; + return splitValue(itemValue, inputValue); + }, [itemValue, inputValue]); + props = { + children, + ...props + }; + return removeUndefinedValues(props); +}); +var ComboboxItemValue = forwardRef22(function ComboboxItemValue2(props) { + const htmlProps = useComboboxItemValue(props); + return createElement3(TagName11, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-label.js +var TagName12 = "label"; +var useComboboxLabel = createHook( + function useComboboxLabel2({ store, ...props }) { + 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 _a; + return (_a = state.baseElement) == null ? void 0 : _a.id; + }); + props = { + htmlFor: comboboxId, + ...props + }; + return removeUndefinedValues(props); + } +); +var ComboboxLabel = memo22( + forwardRef22(function ComboboxLabel2(props) { + const htmlProps = useComboboxLabel(props); + return createElement3(TagName12, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/2G6YEJT4.js +var import_react20 = __toESM(require_react(), 1); +var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); +var TagName13 = "div"; +var useComboboxList = createHook( + function useComboboxList2({ store, alwaysVisible, ...props }) { + 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_react20.useRef)(null); + const id = useId3(props.id); + const mounted = store.useState("mounted"); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const style = hidden ? { ...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_react20.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 = { + role: "listbox", + "aria-multiselectable": ariaMultiSelectable, + ...props + }; + } + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ComboboxScopedContextProvider, { value: store, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ComboboxListRoleContext.Provider, { value: role, children: element }) }), + [store, role] + ); + const setContentElement = id && (!scopedContext || !scopedContextSameStore) ? store.setContentElement : null; + props = { + 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); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/XSIEPKGA.js +var import_react21 = __toESM(require_react(), 1); +var TagValueContext = (0, import_react21.createContext)(null); +var TagRemoveIdContext = (0, import_react21.createContext)( + null +); +var ctx7 = createStoreContext( + [CompositeContextProvider], + [CompositeScopedContextProvider] +); +var useTagContext = ctx7.useContext; +var useTagScopedContext = ctx7.useScopedContext; +var useTagProviderContext = ctx7.useProviderContext; +var TagContextProvider = ctx7.ContextProvider; +var TagScopedContextProvider = ctx7.ScopedContextProvider; + +// node_modules/@ariakit/core/esm/combobox/combobox-store.js +var isTouchSafari = isSafari() && isTouchDevice(); +function createComboboxStore({ + tag, + ...props +} = {}) { + 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({ + ...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({ + ...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 = { + ...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 { + ...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/SVN33SY6.js +function useComboboxStoreOptions(props) { + const tag = useTagContext(); + props = { + ...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/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 }); +} + +// 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_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_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_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_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_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", + { + className: "dataviews-filters__search-widget-listitem-value", + title: element.label, + 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_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", + { + className: "dataviews-filters__search-widget-listitem-value", + title: element.label, + 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_element26 = __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_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_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_element27 = __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_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_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_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_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_element29 = __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_element29.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_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_runtime60 = __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_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_element31.memo)(Filters); + +// packages/dataviews/build-module/components/dataviews-filters/toggle.mjs +var import_element32 = __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_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] + ); + if (filters.length === 0) { + return null; + } + const hasVisibleFilters = filters.some((filter) => filter.isVisible); + 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 hasPrimaryOrLockedFilters = filters.some( + (filter) => filter.isPrimary || filter.isLocked + ); + const buttonComponent = /* @__PURE__ */ (0, import_jsx_runtime61.jsx)( + import_components24.Button, + { + ref: buttonRef, + className: "dataviews-filters__visibility-toggle", + size: "compact", + icon: funnel_default, + disabled: hasPrimaryOrLockedFilters, + accessibleWhenDisabled: true, + ...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_element32.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_element33 = __toESM(require_element(), 1); +var import_jsx_runtime62 = __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_runtime62.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_runtime63 = __toESM(require_jsx_runtime(), 1); +function DataViewsLayout({ className }) { + const { + actions = [], + data, + fields, + getItemId: getItemId2, + getItemLevel: getItemLevel2, + hasInitiallyLoaded, + 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_element34.useContext)(dataviews_context_default); + if (!hasInitiallyLoaded) { + return null; + } + 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_element35 = __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, + isLoading, + hasInitiallyLoaded, + hasInfiniteScrollHandler + } = (0, import_element35.useContext)(dataviews_context_default); + const isRefreshing = !!isLoading && hasInitiallyLoaded && !hasInfiniteScrollHandler && !!data?.length; + const isDelayedRefreshing = useDelayedLoading(!!isRefreshing); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data) && [LAYOUT_TABLE, LAYOUT_GRID].includes(view.type); + if (!isRefreshing && (!totalItems || !totalPages || totalPages <= 1 && !hasBulkActions)) { + return null; + } + return (!!totalItems || isRefreshing) && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)( + "div", + { + className: "dataviews-footer", + inert: isRefreshing ? "true" : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)( + Stack, + { + direction: "row", + justify: "end", + align: "center", + className: clsx_default("dataviews-footer__content", { + "is-refreshing": isDelayedRefreshing + }), + 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_element36 = __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_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_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_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_components26 = __toESM(require_components(), 1); +var import_i18n30 = __toESM(require_i18n(), 1); +var import_element37 = __toESM(require_element(), 1); +var import_jsx_runtime66 = __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_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_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_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_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_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_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_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_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_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 ResetViewButton() { + const { onReset } = (0, import_element38.useContext)(dataviews_context_default); + if (onReset === void 0) { + return null; + } + const isDisabled = onReset === false; + return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.Button, + { + variant: "tertiary", + size: "compact", + disabled: isDisabled, + accessibleWhenDisabled: true, + className: "dataviews-view-config__reset-button", + onClick: () => { + if (typeof onReset === "function") { + onReset(); + } + }, + children: (0, import_i18n31.__)("Reset view") + } + ); +} +function DataviewsViewConfigDropdown() { + const { view, onReset } = (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 + ); + const isModified = typeof onReset === "function"; + 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.jsxs)("div", { className: "dataviews-view-config__toggle-wrapper", children: [ + /* @__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 + } + ), + isModified && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "dataviews-view-config__modified-indicator" }) + ] }); + }, + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalDropdownContentWrapper, + { + paddingSize: "medium", + className: "dataviews-config__popover-content-wrapper", + children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)( + Stack, + { + direction: "column", + className: "dataviews-view-config", + gap: "xl", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)( + Stack, + { + direction: "row", + justify: "space-between", + align: "center", + className: "dataviews-view-config__header", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)( + import_components27.__experimentalHeading, + { + level: 2, + className: "dataviews-settings-section__title", + children: (0, import_i18n31.__)("Appearance") + } + ), + /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(ResetViewButton, {}) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + className: "dataviews-view-config__sort-controls", + 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_element38.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_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_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_element39.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_element40 = __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_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_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_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_components30 = __toESM(require_components(), 1); +var import_element41 = __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_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_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 = (value) => { + if (!value) { + return ""; + } + return (0, import_date3.dateI18n)("Y-m-d\\TH:i", (0, import_date3.getDate)(value)); +}; +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)(void 0); + 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) { + const wpDate = (0, import_date3.dateI18n)("Y-m-d", newDate); + let wpTime; + if (value) { + wpTime = (0, import_date3.dateI18n)("H:i", (0, import_date3.getDate)(value)); + } else { + wpTime = (0, import_date3.dateI18n)("H:i", newDate); + } + const finalDateTime = (0, import_date3.getDate)(`${wpDate}T${wpTime}`); + 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 = (0, import_date3.getDate)(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: formatDateTime(value), + 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_element43 = __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_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_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_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_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_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_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/select.mjs +var import_components33 = __toESM(require_components(), 1); +var import_element44 = __toESM(require_element(), 1); +var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1); +var { ValidatedSelectControl } = unlock(import_components33.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_element44.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_components33.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime73.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/adaptive-select.mjs +var import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1); +var ELEMENTS_THRESHOLD = 10; +function AdaptiveSelect(props) { + const { field } = props; + const { elements } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (elements.length >= ELEMENTS_THRESHOLD) { + return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Combobox3, { ...props }); + } + return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Select, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/email.mjs +var import_components35 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-input.mjs +var import_components34 = __toESM(require_components(), 1); +var import_element45 = __toESM(require_element(), 1); +var import_jsx_runtime75 = __toESM(require_jsx_runtime(), 1); +var { ValidatedInputControl: ValidatedInputControl2 } = unlock(import_components34.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_element45.useCallback)( + (newValue) => onChange( + setValue({ + item: data, + value: newValue + }) + ), + [data, setValue, onChange] + ); + return /* @__PURE__ */ (0, import_jsx_runtime75.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_runtime76 = __toESM(require_jsx_runtime(), 1); +function Email({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "email", + prefix: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_components35.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_components35.Icon, { icon: envelope_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/telephone.mjs +var import_components36 = __toESM(require_components(), 1); +var import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1); +function Telephone({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "tel", + prefix: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_components36.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_components36.Icon, { icon: mobile_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/url.mjs +var import_components37 = __toESM(require_components(), 1); +var import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1); +function Url({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "url", + prefix: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_components37.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_components37.Icon, { icon: link_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-number.mjs +var import_components38 = __toESM(require_components(), 1); +var import_element46 = __toESM(require_element(), 1); +var import_i18n35 = __toESM(require_i18n(), 1); +var import_jsx_runtime79 = __toESM(require_jsx_runtime(), 1); +var { ValidatedNumberControl } = unlock(import_components38.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_element46.useCallback)( + (newValue) => onChange([toNumberOrEmpty(newValue), max]), + [onChange, max] + ); + const onChangeMax = (0, import_element46.useCallback)( + (newValue) => onChange([min, toNumberOrEmpty(newValue)]), + [onChange, min] + ); + return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)( + import_components38.BaseControl, + { + help: (0, import_i18n35.__)("The max. value must be greater than the min. value."), + children: /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(import_components38.Flex, { direction: "row", gap: 4, children: [ + /* @__PURE__ */ (0, import_jsx_runtime79.jsx)( + import_components38.__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_runtime79.jsx)( + import_components38.__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_element46.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_element46.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_runtime79.jsx)( + BetweenControls, + { + value: valueBetween, + onChange: onChangeBetweenControls, + hideLabelFromVision, + step + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime79.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_runtime80 = __toESM(require_jsx_runtime(), 1); +function Integer(props) { + return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/number.mjs +var import_jsx_runtime81 = __toESM(require_jsx_runtime(), 1); +function Number2(props) { + return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/radio.mjs +var import_components39 = __toESM(require_components(), 1); +var import_element47 = __toESM(require_element(), 1); +var import_jsx_runtime82 = __toESM(require_jsx_runtime(), 1); +var { ValidatedRadioControl } = unlock(import_components39.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_element47.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_components39.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime82.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/text.mjs +var import_element48 = __toESM(require_element(), 1); +var import_jsx_runtime83 = __toESM(require_jsx_runtime(), 1); +function Text({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + config, + validity +}) { + const { prefix, suffix } = config || {}; + return /* @__PURE__ */ (0, import_jsx_runtime83.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_components40 = __toESM(require_components(), 1); +var import_element49 = __toESM(require_element(), 1); +var import_jsx_runtime84 = __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_element49.useCallback)(() => { + onChange( + setValue({ item: data, value: !getValue({ item: data }) }) + ); + }, [onChange, setValue, data, getValue]); + return /* @__PURE__ */ (0, import_jsx_runtime84.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_element50 = __toESM(require_element(), 1); +var import_jsx_runtime85 = __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_element50.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime85.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_element51 = __toESM(require_element(), 1); +var import_jsx_runtime86 = __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_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_runtime86.jsx)(import_components42.Spinner, {}); + } + if (elements.length === 0) { + return null; + } + const selectedOption = elements.find((el) => el.value === value); + return /* @__PURE__ */ (0, import_jsx_runtime86.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_runtime86.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_element52 = __toESM(require_element(), 1); +var import_jsx_runtime87 = __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_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_runtime87.jsx)(import_components43.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime87.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_runtime87.jsx)("span", { children: element?.label || item }); + } + return /* @__PURE__ */ (0, import_jsx_runtime87.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_element53 = __toESM(require_element(), 1); +var import_i18n36 = __toESM(require_i18n(), 1); +var import_jsx_runtime88 = __toESM(require_jsx_runtime(), 1); +var { ValidatedInputControl: ValidatedInputControl3 } = unlock(import_components44.privateApis); +var ColorPickerDropdown = ({ + color, + onColorChange +}) => { + const validColor = color && w(color).isValid() ? color : "#ffffff"; + return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + import_components44.Dropdown, + { + className: "dataviews-controls__color-picker-dropdown", + popoverProps: { resize: false }, + renderToggle: ({ onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + import_components44.Button, + { + onClick: onToggle, + "aria-label": (0, import_i18n36.__)("Open color picker"), + size: "small", + icon: () => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_components44.ColorIndicator, { colorValue: validColor }) + } + ), + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_components44.__experimentalDropdownContentWrapper, { paddingSize: "none", children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + import_components44.ColorPicker, + { + color: 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)( + (newColor) => { + onChange(setValue({ item: data, value: newColor })); + }, + [data, onChange, setValue] + ); + const handleInputChange = (0, import_element53.useCallback)( + (newValue) => { + onChange(setValue({ item: data, value: newValue || "" })); + }, + [data, onChange, setValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime88.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_runtime88.jsx)(import_components44.__experimentalInputControlPrefixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( + ColorPickerDropdown, + { + color: value, + onColorChange: handleColorChange + } + ) }) + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/password.mjs +var import_components45 = __toESM(require_components(), 1); +var import_element54 = __toESM(require_element(), 1); +var import_i18n37 = __toESM(require_i18n(), 1); +var import_jsx_runtime89 = __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_runtime89.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: isVisible2 ? "text" : "password", + suffix: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_components45.__experimentalInputControlSuffixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)( + import_components45.Button, + { + icon: isVisible2 ? unseen_default : seen_default, + onClick: toggleVisibility, + size: "small", + label: isVisible2 ? (0, import_i18n37.__)("Hide password") : (0, import_i18n37.__)("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_runtime90 = __toESM(require_jsx_runtime(), 1); +var FORM_CONTROLS = { + adaptiveSelect: AdaptiveSelect, + 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: Text, + 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_runtime90.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("adaptiveSelect"); + } + 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_i18n38 = __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_runtime91 = __toESM(require_jsx_runtime(), 1); +function render({ + item, + field +}) { + if (field.hasElements) { + return /* @__PURE__ */ (0, import_jsx_runtime91.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_i18n38.__)("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_i18n39 = __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_i18n39.__)("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_i18n40 = __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_i18n40.__)("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_i18n41 = __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_i18n41.__)("True"); + } + if (value === false) { + return (0, import_i18n41.__)("False"); + } + return ""; +} +function isValidCustom4(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && ![true, false].includes(value)) { + return (0, import_i18n41.__)("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_i18n42 = __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_i18n42.__)("Value must be an array."); + } + if (!value.every((v2) => typeof v2 === "string")) { + return (0, import_i18n42.__)("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_i18n43 = __toESM(require_i18n(), 1); +var import_jsx_runtime92 = __toESM(require_jsx_runtime(), 1); +function render3({ item, field }) { + if (field.hasElements) { + return /* @__PURE__ */ (0, import_jsx_runtime92.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_runtime92.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [ + /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + "div", + { + style: { + width: "16px", + height: "16px", + borderRadius: "50%", + backgroundColor: value, + border: "1px solid #ddd", + flexShrink: 0 + } + } + ), + /* @__PURE__ */ (0, import_jsx_runtime92.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_i18n43.__)("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/hooks/use-data.mjs +var import_element55 = __toESM(require_element(), 1); +function useData(data, isLoading, paginationInfo) { + const previousDataRef = (0, import_element55.useRef)(data); + const previousPaginationInfoRef = (0, import_element55.useRef)(paginationInfo); + const [hasInitiallyLoaded, setHasInitiallyLoaded] = (0, import_element55.useState)( + !isLoading + ); + (0, import_element55.useEffect)(() => { + if (!isLoading) { + previousDataRef.current = data; + previousPaginationInfoRef.current = paginationInfo; + setHasInitiallyLoaded(true); + } + }, [data, isLoading, paginationInfo]); + return { + data: isLoading && previousDataRef.current?.length ? previousDataRef.current : data, + paginationInfo: isLoading && previousDataRef.current?.length ? previousPaginationInfoRef.current : paginationInfo, + hasInitiallyLoaded + }; +} + +// packages/dataviews/build-module/dataviews/index.mjs +var import_jsx_runtime93 = __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_runtime93.jsxs)(import_jsx_runtime93.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)( + Stack, + { + direction: "row", + align: "top", + justify: "space-between", + className: "dataviews__view-actions", + gap: "xs", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)( + Stack, + { + direction: "row", + justify: "start", + gap: "sm", + className: "dataviews__search", + children: [ + search && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(dataviews_search_default, { label: searchLabel }), + /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(toggle_default, {}) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(Stack, { direction: "row", gap: "xs", style: { flexShrink: 0 }, children: [ + /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(dataviews_view_config_default, {}), + header + ] }) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(filters_toggled_default, { className: "dataviews-filters__container" }), + /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(DataViewsLayout, {}), + /* @__PURE__ */ (0, import_jsx_runtime93.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, + onReset +}) { + const { infiniteScrollHandler } = paginationInfo; + const containerRef = (0, import_element56.useRef)(null); + const [containerWidth, setContainerWidth] = (0, import_element56.useState)(0); + const resizeObserverRef = (0, import_compose12.useResizeObserver)( + (resizeObserverEntries) => { + setContainerWidth( + resizeObserverEntries[0].borderBoxSize[0].inlineSize + ); + }, + { box: "border-box" } + ); + const [selectionState, setSelectionState] = (0, import_element56.useState)([]); + const isUncontrolled = selectionProperty === void 0 || onChangeSelection === void 0; + const selection = isUncontrolled ? selectionState : selectionProperty; + const [openedFilter, setOpenedFilter] = (0, import_element56.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_element56.useMemo)(() => normalizeFields(fields), [fields]); + const _selection = (0, import_element56.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_element56.useMemo)( + () => (filters || []).some( + (filter) => filter.isPrimary || filter.isLocked + ), + [filters] + ); + const [isShowingFilter, setIsShowingFilter] = (0, import_element56.useState)( + hasPrimaryOrLockedFilters + ); + (0, import_element56.useEffect)(() => { + if (hasPrimaryOrLockedFilters && !isShowingFilter) { + setIsShowingFilter(true); + } + }, [hasPrimaryOrLockedFilters, isShowingFilter]); + (0, import_element56.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_element56.useMemo)( + () => Object.fromEntries( + Object.entries(defaultLayoutsProperty).filter( + ([layoutType]) => { + return dataViewsLayouts.some( + (viewLayout) => viewLayout.type === layoutType + ); + } + ) + ), + [defaultLayoutsProperty] + ); + const { + data: displayData, + paginationInfo: displayPaginationInfo, + hasInitiallyLoaded + } = useData(data, isLoading, paginationInfo); + if (!defaultLayouts[view.type]) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( + dataviews_context_default.Provider, + { + value: { + view, + onChangeView, + fields: _fields, + actions, + data: displayData, + isLoading, + paginationInfo: displayPaginationInfo, + selection: _selection, + onChangeSelection: setSelectionWithChange, + openedFilter, + setOpenedFilter, + getItemId: getItemId2, + getItemLevel: getItemLevel2, + isItemClickable, + onClickItem, + renderItemLink, + containerWidth, + containerRef, + resizeObserverRef, + defaultLayouts, + filters, + isShowingFilter, + setIsShowingFilter, + config, + empty, + hasInitiallyLoaded, + hasInfiniteScrollHandler: !!infiniteScrollHandler, + onReset + }, + children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("div", { className: "dataviews-wrapper", ref: containerRef, children: children ?? /* @__PURE__ */ (0, import_jsx_runtime93.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_element57 = __toESM(require_element(), 1); +var import_jsx_runtime94 = __toESM(require_jsx_runtime(), 1); +var NavigableRegion = (0, import_element57.forwardRef)( + ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { + return /* @__PURE__ */ (0, import_jsx_runtime94.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_runtime95 = __toESM(require_jsx_runtime(), 1); +function Header({ + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle = true +}) { + return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_components47.__experimentalVStack, { className: "admin-ui-page__header", as: "header", children: [ + /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_components47.__experimentalHStack, { justify: "space-between", spacing: 2, children: [ + /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_components47.__experimentalHStack, { spacing: 2, justify: "left", children: [ + showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)( + SidebarToggleSlot, + { + bubblesVirtually: true, + className: "admin-ui-page__sidebar-toggle-slot" + } + ), + title && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_components47.__experimentalHeading, { as: "h2", level: 3, weight: 500, truncate: true, children: title }), + breadcrumbs, + badges + ] }), + /* @__PURE__ */ (0, import_jsx_runtime95.jsx)( + import_components47.__experimentalHStack, + { + style: { width: "auto", flexShrink: 0 }, + spacing: 2, + className: "admin-ui-page__header-actions", + children: actions + } + ) + ] }), + subTitle && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) + ] }); +} + +// packages/admin-ui/build-module/page/index.mjs +var import_jsx_runtime96 = __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_runtime96.jsxs)(navigable_region_default, { className: classes, ariaLabel: title, children: [ + (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime96.jsx)( + Header, + { + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle + } + ), + hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime96.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_element58 = __toESM(require_element()); +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/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='b2d25721ea']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "b2d25721ea"); + 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;margin:0;padding:0;width:100%}fieldset.fields__media-edit .components-base-control__label{color:#1e1e1e}fieldset.fields__media-edit{container-type:inline-size}fieldset.fields__media-edit .fields__media-edit-compact-group{border:1px dashed #949494;border-radius:4px;overflow:hidden}fieldset.fields__media-edit .fields__media-edit-compact-group.is-single{border-radius:2px}fieldset.fields__media-edit .fields__media-edit-compact-group .fields__media-edit-picker-button{border:0;border-radius:0}fieldset.fields__media-edit .fields__media-edit-compact-group .fields__media-edit-picker-button:focus-visible{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color)}fieldset.fields__media-edit .fields__media-edit-compact-group .fields__media-edit-compact:not(:last-child){border-bottom:1px solid #f0f0f0}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-compact{min-width:0;position:relative}fieldset.fields__media-edit .fields__media-edit-compact:focus-within .fields__media-edit-compact-movers,fieldset.fields__media-edit .fields__media-edit-compact:hover .fields__media-edit-compact-movers{opacity:1}fieldset.fields__media-edit .fields__media-edit-compact .fields__media-edit-compact-movers{background:#fff;border-radius:2px;opacity:0;pointer-events:none;position:absolute;right:8px;top:50%;transform:translateY(-50%);z-index:1}fieldset.fields__media-edit .fields__media-edit-compact .fields__media-edit-compact-movers *{pointer-events:auto}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:2px;cursor:pointer;display:flex;gap:8px;min-height:40px;min-width:0;padding:4px 8px;position:relative}fieldset.fields__media-edit .fields__media-edit-picker-button:not(.has-attachment){border-color:var(--wp-admin-theme-color);color:var(--wp-admin-theme-color)}fieldset.fields__media-edit .fields__media-edit-picker-button:not(.has-attachment):hover{background-color:color-mix(in srgb,var(--wp-admin-theme-color,#3858e9) 4%,#0000);border-color:var(--wp-admin-theme-color-darker-20);color:var(--wp-admin-theme-color-darker-20)}fieldset.fields__media-edit .fields__media-edit-picker-button:hover{color:var(--wp-admin-theme-color)}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}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-actions{background:#fff;border-radius:2px;position:absolute;right:4px;top:4px}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item{border-radius:4px;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 .fields__media-edit-picker-button{border-radius:4px}fieldset.fields__media-edit .fields__media-edit-expanded.is-empty .fields__media-edit-picker-button{border-radius:2px}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{border:0;margin:0;padding:0}.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_element58.useMemo)(() => { + return getDefaultView(postTypeObject); + }, [postTypeObject]); + const activeViewOverrides = (0, import_element58.useMemo)( + () => getActiveViewOverridesForTab(slug), + [slug] + ); + const handleQueryParamsChange = (0, import_element58.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_element58.useMemo)( + () => viewToQuery(view, postType), + [view, postType] + ); + const { + records: posts, + totalItems, + totalPages, + isResolving + } = useEntityRecordsWithPermissions("postType", postType, postTypeQuery); + const allFields = usePostFields({ + postType + }); + const fields = (0, import_element58.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_element58.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_element58.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_element58.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: 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, + onReset: isModified ? onReset : false, + 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..c0110a2b86ebd --- /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' => '66d296b87fc4086736e2'); \ 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..ec6d7a364a3bf --- /dev/null +++ b/src/wp-includes/build/routes/post-list/content.min.js @@ -0,0 +1,14 @@ +var dh=Object.create;var dd=Object.defineProperty;var ch=Object.getOwnPropertyDescriptor;var fh=Object.getOwnPropertyNames;var mh=Object.getPrototypeOf,ph=Object.prototype.hasOwnProperty;var Le=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var vh=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of fh(e))!ph.call(t,n)&&n!==r&&dd(t,n,{get:()=>e[n],enumerable:!(o=ch(e,n))||o.enumerable});return t};var d=(t,e,r)=>(r=t!=null?dh(mh(t)):{},vh(e||!t||!t.__esModule?dd(r,"default",{value:t,enumerable:!0}):r,t));var j=Le((D_,md)=>{md.exports=window.wp.element});var Yt=Le((N_,pd)=>{pd.exports=window.wp.data});var As=Le((M_,vd)=>{vd.exports=window.wp.preferences});var Et=Le((K_,hd)=>{hd.exports=window.wp.compose});var le=Le((Q_,bd)=>{bd.exports=window.React});var R=Le((Z_,_d)=>{_d.exports=window.ReactJSXRuntime});var Nd=Le((Cy,Dd)=>{Dd.exports=window.ReactDOM});var Fd=Le(Md=>{"use strict";var Fo=le();function Vh(t,e){return t===e&&(t!==0||1/t===1/e)||t!==t&&e!==e}var kh=typeof Object.is=="function"?Object.is:Vh,Dh=Fo.useState,Nh=Fo.useEffect,Mh=Fo.useLayoutEffect,Fh=Fo.useDebugValue;function Lh(t,e){var r=e(),o=Dh({inst:{value:r,getSnapshot:e}}),n=o[0].inst,i=o[1];return Mh(function(){n.value=r,n.getSnapshot=e,Bs(n)&&i({inst:n})},[t,r,e]),Nh(function(){return Bs(n)&&i({inst:n}),t(function(){Bs(n)&&i({inst:n})})},[t]),Fh(r),r}function Bs(t){var e=t.getSnapshot;t=t.value;try{var r=e();return!kh(t,r)}catch{return!0}}function Bh(t,e){return e()}var Hh=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?Bh:Lh;Md.useSyncExternalStore=Fo.useSyncExternalStore!==void 0?Fo.useSyncExternalStore:Hh});var Bd=Le((Py,Ld)=>{"use strict";Ld.exports=Fd()});var $=Le((Oy,zd)=>{zd.exports=window.wp.i18n});var ye=Le((Ry,Wd)=>{Wd.exports=window.wp.primitives});var Sl=Le((E1,Gd)=>{Gd.exports=window.wp.privateApis});var q=Le((D1,Jd)=>{Jd.exports=window.wp.components});var El=Le((N1,ec)=>{ec.exports=window.wp.keycodes});var Fm=Le((oT,Ra)=>{var Dm={\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"},Nm=Object.keys(Dm).join("|"),Gx=new RegExp(Nm,"g"),qx=new RegExp(Nm,"");function Yx(t){return Dm[t]}var Mm=function(t){return t.replace(Gx,Yx)},Ux=function(t){return!!t.match(qx)};Ra.exports=Mm;Ra.exports.has=Ux;Ra.exports.remove=Mm});var $m=Le((cT,Um)=>{"use strict";Um.exports=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var o,n,i;if(Array.isArray(e)){if(o=e.length,o!=r.length)return!1;for(n=o;n--!==0;)if(!t(e[n],r[n]))return!1;return!0}if(e instanceof Map&&r instanceof Map){if(e.size!==r.size)return!1;for(n of e.entries())if(!r.has(n[0]))return!1;for(n of e.entries())if(!t(n[1],r.get(n[0])))return!1;return!0}if(e instanceof Set&&r instanceof Set){if(e.size!==r.size)return!1;for(n of e.entries())if(!r.has(n[0]))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(r)){if(o=e.length,o!=r.length)return!1;for(n=o;n--!==0;)if(e[n]!==r[n])return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(i=Object.keys(e),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(!t(e[a],r[a]))return!1}return!0}return e!==e&&r!==r}});var Ro=Le((RR,Ap)=>{Ap.exports=window.wp.date});var Jp=Le((PV,Zp)=>{Zp.exports=window.wp.warning});var id=Le((QM,Qg)=>{Qg.exports=window.wp.coreData});var Zg=Le((XM,Xg)=>{Xg.exports=window.wp.editor});import{useParams as w_,useNavigate as __,useSearch as y_,Link as S_,useInvalidate as C_}from"@wordpress/route";var cd=Object.prototype.hasOwnProperty;function fd(t,e,r){for(r of t.keys())if(Nr(r,e))return r}function Nr(t,e){var r,o,n;if(t===e)return!0;if(t&&e&&(r=t.constructor)===e.constructor){if(r===Date)return t.getTime()===e.getTime();if(r===RegExp)return t.toString()===e.toString();if(r===Array){if((o=t.length)===e.length)for(;o--&&Nr(t[o],e[o]););return o===-1}if(r===Set){if(t.size!==e.size)return!1;for(o of t)if(n=o,n&&typeof n=="object"&&(n=fd(e,n),!n)||!e.has(n))return!1;return!0}if(r===Map){if(t.size!==e.size)return!1;for(o of t)if(n=o[0],n&&typeof n=="object"&&(n=fd(e,n),!n)||!Nr(o[1],e.get(n)))return!1;return!0}if(r===ArrayBuffer)t=new Uint8Array(t),e=new Uint8Array(e);else if(r===DataView){if((o=t.byteLength)===e.byteLength)for(;o--&&t.getInt8(o)===e.getInt8(o););return o===-1}if(ArrayBuffer.isView(t)){if((o=t.byteLength)===e.byteLength)for(;o--&&t[o]===e[o];);return o===-1}if(!r||typeof t=="object"){o=0;for(r in t)if(cd.call(t,r)&&++o&&!cd.call(e,r)||!(r in e)||!Nr(t[r],e[r]))return!1;return Object.keys(e).length===o}}return t!==t&&e!==e}var _n=d(j(),1),mi=d(Yt(),1),Os=d(As(),1);function Is(t,e,r){return`dataviews-${t}-${e}-${r}`}var gd=["titleField","mediaField","descriptionField","showTitle","showMedia","showDescription","showLevels","infiniteScrollEnabled"];function Ts(t,e,r){if(!e)return t;let o=t;for(let n of gd)n in e&&(o={...o,[n]:e[n]});if(e.filters&&e.filters.length>0){let n=new Set(e.filters.map(a=>a.field)),i=(t.filters??[]).filter(a=>!n.has(a.field));o={...o,filters:[...i,...e.filters]}}return e.sort&&r&&t.sort?.field===r.sort?.field&&t.sort?.direction===r.sort?.direction&&(o={...o,sort:e.sort}),e.layout&&(o={...o,layout:{...o.layout,...e.layout}}),e.groupBy&&(o={...o,groupBy:e.groupBy}),o}function fi(t,e,r){if(!e)return t;let o=t;for(let n of gd)if(n in e){let{[n]:i,...a}=o;o=a}if(e.filters&&e.filters.length>0){let n=new Set(e.filters.map(i=>i.field));o={...o,filters:(t.filters??[]).filter(i=>!n.has(i.field))}}if(e.sort&&t.sort?.field===e.sort.field&&t.sort?.direction===e.sort.direction&&(o={...o,sort:r?.sort}),e.layout&&"layout"in o&&o.layout){let n={...o.layout};for(let i of Object.keys(e.layout))delete n[i];o={...o,layout:Object.keys(n).length>0?n:void 0}}if(e.groupBy&&"groupBy"in o){let{groupBy:n,...i}=o;o=i}return o}function gh(t,e){let r={...t};for(let o of e)delete r[o];return r}function Rs(t){let{kind:e,name:r,slug:o,defaultView:n,activeViewOverrides:i,queryParams:a,onChangeQueryParams:l}=t,s=Is(e,r,o),u=(0,mi.useSelect)(S=>S(Os.store).get("core/views",s),[s]),{set:c}=(0,mi.useDispatch)(Os.store),p=u??n,f=Number(a?.page??p.page??1),m=a?.search??p.search??"",v=(0,_n.useMemo)(()=>Ts({...p,page:f,search:m},i,n),[p,f,m,i,n]),y=!!u,b=(0,_n.useCallback)(S=>{let A={page:S?.page,search:S?.search},V=fi(gh(S,["page","search"]),i,n);l&&!Nr(A,{page:f,search:m})&&l(A);let T=fi(p,i,n),N=fi(n,i,n);Nr(T,V)||(Nr(V,N)?c("core/views",s,void 0):c("core/views",s,V))},[l,f,m,p,n,i,c,s]),x=(0,_n.useCallback)(()=>{c("core/views",s,void 0)},[s,c]);return{view:v,isModified:y,updateView:b,resetToDefault:x}}var hh=d(Yt(),1),bh=d(As(),1);var bt=d(j(),1),Ss=d(Et(),1);var wd=d(le(),1),xd={};function Vs(t,e){let r=wd.useRef(xd);return r.current===xd&&(r.current=t(e)),r}function ks(t,...e){let r=new URL(`https://base-ui.com/production-error/${t}`);return e.forEach(o=>r.searchParams.append("args[]",o)),`Base UI error #${t}; visit ${r} for the full message.`}var vi=d(le(),1);function Ds(t,e,r,o){let n=Vs(Sd).current;return wh(n,t,e,r,o)&&Cd(n,[t,e,r,o]),n.callback}function yd(t){let e=Vs(Sd).current;return _h(e,t)&&Cd(e,t),e.callback}function Sd(){return{callback:null,cleanup:null,refs:[]}}function wh(t,e,r,o,n){return t.refs[0]!==e||t.refs[1]!==r||t.refs[2]!==o||t.refs[3]!==n}function _h(t,e){return t.refs.length!==e.length||t.refs.some((r,o)=>r!==e[o])}function Cd(t,e){if(t.refs=e,e.every(r=>r==null)){t.callback=null;return}t.callback=r=>{if(t.cleanup&&(t.cleanup(),t.cleanup=null),r!=null){let o=Array(e.length).fill(null);for(let n=0;n{for(let n=0;n=t}function Ns(t){if(!Ad.isValidElement(t))return null;let e=t,r=e.props;return(Pd(19)?r?.ref:e.ref)??null}function yn(t,e){if(t&&!e)return t;if(!t&&e)return e;if(t||e)return{...t,...e}}function Id(t,e){let r={};for(let o in t){let n=t[o];if(e?.hasOwnProperty(o)){let i=e[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(t,e){return typeof t=="function"?t(e):t}function Od(t,e){return typeof t=="function"?t(e):t}var Cn={};function pi(t,e,r,o,n){let i={...Ms(t,Cn)};return e&&(i=Sn(i,e)),r&&(i=Sn(i,r)),o&&(i=Sn(i,o)),n&&(i=Sn(i,n)),i}function Rd(t){if(t.length===0)return Cn;if(t.length===1)return Ms(t[0],Cn);let e={...Ms(t[0],Cn)};for(let r=1;r=65&&n<=90&&(typeof e=="function"||typeof e>"u")}function Vd(t){return typeof t=="function"}function Ms(t,e){return Vd(t)?t(e):t??Cn}function Eh(t,e){return e?t?r=>{if(Ah(r)){let n=r;Ph(n);let i=e(n);return n.baseUIHandlerPrevented||t?.(n),i}let o=e(r);return t?.(r),o}:e:t}function Ph(t){return t.preventBaseUIHandler=()=>{t.baseUIHandlerPrevented=!0},t}function Fs(t,e){return e?t?e+" "+t:e:t}function Ah(t){return t!=null&&typeof t=="object"&&"nativeEvent"in t}var Ih=Object.freeze([]),Mr=Object.freeze({});var Ls=d(le(),1);function kd(t,e,r={}){let o=e.render,n=Th(e,r);if(r.enabled===!1)return null;let i=r.state??Mr;return Oh(t,o,n,i)}function Th(t,e={}){let{className:r,style:o,render:n}=t,{state:i=Mr,ref:a,props:l,stateAttributesMapping:s,enabled:u=!0}=e,c=u?Td(r,i):void 0,p=u?Od(o,i):void 0,f=u?Id(i,s):Mr,m=u?yn(f,Array.isArray(l)?Rd(l):l)??Mr:Mr;return typeof document<"u"&&(u?Array.isArray(a)?m.ref=yd([m.ref,Ns(n),...a]):m.ref=Ds(m.ref,Ns(n),a):Ds(null,null)),u?(c!==void 0&&(m.className=Fs(m.className,c)),p!==void 0&&(m.style=yn(m.style,p)),m):Mr}function Oh(t,e,r,o){if(e){if(typeof e=="function")return e(r,o);let n=pi(r,e.props);return n.ref=r.ref,vi.cloneElement(e,n)}if(t&&typeof t=="string")return Rh(t,r);throw new Error(ks(8))}function Rh(t,e){return t==="button"?(0,Ls.createElement)("button",{type:"button",...e,key:e.key}):t==="img"?(0,Ls.createElement)("img",{alt:"",...e,key:e.key}):vi.createElement(t,e)}function Hd(t){return kd(t.defaultTagName??"div",t,t)}function jd(t){var e,r,o="";if(typeof t=="string"||typeof t=="number")o+=t;else if(typeof t=="object")if(Array.isArray(t)){var n=t.length;for(e=0;e{},fields:[],data:[],paginationInfo:{totalItems:0,totalPages:0},selection:[],onChangeSelection:()=>{},setOpenedFilter:()=>{},openedFilter:null,getItemId:t=>t.id,isItemClickable:()=>!0,renderItemLink:void 0,containerWidth:0,containerRef:(0,Ui.createRef)(),resizeObserverRef:()=>{},defaultLayouts:{list:{},grid:{},table:{}},filters:[],isShowingFilter:!1,setIsShowingFilter:()=>{},hasInitiallyLoaded:!1,hasInfiniteScrollHandler:!1,config:{perPageSizes:[]}});Zd.displayName="DataViewsContext";var G=Zd;var wr=d($(),1);var go=d($(),1),ta=d(q(),1),wt=d(j(),1),Rl=d(El(),1);var tc=d(q(),1),rc=d($(),1),oc=d(R(),1);function Ur({selection:t,onChangeSelection:e,item:r,getItemId:o,titleField:n,disabled:i,...a}){let l=o(r),s=!i&&t.includes(l),u=n?.getValue?.({item:r})||(0,rc.__)("(no title)");return(0,oc.jsx)(tc.CheckboxControl,{className:"dataviews-selection-checkbox","aria-label":u,"aria-disabled":i,checked:s,onChange:()=>{i||e(t.includes(l)?t.filter(c=>l!==c):[...t,l])},...a})}var po=d(q(),1),ac=d($(),1),Ho=d(j(),1);var sc=d(Yt(),1),Pl=d(Et(),1);var nc=d(Sl(),1),{lock:F1,unlock:K}=(0,nc.__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=d(R(),1),{Menu:Bo,kebabCase:Gh}=K(po.privateApis);function qh({action:t,onClick:e,items:r,variant:o}){let n=typeof t.label=="string"?t.label:t.label(r);return(0,he.jsx)(po.Button,{disabled:!!t.disabled,accessibleWhenDisabled:!0,size:"compact",variant:o,onClick:e,children:n})}function Yh({action:t,onClick:e,items:r}){let o=typeof t.label=="string"?t.label:t.label(r);return(0,he.jsx)(Bo.Item,{disabled:t.disabled,onClick:e,children:(0,he.jsx)(Bo.ItemLabel,{children:o})})}function vo({action:t,items:e,closeModal:r}){let o=typeof t.label=="string"?t.label:t.label(e),n=typeof t.modalHeader=="function"?t.modalHeader(e):t.modalHeader;return(0,he.jsx)(po.Modal,{title:n||o,__experimentalHideHeader:!!t.hideModalHeader,onRequestClose:r,focusOnMount:t.modalFocusOnMount??!0,size:t.modalSize||"medium",overlayClassName:`dataviews-action-modal dataviews-action-modal__${Gh(t.id)}`,children:(0,he.jsx)(t.RenderModal,{items:e,closeModal:r})})}function Al({actions:t,item:e,registry:r,setActiveModalAction:o}){let{primaryActions:n,regularActions:i}=(0,Ho.useMemo)(()=>t.reduce((l,s)=>((s.isPrimary?l.primaryActions:l.regularActions).push(s),l),{primaryActions:[],regularActions:[]}),[t]),a=l=>l.map(s=>(0,he.jsx)(Yh,{action:s,onClick:()=>{if("RenderModal"in s){o(s);return}s.callback([e],{registry:r})},items:[e]},s.id));return(0,he.jsxs)(Bo.Group,{children:[a(n),a(i)]})}function jo({item:t,actions:e,isCompact:r}){let o=(0,sc.useRegistry)(),{primaryActions:n,eligibleActions:i}=(0,Ho.useMemo)(()=>{let l=e.filter(u=>!u.isEligible||u.isEligible(t));return{primaryActions:l.filter(u=>u.isPrimary),eligibleActions:l}},[e,t]),a=(0,Pl.useViewportMatch)("medium","<");return r?(0,he.jsx)(ic,{item:t,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)(Il,{item:t,actions:n,registry:o}),(n.lengthi(null)})]})}function Il({item:t,actions:e,registry:r,buttonVariant:o}){let[n,i]=(0,Ho.useState)(null);return(0,Pl.useViewportMatch)("medium","<")||!Array.isArray(e)||e.length===0?null:(0,he.jsxs)(he.Fragment,{children:[e.map(l=>(0,he.jsx)(qh,{action:l,onClick:()=>{if("RenderModal"in l){i(l);return}l.callback([t],{registry:r})},items:[t],variant:o},l.id)),!!n&&(0,he.jsx)(vo,{action:n,items:[t],closeModal:()=>i(null)})]})}var zo=d(q(),1),$i=d($(),1),at=d(j(),1),cc=d(Yt(),1);var Tl=d(Et(),1);var $r=d($(),1);function lc(t,e,r){return t>0?(0,$r.sprintf)((0,$r._n)("%d Item selected","%d Items selected",t),t):r>e?(0,$r.sprintf)((0,$r._n)("%1$d of %2$d Item","%1$d of %2$d Items",r),e,r):(0,$r.sprintf)((0,$r._n)("%d Item","%d Items",e),e)}var We=d(R(),1);function Uh({action:t,items:e,ActionTriggerComponent:r}){let[o,n]=(0,at.useState)(!1);return(0,We.jsxs)(We.Fragment,{children:[(0,We.jsx)(r,{...{action:t,onClick:()=>{n(!0)},items:e}}),o&&(0,We.jsx)(vo,{action:t,items:e,closeModal:()=>n(!1)})]})}function Ki(t,e){return(0,at.useMemo)(()=>t.some(r=>r.supportsBulk&&(!r.isEligible||r.isEligible(e))),[t,e])}function Wo(t,e){return(0,at.useMemo)(()=>e.some(r=>t.some(o=>o.supportsBulk&&(!o.isEligible||o.isEligible(r)))),[t,e])}function On({selection:t,onChangeSelection:e,data:r,actions:o,getItemId:n}){let i=(0,at.useMemo)(()=>r.filter(s=>o.some(u=>u.supportsBulk&&(!u.isEligible||u.isEligible(s)))),[r,o]),a=r.filter(s=>t.includes(n(s))&&i.includes(s)),l=a.length===i.length;return(0,We.jsx)(zo.CheckboxControl,{className:"dataviews-view-table-selection-checkbox",checked:l,indeterminate:!l&&!!a.length,onChange:()=>{e(l?[]:i.map(s=>n(s)))},"aria-label":l?(0,$i.__)("Deselect all"):(0,$i.__)("Select all")})}function uc({action:t,onClick:e,isBusy:r,items:o}){let n=typeof t.label=="string"?t.label:t.label(o);return(0,Tl.useViewportMatch)("medium","<")?(0,We.jsx)(zo.Button,{disabled:r,accessibleWhenDisabled:!0,label:n,icon:t.icon,size:"compact",onClick:e,isBusy:r}):(0,We.jsx)(zo.Button,{disabled:r,accessibleWhenDisabled:!0,size:"compact",onClick:e,isBusy:r,children:n})}var fc=[];function $h({action:t,selectedItems:e,actionInProgress:r,setActionInProgress:o}){let n=(0,cc.useRegistry)(),i=(0,at.useMemo)(()=>e.filter(a=>!t.isEligible||t.isEligible(a)),[t,e]);return"RenderModal"in t?(0,We.jsx)(Uh,{action:t,items:i,ActionTriggerComponent:uc},t.id):(0,We.jsx)(uc,{action:t,onClick:async()=>{o(t.id),await t.callback(e,{registry:n}),o(null)},items:i,isBusy:r===t.id},t.id)}function dc(t,e,r,o,n,i,a,l,s,u){let c=lc(o.length,t.length,u.totalItems);return(0,We.jsxs)(F,{direction:"row",className:"dataviews-bulk-actions-footer__container",gap:"md",align:"center",children:[(0,We.jsx)(On,{selection:o,onChangeSelection:s,data:t,actions:e,getItemId:r}),(0,We.jsx)("span",{className:"dataviews-bulk-actions-footer__item-count",children:c}),(0,We.jsxs)(F,{direction:"row",className:"dataviews-bulk-actions-footer__action-buttons",gap:"xs",children:[n.map(p=>(0,We.jsx)($h,{action:p,selectedItems:i,actionInProgress:a,setActionInProgress:l},p.id)),i.length>0&&(0,We.jsx)(zo.Button,{icon:Pn,showTooltip:!0,tooltipPosition:"top",size:"compact",label:(0,$i.__)("Cancel"),disabled:!!a,accessibleWhenDisabled:!1,onClick:()=>{s(fc)}})]})]})}function Kh({selection:t,actions:e,onChangeSelection:r,data:o,getItemId:n,paginationInfo:i}){let[a,l]=(0,at.useState)(null),s=(0,at.useRef)(void 0),u=(0,Tl.useViewportMatch)("medium","<"),c=(0,at.useMemo)(()=>e.filter(v=>v.supportsBulk),[e]),p=(0,at.useMemo)(()=>o.filter(v=>c.some(y=>!y.isEligible||y.isEligible(v))),[o,c]),f=(0,at.useMemo)(()=>o.filter(v=>t.includes(n(v))&&p.includes(v)),[t,o,n,p]),m=(0,at.useMemo)(()=>e.filter(v=>v.supportsBulk&&(!u||v.icon)&&f.some(y=>!v.isEligible||v.isEligible(y))),[e,f,u]);if(a)s.current||(s.current=dc(o,e,n,t,m,f,a,l,r,i));else return s.current&&(s.current=void 0),dc(o,e,n,t,m,f,a,l,r,i);return s.current}function Qi(){let{data:t,selection:e,actions:r=fc,onChangeSelection:o,getItemId:n,paginationInfo:i}=(0,at.useContext)(G);return(0,We.jsx)(Kh,{selection:e,onChangeSelection:o,data:t,actions:r,getItemId:n,paginationInfo:i})}var hr=d($(),1);var br=d(q(),1),Kr=d(j(),1);function Xi(t,e){let r=[t?.titleField,t?.mediaField,t?.descriptionField].filter(Boolean);return e.filter(o=>!r.includes(o.id)&&o.type!=="media"&&o.enableHiding!==!1)}var X=d(R(),1),{Menu:ue}=K(br.privateApis);function Qh({children:t}){return Kr.Children.toArray(t).filter(Boolean).map((e,r)=>(0,X.jsxs)(Kr.Fragment,{children:[r>0&&(0,X.jsx)(ue.Separator,{}),e]},r))}var Xh=(0,Kr.forwardRef)(function({fieldId:e,view:r,fields:o,onChangeView:n,onHide:i,setOpenedFilter:a,canMove:l=!0,canInsertLeft:s=!0,canInsertRight:u=!0},c){let p=r.fields??[],f=p?.indexOf(e),m=r.sort?.field===e,v=!1,y=!1,b=!1,x=[],S=o.find(E=>E.id===e),{setIsShowingFilter:A}=(0,Kr.useContext)(G);if(!S)return null;v=S.enableHiding!==!1,y=S.enableSorting!==!1;let V=S.header;if(x=!!S.filterBy&&S.filterBy?.operators||[],b=!r.filters?.some(E=>e===E.field)&&!!(S.hasElements||S.Edit)&&S.filterBy!==!1&&!S.filterBy?.isPrimary,!y&&!l&&!v&&!b)return V;let T=Xi(r,o).filter(E=>!p.includes(E.id)),N=(s||u)&&!!T.length,D=(0,hr.isRTL)();return(0,X.jsxs)(ue,{children:[(0,X.jsxs)(ue.TriggerButton,{render:(0,X.jsx)(br.Button,{size:"compact",className:"dataviews-view-table-header-button",ref:c,variant:"tertiary"}),children:[V,r.sort&&m&&(0,X.jsx)("span",{"aria-hidden":"true",children:Yd[r.sort.direction]})]}),(0,X.jsx)(ue.Popover,{style:{minWidth:"240px"},children:(0,X.jsxs)(Qh,{children:[y&&(0,X.jsx)(ue.Group,{children:Wi.map(E=>{let I=r.sort&&m&&r.sort.direction===E,k=`${e}-${E}`;return(0,X.jsx)(ue.RadioItem,{name:"view-table-sorting",value:k,checked:I,onChange:()=>{n({...r,sort:{field:e,direction:E},showLevels:!1})},children:(0,X.jsx)(ue.ItemLabel,{children:qi[E]})},k)})}),b&&(0,X.jsx)(ue.Group,{children:(0,X.jsx)(ue.Item,{prefix:(0,X.jsx)(br.Icon,{icon:An}),onClick:()=>{a(e),A(!0),n({...r,page:1,filters:[...r.filters||[],{field:e,value:void 0,operator:x[0]}]})},children:(0,X.jsx)(ue.ItemLabel,{children:(0,hr.__)("Add filter")})})}),(l||v||N)&&S&&(0,X.jsxs)(ue.Group,{children:[l&&(0,X.jsx)(ue.Item,{prefix:(0,X.jsx)(br.Icon,{icon:Ws}),disabled:D?f>=p.length-1:f<1,onClick:()=>{let E=D?f+1:f-1,I=[...p];I.splice(f,1),I.splice(E,0,e),n({...r,fields:I})},children:(0,X.jsx)(ue.ItemLabel,{children:(0,hr.__)("Move left")})}),l&&(0,X.jsx)(ue.Item,{prefix:(0,X.jsx)(br.Icon,{icon:qs}),disabled:D?f<1:f>=p.length-1,onClick:()=>{let E=D?f-1:f+1,I=[...p];I.splice(f,1),I.splice(E,0,e),n({...r,fields:I})},children:(0,X.jsx)(ue.ItemLabel,{children:(0,hr.__)("Move right")})}),s&&!!T.length&&(0,X.jsxs)(ue,{children:[(0,X.jsx)(ue.SubmenuTriggerItem,{children:(0,X.jsx)(ue.ItemLabel,{children:(0,hr.__)("Insert left")})}),(0,X.jsx)(ue.Popover,{children:T.map(E=>{let I=D?f+1:f;return(0,X.jsx)(ue.Item,{onClick:()=>{n({...r,fields:[...p.slice(0,I),E.id,...p.slice(I)]})},children:(0,X.jsx)(ue.ItemLabel,{children:E.label})},E.id)})})]}),u&&!!T.length&&(0,X.jsxs)(ue,{children:[(0,X.jsx)(ue.SubmenuTriggerItem,{children:(0,X.jsx)(ue.ItemLabel,{children:(0,hr.__)("Insert right")})}),(0,X.jsx)(ue.Popover,{children:T.map(E=>{let I=D?f:f+1;return(0,X.jsx)(ue.Item,{onClick:()=>{n({...r,fields:[...p.slice(0,I),E.id,...p.slice(I)]})},children:(0,X.jsx)(ue.ItemLabel,{children:E.label})},E.id)})})]}),v&&S&&(0,X.jsx)(ue.Item,{prefix:(0,X.jsx)(br.Icon,{icon:Tn}),onClick:()=>{i(S),n({...r,fields:p.filter(E=>E!==e)})},children:(0,X.jsx)(ue.ItemLabel,{children:(0,hr.__)("Hide column")})})]})]})})]})}),Zh=Xh,Go=Zh;var mc=d(j(),1),Ol=d(R(),1);function Jh({item:t,isItemClickable:e,onClickItem:r,className:o}){return!e(t)||!r?{className:o}:{className:o?`${o} ${o}--clickable`:void 0,role:"button",tabIndex:0,onClick:n=>{n.stopPropagation(),r(t)},onKeyDown:n=>{(n.key==="Enter"||n.key===""||n.key===" ")&&(n.stopPropagation(),r(t))}}}function Qr({item:t,isItemClickable:e,onClickItem:r,renderItemLink:o,className:n,children:i,...a}){if(!e(t))return(0,Ol.jsx)("div",{className:n,...a,children:i});if(o){let s=o({item:t,className:`${n} ${n}--clickable`,...a,children:i});return(0,mc.cloneElement)(s,{onClick:u=>{u.stopPropagation(),s.props.onClick&&s.props.onClick(u)},onKeyDown:u=>{(u.key==="Enter"||u.key===""||u.key===" ")&&(u.stopPropagation(),s.props.onKeyDown&&s.props.onKeyDown(u))}})}let l=Jh({item:t,isItemClickable:e,onClickItem:r,className:n});return(0,Ol.jsx)("div",{...l,...a,children:i})}var Qt=d(R(),1);function eb({item:t,level:e,titleField:r,mediaField:o,descriptionField:n,onClickItem:i,renderItemLink:a,isItemClickable:l}){return(0,Qt.jsxs)(F,{direction:"row",gap:"md",align:"flex-start",justify:"flex-start",children:[o&&(0,Qt.jsx)(Qr,{item:t,isItemClickable:l,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-column-primary__media","aria-label":l(t)&&(i||a)&&r?r.getValue?.({item:t}):void 0,children:(0,Qt.jsx)(o.render,{item:t,field:o,config:{sizes:"32px"}})}),(0,Qt.jsxs)(F,{direction:"column",align:"flex-start",className:"dataviews-view-table__primary-column-content",children:[r&&(0,Qt.jsxs)(Qr,{item:t,isItemClickable:l,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-title-field",children:[e!==void 0&&e>0&&(0,Qt.jsxs)("span",{className:"dataviews-view-table__level",children:[Array(e).fill("\u2014").join(" "),"\xA0"]}),(0,Qt.jsx)(r.render,{item:t,field:r})]}),n&&(0,Qt.jsx)(n.render,{item:t,field:n})]})]})}var Zi=eb;var pc=d(Et(),1),qo=d(j(),1),vc=d($(),1),tb=t=>(0,vc.isRTL)()?Math.abs(t.scrollLeft)<=1:t.scrollLeft+t.clientWidth>=t.scrollWidth-1;function gc({scrollContainerRef:t,enabled:e=!1}){let[r,o]=(0,qo.useState)(!1),n=(0,pc.useDebounce)((0,qo.useCallback)(()=>{let i=t.current;i&&o(tb(i))},[t,o]),200);return(0,qo.useEffect)(()=>typeof window>"u"||!e||!t.current?()=>{}:(n(),t.current.addEventListener("scroll",n),window.addEventListener("resize",n),()=>{t.current?.removeEventListener("scroll",n),window.removeEventListener("resize",n)}),[t,e]),r}function Dt(t,e){return t.reduce((r,o)=>{let n=e.getValue({item:o});return r.has(n)||r.set(n,[]),r.get(n)?.push(o),r},new Map)}var Xr=d(q(),1),bc=d($(),1),xc=d(j(),1);var Pt=d(R(),1);function hc({field:t,isVisible:e,onToggleVisibility:r}){return(0,Pt.jsx)(Xr.__experimentalItem,{onClick:t.enableHiding?r:void 0,children:(0,Pt.jsxs)(F,{direction:"row",gap:"sm",justify:"flex-start",align:"center",children:[(0,Pt.jsx)("div",{style:{height:24,width:24},children:e&&(0,Pt.jsx)(Xr.Icon,{icon:En})}),(0,Pt.jsx)("span",{className:"dataviews-view-config__label",children:t.label})]})})}function rb(t){return!!t}function Ji({showLabel:t=!0}){let{view:e,fields:r,onChangeView:o}=(0,xc.useContext)(G),n=Xi(e,r);if(!n?.length)return null;let i=r.find(v=>v.id===e.titleField),a=r.find(v=>v.id===e.mediaField),l=r.find(v=>v.id===e.descriptionField),s=[{field:i,isVisibleFlag:"showTitle"},{field:a,isVisibleFlag:"showMedia"},{field:l,isVisibleFlag:"showDescription"}].filter(({field:v})=>rb(v)),u=e.fields??[],c=n.filter(v=>u.includes(v.id)).length,p=s.filter(({isVisibleFlag:v})=>e[v]??!0),f=p.length+c,m=f===1&&p.length===1;return(0,Pt.jsxs)(F,{direction:"column",className:"dataviews-field-control",children:[t&&(0,Pt.jsx)(Xr.BaseControl.VisualLabel,{children:(0,bc.__)("Properties")}),(0,Pt.jsx)(F,{direction:"column",className:"dataviews-view-config__properties",children:(0,Pt.jsxs)(Xr.__experimentalItemGroup,{isBordered:!0,isSeparated:!0,size:"medium",children:[s.map(({field:v,isVisibleFlag:y})=>{let b=e[y]??!0,x=m&&b?{...v,enableHiding:!1}:v;return(0,Pt.jsx)(hc,{field:x,isVisible:b,onToggleVisibility:()=>{o({...e,[y]:!b})}},v.id)}),n.map(v=>{let y=u.includes(v.id),b=f===1&&y?{...v,enableHiding:!1}:v;return(0,Pt.jsx)(hc,{field:b,isVisible:y,onToggleVisibility:()=>{o({...e,fields:y?u.filter(x=>x!==v.id):[...u,v.id]})}},v.id)})]})})]})}var ea=d(j(),1);function Xt(t,e={delay:400}){let[r,o]=(0,ea.useState)(!1);return(0,ea.useEffect)(()=>{if(!t)return;let n=setTimeout(()=>{o(!0)},e.delay);return()=>{clearTimeout(n),o(!1)}},[t,e.delay]),r}var U=d(R(),1);function _c(t,e){if(t)return t;if(e==="integer"||e==="number")return"end"}function ob({item:t,fields:e,column:r,align:o}){let n=e.find(a=>a.id===r);if(!n)return null;let i=z("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,U.jsx)("div",{className:i,children:(0,U.jsx)(n.render,{item:t,field:n})})}function wc({hasBulkActions:t,item:e,level:r,actions:o,fields:n,id:i,view:a,titleField:l,mediaField:s,descriptionField:u,selection:c,getItemId:p,isItemClickable:f,onClickItem:m,renderItemLink:v,onChangeSelection:y,isActionsColumnSticky:b,posinset:x}){let{paginationInfo:S}=(0,wt.useContext)(G),A=Ki(o,e),V=A&&c.includes(i),{showTitle:T=!0,showMedia:N=!0,showDescription:D=!0,infiniteScrollEnabled:E}=a,I=(0,wt.useRef)(!1),k=a.fields??[],g=l&&T||s&&N||u&&D;return(0,U.jsxs)("tr",{className:z("dataviews-view-table__row",{"is-selected":A&&V,"has-bulk-actions":A}),onTouchStart:()=>{I.current=!0},"aria-setsize":E?S.totalItems:void 0,"aria-posinset":x,role:E?"article":void 0,onMouseDown:P=>{let _=(0,Rl.isAppleOS)()?P.metaKey:P.ctrlKey;P.button===0&&_&&window.navigator.userAgent.toLowerCase().includes("firefox")&&P?.preventDefault()},onClick:P=>{if(!A)return;((0,Rl.isAppleOS)()?P.metaKey:P.ctrlKey)&&!I.current&&document.getSelection()?.type!=="Range"&&y(c.includes(i)?c.filter(h=>i!==h):[...c,i])},children:[t&&(0,U.jsx)("td",{className:"dataviews-view-table__checkbox-column",children:(0,U.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,U.jsx)(Ur,{item:e,selection:c,onChangeSelection:y,getItemId:p,titleField:l,disabled:!A})})}),g&&(0,U.jsx)("td",{children:(0,U.jsx)(Zi,{item:e,level:r,titleField:T?l:void 0,mediaField:N?s:void 0,descriptionField:D?u:void 0,isItemClickable:f,onClickItem:m,renderItemLink:v})}),k.map(P=>{let{width:_,maxWidth:h,minWidth:O,align:w}=a.layout?.styles?.[P]??{},C=n.find(H=>H.id===P),M=_c(w,C?.type);return(0,U.jsx)("td",{style:{width:_,maxWidth:h,minWidth:O},children:(0,U.jsx)(ob,{fields:n,item:e,column:P,align:M})},P)}),!!o?.length&&(0,U.jsx)("td",{className:z("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":b}),onClick:P=>P.stopPropagation(),children:(0,U.jsx)(jo,{item:e,actions:o})})]})}function nb({actions:t,data:e,fields:r,getItemId:o,getItemLevel:n,isLoading:i=!1,onChangeView:a,onChangeSelection:l,selection:s,setOpenedFilter:u,onClickItem:c,isItemClickable:p,renderItemLink:f,view:m,className:v,empty:y}){let{containerRef:b}=(0,wt.useContext)(G),x=Xt(i),S=(0,wt.useRef)(new Map),A=(0,wt.useRef)(void 0),[V,T]=(0,wt.useState)(),[N,D]=(0,wt.useState)(null);(0,wt.useEffect)(()=>{A.current&&(A.current.focus(),A.current=void 0)});let E=(0,wt.useId)(),I=gc({scrollContainerRef:b,enabled:!!t?.length}),k=Wo(t,e);if(V){A.current=V,T(void 0);return}let g=Y=>{let Z=S.current.get(Y.id),ge=Z?S.current.get(Z.fallback):void 0;T(ge?.node)},P=Y=>{Y.preventDefault(),Y.stopPropagation();let Z={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(Z)})},_=!!e?.length,h=r.find(Y=>Y.id===m.titleField),O=r.find(Y=>Y.id===m.mediaField),w=r.find(Y=>Y.id===m.descriptionField),C=m.groupBy?.field?r.find(Y=>Y.id===m.groupBy?.field):null,M=C?Dt(e,C):null,{showTitle:H=!0,showMedia:ae=!0,showDescription:_e=!0}=m,ke=h&&H||O&&ae||w&&_e,He=m.fields??[],rt=(Y,Z)=>ge=>{ge?S.current.set(Y,{node:ge,fallback:He[Z>0?Z-1:1]}):S.current.delete(Y)},qt=m.infiniteScrollEnabled&&!M,mr=(0,go.isRTL)();return _?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)("table",{className:z("dataviews-view-table",v,{[`has-${m.layout?.density}-density`]:m.layout?.density&&["compact","comfortable"].includes(m.layout.density),"has-bulk-actions":k,"is-refreshing":!qt&&x}),"aria-busy":i,"aria-describedby":E,role:qt?"feed":void 0,inert:!qt&&i?"true":void 0,children:[(0,U.jsxs)("colgroup",{children:[k&&(0,U.jsx)("col",{className:"dataviews-view-table__col-checkbox"}),ke&&(0,U.jsx)("col",{className:"dataviews-view-table__col-first-data"}),He.map((Y,Z)=>(0,U.jsx)("col",{className:z(`dataviews-view-table__col-${Y}`,{"dataviews-view-table__col-first-data":!ke&&Z===0})},`col-${Y}`)),!!t?.length&&(0,U.jsx)("col",{className:"dataviews-view-table__col-actions"})]}),N&&(0,U.jsx)(ta.Popover,{anchor:N,onClose:()=>D(null),placement:"bottom-start",children:(0,U.jsx)(Ji,{showLabel:!1})}),(0,U.jsx)("thead",{onContextMenu:P,children:(0,U.jsxs)("tr",{className:"dataviews-view-table__row",children:[k&&(0,U.jsx)("th",{className:"dataviews-view-table__checkbox-column",scope:"col",onContextMenu:P,children:(0,U.jsx)(On,{selection:s,onChangeSelection:l,data:e,actions:t,getItemId:o})}),ke&&(0,U.jsx)("th",{scope:"col",children:h&&(0,U.jsx)(Go,{ref:rt(h.id,0),fieldId:h.id,view:m,fields:r,onChangeView:a,onHide:g,setOpenedFilter:u,canMove:!1,canInsertLeft:mr?m.layout?.enableMoving??!0:!1,canInsertRight:mr?!1:m.layout?.enableMoving??!0})}),He.map((Y,Z)=>{let{width:ge,maxWidth:pr,minWidth:vr,align:co}=m.layout?.styles?.[Y]??{},fo=r.find(Ps=>Ps.id===Y),Mo=_c(co,fo?.type),wn=m.layout?.enableMoving??!0;return(0,U.jsx)("th",{style:{width:ge,maxWidth:pr,minWidth:vr,textAlign:Mo},"aria-sort":m.sort?.direction&&m.sort?.field===Y?Gi[m.sort.direction]:void 0,scope:"col",children:(0,U.jsx)(Go,{ref:rt(Y,Z),fieldId:Y,view:m,fields:r,onChangeView:a,onHide:g,setOpenedFilter:u,canMove:wn,canInsertLeft:wn,canInsertRight:wn})},Y)}),!!t?.length&&(0,U.jsx)("th",{className:z("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":!I}),children:(0,U.jsx)("span",{className:"dataviews-view-table-header",children:(0,go.__)("Actions")})})]})}),_&&C&&M?Array.from(M.entries()).map(([Y,Z])=>(0,U.jsxs)("tbody",{children:[(0,U.jsx)("tr",{className:"dataviews-view-table__group-header-row",children:(0,U.jsx)("td",{colSpan:He.length+(ke?1:0)+(k?1:0)+(t?.length?1:0),className:"dataviews-view-table__group-header-cell",children:m.groupBy?.showLabel===!1?Y:(0,go.sprintf)((0,go.__)("%1$s: %2$s"),C.label,Y)})}),Z.map((ge,pr)=>(0,U.jsx)(wc,{item:ge,level:m.showLevels&&typeof n=="function"?n(ge):void 0,hasBulkActions:k,actions:t,fields:r,id:o(ge)||pr.toString(),view:m,titleField:h,mediaField:O,descriptionField:w,selection:s,getItemId:o,onChangeSelection:l,onClickItem:c,renderItemLink:f,isItemClickable:p,isActionsColumnSticky:!I},o(ge)))]},`group-${Y}`)):(0,U.jsx)("tbody",{children:_&&e.map((Y,Z)=>(0,U.jsx)(wc,{item:Y,level:m.showLevels&&typeof n=="function"?n(Y):void 0,hasBulkActions:k,actions:t,fields:r,id:o(Y)||Z.toString(),view:m,titleField:h,mediaField:O,descriptionField:w,selection:s,getItemId:o,onChangeSelection:l,onClickItem:c,renderItemLink:f,isItemClickable:p,isActionsColumnSticky:!I,posinset:qt?Z+1:void 0},o(Y)))})]}),qt&&i&&(0,U.jsx)("div",{className:"dataviews-loading",id:E,children:(0,U.jsx)("p",{className:"dataviews-loading-more",children:(0,U.jsx)(ta.Spinner,{})})})]}):(0,U.jsx)("div",{className:z("dataviews-no-results",{"is-refreshing":x}),id:E,children:y})}var yc=nb;var Pc=d(q(),1),na=d($(),1);var At=d(q(),1);var Rn=d($(),1),Cc=d(Et(),1),Ec=d(El(),1),oa=d(j(),1);var ib=d(q(),1),ab=d($(),1),ra=d(j(),1);var sb=d(R(),1),lb=[{value:120,breakpoint:1},{value:170,breakpoint:1},{value:230,breakpoint:1},{value:290,breakpoint:1112},{value:350,breakpoint:1636},{value:430,breakpoint:588}],ub=lb[2].value;function Sc(){let t=(0,ra.useContext)(G),e=t.view;return(0,ra.useMemo)(()=>{let r=t.containerWidth,o=32,n=e.layout?.previewSize??ub,i=Math.floor((r+o)/(n+o));return Math.max(1,i)},[t.containerWidth,e.layout?.previewSize])}var ne=d(R(),1),{Badge:db}=K(At.privateApis);function cb(t,e){let r=[];for(let o=0,n=t.length;o{if(x.onClickCapture?.(w),(0,Ec.isAppleOS)()?w.metaKey:w.ctrlKey){if(w.stopPropagation(),w.preventDefault(),!N)return;o(r.includes(D)?r.filter(C=>D!==C):[...r,D])}},children:[(0,ne.jsx)(Qr,{item:s,isItemClickable:i,onClickItem:n,renderItemLink:a,className:z("dataviews-view-grid__media",{"dataviews-view-grid__media--placeholder":!g}),...h,children:P}),y&&(0,ne.jsx)(Ur,{item:s,selection:r,onChangeSelection:o,getItemId:l,titleField:p,disabled:!N}),!!u?.length&&(0,ne.jsx)("div",{className:"dataviews-view-grid__media-actions",children:(0,ne.jsx)(jo,{item:s,actions:u,isCompact:!0})}),A&&(0,ne.jsx)("div",{className:"dataviews-view-grid__title",children:(0,ne.jsx)(Qr,{item:s,isItemClickable:i,onClickItem:n,renderItemLink:a,className:"dataviews-view-grid__title-field dataviews-title-field",...O,title:p?.getValueFormatted({item:s,field:p})||void 0,children:_})}),(0,ne.jsxs)(F,{direction:"column",gap:"xs",children:[T&&f?.render&&(0,ne.jsx)(f.render,{item:s,field:f}),!!v?.length&&(0,ne.jsx)(F,{direction:"row",className:"dataviews-view-grid__badge-fields",gap:"sm",wrap:"wrap",align:"top",justify:"flex-start",children:v.map(w=>(0,ne.jsx)(db,{className:"dataviews-view-grid__field-value",children:(0,ne.jsx)(w.render,{item:s,field:w})},w.id))}),!!m?.length&&(0,ne.jsx)(F,{direction:"column",className:"dataviews-view-grid__fields",gap:"xs",children:m.map(w=>(0,ne.jsx)(At.Flex,{className:"dataviews-view-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,ne.jsxs)(ne.Fragment,{children:[(0,ne.jsx)(At.Tooltip,{text:w.label,children:(0,ne.jsx)(At.FlexItem,{className:"dataviews-view-grid__field-name",children:w.header})}),(0,ne.jsx)(At.FlexItem,{className:"dataviews-view-grid__field-value",style:{maxHeight:"none"},children:(0,ne.jsx)(w.render,{item:s,field:w})})]})},w.id))})]})]})});function Vl({data:t,isInfiniteScroll:e,className:r,inert:o,isLoading:n,view:i,fields:a,selection:l,onChangeSelection:s,onClickItem:u,isItemClickable:c,renderItemLink:p,getItemId:f,actions:m}){let{paginationInfo:v,resizeObserverRef:y}=(0,oa.useContext)(G),b=Sc(),x=Wo(m,t),S=a.find(k=>k.id===i?.titleField),A=a.find(k=>k.id===i?.mediaField),V=a.find(k=>k.id===i?.descriptionField),T=i.fields??[],{regularFields:N,badgeFields:D}=T.reduce((k,g)=>{let P=a.find(h=>h.id===g);if(!P)return k;let _=i.layout?.badgeFields?.includes(g)?"badgeFields":"regularFields";return k[_].push(P),k},{regularFields:[],badgeFields:[]}),E="900px",I=Math.ceil(t.length/b);return(0,ne.jsx)(At.Composite,{role:e?"feed":"grid",className:z("dataviews-view-grid",r),focusWrap:!0,"aria-busy":n,"aria-rowcount":e?void 0:I,ref:y,inert:o,children:cb(t,b).map((k,g)=>(0,ne.jsx)(At.Composite.Row,{render:(0,ne.jsx)("div",{role:"row","aria-rowindex":g+1,"aria-label":(0,Rn.sprintf)((0,Rn.__)("Row %d"),g+1),className:"dataviews-view-grid__row",style:{gridTemplateColumns:`repeat( ${b}, minmax(0, 1fr) )`}}),children:k.map((P,_)=>{let h=g*b+_;return(0,ne.jsx)(At.Composite.Item,{render:O=>(0,ne.jsx)(fb,{...O,role:e?"article":"gridcell","aria-setsize":e?v.totalItems:void 0,"aria-posinset":e?h+1:void 0,view:i,selection:l,onChangeSelection:s,onClickItem:u,isItemClickable:c,renderItemLink:p,getItemId:f,item:P,actions:m,mediaField:A,titleField:S,descriptionField:V,regularFields:N,badgeFields:D,hasBulkActions:x,config:{sizes:E}})},f(P))})},g))})}var It=d(R(),1);function mb({actions:t,data:e,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,onClickItem:a,isItemClickable:l,renderItemLink:s,selection:u,view:c,className:p,empty:f}){let m=Xt(!!n),v=!!e?.length,y=c.groupBy?.field?r.find(A=>A.id===c.groupBy?.field):null,b=y?Dt(e,y):null,x=c.infiniteScrollEnabled&&!b;if(!v)return(0,It.jsx)("div",{className:z("dataviews-no-results",{"is-refreshing":m}),children:f});let S={className:z(p,{"is-refreshing":!x&&m}),inert:!x&&n?"true":void 0,isLoading:n,view:c,fields:r,selection:u,onChangeSelection:i,onClickItem:a,isItemClickable:l,renderItemLink:s,getItemId:o,actions:t};return(0,It.jsxs)(It.Fragment,{children:[v&&y&&b&&(0,It.jsx)(F,{direction:"column",gap:"lg",children:Array.from(b.entries()).map(([A,V])=>(0,It.jsxs)(F,{direction:"column",gap:"sm",children:[(0,It.jsx)("h3",{className:"dataviews-view-grid__group-header",children:c.groupBy?.showLabel===!1?A:(0,na.sprintf)((0,na.__)("%1$s: %2$s"),y.label,A)}),(0,It.jsx)(Vl,{...S,data:V,isInfiniteScroll:!1})]},A))}),!b&&(0,It.jsx)(Vl,{...S,data:e,isInfiniteScroll:!!x}),x&&n&&(0,It.jsx)("p",{className:"dataviews-loading-more",children:(0,It.jsx)(Pc.Spinner,{})})]})}var Ac=mb;var ia=d(Et(),1),Ye=d(q(),1),Be=d(j(),1),Vn=d($(),1);var Ml=d(Yt(),1);var W=d(R(),1),{Menu:kl}=K(Ye.privateApis);function Dl(t){return`${t}-item-wrapper`}function pb(t,e){return`${t}-primary-action-${e}`}function Nl(t){return`${t}-dropdown`}function vb({idPrefix:t,primaryAction:e,item:r}){let o=(0,Ml.useRegistry)(),[n,i]=(0,Be.useState)(!1),a=pb(t,e.id),l=typeof e.label=="string"?e.label:e.label([r]);return"RenderModal"in e?(0,W.jsx)("div",{role:"gridcell",children:(0,W.jsx)(Ye.Composite.Item,{id:a,render:(0,W.jsx)(Ye.Button,{disabled:!!e.disabled,accessibleWhenDisabled:!0,text:l,size:"small",onClick:()=>i(!0)}),children:n&&(0,W.jsx)(vo,{action:e,items:[r],closeModal:()=>i(!1)})})},e.id):(0,W.jsx)("div",{role:"gridcell",children:(0,W.jsx)(Ye.Composite.Item,{id:a,render:(0,W.jsx)(Ye.Button,{disabled:!!e.disabled,accessibleWhenDisabled:!0,size:"small",onClick:()=>{e.callback([r],{registry:o})},children:l})})},e.id)}function Ic({view:t,actions:e,idPrefix:r,isSelected:o,item:n,titleField:i,mediaField:a,descriptionField:l,onSelect:s,otherFields:u,onDropdownTriggerKeyDown:c,posinset:p}){let{showTitle:f=!0,showMedia:m=!0,showDescription:v=!0,infiniteScrollEnabled:y}=t,b=(0,Be.useRef)(null),x=`${r}-label`,S=`${r}-description`,A=(0,Ml.useRegistry)(),[V,T]=(0,Be.useState)(!1),[N,D]=(0,Be.useState)(null),E=({type:w})=>{T(w==="mouseenter")},{paginationInfo:I}=(0,Be.useContext)(G);(0,Be.useEffect)(()=>{o&&b.current?.scrollIntoView({behavior:"auto",block:"nearest",inline:"nearest"})},[o]);let{primaryAction:k,eligibleActions:g}=(0,Be.useMemo)(()=>{let w=e.filter(M=>!M.isEligible||M.isEligible(n));return{primaryAction:w.filter(M=>M.isPrimary)[0],eligibleActions:w}},[e,n]),P=k&&e.length===1,_=m&&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=f&&i?.render?(0,W.jsx)(i.render,{item:n,field:i}):null,O=g?.length>0&&(0,W.jsxs)(F,{direction:"row",gap:"md",className:"dataviews-view-list__item-actions",children:[k&&(0,W.jsx)(vb,{idPrefix:r,primaryAction:k,item:n}),!P&&(0,W.jsxs)("div",{role:"gridcell",children:[(0,W.jsxs)(kl,{placement:"bottom-end",children:[(0,W.jsx)(kl.TriggerButton,{render:(0,W.jsx)(Ye.Composite.Item,{id:Nl(r),render:(0,W.jsx)(Ye.Button,{size:"small",icon:In,label:(0,Vn.__)("Actions"),accessibleWhenDisabled:!0,disabled:!e.length,onKeyDown:c})})}),(0,W.jsx)(kl.Popover,{children:(0,W.jsx)(Al,{actions:g,item:n,registry:A,setActiveModalAction:D})})]}),!!N&&(0,W.jsx)(vo,{action:N,items:[n],closeModal:()=>D(null)})]})]});return(0,W.jsx)(Ye.Composite.Row,{ref:b,render:(0,W.jsx)("div",{"aria-posinset":p,"aria-setsize":y?I.totalItems:void 0}),role:y?"article":"row",className:z({"is-selected":o,"is-hovered":V}),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)(Ye.Composite.Item,{id:Dl(r),"aria-pressed":o,"aria-labelledby":x,"aria-describedby":S,className:"dataviews-view-list__item",onClick:()=>s(n)})}),(0,W.jsxs)(F,{direction:"row",gap:"md",justify:"start",align:"flex-start",style:{flex:1,minWidth:0},children:[_,(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:x,children:h}),O]}),v&&l?.render&&(0,W.jsx)("div",{className:"dataviews-view-list__field",children:(0,W.jsx)(l.render,{item:n,field:l})}),(0,W.jsx)("div",{className:"dataviews-view-list__fields",id:S,children:u.map(w=>(0,W.jsxs)("div",{className:"dataviews-view-list__field",children:[(0,W.jsx)(Ye.VisuallyHidden,{as:"span",className:"dataviews-view-list__field-label",children:w.label}),(0,W.jsx)("span",{className:"dataviews-view-list__field-value",children:(0,W.jsx)(w.render,{item:n,field:w})})]},w.id))})]})]})]})})}function gb(t){return!!t}function Fl(t){let{actions:e,data:r,fields:o,getItemId:n,isLoading:i,onChangeSelection:a,selection:l,view:s,className:u,empty:c}=t,p=(0,ia.useInstanceId)(Fl,"view-list"),f=Xt(!!i),m=r?.findLast(w=>l.includes(n(w))),v=o.find(w=>w.id===s.titleField),y=o.find(w=>w.id===s.mediaField),b=o.find(w=>w.id===s.descriptionField),x=(s?.fields??[]).map(w=>o.find(C=>w===C.id)).filter(gb),S=w=>a([n(w)]),A=(0,Be.useCallback)(w=>`${p}-${n(w)}`,[p,n]),V=(0,Be.useCallback)((w,C)=>C.startsWith(A(w)),[A]),[T,N]=(0,Be.useState)(void 0);(0,Be.useEffect)(()=>{m&&N(Dl(A(m)))},[m,A]);let D=r.findIndex(w=>V(w,T??"")),E=(0,ia.usePrevious)(D),I=D!==-1,k=(0,Be.useCallback)((w,C)=>{let M=Math.min(r.length-1,Math.max(0,w));if(!r[M])return;let H=A(r[M]),ae=C(H);N(ae),document.getElementById(ae)?.focus()},[r,A]);(0,Be.useEffect)(()=>{!I&&(E!==void 0&&E!==-1)&&k(E,Dl)},[I,k,E]);let g=(0,Be.useCallback)(w=>{w.key==="ArrowDown"&&(w.preventDefault(),k(D+1,Nl)),w.key==="ArrowUp"&&(w.preventDefault(),k(D-1,Nl))},[k,D]),P=!!r?.length,_=s.groupBy?.field?o.find(w=>w.id===s.groupBy?.field):null,h=P&&_?Dt(r,_):null,O=s.infiniteScrollEnabled&&!h;return P?P&&_&&h?(0,W.jsx)(Ye.Composite,{id:`${p}`,render:(0,W.jsx)("div",{}),className:"dataviews-view-list__group",role:"grid",activeId:T,setActiveId:N,children:(0,W.jsx)(F,{direction:"column",gap:"lg",className:z("dataviews-view-list",u),children:Array.from(h.entries()).map(([w,C])=>(0,W.jsxs)(F,{direction:"column",gap:"sm",children:[(0,W.jsx)("h3",{className:"dataviews-view-list__group-header",children:s.groupBy?.showLabel===!1?w:(0,Vn.sprintf)((0,Vn.__)("%1$s: %2$s"),_.label,w)}),C.map(M=>{let H=A(M);return(0,W.jsx)(Ic,{view:s,idPrefix:H,actions:e,item:M,isSelected:M===m,onSelect:S,mediaField:y,titleField:v,descriptionField:b,otherFields:x,onDropdownTriggerKeyDown:g},H)})]},w))})}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Ye.Composite,{id:p,render:(0,W.jsx)("div",{}),className:z("dataviews-view-list",u,{[`has-${s.layout?.density}-density`]:s.layout?.density&&["compact","comfortable"].includes(s.layout.density),"is-refreshing":!O&&f}),role:s.infiniteScrollEnabled?"feed":"grid",activeId:T,setActiveId:N,inert:!O&&i?"true":void 0,children:r.map((w,C)=>{let M=A(w);return(0,W.jsx)(Ic,{view:s,idPrefix:M,actions:e,item:w,isSelected:w===m,onSelect:S,mediaField:y,titleField:v,descriptionField:b,otherFields:x,onDropdownTriggerKeyDown:g,posinset:s.infiniteScrollEnabled?C+1:void 0},M)})}),O&&i&&(0,W.jsx)("p",{className:"dataviews-loading-more",children:(0,W.jsx)(Ye.Spinner,{})})]}):(0,W.jsx)("div",{className:z("dataviews-no-results",{"is-refreshing":f}),children:c})}var Mc=d(q(),1);var aa=d($(),1),Tc=d(j(),1);var Yo=d(R(),1);function Oc({groupName:t,groupData:e,groupField:r,showLabel:o=!0,children:n}){let i=o?(0,Tc.createInterpolateElement)((0,aa.sprintf)((0,aa.__)("%s: "),r.label).trim(),{groupName:(0,Yo.jsx)(r.render,{item:e[0],field:r})}):(0,Yo.jsx)(r.render,{item:e[0],field:r});return(0,Yo.jsxs)(F,{direction:"column",className:"dataviews-view-activity__group",children:[(0,Yo.jsx)("h3",{className:"dataviews-view-activity__group-header",children:i}),n]},t)}var Rc=d(q(),1),ho=d(j(),1),Vc=d(Yt(),1),kc=d(Et(),1);var De=d(R(),1);function hb(t){let{view:e,actions:r,item:o,titleField:n,mediaField:i,descriptionField:a,otherFields:l,posinset:s,onClickItem:u,renderItemLink:c,isItemClickable:p}=t,{showTitle:f=!0,showMedia:m=!0,showDescription:v=!0,infiniteScrollEnabled:y}=e,b=(0,ho.useRef)(null),x=(0,Vc.useRegistry)(),{paginationInfo:S}=(0,ho.useContext)(G),{primaryActions:A,eligibleActions:V}=(0,ho.useMemo)(()=>{let g=r.filter(_=>!_.isEligible||_.isEligible(o));return{primaryActions:g.filter(_=>_.isPrimary),eligibleActions:g}},[r,o]),T=(0,kc.useViewportMatch)("medium","<"),N=e.layout?.density??"balanced",D=m&&N!=="compact"&&i?.render?(0,De.jsx)(i.render,{item:o,field:i,config:{sizes:N==="comfortable"?"32px":"24px"}}):null,E=(0,De.jsx)("div",{className:"dataviews-view-activity__item-type-icon",children:D||(0,De.jsx)("span",{className:"dataviews-view-activity__item-bullet","aria-hidden":"true"})}),I=f&&n?.render?(0,De.jsx)(n.render,{item:o,field:n}):null,k=(0,ho.useMemo)(()=>N==="comfortable"?"md":"sm",[N]);return(0,De.jsx)("div",{ref:b,role:y?"article":void 0,"aria-posinset":s,"aria-setsize":y?S.totalItems:void 0,className:z("dataviews-view-activity__item",N==="compact"&&"is-compact",N==="balanced"&&"is-balanced",N==="comfortable"&&"is-comfortable"),children:(0,De.jsxs)(F,{direction:"row",gap:"lg",justify:"start",align:"flex-start",children:[(0,De.jsx)(F,{direction:"column",gap:"xs",align:"center",className:"dataviews-view-activity__item-type",children:E}),(0,De.jsxs)(F,{direction:"column",gap:k,align:"flex-start",className:"dataviews-view-activity__item-content",children:[I&&(0,De.jsx)(Qr,{item:o,isItemClickable:p,onClickItem:u,renderItemLink:c,className:"dataviews-view-activity__item-title",children:I}),v&&a&&(0,De.jsx)("div",{className:"dataviews-view-activity__item-description",children:(0,De.jsx)(a.render,{item:o,field:a})}),(0,De.jsx)("div",{className:"dataviews-view-activity__item-fields",children:l.map(g=>(0,De.jsxs)("div",{className:"dataviews-view-activity__item-field",children:[(0,De.jsx)(Rc.VisuallyHidden,{as:"span",className:"dataviews-view-activity__item-field-label",children:g.label}),(0,De.jsx)("span",{className:"dataviews-view-activity__item-field-value",children:(0,De.jsx)(g.render,{item:o,field:g})})]},g.id))}),!!A?.length&&(0,De.jsx)(Il,{item:o,actions:A,registry:x,buttonVariant:"secondary"})]}),(A.length0)&&(0,De.jsx)("div",{className:"dataviews-view-activity__item-actions",children:(0,De.jsx)(jo,{item:o,actions:V,isCompact:!0})})]})})}var Dc=hb;var Nc=d(le(),1);function bb(t){return!!t}function Ll(t){let{data:e,fields:r,getItemId:o,view:n}=t,i=r.find(u=>u.id===n.titleField),a=r.find(u=>u.id===n.mediaField),l=r.find(u=>u.id===n.descriptionField),s=(n?.fields??[]).map(u=>r.find(c=>u===c.id)).filter(bb);return e.map((u,c)=>(0,Nc.createElement)(Dc,{...t,key:o(u),item:u,mediaField:a,titleField:i,descriptionField:l,otherFields:s,posinset:n.infiniteScrollEnabled?c+1:void 0}))}var Tt=d(R(),1);function Fc(t){let{empty:e,data:r,fields:o,isLoading:n,view:i,className:a}=t,l=Xt(!!n),s=!!r?.length,u=i.groupBy?.field?o.find(y=>y.id===i.groupBy?.field):null,c=s&&u?Dt(r,u):null,p=i.infiniteScrollEnabled&&!c;if(!s)return(0,Tt.jsx)("div",{className:z("dataviews-no-results",{"is-refreshing":l}),children:e});let f=!p&&!!n,m=z("dataviews-view-activity",a,{"is-refreshing":!p&&l}),v=c?Array.from(c.entries()):[];return s&&u&&c?(0,Tt.jsx)(F,{direction:"column",gap:"sm",className:m,inert:f?"true":void 0,children:v.map(([y,b])=>(0,Tt.jsx)(Oc,{groupName:y,groupData:b,groupField:u,showLabel:i.groupBy?.showLabel!==!1,children:(0,Tt.jsx)(Ll,{...t,data:b})},y))}):(0,Tt.jsxs)(Tt.Fragment,{children:[(0,Tt.jsx)("div",{className:m,role:i.infiniteScrollEnabled?"feed":void 0,inert:f?"true":void 0,children:(0,Tt.jsx)(Ll,{...t})}),p&&n&&(0,Tt.jsx)("p",{className:"dataviews-loading-more",children:(0,Tt.jsx)(Mc.Spinner,{})})]})}var _t=d(q(),1),Dn=d($(),1),Gc=d(Et(),1),qc=d(j(),1);var Bc=d(q(),1),xb=d(Yt(),1),sa=d(j(),1);var wb=d($(),1);var kn=d(q(),1),Uo=d(j(),1),Ot=d($(),1);var xr=d(R(),1);function Bl(){let{view:t,onChangeView:e,paginationInfo:{totalItems:r=0,totalPages:o}}=(0,Uo.useContext)(G);if(!r||!o||t.infiniteScrollEnabled)return null;let n=t.page??1,i=Array.from(Array(o)).map((a,l)=>{let s=l+1;return{value:s.toString(),label:s.toString(),"aria-label":n===s?(0,Ot.sprintf)((0,Ot.__)("Page %1$d of %2$d"),n,o):s.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,Uo.createInterpolateElement)((0,Ot.sprintf)((0,Ot._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,Ot.__)("Current page"),value:n.toString(),options:i,onChange:a=>{e({...t,page:+a})},size:"small",variant:"minimal"})})}),(0,xr.jsxs)(F,{direction:"row",gap:"xs",align:"center",children:[(0,xr.jsx)(kn.Button,{onClick:()=>e({...t,page:n-1}),disabled:n===1,accessibleWhenDisabled:!0,label:(0,Ot.__)("Previous page"),icon:(0,Ot.isRTL)()?Mi:Li,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,xr.jsx)(kn.Button,{onClick:()=>e({...t,page:n+1}),disabled:n>=o,accessibleWhenDisabled:!0,label:(0,Ot.__)("Next page"),icon:(0,Ot.isRTL)()?Li:Mi,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})}var Lc=(0,Uo.memo)(Bl);var Hc=d(R(),1);function la(t){return(0,sa.useMemo)(()=>t?.every(e=>e.supportsBulk),[t])}var jc=d(j(),1);var zc=d(R(),1),Hl=(0,jc.forwardRef)(({className:t,previewSize:e,...r},o)=>(0,zc.jsx)("div",{ref:o,className:z("dataviews-view-grid-items",t),style:{gridTemplateColumns:e&&`repeat(auto-fill, minmax(${e}px, 1fr))`},...r}));var Q=d(R(),1),{Badge:_b}=K(_t.privateApis);function Wc({view:t,multiselect:e,selection:r,onChangeSelection:o,getItemId:n,item:i,mediaField:a,titleField:l,descriptionField:s,regularFields:u,badgeFields:c,config:p,posinset:f,setsize:m}){let{showTitle:v=!0,showMedia:y=!0,showDescription:b=!0}=t,x=n(i),S=r.includes(x),A=a?.render?(0,Q.jsx)(a.render,{item:i,field:a,config:p}):null,V=v&&l?.render?(0,Q.jsx)(l.render,{item:i,field:l}):null;return(0,Q.jsxs)(_t.Composite.Item,{"aria-label":l?l.getValue({item:i})||(0,Dn.__)("(no title)"):void 0,render:({children:T,...N})=>(0,Q.jsx)(F,{direction:"column",children:T,...N}),role:"option","aria-posinset":f,"aria-setsize":m,className:z("dataviews-view-picker-grid__card",{"is-selected":S}),"aria-selected":S,onClick:()=>{if(S)o(r.filter(T=>x!==T));else{let T=e?[...r,x]:[x];o(T)}},children:[y&&A&&(0,Q.jsx)("div",{className:"dataviews-view-picker-grid__media",children:A}),y&&A&&(0,Q.jsx)(Ur,{item:i,selection:r,onChangeSelection:o,getItemId:n,titleField:l,disabled:!1,"aria-hidden":!0,tabIndex:-1}),v&&(0,Q.jsx)(F,{direction:"row",justify:"space-between",className:"dataviews-view-picker-grid__title-actions",children:(0,Q.jsx)("div",{className:"dataviews-view-picker-grid__title-field dataviews-title-field",children:V})}),(0,Q.jsxs)(F,{direction:"column",gap:"xs",children:[b&&s?.render&&(0,Q.jsx)(s.render,{item:i,field:s}),!!c?.length&&(0,Q.jsx)(F,{direction:"row",className:"dataviews-view-picker-grid__badge-fields",gap:"sm",wrap:"wrap",align:"top",justify:"flex-start",children:c.map(T=>(0,Q.jsx)(_b,{className:"dataviews-view-picker-grid__field-value",children:(0,Q.jsx)(T.render,{item:i,field:T})},T.id))}),!!u?.length&&(0,Q.jsx)(F,{direction:"column",className:"dataviews-view-picker-grid__fields",gap:"xs",children:u.map(T=>(0,Q.jsx)(_t.Flex,{className:"dataviews-view-picker-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(_t.FlexItem,{className:"dataviews-view-picker-grid__field-name",children:T.header}),(0,Q.jsx)(_t.FlexItem,{className:"dataviews-view-picker-grid__field-value",style:{maxHeight:"none"},children:(0,Q.jsx)(T.render,{item:i,field:T})})]})},T.id))})]})]},x)}function Yc({groupName:t,groupField:e,showLabel:r=!0,children:o}){let n=(0,Gc.useInstanceId)(Yc,"dataviews-view-picker-grid-group__header");return(0,Q.jsxs)(F,{direction:"column",gap:"sm",role:"group","aria-labelledby":n,children:[(0,Q.jsx)("h3",{className:"dataviews-view-picker-grid-group__header",id:n,children:r?(0,Dn.sprintf)((0,Dn.__)("%1$s: %2$s"),e.label,t):t}),o]},t)}function yb({actions:t,data:e,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,selection:a,view:l,className:s,empty:u}){let{resizeObserverRef:c,paginationInfo:p,itemListLabel:f}=(0,qc.useContext)(G),m=r.find(_=>_.id===l?.titleField),v=r.find(_=>_.id===l?.mediaField),y=r.find(_=>_.id===l?.descriptionField),b=l.fields??[],{regularFields:x,badgeFields:S}=b.reduce((_,h)=>{let O=r.find(C=>C.id===h);if(!O)return _;let w=l.layout?.badgeFields?.includes(h)?"badgeFields":"regularFields";return _[w].push(O),_},{regularFields:[],badgeFields:[]}),A=!!e?.length,V=l.layout?.previewSize,T=la(t),N="900px",D=l.groupBy?.field?r.find(_=>_.id===l.groupBy?.field):null,E=D?Dt(e,D):null,I=l.infiniteScrollEnabled&&!E,k=l?.page??1,g=l?.perPage??0,P=I?p?.totalItems:void 0;return(0,Q.jsxs)(Q.Fragment,{children:[A&&D&&E&&(0,Q.jsx)(_t.Composite,{virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":T,className:z("dataviews-view-picker-grid",s),"aria-label":f,render:({children:_,...h})=>(0,Q.jsx)(F,{direction:"column",gap:"lg",children:_,...h}),children:Array.from(E.entries()).map(([_,h])=>(0,Q.jsx)(Yc,{groupName:_,groupField:D,showLabel:l.groupBy?.showLabel!==!1,children:(0,Q.jsx)(Hl,{previewSize:V,style:{gridTemplateColumns:V&&`repeat(auto-fill, minmax(${V}px, 1fr))`},"aria-busy":n,ref:c,children:h.map(O=>{let w=(k-1)*g+e.indexOf(O)+1;return(0,Q.jsx)(Wc,{view:l,multiselect:T,selection:a,onChangeSelection:i,getItemId:o,item:O,mediaField:v,titleField:m,descriptionField:y,regularFields:x,badgeFields:S,config:{sizes:N},posinset:w,setsize:P},o(O))})})},_))}),A&&!E&&(0,Q.jsx)(_t.Composite,{render:(0,Q.jsx)(Hl,{className:z("dataviews-view-picker-grid",s),previewSize:V,"aria-busy":n,ref:c}),virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":T,"aria-label":f,children:e.map((_,h)=>{let O=I?h+1:void 0;return I||(O=(k-1)*g+h+1),(0,Q.jsx)(Wc,{view:l,multiselect:T,selection:a,onChangeSelection:i,getItemId:o,item:_,mediaField:v,titleField:m,descriptionField:y,regularFields:x,badgeFields:S,config:{sizes:N},posinset:O,setsize:P},o(_))})}),!A&&(0,Q.jsx)("div",{className:z({"dataviews-loading":n,"dataviews-no-results":!n}),children:n?(0,Q.jsx)("p",{children:(0,Q.jsx)(_t.Spinner,{})}):u}),A&&n&&(0,Q.jsx)("p",{className:"dataviews-loading-more",children:(0,Q.jsx)(_t.Spinner,{})})]})}var Uc=yb;var ua=d($(),1),bo=d(q(),1),Nt=d(j(),1);var J=d(R(),1);function Sb({item:t,fields:e,column:r,align:o}){let n=e.find(a=>a.id===r);if(!n)return null;let i=z("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,J.jsx)("div",{className:i,children:(0,J.jsx)(n.render,{item:t,field:n})})}function $c({item:t,fields:e,id:r,view:o,titleField:n,mediaField:i,descriptionField:a,selection:l,getItemId:s,onChangeSelection:u,multiselect:c,posinset:p}){let{paginationInfo:f}=(0,Nt.useContext)(G),m=l.includes(r),[v,y]=(0,Nt.useState)(!1),{showTitle:b=!0,showMedia:x=!0,showDescription:S=!0,infiniteScrollEnabled:A}=o,V=()=>{y(!0)},T=()=>{y(!1)},N=o.fields??[],D=n&&b||i&&x||a&&S;return(0,J.jsxs)(bo.Composite.Item,{render:({children:E,...I})=>(0,J.jsx)("tr",{className:z("dataviews-view-table__row",{"is-selected":m,"is-hovered":v}),onMouseEnter:V,onMouseLeave:T,children:E,...I}),"aria-selected":m,"aria-setsize":f.totalItems||void 0,"aria-posinset":p,role:A?"article":"option",onClick:()=>{if(m)u(l.filter(E=>r!==E));else{let E=c?[...l,r]:[r];u(E)}},children:[(0,J.jsx)("td",{className:"dataviews-view-table__checkbox-column",role:"presentation",children:(0,J.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,J.jsx)(Ur,{item:t,selection:l,onChangeSelection:u,getItemId:s,titleField:n,disabled:!1,"aria-hidden":!0,tabIndex:-1})})}),D&&(0,J.jsx)("td",{role:"presentation",children:(0,J.jsx)(Zi,{item:t,titleField:b?n:void 0,mediaField:x?i:void 0,descriptionField:S?a:void 0,isItemClickable:()=>!1})}),N.map(E=>{let{width:I,maxWidth:k,minWidth:g,align:P}=o.layout?.styles?.[E]??{};return(0,J.jsx)("td",{style:{width:I,maxWidth:k,minWidth:g},role:"presentation",children:(0,J.jsx)(Sb,{fields:e,item:t,column:E,align:P})},E)})]},r)}function Cb({actions:t,data:e,fields:r,getItemId:o,isLoading:n=!1,onChangeView:i,onChangeSelection:a,selection:l,setOpenedFilter:s,view:u,className:c,empty:p}){let f=(0,Nt.useRef)(new Map),m=(0,Nt.useRef)(void 0),[v,y]=(0,Nt.useState)(),b=la(t)??!1;(0,Nt.useEffect)(()=>{m.current&&(m.current.focus(),m.current=void 0)});let x=(0,Nt.useId)();if(v){m.current=v,y(void 0);return}let S=w=>{let C=f.current.get(w.id),M=C?f.current.get(C.fallback):void 0;y(M?.node)},A=!!e?.length,V=r.find(w=>w.id===u.titleField),T=r.find(w=>w.id===u.mediaField),N=r.find(w=>w.id===u.descriptionField),D=u.groupBy?.field?r.find(w=>w.id===u.groupBy?.field):null,E=D?Dt(e,D):null,{showTitle:I=!0,showMedia:k=!0,showDescription:g=!0}=u,P=V&&I||T&&k||N&&g,_=u.fields??[],h=(w,C)=>M=>{M?f.current.set(w,{node:M,fallback:_[C>0?C-1:1]}):f.current.delete(w)},O=u.infiniteScrollEnabled&&!E;return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)("table",{className:z("dataviews-view-table","dataviews-view-picker-table",c,{[`has-${u.layout?.density}-density`]:u.layout?.density&&["compact","comfortable"].includes(u.layout.density)}),"aria-busy":n,"aria-describedby":x,role:O?"feed":"listbox",children:[(0,J.jsx)("thead",{role:"presentation",children:(0,J.jsxs)("tr",{className:"dataviews-view-table__row",role:"presentation",children:[(0,J.jsx)("th",{className:"dataviews-view-table__checkbox-column",children:b&&(0,J.jsx)(On,{selection:l,onChangeSelection:a,data:e,actions:t,getItemId:o})}),P&&(0,J.jsx)("th",{children:V&&(0,J.jsx)(Go,{ref:h(V.id,0),fieldId:V.id,view:u,fields:r,onChangeView:i,onHide:S,setOpenedFilter:s,canMove:!1})}),_.map((w,C)=>{let{width:M,maxWidth:H,minWidth:ae,align:_e}=u.layout?.styles?.[w]??{};return(0,J.jsx)("th",{style:{width:M,maxWidth:H,minWidth:ae,textAlign:_e},"aria-sort":u.sort?.direction&&u.sort?.field===w?Gi[u.sort.direction]:void 0,scope:"col",children:(0,J.jsx)(Go,{ref:h(w,C),fieldId:w,view:u,fields:r,onChangeView:i,onHide:S,setOpenedFilter:s,canMove:u.layout?.enableMoving??!0})},w)})]})}),A&&D&&E?Array.from(E.entries()).map(([w,C])=>(0,J.jsxs)(bo.Composite,{virtualFocus:!0,orientation:"vertical",render:(0,J.jsx)("tbody",{role:"group"}),children:[(0,J.jsx)("tr",{className:"dataviews-view-table__group-header-row",role:"presentation",children:(0,J.jsx)("td",{colSpan:_.length+(P?1:0)+1,className:"dataviews-view-table__group-header-cell",role:"presentation",children:u.groupBy?.showLabel===!1?w:(0,ua.sprintf)((0,ua.__)("%1$s: %2$s"),D.label,w)})}),C.map((M,H)=>(0,J.jsx)($c,{item:M,fields:r,id:o(M)||H.toString(),view:u,titleField:V,mediaField:T,descriptionField:N,selection:l,getItemId:o,onChangeSelection:a,multiselect:b},o(M)))]},`group-${w}`)):(0,J.jsx)(bo.Composite,{render:(0,J.jsx)("tbody",{role:"presentation"}),virtualFocus:!0,orientation:"vertical",children:A&&e.map((w,C)=>(0,J.jsx)($c,{item:w,fields:r,id:o(w)||C.toString(),view:u,titleField:V,mediaField:T,descriptionField:N,selection:l,getItemId:o,onChangeSelection:a,multiselect:b,posinset:C+1},o(w)))})]}),(0,J.jsxs)("div",{className:z({"dataviews-loading":n,"dataviews-no-results":!A&&!n}),id:x,children:[!A&&(n?(0,J.jsx)("p",{children:(0,J.jsx)(bo.Spinner,{})}):p),A&&n&&(0,J.jsx)("p",{className:"dataviews-loading-more",children:(0,J.jsx)(bo.Spinner,{})})]})]})}var Kc=Cb;var Qc=d(q(),1),Xc=d($(),1),Zc=d(j(),1);var Jc=d(R(),1),Eb=[{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 jl(){let t=(0,Zc.useContext)(G),e=t.view,r=Eb.filter(a=>t.containerWidth>=a.breakpoint),o=e.layout?.previewSize??230,n=r.map((a,l)=>({...a,index:l})).filter(a=>a.value<=o).sort((a,l)=>l.value-a.value)[0]?.index??0,i=r.map((a,l)=>({value:l}));return(0,Jc.jsx)(Qc.RangeControl,{__next40pxDefaultSize:!0,showTooltip:!1,label:(0,Xc.__)("Preview size"),value:n,min:0,max:r.length-1,withInputField:!1,onChange:(a=0)=>{t.onChangeView({...e,layout:{...e.layout,previewSize:r[a].value}})},step:1,marks:i})}var $o=d(q(),1),Ko=d($(),1),ef=d(j(),1);var Qo=d(R(),1);function Nn(){let t=(0,ef.useContext)(G),e=t.view;return(0,Qo.jsxs)($o.__experimentalToggleGroupControl,{size:"__unstable-large",label:(0,Ko.__)("Density"),value:e.layout?.density||"balanced",onChange:r=>{t.onChangeView({...e,layout:{...e.layout,density:r}})},isBlock:!0,children:[(0,Qo.jsx)($o.__experimentalToggleGroupControlOption,{value:"comfortable",label:(0,Ko._x)("Comfortable","Density option for DataView layout")},"comfortable"),(0,Qo.jsx)($o.__experimentalToggleGroupControlOption,{value:"balanced",label:(0,Ko._x)("Balanced","Density option for DataView layout")},"balanced"),(0,Qo.jsx)($o.__experimentalToggleGroupControlOption,{value:"compact",label:(0,Ko._x)("Compact","Density option for DataView layout")},"compact")]})}var Zr=[{type:Lo,label:(0,wr.__)("Table"),component:yc,icon:_i,viewConfigOptions:Nn},{type:Yi,label:(0,wr.__)("Grid"),component:Ac,icon:Si,viewConfigOptions:jl},{type:$d,label:(0,wr.__)("List"),component:Fl,icon:(0,wr.isRTL)()?il:sl,viewConfigOptions:Nn},{type:Kd,label:(0,wr.__)("Activity"),component:Fc,icon:hl,viewConfigOptions:Nn},{type:Qd,label:(0,wr.__)("Grid"),component:Uc,icon:Si,viewConfigOptions:jl,isPicker:!0},{type:Xd,label:(0,wr.__)("Table"),component:Kc,icon:_i,viewConfigOptions:Nn,isPicker:!0}];var fn=d(j(),1);var jt=d(q(),1),Ir=d($(),1),za=d(j(),1);function Mn(...t){}function zl(t,e){if(Pb(t)){let r=Ab(e)?e():e;return t(r)}return t}function Pb(t){return typeof t=="function"}function Ab(t){return typeof t=="function"}function yt(t,e){return typeof Object.hasOwn=="function"?Object.hasOwn(t,e):Object.prototype.hasOwnProperty.call(t,e)}function Jr(...t){return(...e)=>{for(let r of t)typeof r=="function"&&r(...e)}}function Fn(t){return t.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}function Wl(t,e){let r={...t};for(let o of e)yt(r,o)&&delete r[o];return r}function Gl(t,e){let r={};for(let o of e)yt(t,o)&&(r[o]=t[o]);return r}function Ln(t){return t}function Xe(t,e){if(!t)throw typeof e!="string"?new Error("Invariant failed"):new Error(e)}function ql(t){return Object.keys(t)}function Yl(t,...e){let r=typeof t=="function"?t(...e):t;return r==null?!1:!r}function xo(t){return t.disabled||t["aria-disabled"]===!0||t["aria-disabled"]==="true"}function Ze(t){let e={};for(let r in t)t[r]!==void 0&&(e[r]=t[r]);return e}function ee(...t){for(let e of t)if(e!==void 0)return e}var tf=d(le(),1);function rf(t,e){typeof t=="function"?t(e):t&&(t.current=e)}function Ib(t){return!t||!(0,tf.isValidElement)(t)?!1:"ref"in t.props||"ref"in t}function of(t){return Ib(t)?{...t.props}.ref||t.ref:null}function nf(t,e){let r={...t};for(let o in e){if(!yt(e,o))continue;if(o==="className"){let i="className";r[i]=t[i]?`${t[i]} ${e[i]}`:e[i];continue}if(o==="style"){let i="style";r[i]=t[i]?{...t[i],...e[i]}:e[i];continue}let n=e[o];if(typeof n=="function"&&o.startsWith("on")){let i=t[o];if(typeof i=="function"){r[o]=(...a)=>{n(...a),i(...a)};continue}}r[o]=n}return r}var eo=Tb();function Tb(){var t;return typeof window<"u"&&!!((t=window.document)!=null&&t.createElement)}function _r(t){return t?"self"in t?t.document:t.ownerDocument||document:document}function wo(t,e=!1){var r;let{activeElement:o}=_r(t);if(!o?.nodeName)return null;if(Ul(o)&&((r=o.contentDocument)!=null&&r.body))return wo(o.contentDocument.body,e);if(e){let n=o.getAttribute("aria-activedescendant");if(n){let i=_r(o).getElementById(n);if(i)return i}}return o}function Zt(t,e){return t===e||t.contains(e)}function Ul(t){return t.tagName==="IFRAME"}function yr(t){let e=t.tagName.toLowerCase();return e==="button"?!0:e==="input"&&t.type?Ob.indexOf(t.type)!==-1:!1}var Ob=["button","color","file","image","reset","submit"];function $l(t){if(typeof t.checkVisibility=="function")return t.checkVisibility();let e=t;return e.offsetWidth>0||e.offsetHeight>0||t.getClientRects().length>0}function mt(t){try{let e=t instanceof HTMLInputElement&&t.selectionStart!==null,r=t.tagName==="TEXTAREA";return e||r||!1}catch{return!1}}function Bn(t){return t.isContentEditable||mt(t)}function Kl(t){if(mt(t))return t.value;if(t.isContentEditable){let e=_r(t).createRange();return e.selectNodeContents(t),e.toString()}return""}function Xo(t){let e=0,r=0;if(mt(t))e=t.selectionStart||0,r=t.selectionEnd||0;else if(t.isContentEditable){let o=_r(t).getSelection();if(o?.rangeCount&&o.anchorNode&&Zt(t,o.anchorNode)&&o.focusNode&&Zt(t,o.focusNode)){let n=o.getRangeAt(0),i=n.cloneRange();i.selectNodeContents(t),i.setEnd(n.startContainer,n.startOffset),e=i.toString().length,i.setEnd(n.endContainer,n.endOffset),r=i.toString().length}}return{start:e,end:r}}function Ql(t,e){let r=["dialog","menu","listbox","tree","grid"],o=t?.getAttribute("role");return o&&r.indexOf(o)!==-1?o:e}function Zo(t){if(!t)return null;let e=r=>r==="auto"||r==="scroll";if(t.clientHeight&&t.scrollHeight>t.clientHeight){let{overflowY:r}=getComputedStyle(t);if(e(r))return t}else if(t.clientWidth&&t.scrollWidth>t.clientWidth){let{overflowX:r}=getComputedStyle(t);if(e(r))return t}return Zo(t.parentElement)||document.scrollingElement||document.body}function Hn(t,...e){/text|search|password|tel|url/i.test(t.type)&&t.setSelectionRange(...e)}function Xl(t,e){let r=t.map((n,i)=>[i,n]),o=!1;return r.sort(([n,i],[a,l])=>{let s=e(i),u=e(l);return s===u||!s||!u?0:Rb(s,u)?(n>a&&(o=!0),-1):(ni):t}function Rb(t,e){return!!(e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_PRECEDING)}function Zl(){return eo&&!!navigator.maxTouchPoints}function da(){return eo?/mac|iphone|ipad|ipod/i.test(navigator.platform):!1}function _o(){return eo&&da()&&/apple/i.test(navigator.vendor)}function Jl(){return eo&&/firefox\//i.test(navigator.userAgent)}function ca(t){return!!(t.currentTarget&&!Zt(t.currentTarget,t.target))}function st(t){return t.target===t.currentTarget}function af(t){let e=t.currentTarget;if(!e)return!1;let r=da();if(r&&!t.metaKey||!r&&!t.ctrlKey)return!1;let o=e.tagName.toLowerCase();return o==="a"||o==="button"&&e.type==="submit"||o==="input"&&e.type==="submit"}function sf(t){let e=t.currentTarget;if(!e)return!1;let r=e.tagName.toLowerCase();return t.altKey?r==="a"||r==="button"&&e.type==="submit"||r==="input"&&e.type==="submit":!1}function yo(t,e){let r=new FocusEvent("blur",e),o=t.dispatchEvent(r),n={...e,bubbles:!0};return t.dispatchEvent(new FocusEvent("focusout",n)),o}function lf(t,e,r){let o=new KeyboardEvent(e,r);return t.dispatchEvent(o)}function eu(t,e){let r=new MouseEvent("click",e);return t.dispatchEvent(r)}function fa(t,e){let r=e||t.currentTarget,o=t.relatedTarget;return!o||!Zt(r,o)}function to(t,e,r,o){let i=(l=>{if(o){let u=setTimeout(l,o);return()=>clearTimeout(u)}let s=requestAnimationFrame(l);return()=>cancelAnimationFrame(s)})(()=>{t.removeEventListener(e,a,!0),r()}),a=()=>{i(),r()};return t.addEventListener(e,a,{once:!0,capture:!0}),i}function Jt(t,e,r,o=window){let n=[];try{o.document.addEventListener(t,e,r);for(let a of Array.from(o.frames))n.push(Jt(t,e,r,a))}catch{}return()=>{try{o.document.removeEventListener(t,e,r)}catch{}for(let a of n)a()}}var Vb=d(le(),1),fe=d(le(),1),tu={...Vb},uf=tu.useId,V2=tu.useDeferredValue,df=tu.useInsertionEffect,Ae=eo?fe.useLayoutEffect:fe.useEffect;function kb(t){let[e]=(0,fe.useState)(t);return e}function pf(t){let e=(0,fe.useRef)(t);return Ae(()=>{e.current=t}),e}function te(t){let e=(0,fe.useRef)(()=>{throw new Error("Cannot call an event handler while rendering.")});return df?df(()=>{e.current=t}):e.current=t,(0,fe.useCallback)((...r)=>{var o;return(o=e.current)==null?void 0:o.call(e,...r)},[])}function vf(t){let[e,r]=(0,fe.useState)(null);return Ae(()=>{if(e==null||!t)return;let o=null;return t(n=>(o=n,e)),()=>{t(o)}},[e,t]),[e,r]}function Ie(...t){return(0,fe.useMemo)(()=>{if(t.some(Boolean))return e=>{for(let r of t)rf(r,e)}},t)}function Mt(t){if(uf){let o=uf();return t||o}let[e,r]=(0,fe.useState)(t);return Ae(()=>{if(t||e)return;let o=Math.random().toString(36).slice(2,8);r(`id-${o}`)},[t,e]),t||e}function gf(t,e){let r=i=>{if(typeof i=="string")return i},[o,n]=(0,fe.useState)(()=>r(e));return Ae(()=>{let i=t&&"current"in t?t.current:t;n(i?.tagName.toLowerCase()||r(e))},[t,e]),o}function hf(t,e,r){let o=kb(r),[n,i]=(0,fe.useState)(o);return(0,fe.useEffect)(()=>{let a=t&&"current"in t?t.current:t;if(!a)return;let l=()=>{let u=a.getAttribute(e);i(u??o)},s=new MutationObserver(l);return s.observe(a,{attributeFilter:[e]}),l(),()=>s.disconnect()},[t,e,o]),n}function er(t,e){let r=(0,fe.useRef)(!1);(0,fe.useEffect)(()=>{if(r.current)return t();r.current=!0},e),(0,fe.useEffect)(()=>()=>{r.current=!1},[])}function bf(t,e){let r=(0,fe.useRef)(!1);Ae(()=>{if(r.current)return t();r.current=!0},e),Ae(()=>()=>{r.current=!1},[])}function xf(){return(0,fe.useReducer)(()=>[],[])}function Ne(t){return te(typeof t=="function"?t:()=>t)}function tr(t,e,r=[]){let o=(0,fe.useCallback)(n=>(t.wrapElement&&(n=t.wrapElement(n)),e(n)),[...r,t.wrapElement]);return{...t,wrapElement:o}}function wf(t,e,r){let o=t.onLoadedMetadataCapture,n=(0,fe.useMemo)(()=>Object.assign(()=>{},{...o,[e]:r}),[o,e,r]);return[o?.[e],{onLoadedMetadataCapture:n}]}var cf=!1;function _f(){return(0,fe.useEffect)(()=>{cf||(Jt("mousemove",Nb,!0),Jt("mousedown",ma,!0),Jt("mouseup",ma,!0),Jt("keydown",ma,!0),Jt("scroll",ma,!0),cf=!0)},[]),te(()=>ru)}var ru=!1,ff=0,mf=0;function Db(t){let e=t.movementX||t.screenX-ff,r=t.movementY||t.screenY-mf;return ff=t.screenX,mf=t.screenY,e||r||!1}function Nb(t){Db(t)&&(ru=!0)}function ma(){ru=!1}var pt=d(le(),1),So=d(R(),1);function me(t){let e=pt.forwardRef((r,o)=>t({...r,ref:o}));return e.displayName=t.displayName||t.name,e}function ro(t,e){return pt.memo(t,e)}function be(t,e){let{wrapElement:r,render:o,...n}=e,i=Ie(e.ref,of(o)),a;if(pt.isValidElement(o)){let l={...o.props,ref:i};a=pt.cloneElement(o,nf(n,l))}else o?a=o(n):a=(0,So.jsx)(t,{...n});return r?r(a):a}function xe(t){let e=(r={})=>t(r);return e.displayName=t.name,e}function St(t=[],e=[]){let r=pt.createContext(void 0),o=pt.createContext(void 0),n=()=>pt.useContext(r),i=(u=!1)=>{let c=pt.useContext(o),p=n();return u?c:c||p},a=()=>{let u=pt.useContext(o),c=n();if(!(u&&u===c))return c},l=u=>t.reduceRight((c,p)=>(0,So.jsx)(p,{...u,children:c}),(0,So.jsx)(r.Provider,{...u}));return{context:r,scopedContext:o,useContext:n,useScopedContext:i,useProviderContext:a,ContextProvider:l,ScopedContextProvider:u=>(0,So.jsx)(l,{...u,children:e.reduceRight((c,p)=>(0,So.jsx)(p,{...u,children:c}),(0,So.jsx)(o.Provider,{...u}))})}}var jn=St(),yf=jn.useContext,L2=jn.useScopedContext,B2=jn.useProviderContext,Sf=jn.ContextProvider,Cf=jn.ScopedContextProvider;var ou=d(le(),1),zn=St([Sf],[Cf]),pa=zn.useContext,W2=zn.useScopedContext,Ef=zn.useProviderContext,Jo=zn.ContextProvider,va=zn.ScopedContextProvider,Pf=(0,ou.createContext)(void 0),Af=(0,ou.createContext)(void 0);function If(t,e){return t.find(r=>e?!r.disabled&&r.id!==e:!r.disabled)}function rr(t,e){return e&&t.item(e)||null}function Tf(t){let e=[];for(let r of t){let o=e.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):e.push([r])}return e}function Of(t,e=!1){if(mt(t))t.setSelectionRange(e?t.value.length:0,t.value.length);else if(t.isContentEditable){let r=_r(t).getSelection();r?.selectAllChildren(t),e&&r?.collapseToEnd()}}var nu=Symbol("FOCUS_SILENTLY");function Rf(t){t[nu]=!0,t.focus({preventScroll:!0})}function Vf(t){let e=t[nu];return delete t[nu],e}function Co(t,e,r){if(!e||e===r)return!1;let o=t.item(e.id);return!(!o||r&&o.element===r)}var ga=d(le(),1),Mb="div",iu=xe(function({store:e,shouldRegisterItem:r=!0,getItem:o=Ln,element:n,...i}){let a=yf();e=e||a;let l=Mt(i.id),s=(0,ga.useRef)(n);return(0,ga.useEffect)(()=>{let u=s.current;if(!l||!u||!r)return;let c=o({id:l,element:u});return e?.renderItem(c)},[l,r,o,e]),i={...i,ref:Ie(s,i.ref)},Ze(i)}),X2=me(function(e){let r=iu(e);return be(Mb,r)});var kf=d(le(),1),Df=(0,kf.createContext)(!0);var Nf="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 Wn(t){return!(!t.matches(Nf)||!$l(t)||t.closest("[inert]"))}function Mf(t){for(;t&&!Wn(t);)t=t.closest(Nf);return t||null}function Ft(t){let e=wo(t);if(!e)return!1;if(e===t)return!0;let r=e.getAttribute("aria-activedescendant");return r?r===t.id:!1}function au(t){let e=wo(t);if(!e)return!1;if(Zt(t,e))return!0;let r=e.getAttribute("aria-activedescendant");return!r||!("id"in t)?!1:r===t.id?!0:!!t.querySelector(`#${CSS.escape(r)}`)}function Ff(t){!au(t)&&Wn(t)&&t.focus()}function Lf(t,e){"scrollIntoView"in t?(t.focus({preventScroll:!0}),t.scrollIntoView({block:"nearest",inline:"nearest",...e})):t.focus()}var Rt=d(le(),1),Fb="div",Bf=_o(),Lb=["text","search","url","tel","email","password","number","date","month","week","time","datetime","datetime-local"],Bb=Symbol("safariFocusAncestor");function Hf(t,e){t&&(t[Bb]=e)}function Hb(t){let{tagName:e,readOnly:r,type:o}=t;return e==="TEXTAREA"&&!r||e==="SELECT"&&!r?!0:e==="INPUT"&&!r?Lb.includes(o):!!(t.isContentEditable||t.getAttribute("role")==="combobox"&&t.dataset.name)}function jb(t){return"labels"in t?t.labels:null}function jf(t){return t.tagName.toLowerCase()==="input"&&t.type?t.type==="radio"||t.type==="checkbox":!1}function zb(t){return t?t==="button"||t==="summary"||t==="input"||t==="select"||t==="textarea"||t==="a":!0}function Wb(t){return t?t==="button"||t==="input"||t==="select"||t==="textarea":!0}function Gb(t,e,r,o,n){return t?e?r&&!o?-1:void 0:r?n:n||0:n}function su(t,e){return te(r=>{t?.(r),!r.defaultPrevented&&e&&(r.stopPropagation(),r.preventDefault())})}var zf=!1,lu=!0;function qb(t){let e=t.target;e&&"hasAttribute"in e&&(e.hasAttribute("data-focus-visible")||(lu=!1))}function Yb(t){t.metaKey||t.ctrlKey||t.altKey||(lu=!0)}var Gn=xe(function({focusable:e=!0,accessibleWhenDisabled:r,autoFocus:o,onFocusVisible:n,...i}){let a=(0,Rt.useRef)(null);(0,Rt.useEffect)(()=>{e&&(zf||(Jt("mousedown",qb,!0),Jt("keydown",Yb,!0),zf=!0))},[e]),Bf&&(0,Rt.useEffect)(()=>{if(!e)return;let h=a.current;if(!h||!jf(h))return;let O=jb(h);if(!O)return;let w=()=>queueMicrotask(()=>h.focus());for(let C of O)C.addEventListener("mouseup",w);return()=>{for(let C of O)C.removeEventListener("mouseup",w)}},[e]);let l=e&&xo(i),s=!!l&&!r,[u,c]=(0,Rt.useState)(!1);(0,Rt.useEffect)(()=>{e&&s&&u&&c(!1)},[e,s,u]),(0,Rt.useEffect)(()=>{if(!e||!u)return;let h=a.current;if(!h||typeof IntersectionObserver>"u")return;let O=new IntersectionObserver(()=>{Wn(h)||c(!1)});return O.observe(h),()=>O.disconnect()},[e,u]);let p=su(i.onKeyPressCapture,l),f=su(i.onMouseDownCapture,l),m=su(i.onClickCapture,l),v=i.onMouseDown,y=te(h=>{if(v?.(h),h.defaultPrevented||!e)return;let O=h.currentTarget;if(!Bf||ca(h)||!yr(O)&&!jf(O))return;let w=!1,C=()=>{w=!0},M={capture:!0,once:!0};O.addEventListener("focusin",C,M);let H=Mf(O.parentElement);Hf(H,!0),to(O,"mouseup",()=>{O.removeEventListener("focusin",C,!0),Hf(H,!1),!w&&Ff(O)})}),b=(h,O)=>{if(O&&(h.currentTarget=O),!e)return;let w=h.currentTarget;w&&Ft(w)&&(n?.(h),!h.defaultPrevented&&(w.dataset.focusVisible="true",c(!0)))},x=i.onKeyDownCapture,S=te(h=>{if(x?.(h),h.defaultPrevented||!e||u||h.metaKey||h.altKey||h.ctrlKey||!st(h))return;let O=h.currentTarget;to(O,"focusout",()=>b(h,O))}),A=i.onFocusCapture,V=te(h=>{if(A?.(h),h.defaultPrevented||!e)return;if(!st(h)){c(!1);return}let O=h.currentTarget,w=()=>b(h,O);lu||Hb(h.target)?to(h.target,"focusout",w):c(!1)}),T=i.onBlur,N=te(h=>{T?.(h),e&&fa(h)&&(h.currentTarget.removeAttribute("data-focus-visible"),c(!1))}),D=(0,Rt.useContext)(Df),E=te(h=>{e&&o&&h&&D&&queueMicrotask(()=>{Ft(h)||Wn(h)&&h.focus()})}),I=gf(a),k=e&&zb(I),g=e&&Wb(I),P=i.style,_=(0,Rt.useMemo)(()=>s?{pointerEvents:"none",...P}:P,[s,P]);return i={"data-focus-visible":e&&u||void 0,"data-autofocus":o||void 0,"aria-disabled":l||void 0,...i,ref:Ie(a,E,i.ref),style:_,tabIndex:Gb(e,s,k,g,i.tabIndex),disabled:g&&s?!0:void 0,contentEditable:l?void 0:i.contentEditable,onKeyPressCapture:p,onClickCapture:m,onMouseDownCapture:f,onMouseDown:y,onKeyDownCapture:S,onFocusCapture:V,onBlur:N},Ze(i)}),mE=me(function(e){let r=Gn(e);return be(Fb,r)});var oo=d(le(),1),Ub="button";function Wf(t){if(!t.isTrusted)return!1;let e=t.currentTarget;return t.key==="Enter"?yr(e)||e.tagName==="SUMMARY"||e.tagName==="A":t.key===" "?yr(e)||e.tagName==="SUMMARY"||e.tagName==="INPUT"||e.tagName==="SELECT":!1}var $b=Symbol("command"),uu=xe(function({clickOnEnter:e=!0,clickOnSpace:r=!0,...o}){let n=(0,oo.useRef)(null),[i,a]=(0,oo.useState)(!1);(0,oo.useEffect)(()=>{n.current&&a(yr(n.current))},[]);let[l,s]=(0,oo.useState)(!1),u=(0,oo.useRef)(!1),c=xo(o),[p,f]=wf(o,$b,!0),m=o.onKeyDown,v=te(x=>{m?.(x);let S=x.currentTarget;if(x.defaultPrevented||p||c||!st(x)||mt(S)||S.isContentEditable)return;let A=e&&x.key==="Enter",V=r&&x.key===" ",T=x.key==="Enter"&&!e,N=x.key===" "&&!r;if(T||N){x.preventDefault();return}if(A||V){let D=Wf(x);if(A){if(!D){x.preventDefault();let{view:E,...I}=x,k=()=>eu(S,I);Jl()?to(S,"keyup",k):queueMicrotask(k)}}else V&&(u.current=!0,D||(x.preventDefault(),s(!0)))}}),y=o.onKeyUp,b=te(x=>{if(y?.(x),x.defaultPrevented||p||c||x.metaKey)return;let S=r&&x.key===" ";if(u.current&&S&&(u.current=!1,!Wf(x))){x.preventDefault(),s(!1);let A=x.currentTarget,{view:V,...T}=x;queueMicrotask(()=>eu(A,T))}});return o={"data-active":l||void 0,type:i?"button":void 0,...f,...o,ref:Ie(n,o.ref),onKeyDown:v,onKeyUp:b},o=Gn(o),o}),yE=me(function(e){let r=uu(e);return be(Ub,r)});function Eo(t,e){let r=t.__unstableInternals;return Xe(r,"Invalid store"),r[e]}function vt(t,...e){let r=t,o=r,n=Symbol(),i=Mn,a=new Set,l=new Set,s=new Set,u=new Set,c=new Set,p=new WeakMap,f=new WeakMap,m=E=>(s.add(E),()=>s.delete(E)),v=()=>{let E=a.size,I=Symbol();a.add(I);let k=()=>{a.delete(I),!a.size&&i()};if(E)return k;let g=ql(r).map(h=>Jr(...e.map(O=>{var w;let C=(w=O?.getState)==null?void 0:w.call(O);if(C&&yt(C,h))return $e(O,[h],M=>{N(h,M[h],!0)})}))),P=[];for(let h of s)P.push(h());let _=e.map(en);return i=Jr(...g,...P,..._),k},y=(E,I,k=u)=>(k.add(I),f.set(I,E),()=>{var g;(g=p.get(I))==null||g(),p.delete(I),f.delete(I),k.delete(I)}),b=(E,I)=>y(E,I),x=(E,I)=>(p.set(I,I(r,r)),y(E,I)),S=(E,I)=>(p.set(I,I(r,o)),y(E,I,c)),A=E=>vt(Gl(r,E),D),V=E=>vt(Wl(r,E),D),T=()=>r,N=(E,I,k=!1)=>{var g;if(!yt(r,E))return;let P=zl(I,r[E]);if(P===r[E])return;if(!k)for(let w of e)(g=w?.setState)==null||g.call(w,E,P);let _=r;r={...r,[E]:P};let h=Symbol();n=h,l.add(E);let O=(w,C,M)=>{var H;let ae=f.get(w),_e=ke=>M?M.has(ke):ke===E;(!ae||ae.some(_e))&&((H=p.get(w))==null||H(),p.set(w,w(r,C)))};for(let w of u)O(w,_);queueMicrotask(()=>{if(n!==h)return;let w=r;for(let C of c)O(C,o,l);o=w,l.clear()})},D={getState:T,setState:N,__unstableInternals:{setup:m,init:v,subscribe:b,sync:x,batch:S,pick:A,omit:V}};return D}function Ue(t,...e){if(t)return Eo(t,"setup")(...e)}function en(t,...e){if(t)return Eo(t,"init")(...e)}function tn(t,...e){if(t)return Eo(t,"subscribe")(...e)}function $e(t,...e){if(t)return Eo(t,"sync")(...e)}function no(t,...e){if(t)return Eo(t,"batch")(...e)}function qn(t,...e){if(t)return Eo(t,"omit")(...e)}function du(t,...e){if(t)return Eo(t,"pick")(...e)}function Po(...t){var e;let r={};for(let n of t){let i=(e=n?.getState)==null?void 0:e.call(n);i&&Object.assign(r,i)}let o=vt(r,...t);return Object.assign({},...t,o)}var or=d(le(),1),Gf=d(Bd(),1),{useSyncExternalStore:qf}=Gf.default,Yf=()=>()=>{};function rn(t,e=Ln){let r=or.useCallback(n=>t?tn(t,null,n):Yf(),[t]),o=()=>{let n=typeof e=="string"?e:null,i=typeof e=="function"?e:null,a=t?.getState();if(i)return i(a);if(a&&n&&yt(a,n))return a[n]};return qf(r,o,o)}function ba(t,e){let r=or.useRef({}),o=or.useCallback(i=>t?tn(t,null,i):Yf(),[t]),n=()=>{let i=t?.getState(),a=!1,l=r.current;for(let s in e){let u=e[s];if(typeof u=="function"){let c=u(i);c!==l[s]&&(l[s]=c,a=!0)}if(typeof u=="string"){if(!i||!yt(i,u))continue;let c=i[u];c!==l[s]&&(l[s]=c,a=!0)}}return a&&(r.current={...l}),r.current};return qf(o,n,n)}function Te(t,e,r,o){let n=yt(e,r)?e[r]:void 0,i=o?e[o]:void 0,a=pf({value:n,setValue:i});Ae(()=>$e(t,[r],(l,s)=>{let{value:u,setValue:c}=a.current;c&&l[r]!==s[r]&&l[r]!==u&&c(l[r])}),[t,r]),Ae(()=>{if(n!==void 0)return t.setState(r,n),no(t,[r],()=>{n!==void 0&&t.setState(r,n)})})}function on(t,e){let[r,o]=or.useState(()=>t(e));Ae(()=>en(r),[r]);let n=or.useCallback(l=>rn(r,l),[r]),i=or.useMemo(()=>({...r,useState:n}),[r,n]),a=te(()=>{o(l=>t({...e,...l.getState()}))});return[i,a]}var Sr=d(le(),1),$f=d(R(),1),Kb="button";function Qb(t){return Bn(t)?!0:t.tagName==="INPUT"&&!yr(t)}function Xb(t,e=!1){let r=t.clientHeight,{top:o}=t.getBoundingClientRect(),n=Math.max(r*.875,r-40)*1.5,i=e?r-n+o:n+o;return t.tagName==="HTML"?i+t.scrollTop:i}function Zb(t,e=!1){let{top:r}=t.getBoundingClientRect();return e?r+t.clientHeight:r}function Uf(t,e,r,o=!1){var n;if(!e||!r)return;let{renderedItems:i}=e.getState(),a=Zo(t);if(!a)return;let l=Xb(a,o),s,u;for(let c=0;c=0){u!==void 0&&uH.rowId===b);return m.ariaPosInSet+M.findIndex(H=>H.id===p)},isTabbable(C){if(!C?.renderedItems.length)return!0;if(C.virtualFocus)return!1;if(i)return!0;if(C.activeId===null)return!1;let M=e?.item(C.activeId);return M?.disabled||!M?.element?!0:C.activeId===p}}),N=(0,Sr.useCallback)(C=>{var M;let H={...C,id:p||C.id,rowId:b,disabled:!!y,children:(M=C.element)==null?void 0:M.textContent};return a?a(H):H},[p,b,y,a]),D=u.onFocus,E=(0,Sr.useRef)(!1),I=te(C=>{if(D?.(C),C.defaultPrevented||ca(C)||!p||!e||Jb(C,e))return;let{virtualFocus:M,baseElement:H}=e.getState();if(e.setActiveId(p),Bn(C.currentTarget)&&Of(C.currentTarget),!M||!st(C)||Qb(C.currentTarget)||!H?.isConnected)return;_o()&&C.currentTarget.hasAttribute("data-autofocus")&&C.currentTarget.scrollIntoView({block:"nearest",inline:"nearest"}),E.current=!0,C.relatedTarget===H||Co(e,C.relatedTarget)?Rf(H):H.focus()}),k=u.onBlurCapture,g=te(C=>{if(k?.(C),C.defaultPrevented)return;let M=e?.getState();M?.virtualFocus&&E.current&&(E.current=!1,C.preventDefault(),C.stopPropagation())}),P=u.onKeyDown,_=Ne(o),h=Ne(n),O=te(C=>{if(P?.(C),C.defaultPrevented||!st(C)||!e)return;let{currentTarget:M}=C,H=e.getState(),ae=e.item(p),_e=!!ae?.rowId,ke=H.orientation!=="horizontal",He=H.orientation!=="vertical",rt=()=>!!(_e||He||!H.baseElement||!mt(H.baseElement)),mr={ArrowUp:(_e||ke)&&e.up,ArrowRight:(_e||He)&&e.next,ArrowDown:(_e||ke)&&e.down,ArrowLeft:(_e||He)&&e.previous,Home:()=>{if(rt())return!_e||C.ctrlKey?e?.first():e?.previous(-1)},End:()=>{if(rt())return!_e||C.ctrlKey?e?.last():e?.next(-1)},PageUp:()=>Uf(M,e,e?.up,!0),PageDown:()=>Uf(M,e,e?.down)}[C.key];if(mr){if(Bn(M)){let Z=Xo(M),ge=He&&C.key==="ArrowLeft",pr=He&&C.key==="ArrowRight",vr=ke&&C.key==="ArrowUp",co=ke&&C.key==="ArrowDown";if(pr||co){let{length:fo}=Kl(M);if(Z.end!==fo)return}else if((ge||vr)&&Z.start!==0)return}let Y=mr();if(_(C)||Y!==void 0){if(!h(C))return;C.preventDefault(),e.move(Y)}}}),w=(0,Sr.useMemo)(()=>({id:p,baseElement:x}),[p,x]);return u=tr(u,C=>(0,$f.jsx)(Pf.Provider,{value:w,children:C}),[w]),u={id:p,"data-active-item":S||void 0,...u,ref:Ie(f,u.ref),tabIndex:T?u.tabIndex:-1,onFocus:I,onBlurCapture:g,onKeyDown:O},u=uu(u),u=iu({store:e,...u,getItem:N,shouldRegisterItem:p?u.shouldRegisterItem:!1}),Ze({...u,"aria-setsize":A,"aria-posinset":V})}),WE=ro(me(function(e){let r=cu(e);return be(Kb,r)}));function fu(t){return Array.isArray(t)?t:typeof t<"u"?[t]:[]}function Yn(t){let e=[];for(let r of t)e.push(...r);return e}function nn(t){return t.slice().reverse()}var nr=d(le(),1),Qf=d(R(),1),ex="div";function tx(t){return t.some(e=>!!e.rowId)}function rx(t){let e=t.target;return e&&!mt(e)?!1:t.key.length===1&&!t.ctrlKey&&!t.metaKey}function ox(t){return t.key==="Shift"||t.key==="Control"||t.key==="Alt"||t.key==="Meta"}function Kf(t,e,r){return te(o=>{var n;if(e?.(o),o.defaultPrevented||o.isPropagationStopped()||!st(o)||ox(o)||rx(o))return;let i=t.getState(),a=(n=rr(t,i.activeId))==null?void 0:n.element;if(!a)return;let{view:l,...s}=o,u=r?.current;a!==u&&a.focus(),lf(a,o.type,s)||o.preventDefault(),o.currentTarget.contains(a)&&o.stopPropagation()})}function nx(t){return If(Yn(nn(Tf(t))))}function ix(t){let[e,r]=(0,nr.useState)(!1),o=(0,nr.useCallback)(()=>r(!0),[]),n=t.useState(i=>rr(t,i.activeId));return(0,nr.useEffect)(()=>{let i=n?.element;e&&i&&(r(!1),i.focus({preventScroll:!0}))},[n,e]),o}var mu=xe(function({store:e,composite:r=!0,focusOnMove:o=r,moveOnKeyPress:n=!0,...i}){let a=Ef();e=e||a,Xe(e,!1);let l=(0,nr.useRef)(null),s=(0,nr.useRef)(null),u=ix(e),c=e.useState("moves"),[,p]=vf(r?e.setBaseElement:null);(0,nr.useEffect)(()=>{var g;if(!e||!c||!r||!o)return;let{activeId:P}=e.getState(),_=(g=rr(e,P))==null?void 0:g.element;_&&Lf(_)},[e,c,r,o]),Ae(()=>{if(!e||!c||!r)return;let{baseElement:g,activeId:P}=e.getState();if(!(P===null)||!g)return;let h=s.current;s.current=null,h&&yo(h,{relatedTarget:g}),Ft(g)||g.focus()},[e,c,r]);let f=e.useState("activeId"),m=e.useState("virtualFocus");Ae(()=>{var g;if(!e||!r||!m)return;let P=s.current;if(s.current=null,!P)return;let h=((g=rr(e,f))==null?void 0:g.element)||wo(P);h!==P&&yo(P,{relatedTarget:h})},[e,f,m,r]);let v=Kf(e,i.onKeyDownCapture,s),y=Kf(e,i.onKeyUpCapture,s),b=i.onFocusCapture,x=te(g=>{if(b?.(g),g.defaultPrevented||!e)return;let{virtualFocus:P}=e.getState();if(!P)return;let _=g.relatedTarget,h=Vf(g.currentTarget);st(g)&&h&&(g.stopPropagation(),s.current=_)}),S=i.onFocus,A=te(g=>{if(S?.(g),g.defaultPrevented||!r||!e)return;let{relatedTarget:P}=g,{virtualFocus:_}=e.getState();_?st(g)&&!Co(e,P)&&queueMicrotask(u):st(g)&&e.setActiveId(null)}),V=i.onBlurCapture,T=te(g=>{var P;if(V?.(g),g.defaultPrevented||!e)return;let{virtualFocus:_,activeId:h}=e.getState();if(!_)return;let O=(P=rr(e,h))==null?void 0:P.element,w=g.relatedTarget,C=Co(e,w),M=s.current;s.current=null,st(g)&&C?(w===O?M&&M!==w&&yo(M,g):O?yo(O,g):M&&yo(M,g),g.stopPropagation()):!Co(e,g.target)&&O&&yo(O,g)}),N=i.onKeyDown,D=Ne(n),E=te(g=>{var P;if(N?.(g),g.nativeEvent.isComposing||g.defaultPrevented||!e||!st(g))return;let{orientation:_,renderedItems:h,activeId:O}=e.getState(),w=rr(e,O);if((P=w?.element)!=null&&P.isConnected)return;let C=_!=="horizontal",M=_!=="vertical",H=tx(h);if((g.key==="ArrowLeft"||g.key==="ArrowRight"||g.key==="Home"||g.key==="End")&&mt(g.currentTarget))return;let He={ArrowUp:(H||C)&&(()=>{if(H){let rt=nx(h);return rt?.id}return e?.last()}),ArrowRight:(H||M)&&e.first,ArrowDown:(H||C)&&e.first,ArrowLeft:(H||M)&&e.last,Home:e.first,End:e.last,PageUp:e.first,PageDown:e.last}[g.key];if(He){let rt=He();if(rt!==void 0){if(!D(g))return;g.preventDefault(),e.move(rt)}}});i=tr(i,g=>(0,Qf.jsx)(Jo,{value:e,children:g}),[e]),i={"aria-activedescendant":e.useState(g=>{var P;if(e&&r&&g.virtualFocus)return(P=rr(e,g.activeId))==null?void 0:P.id}),...i,ref:Ie(l,p,i.ref),onKeyDownCapture:v,onKeyUpCapture:y,onFocusCapture:x,onFocus:A,onBlurCapture:T,onKeyDown:E};let k=e.useState(g=>r&&(g.virtualFocus||g.activeId===null));return i=Gn({focusable:k,...i}),i}),iP=me(function(e){let r=mu(e);return be(ex,r)});var Un=St(),lP=Un.useContext,uP=Un.useScopedContext,pu=Un.useProviderContext,Xf=Un.ContextProvider,Zf=Un.ScopedContextProvider;var vu=d(le(),1),$n=St([Xf],[Zf]),mP=$n.useContext,pP=$n.useScopedContext,vP=$n.useProviderContext,Jf=$n.ContextProvider,xa=$n.ScopedContextProvider,gP=(0,vu.createContext)(void 0),hP=(0,vu.createContext)(void 0);var an=d(le(),1),rm=d(Nd(),1),gu=d(R(),1),ax="div";function em(t,e){let r=setTimeout(e,t);return()=>clearTimeout(r)}function sx(t){let e=requestAnimationFrame(()=>{e=requestAnimationFrame(t)});return()=>cancelAnimationFrame(e)}function tm(...t){return t.join(", ").split(", ").reduce((e,r)=>{let o=r.endsWith("ms")?1:1e3,n=Number.parseFloat(r||"0s")*o;return n>e?n:e},0)}function hu(t,e,r){return!r&&e!==!1&&(!t||!!e)}var lx=xe(function({store:e,alwaysVisible:r,...o}){let n=pu();e=e||n,Xe(e,!1);let i=(0,an.useRef)(null),a=Mt(o.id),[l,s]=(0,an.useState)(null),u=e.useState("open"),c=e.useState("mounted"),p=e.useState("animated"),f=e.useState("contentElement"),m=rn(e.disclosure,"contentElement");Ae(()=>{i.current&&e?.setContentElement(i.current)},[e]),Ae(()=>{let x;return e?.setState("animated",S=>(x=S,!0)),()=>{x!==void 0&&e?.setState("animated",x)}},[e]),Ae(()=>{if(p){if(!f?.isConnected){s(null);return}return sx(()=>{s(u?"enter":c?"leave":null)})}},[p,f,u,c]),Ae(()=>{if(!e||!p||!l||!f)return;let x=()=>e?.setState("animating",!1),S=()=>(0,rm.flushSync)(x);if(l==="leave"&&u||l==="enter"&&!u)return;if(typeof p=="number")return em(p,S);let{transitionDuration:A,animationDuration:V,transitionDelay:T,animationDelay:N}=getComputedStyle(f),{transitionDuration:D="0",animationDuration:E="0",transitionDelay:I="0",animationDelay:k="0"}=m?getComputedStyle(m):{},g=tm(T,N,I,k),P=tm(A,V,D,E),_=g+P;if(!_){l==="enter"&&e.setState("animated",!1),x();return}let h=1e3/60,O=Math.max(_-h,0);return em(O,S)},[e,p,f,m,u,l]),o=tr(o,x=>(0,gu.jsx)(xa,{value:e,children:x}),[e]);let v=hu(c,o.hidden,r),y=o.style,b=(0,an.useMemo)(()=>v?{...y,display:"none"}:y,[v,y]);return o={id:a,"data-open":u||void 0,"data-enter":l==="enter"||void 0,"data-leave":l==="leave"||void 0,hidden:v,...o,ref:Ie(a?e.setContentElement:null,i,o.ref),style:b},Ze(o)}),ux=me(function(e){let r=lx(e);return be(ax,r)}),EP=me(function({unmountOnHide:e,...r}){let o=pu(),n=r.store||o;return rn(n,a=>!e||a?.mounted)===!1?null:(0,gu.jsx)(ux,{...r})});function om(t={}){let e=Po(t.store,qn(t.disclosure,["contentElement","disclosureElement"]));let r=e?.getState(),o=ee(t.open,r?.open,t.defaultOpen,!1),n=ee(t.animated,r?.animated,!1),i={open:o,animated:n,animating:!!n&&o,mounted:o,contentElement:ee(r?.contentElement,null),disclosureElement:ee(r?.disclosureElement,null)},a=vt(i,e);return Ue(a,()=>$e(a,["animated","animating"],l=>{l.animated||a.setState("animating",!1)})),Ue(a,()=>tn(a,["open"],()=>{a.getState().animated&&a.setState("animating",!0)})),Ue(a,()=>$e(a,["open","animating"],l=>{a.setState("mounted",l.open||l.animating)})),{...a,disclosure:t.disclosure,setOpen:l=>a.setState("open",l),show:()=>a.setState("open",!0),hide:()=>a.setState("open",!1),toggle:()=>a.setState("open",l=>!l),stopAnimation:()=>a.setState("animating",!1),setContentElement:l=>a.setState("contentElement",l),setDisclosureElement:l=>a.setState("disclosureElement",l)}}function nm(t,e,r){return er(e,[r.store,r.disclosure]),Te(t,r,"open","setOpen"),Te(t,r,"mounted","setMounted"),Te(t,r,"animated"),Object.assign(t,{disclosure:r.disclosure})}var Kn=St([Jf],[xa]),NP=Kn.useContext,MP=Kn.useScopedContext,im=Kn.useProviderContext,am=Kn.ContextProvider,sm=Kn.ScopedContextProvider;function dx(t){var e;let r=t.find(i=>!!i.element),o=[...t].reverse().find(i=>!!i.element),n=(e=r?.element)==null?void 0:e.parentElement;for(;n&&o?.element;){if(o&&n.contains(o.element))return n;n=n.parentElement}return _r(n).body}function cx(t){return t?.__unstablePrivateStore}function lm(t={}){var e;t.store;let r=(e=t.store)==null?void 0:e.getState(),o=ee(t.items,r?.items,t.defaultItems,[]),n=new Map(o.map(f=>[f.id,f])),i={items:o,renderedItems:ee(r?.renderedItems,[])},a=cx(t.store),l=vt({items:o,renderedItems:i.renderedItems},a),s=vt(i,t.store),u=f=>{let m=Xl(f,v=>v.element);l.setState("renderedItems",m),s.setState("renderedItems",m)};Ue(s,()=>en(l)),Ue(l,()=>no(l,["items"],f=>{s.setState("items",f.items)})),Ue(l,()=>no(l,["renderedItems"],f=>{let m=!0,v=requestAnimationFrame(()=>{let{renderedItems:S}=s.getState();f.renderedItems!==S&&u(f.renderedItems)});if(typeof IntersectionObserver!="function")return()=>cancelAnimationFrame(v);let y=()=>{if(m){m=!1;return}cancelAnimationFrame(v),v=requestAnimationFrame(()=>u(f.renderedItems))},b=dx(f.renderedItems),x=new IntersectionObserver(y,{root:b});for(let S of f.renderedItems)S.element&&x.observe(S.element);return()=>{cancelAnimationFrame(v),x.disconnect()}}));let c=(f,m,v=!1)=>{let y;return m(x=>{let S=x.findIndex(({id:V})=>V===f.id),A=x.slice();if(S!==-1){y=x[S];let V={...y,...f};A[S]=V,n.set(f.id,V)}else A.push(f),n.set(f.id,f);return A}),()=>{m(x=>{if(!y)return v&&n.delete(f.id),x.filter(({id:V})=>V!==f.id);let S=x.findIndex(({id:V})=>V===f.id);if(S===-1)return x;let A=x.slice();return A[S]=y,n.set(f.id,y),A})}},p=f=>c(f,m=>l.setState("items",m),!0);return{...s,registerItem:p,renderItem:f=>Jr(p(f),c(f,m=>l.setState("renderedItems",m))),item:f=>{if(!f)return null;let m=n.get(f);if(!m){let{items:v}=l.getState();m=v.find(y=>y.id===f),m&&n.set(f,m)}return m||null},__unstablePrivateStore:l}}function um(t,e,r){return er(e,[r.store]),Te(t,r,"items","setItems"),t}var fx={id:null};function Cr(t,e){return t.find(r=>e?!r.disabled&&r.id!==e:!r.disabled)}function mx(t,e){return t.filter(r=>e?!r.disabled&&r.id!==e:!r.disabled)}function dm(t,e){return t.filter(r=>r.rowId===e)}function px(t,e,r=!1){let o=t.findIndex(n=>n.id===e);return[...t.slice(o+1),...r?[fx]:[],...t.slice(0,o)]}function cm(t){let e=[];for(let r of t){let o=e.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):e.push([r])}return e}function fm(t){let e=0;for(let{length:r}of t)r>e&&(e=r);return e}function vx(t){return{id:"__EMPTY_ITEM__",disabled:!0,rowId:t}}function gx(t,e,r){let o=fm(t);for(let n of t)for(let i=0;i$e(a,["renderedItems","activeId"],s=>{a.setState("activeId",u=>{var c;return u!==void 0?u:(c=Cr(s.renderedItems))==null?void 0:c.id})}));let l=(s="next",u={})=>{var c,p;let f=a.getState(),{skip:m=0,activeId:v=f.activeId,focusShift:y=f.focusShift,focusLoop:b=f.focusLoop,focusWrap:x=f.focusWrap,includesBaseElement:S=f.includesBaseElement,renderedItems:A=f.renderedItems,rtl:V=f.rtl}=u,T=s==="up"||s==="down",N=s==="next"||s==="down",D=N?V&&!T:!V||T,E=y&&!m,I=T?Yn(gx(cm(A),v,E)):A;if(I=D?nn(I):I,I=T?hx(I):I,v==null)return(c=Cr(I))==null?void 0:c.id;let k=I.find(H=>H.id===v);if(!k)return(p=Cr(I))==null?void 0:p.id;let g=I.some(H=>H.rowId),P=I.indexOf(k),_=I.slice(P+1),h=dm(_,k.rowId);if(m){let H=mx(h,v),ae=H.slice(m)[0]||H[H.length-1];return ae?.id}let O=b&&(T?b!=="horizontal":b!=="vertical"),w=g&&x&&(T?x!=="horizontal":x!=="vertical"),C=N?(!g||T)&&O&&S:T?S:!1;if(O){let H=w&&!C?I:dm(I,k.rowId),ae=px(H,v,C),_e=Cr(ae,v);return _e?.id}if(w){let H=Cr(C?h:_,v);return C?H?.id||null:H?.id}let M=Cr(h,v);return!M&&C?null:M?.id};return{...o,...a,setBaseElement:s=>a.setState("baseElement",s),setActiveId:s=>a.setState("activeId",s),move:s=>{s!==void 0&&(a.setState("activeId",s),a.setState("moves",u=>u+1))},first:()=>{var s;return(s=Cr(a.getState().renderedItems))==null?void 0:s.id},last:()=>{var s;return(s=Cr(nn(a.getState().renderedItems)))==null?void 0:s.id},next:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("next",s)),previous:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("previous",s)),down:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("down",s)),up:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("up",s))}}function pm(t){return{id:Mt(t.id),...t}}function vm(t,e,r){return t=um(t,e,r),Te(t,r,"activeId","setActiveId"),Te(t,r,"includesBaseElement"),Te(t,r,"virtualFocus"),Te(t,r,"orientation"),Te(t,r,"rtl"),Te(t,r,"focusLoop"),Te(t,r,"focusWrap"),Te(t,r,"focusShift"),t}var wa=d(le(),1),_a=(0,wa.createContext)(void 0),Qn=St([am,Jo],[sm,va]),bu=Qn.useContext,sn=Qn.useScopedContext,ya=Qn.useProviderContext,gm=Qn.ContextProvider,hm=Qn.ScopedContextProvider,Sa=(0,wa.createContext)(void 0),bm=(0,wa.createContext)(!1);function xm(t={}){return om(t)}function wm(t,e,r){return nm(t,e,r)}function _m({popover:t,...e}={}){let r=Po(e.store,qn(t,["arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));let o=r?.getState(),n=xm({...e,store:r}),i=ee(e.placement,o?.placement,"bottom"),a={...n.getState(),placement:i,currentPlacement:i,anchorElement:ee(o?.anchorElement,null),popoverElement:ee(o?.popoverElement,null),arrowElement:ee(o?.arrowElement,null),rendered:Symbol("rendered")},l=vt(a,n,r);return{...n,...l,setAnchorElement:s=>l.setState("anchorElement",s),setPopoverElement:s=>l.setState("popoverElement",s),setArrowElement:s=>l.setState("arrowElement",s),render:()=>l.setState("rendered",Symbol("rendered"))}}function ym(t,e,r){return er(e,[r.popover]),Te(t,r,"placement"),wm(t,e,r)}var bx="div",xu=xe(function({store:e,...r}){let o=im();return e=e||o,r={...r,ref:Ie(e?.setAnchorElement,r.ref)},r}),xA=me(function(e){let r=xu(e);return be(bx,r)});var Sm=d(le(),1),xx="div";function Cm(t){let e=t.relatedTarget;return e?.nodeType===Node.ELEMENT_NODE?e:null}function wx(t){let e=Cm(t);return e?Zt(t.currentTarget,e):!1}var wu=Symbol("composite-hover");function _x(t){let e=Cm(t);if(!e)return!1;do{if(yt(e,wu)&&e[wu])return!0;e=e.parentElement}while(e);return!1}var _u=xe(function({store:e,focusOnHover:r=!0,blurOnHoverEnd:o=!!r,...n}){let i=pa();e=e||i,Xe(e,!1);let a=_f(),l=n.onMouseMove,s=Ne(r),u=te(v=>{if(l?.(v),!v.defaultPrevented&&a()&&s(v)){if(!au(v.currentTarget)){let y=e?.getState().baseElement;y&&!Ft(y)&&y.focus()}e?.setActiveId(v.currentTarget.id)}}),c=n.onMouseLeave,p=Ne(o),f=te(v=>{var y;c?.(v),!v.defaultPrevented&&a()&&(wx(v)||_x(v)||s(v)&&p(v)&&(e?.setActiveId(null),(y=e?.getState().baseElement)==null||y.focus()))}),m=(0,Sm.useCallback)(v=>{v&&(v[wu]=!0)},[]);return n={...n,ref:Ie(m,n.ref),onMouseMove:u,onMouseLeave:f},Ze(n)}),AA=ro(me(function(e){let r=_u(e);return be(xx,r)}));var Je=d(le(),1),yx="input";function Em(t,e,r){if(!r)return!1;let o=t.find(n=>!n.disabled&&n.value);return o?.value===e}function Pm(t,e){return!e||t==null?!1:(t=Fn(t),e.length>t.length&&e.toLowerCase().indexOf(t.toLowerCase())===0)}function Sx(t){return t.type==="input"}function Cx(t){return t==="inline"||t==="list"||t==="both"||t==="none"}function Ex(t){let e=t.find(r=>{var o;return r.disabled?!1:((o=r.element)==null?void 0:o.getAttribute("role"))!=="tab"});return e?.id}var Px=xe(function({store:e,focusable:r=!0,autoSelect:o=!1,getAutoSelectId:n,setValueOnChange:i,showMinLength:a=0,showOnChange:l,showOnMouseDown:s,showOnClick:u=s,showOnKeyDown:c,showOnKeyPress:p=c,blurActiveItemOnClick:f,setValueOnClick:m=!0,moveOnKeyPress:v=!0,autoComplete:y="list",...b}){let x=ya();e=e||x,Xe(e,!1);let S=(0,Je.useRef)(null),[A,V]=xf(),T=(0,Je.useRef)(!1),N=(0,Je.useRef)(!1),D=e.useState(L=>L.virtualFocus&&o),E=y==="inline"||y==="both",[I,k]=(0,Je.useState)(E);bf(()=>{E&&k(!0)},[E]);let g=e.useState("value"),P=(0,Je.useRef)(void 0);(0,Je.useEffect)(()=>$e(e,["selectedValue","activeId"],(L,se)=>{P.current=se.selectedValue}),[]);let _=e.useState(L=>{var se;if(E&&I&&!(L.activeValue&&Array.isArray(L.selectedValue)&&(L.selectedValue.includes(L.activeValue)||(se=P.current)!=null&&se.includes(L.activeValue))))return L.activeValue}),h=e.useState("renderedItems"),O=e.useState("open"),w=e.useState("contentElement"),C=(0,Je.useMemo)(()=>{if(!E||!I)return g;if(Em(h,_,D)){if(Pm(g,_)){let se=_?.slice(g.length)||"";return g+se}return g}return _||g},[E,I,h,_,D,g]);(0,Je.useEffect)(()=>{let L=S.current;if(!L)return;let se=()=>k(!0);return L.addEventListener("combobox-item-move",se),()=>{L.removeEventListener("combobox-item-move",se)}},[]),(0,Je.useEffect)(()=>{if(!E||!I||!_||!Em(h,_,D)||!Pm(g,_))return;let se=Mn;return queueMicrotask(()=>{let je=S.current;if(!je)return;let{start:ze,end:kt}=Xo(je),gr=g.length,ot=_.length;Hn(je,gr,ot),se=()=>{if(!Ft(je))return;let{start:mo,end:uh}=Xo(je);mo===gr&&uh===ot&&Hn(je,ze,kt)}}),()=>se()},[A,E,I,_,h,D,g]);let M=(0,Je.useRef)(null),H=te(n),ae=(0,Je.useRef)(null);(0,Je.useEffect)(()=>{if(!O||!w)return;let L=Zo(w);if(!L)return;M.current=L;let se=()=>{T.current=!1},je=()=>{if(!e||!T.current)return;let{activeId:kt}=e.getState();kt!==null&&kt!==ae.current&&(T.current=!1)},ze={passive:!0,capture:!0};return L.addEventListener("wheel",se,ze),L.addEventListener("touchmove",se,ze),L.addEventListener("scroll",je,ze),()=>{L.removeEventListener("wheel",se,!0),L.removeEventListener("touchmove",se,!0),L.removeEventListener("scroll",je,!0)}},[O,w,e]),Ae(()=>{g&&(N.current||(T.current=!0))},[g]),Ae(()=>{D!=="always"&&O||(T.current=O)},[D,O]);let _e=e.useState("resetValueOnSelect");er(()=>{var L,se;let je=T.current;if(!e||!O||!je&&!_e)return;let{baseElement:ze,contentElement:kt,activeId:gr}=e.getState();if(!(ze&&!Ft(ze))){if(kt?.hasAttribute("data-placing")){let ot=new MutationObserver(V);return ot.observe(kt,{attributeFilter:["data-placing"]}),()=>ot.disconnect()}if(D&&je){let ot=H(h),mo=ot!==void 0?ot:(L=Ex(h))!=null?L:e.first();ae.current=mo,e.move(mo??null)}else{let ot=(se=e.item(gr||e.first()))==null?void 0:se.element;ot&&"scrollIntoView"in ot&&ot.scrollIntoView({block:"nearest",inline:"nearest"})}}},[e,O,A,g,D,_e,H,h]),(0,Je.useEffect)(()=>{if(!E)return;let L=S.current;if(!L)return;let se=[L,w].filter(ze=>!!ze),je=ze=>{se.every(kt=>fa(ze,kt))&&e?.setValue(C)};for(let ze of se)ze.addEventListener("focusout",je);return()=>{for(let ze of se)ze.removeEventListener("focusout",je)}},[E,w,e,C]);let ke=L=>L.currentTarget.value.length>=a,He=b.onChange,rt=Ne(l??ke),qt=Ne(i??!e.tag),mr=te(L=>{if(He?.(L),L.defaultPrevented||!e)return;let se=L.currentTarget,{value:je,selectionStart:ze,selectionEnd:kt}=se,gr=L.nativeEvent;if(T.current=!0,Sx(gr)&&(gr.isComposing&&(T.current=!1,N.current=!0),E)){let ot=gr.inputType==="insertText"||gr.inputType==="insertCompositionText",mo=ze===je.length;k(ot&&mo)}if(qt(L)){let ot=je===e.getState().value;e.setValue(je),queueMicrotask(()=>{Hn(se,ze,kt)}),E&&D&&ot&&V()}rt(L)&&e.show(),(!D||!T.current)&&e.setActiveId(null)}),Y=b.onCompositionEnd,Z=te(L=>{T.current=!0,N.current=!1,Y?.(L),!L.defaultPrevented&&D&&V()}),ge=b.onMouseDown,pr=Ne(f??(()=>!!e?.getState().includesBaseElement)),vr=Ne(m),co=Ne(u??ke),fo=te(L=>{ge?.(L),!L.defaultPrevented&&(L.button||L.ctrlKey||e&&(pr(L)&&e.setActiveId(null),vr(L)&&e.setValue(C),co(L)&&to(L.currentTarget,"mouseup",e.show)))}),Mo=b.onKeyDown,wn=Ne(p??ke),Ps=te(L=>{if(Mo?.(L),L.repeat||(T.current=!1),L.defaultPrevented||L.ctrlKey||L.altKey||L.shiftKey||L.metaKey||!e)return;let{open:se}=e.getState();se||(L.key==="ArrowUp"||L.key==="ArrowDown")&&wn(L)&&(L.preventDefault(),e.show())}),ud=b.onBlur,ih=te(L=>{T.current=!1,ud?.(L),L.defaultPrevented}),ah=Mt(b.id),sh=Cx(y)?y:void 0,lh=e.useState(L=>L.activeId===null);return b={id:ah,role:"combobox","aria-autocomplete":sh,"aria-haspopup":Ql(w,"listbox"),"aria-expanded":O,"aria-controls":w?.id,"data-active-item":lh||void 0,value:C,...b,ref:Ie(S,b.ref),onChange:mr,onCompositionEnd:Z,onMouseDown:fo,onKeyDown:Ps,onBlur:ih},b=mu({store:e,focusable:r,...b,moveOnKeyPress:L=>Yl(v,L)?!1:(E&&k(!0),!0)}),b=xu({store:e,...b}),{autoComplete:"off",...b}}),Ca=me(function(e){let r=Px(e);return be(yx,r)});var Ea=d(le(),1),yu=d(R(),1),Ax="div";function Ix(t,e){if(e!=null)return t==null?!1:Array.isArray(t)?t.includes(e):t===e}function Tx(t){var e;return(e={menu:"menuitem",listbox:"option",tree:"treeitem"}[t])!=null?e:"option"}var Am=xe(function({store:e,value:r,hideOnClick:o,setValueOnClick:n,selectValueOnClick:i=!0,resetValueOnSelect:a,focusOnHover:l=!1,moveOnKeyPress:s=!0,getItem:u,...c}){var p;let f=sn();e=e||f,Xe(e,!1);let{resetValueOnSelectState:m,multiSelectable:v,selected:y}=ba(e,{resetValueOnSelectState:"resetValueOnSelect",multiSelectable(g){return Array.isArray(g.selectedValue)},selected(g){return Ix(g.selectedValue,r)}}),b=(0,Ea.useCallback)(g=>{let P={...g,value:r};return u?u(P):P},[r,u]);n=n??!v,o=o??(r!=null&&!v);let x=c.onClick,S=Ne(n),A=Ne(i),V=Ne((p=a??m)!=null?p:v),T=Ne(o),N=te(g=>{x?.(g),!g.defaultPrevented&&(sf(g)||af(g)||(r!=null&&(A(g)&&(V(g)&&e?.resetValue(),e?.setSelectedValue(P=>Array.isArray(P)?P.includes(r)?P.filter(_=>_!==r):[...P,r]:r)),S(g)&&e?.setValue(r)),T(g)&&e?.hide()))}),D=c.onKeyDown,E=te(g=>{if(D?.(g),g.defaultPrevented)return;let P=e?.getState().baseElement;if(!P||Ft(P))return;(g.key.length===1||g.key==="Backspace"||g.key==="Delete")&&(queueMicrotask(()=>P.focus()),mt(P)&&e?.setValue(P.value))});v&&y!=null&&(c={"aria-selected":y,...c}),c=tr(c,g=>(0,yu.jsx)(Sa.Provider,{value:r,children:(0,yu.jsx)(bm.Provider,{value:y??!1,children:g})}),[r,y]);let I=(0,Ea.useContext)(_a);c={role:Tx(I),children:r,...c,onClick:N,onKeyDown:E};let k=Ne(s);return c=cu({store:e,...c,getItem:b,moveOnKeyPress:g=>{if(!k(g))return!1;let P=new Event("combobox-item-move"),_=e?.getState().baseElement;return _?.dispatchEvent(P),!0}}),c=_u({store:e,focusOnHover:l,...c}),c}),Xn=ro(me(function(e){let r=Am(e);return be(Ax,r)}));var Pa=d(le(),1),Tm=d(R(),1),Ox="span";function Im(t){return Fn(t).toLowerCase()}function Rx(t,e){let r=[];for(let o of e){let n=0,i=o.length;for(;t.indexOf(o,n)!==-1;){let a=t.indexOf(o,n);a!==-1&&r.push([a,i]),n=a+1}}return r}function Vx(t){return t.filter(([e,r],o,n)=>!n.some(([i,a],l)=>l!==o&&i<=e&&i+a>=e+r))}function kx(t){return t.sort(([e],[r])=>e-r)}function Dx(t,e){if(!t||!e)return t;let r=fu(e).filter(Boolean).map(Im),o=[],n=(s,u=!1)=>(0,Tm.jsx)("span",{"data-autocomplete-value":u?"":void 0,"data-user-value":u?void 0:"",children:s},o.length),i=kx(Vx(Rx(Im(t),new Set(r))));if(!i.length)return o.push(n(t,!0)),o;let[a]=i[0];return[t.slice(0,a),...i.flatMap(([s,u],c)=>{var p;let f=t.slice(s,s+u),m=(p=i[c+1])==null?void 0:p[0],v=t.slice(s+u,m);return[f,v]})].forEach((s,u)=>{s&&o.push(n(s,u%2===0))}),o}var Nx=xe(function({store:e,value:r,userValue:o,...n}){let i=sn();e=e||i;let a=(0,Pa.useContext)(Sa),l=r??a,s=rn(e,c=>o??c?.value);return n={children:(0,Pa.useMemo)(()=>{if(l)return s?Dx(l,s):l},[l,s]),...n},Ze(n)}),Aa=me(function(e){let r=Nx(e);return be(Ox,r)});var Mx="label",Fx=xe(function({store:e,...r}){let o=ya();return e=e||o,Xe(e,!1),r={htmlFor:e.useState(i=>{var a;return(a=i.baseElement)==null?void 0:a.id}),...r},Ze(r)}),Ia=ro(me(function(e){let r=Fx(e);return be(Mx,r)}));var Ta=d(le(),1),Su=d(R(),1),Lx="div",Om=xe(function({store:e,alwaysVisible:r,...o}){let n=sn(!0),i=bu();e=e||i;let a=!!e&&e===n;Xe(e,!1);let l=(0,Ta.useRef)(null),s=Mt(o.id),u=e.useState("mounted"),c=hu(u,o.hidden,r),p=c?{...o.style,display:"none"}:o.style,f=e.useState(V=>Array.isArray(V.selectedValue)),m=hf(l,"role",o.role),y=(m==="listbox"||m==="tree"||m==="grid")&&f||void 0,[b,x]=(0,Ta.useState)(!1),S=e.useState("contentElement");Ae(()=>{if(!u)return;let V=l.current;if(!V||S!==V)return;let T=()=>{x(!!V.querySelector("[role='listbox']"))},N=new MutationObserver(T);return N.observe(V,{subtree:!0,childList:!0,attributeFilter:["role"]}),T(),()=>N.disconnect()},[u,S]),b||(o={role:"listbox","aria-multiselectable":y,...o}),o=tr(o,V=>(0,Su.jsx)(hm,{value:e,children:(0,Su.jsx)(_a.Provider,{value:m,children:V})}),[e,m]);let A=s&&(!n||!a)?e.setContentElement:null;return o={id:s,hidden:c,...o,ref:Ie(A,l,o.ref),style:p},Ze(o)}),Zn=me(function(e){let r=Om(e);return be(Lx,r)});var Cu=d(le(),1),xI=(0,Cu.createContext)(null),wI=(0,Cu.createContext)(null),Jn=St([Jo],[va]),Rm=Jn.useContext,_I=Jn.useScopedContext,yI=Jn.useProviderContext,SI=Jn.ContextProvider,CI=Jn.ScopedContextProvider;var Bx=_o()&&Zl();function Vm({tag:t,...e}={}){let r=Po(e.store,du(t,["value","rtl"]));let o=t?.getState(),n=r?.getState(),i=ee(e.activeId,n?.activeId,e.defaultActiveId,null),a=mm({...e,activeId:i,includesBaseElement:ee(e.includesBaseElement,n?.includesBaseElement,!0),orientation:ee(e.orientation,n?.orientation,"vertical"),focusLoop:ee(e.focusLoop,n?.focusLoop,!0),focusWrap:ee(e.focusWrap,n?.focusWrap,!0),virtualFocus:ee(e.virtualFocus,n?.virtualFocus,!0)}),l=_m({...e,placement:ee(e.placement,n?.placement,"bottom-start")}),s=ee(e.value,n?.value,e.defaultValue,""),u=ee(e.selectedValue,n?.selectedValue,o?.values,e.defaultSelectedValue,""),c=Array.isArray(u),p={...a.getState(),...l.getState(),value:s,selectedValue:u,resetValueOnSelect:ee(e.resetValueOnSelect,n?.resetValueOnSelect,c),resetValueOnHide:ee(e.resetValueOnHide,n?.resetValueOnHide,c&&!t),activeValue:n?.activeValue},f=vt(p,a,l,r);return Bx&&Ue(f,()=>$e(f,["virtualFocus"],()=>{f.setState("virtualFocus",!1)})),Ue(f,()=>{if(t)return Jr($e(f,["selectedValue"],m=>{Array.isArray(m.selectedValue)&&t.setValues(m.selectedValue)}),$e(t,["values"],m=>{f.setState("selectedValue",m.values)}))}),Ue(f,()=>$e(f,["resetValueOnHide","mounted"],m=>{m.resetValueOnHide&&(m.mounted||f.setState("value",s))})),Ue(f,()=>$e(f,["open"],m=>{m.open||(f.setState("activeId",i),f.setState("moves",0))})),Ue(f,()=>$e(f,["moves","activeId"],(m,v)=>{m.moves===v.moves&&f.setState("activeValue",void 0)})),Ue(f,()=>no(f,["moves","renderedItems"],(m,v)=>{if(m.moves===v.moves)return;let{activeId:y}=f.getState(),b=a.item(y);f.setState("activeValue",b?.value)})),{...l,...a,...f,tag:t,setValue:m=>f.setState("value",m),resetValue:()=>f.setState("value",p.value),setSelectedValue:m=>f.setState("selectedValue",m)}}function jx(t){let e=Rm();return t={...t,tag:t.tag!==void 0?t.tag:e},pm(t)}function zx(t,e,r){return er(e,[r.tag]),Te(t,r,"value","setValue"),Te(t,r,"selectedValue","setSelectedValue"),Te(t,r,"resetValueOnHide"),Te(t,r,"resetValueOnSelect"),Object.assign(vm(ym(t,e,r),e,r),{tag:r.tag})}function Eu(t={}){t=jx(t);let[e,r]=on(Vm,t);return zx(e,r,t)}var km=d(R(),1);function Oa(t={}){let e=Eu(t);return(0,km.jsx)(gm,{value:e,children:t.children})}var jm=d(Fm(),1);var zm=d(Et(),1),Er=d($(),1),Ao=d(j(),1),Lt=d(q(),1);var $x=[],ei=(t,e)=>t.singleSelection?e?.value:Array.isArray(e?.value)?e.value:!Array.isArray(e?.value)&&e?.value?[e.value]:$x;var ti=d(j(),1),Kx=[];function Ke({elements:t,getElements:e}){let r=Array.isArray(t)&&t.length>0?t:Kx,[o,n]=(0,ti.useState)(r),[i,a]=(0,ti.useState)(!1);return(0,ti.useEffect)(()=>{if(!e){n(r);return}let l=!1;return a(!0),e().then(s=>{if(!l){let u=Array.isArray(s)&&s.length>0?s:r;n(u)}}).catch(()=>{l||n(r)}).finally(()=>{l||a(!1)}),()=>{l=!0}},[e,r]),{elements:o,isLoading:i}}var oe=d(R(),1);function Lm(t=""){return(0,jm.default)(t.trim().toLowerCase())}var Bm=(t,e,r)=>t.singleSelection?r:Array.isArray(e?.value)?e.value.includes(r)?e.value.filter(o=>o!==r):[...e.value,r]:[r];function Hm(t,e){return`${t}-${e}`}var Wm=({selected:t})=>(0,oe.jsx)("span",{className:z("dataviews-filters__search-widget-listitem-multi-selection",{"is-selected":t}),children:t&&(0,oe.jsx)(Lt.Icon,{icon:En})}),Gm=({selected:t})=>(0,oe.jsx)("span",{className:z("dataviews-filters__search-widget-listitem-single-selection",{"is-selected":t})});function qm({view:t,filter:e,onChangeView:r}){let o=(0,zm.useInstanceId)(qm,"dataviews-filter-list-box"),[n,i]=(0,Ao.useState)(e.operators?.length===1?void 0:null),a=t.filters?.find(s=>s.field===e.field),l=ei(e,a);return(0,oe.jsx)(Lt.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"),e.name),onFocusVisible:()=>{!n&&e.elements.length&&i(Hm(o,e.elements[0].value))},render:(0,oe.jsx)(Lt.Composite.Typeahead,{}),children:e.elements.map(s=>(0,oe.jsxs)(Lt.Composite.Hover,{render:(0,oe.jsx)(Lt.Composite.Item,{id:Hm(o,s.value),render:(0,oe.jsx)("div",{"aria-label":s.label,role:"option",className:"dataviews-filters__search-widget-listitem"}),onClick:()=>{let u=a?[...(t.filters??[]).map(c=>c.field===e.field?{...c,operator:a.operator||e.operators[0],value:Bm(e,a,s.value)}:c)]:[...t.filters??[],{field:e.field,operator:e.operators[0],value:Bm(e,a,s.value)}];r({...t,page:1,filters:u})}}),children:[e.singleSelection&&(0,oe.jsx)(Gm,{selected:l===s.value}),!e.singleSelection&&(0,oe.jsx)(Wm,{selected:l.includes(s.value)}),(0,oe.jsx)("span",{className:"dataviews-filters__search-widget-listitem-value",title:s.label,children:s.label})]},s.value))})}function Qx({view:t,filter:e,onChangeView:r}){let[o,n]=(0,Ao.useState)(""),i=(0,Ao.useDeferredValue)(o),a=t.filters?.find(u=>u.field===e.field),l=ei(e,a),s=(0,Ao.useMemo)(()=>{let u=Lm(i);return e.elements.filter(c=>Lm(c.label).includes(u))},[e.elements,i]);return(0,oe.jsxs)(Oa,{selectedValue:l,setSelectedValue:u=>{let c=a?[...(t.filters??[]).map(p=>p.field===e.field?{...p,operator:a.operator||e.operators[0],value:u}:p)]:[...t.filters??[],{field:e.field,operator:e.operators[0],value:u}];r({...t,page:1,filters:c})},setValue:n,children:[(0,oe.jsxs)("div",{className:"dataviews-filters__search-widget-filter-combobox__wrapper",children:[(0,oe.jsx)(Ia,{render:(0,oe.jsx)(Lt.VisuallyHidden,{children:(0,Er.__)("Search items")}),children:(0,Er.__)("Search items")}),(0,oe.jsx)(Ca,{autoSelect:"always",placeholder:(0,Er.__)("Search"),className:"dataviews-filters__search-widget-filter-combobox__input"}),(0,oe.jsx)("div",{className:"dataviews-filters__search-widget-filter-combobox__icon",children:(0,oe.jsx)(Lt.Icon,{icon:xl})})]}),(0,oe.jsxs)(Zn,{className:"dataviews-filters__search-widget-filter-combobox-list",alwaysVisible:!0,children:[s.map(u=>(0,oe.jsxs)(Xn,{resetValueOnSelect:!1,value:u.value,className:"dataviews-filters__search-widget-listitem",hideOnClick:!1,setValueOnClick:!1,focusOnHover:!0,children:[e.singleSelection&&(0,oe.jsx)(Gm,{selected:l===u.value}),!e.singleSelection&&(0,oe.jsx)(Wm,{selected:l.includes(u.value)}),(0,oe.jsxs)("span",{className:"dataviews-filters__search-widget-listitem-value",title:u.label,children:[(0,oe.jsx)(Aa,{className:"dataviews-filters__search-widget-filter-combobox-item-value",value:u.label}),!!u.description&&(0,oe.jsx)("span",{className:"dataviews-filters__search-widget-listitem-description",children:u.description})]})]},u.value)),!s.length&&(0,oe.jsx)("p",{children:(0,Er.__)("No results found")})]})]})}function Ym(t){let{elements:e,isLoading:r}=Ke({elements:t.filter.elements,getElements:t.filter.getElements});if(r)return(0,oe.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,oe.jsx)(Lt.Spinner,{})});if(e.length===0)return(0,oe.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,Er.__)("No elements found")});let o=e.length>10?Qx:qm;return(0,oe.jsx)(o,{...t,filter:{...t.filter,elements:e}})}var Km=d($m(),1),Qm=d(Et(),1),Pu=d(j(),1),Xm=d(q(),1);var Au=d(R(),1);function Zm({filter:t,view:e,onChangeView:r,fields:o}){let n=e.filters?.find(u=>u.field===t.field),i=ei(t,n),a=(0,Pu.useMemo)(()=>{let u=o.find(c=>c.id===t.field);return u&&{...u,isValid:{},getValue:({item:c})=>c[u.id],setValue:({value:c})=>({[u.id]:c})}},[o,t.field]),l=(0,Pu.useMemo)(()=>(e.filters??[]).reduce((u,c)=>(u[c.field]=c.value,u),{}),[e.filters]),s=(0,Qm.useEvent)(u=>{if(!a||!n)return;let c=a.getValue({item:u});(0,Km.default)(c,i)||r({...e,filters:(e.filters??[]).map(p=>p.field===t.field?{...p,operator:n.operator||t.operators[0],value:c===""?void 0:c}:p)})});return!a||!a.Edit||!n?null:(0,Au.jsx)(Xm.Flex,{className:"dataviews-filters__user-input-widget",gap:2.5,direction:"column",children:(0,Au.jsx)(a.Edit,{hideLabelFromVision:!0,data:l,field:a,operator:n.operator,onChange:s})})}var Xx=Math.pow(10,8)*24*60*60*1e3,pT=-Xx,Va=6048e5,Jm=864e5;var Zx=3600;var ep=Zx*24,vT=ep*7,Jx=ep*365.2425,e0=Jx/12,gT=e0*3,Iu=Symbol.for("constructDateFrom");function Ge(t,e){return typeof t=="function"?t(e):t&&typeof t=="object"&&Iu in t?t[Iu](e):t instanceof Date?new t.constructor(e):new Date(e)}function ce(t,e){return Ge(e||t,t)}function ka(t,e,r){let o=ce(t,r?.in);return isNaN(e)?Ge(r?.in||t,NaN):(e&&o.setDate(o.getDate()+e),o)}function Da(t,e,r){let o=ce(t,r?.in);if(isNaN(e))return Ge(r?.in||t,NaN);if(!e)return o;let n=o.getDate(),i=Ge(r?.in||t,o.getTime());i.setMonth(o.getMonth()+e+1,0);let a=i.getDate();return n>=a?i:(o.setFullYear(i.getFullYear(),i.getMonth(),n),o)}var t0={};function io(){return t0}function Pr(t,e){let r=io(),o=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,n=ce(t,e?.in),i=n.getDay(),a=(i=i.getTime()?o+1:r.getTime()>=l.getTime()?o:o-1}function Tu(t){let e=ce(t),r=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return r.setUTCFullYear(e.getFullYear()),+t-+r}function tp(t,...e){let r=Ge.bind(null,t||e.find(o=>typeof o=="object"));return e.map(r)}function Ou(t,e){let r=ce(t,e?.in);return r.setHours(0,0,0,0),r}function rp(t,e,r){let[o,n]=tp(r?.in,t,e),i=Ou(o),a=Ou(n),l=+i-Tu(i),s=+a-Tu(a);return Math.round((l-s)/Jm)}function op(t,e){let r=Na(t,e),o=Ge(e?.in||t,0);return o.setFullYear(r,0,4),o.setHours(0,0,0,0),Io(o)}function np(t,e,r){return ka(t,e*7,r)}function ip(t,e,r){return Da(t,e*12,r)}function ap(t){return t instanceof Date||typeof t=="object"&&Object.prototype.toString.call(t)==="[object Date]"}function ln(t){return!(!ap(t)&&typeof t!="number"||isNaN(+ce(t)))}function sp(t,e){let r=ce(t,e?.in);return r.setDate(1),r.setHours(0,0,0,0),r}function Ma(t,e){let r=ce(t,e?.in);return r.setFullYear(r.getFullYear(),0,1),r.setHours(0,0,0,0),r}var r0={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"}},lp=(t,e,r)=>{let o,n=r0[t];return typeof n=="string"?o=n:e===1?o=n.one:o=n.other.replace("{{count}}",e.toString()),r?.addSuffix?r.comparison&&r.comparison>0?"in "+o:o+" ago":o};function Fa(t){return(e={})=>{let r=e.width?String(e.width):t.defaultWidth;return t.formats[r]||t.formats[t.defaultWidth]}}var o0={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},n0={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},i0={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},up={date:Fa({formats:o0,defaultWidth:"full"}),time:Fa({formats:n0,defaultWidth:"full"}),dateTime:Fa({formats:i0,defaultWidth:"full"})};var a0={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},dp=(t,e,r,o)=>a0[t];function un(t){return(e,r)=>{let o=r?.context?String(r.context):"standalone",n;if(o==="formatting"&&t.formattingValues){let a=t.defaultFormattingWidth||t.defaultWidth,l=r?.width?String(r.width):a;n=t.formattingValues[l]||t.formattingValues[a]}else{let a=t.defaultWidth,l=r?.width?String(r.width):t.defaultWidth;n=t.values[l]||t.values[a]}let i=t.argumentCallback?t.argumentCallback(e):e;return n[i]}}var s0={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},l0={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},u0={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"]},d0={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"]},c0={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"}},f0={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"}},m0=(t,e)=>{let r=Number(t),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"},cp={ordinalNumber:m0,era:un({values:s0,defaultWidth:"wide"}),quarter:un({values:l0,defaultWidth:"wide",argumentCallback:t=>t-1}),month:un({values:u0,defaultWidth:"wide"}),day:un({values:d0,defaultWidth:"wide"}),dayPeriod:un({values:c0,defaultWidth:"wide",formattingValues:f0,defaultFormattingWidth:"wide"})};function dn(t){return(e,r={})=>{let o=r.width,n=o&&t.matchPatterns[o]||t.matchPatterns[t.defaultMatchWidth],i=e.match(n);if(!i)return null;let a=i[0],l=o&&t.parsePatterns[o]||t.parsePatterns[t.defaultParseWidth],s=Array.isArray(l)?v0(l,p=>p.test(a)):p0(l,p=>p.test(a)),u;u=t.valueCallback?t.valueCallback(s):s,u=r.valueCallback?r.valueCallback(u):u;let c=e.slice(a.length);return{value:u,rest:c}}}function p0(t,e){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&e(t[r]))return r}function v0(t,e){for(let r=0;r{let o=e.match(t.matchPattern);if(!o)return null;let n=o[0],i=e.match(t.parsePattern);if(!i)return null;let a=t.valueCallback?t.valueCallback(i[0]):i[0];a=r.valueCallback?r.valueCallback(a):a;let l=e.slice(n.length);return{value:a,rest:l}}}var g0=/^(\d+)(th|st|nd|rd)?/i,h0=/\d+/i,b0={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},x0={any:[/^b/i,/^(a|c)/i]},w0={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},_0={any:[/1/i,/2/i,/3/i,/4/i]},y0={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},S0={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]},C0={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},E0={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]},P0={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},A0={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}},mp={ordinalNumber:fp({matchPattern:g0,parsePattern:h0,valueCallback:t=>parseInt(t,10)}),era:dn({matchPatterns:b0,defaultMatchWidth:"wide",parsePatterns:x0,defaultParseWidth:"any"}),quarter:dn({matchPatterns:w0,defaultMatchWidth:"wide",parsePatterns:_0,defaultParseWidth:"any",valueCallback:t=>t+1}),month:dn({matchPatterns:y0,defaultMatchWidth:"wide",parsePatterns:S0,defaultParseWidth:"any"}),day:dn({matchPatterns:C0,defaultMatchWidth:"wide",parsePatterns:E0,defaultParseWidth:"any"}),dayPeriod:dn({matchPatterns:P0,defaultMatchWidth:"any",parsePatterns:A0,defaultParseWidth:"any"})};var Ru={code:"en-US",formatDistance:lp,formatLong:up,formatRelative:dp,localize:cp,match:mp,options:{weekStartsOn:0,firstWeekContainsDate:1}};function pp(t,e){let r=ce(t,e?.in);return rp(r,Ma(r))+1}function vp(t,e){let r=ce(t,e?.in),o=+Io(r)-+op(r);return Math.round(o/Va)+1}function La(t,e){let r=ce(t,e?.in),o=r.getFullYear(),n=io(),i=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,a=Ge(e?.in||t,0);a.setFullYear(o+1,0,i),a.setHours(0,0,0,0);let l=Pr(a,e),s=Ge(e?.in||t,0);s.setFullYear(o,0,i),s.setHours(0,0,0,0);let u=Pr(s,e);return+r>=+l?o+1:+r>=+u?o:o-1}function gp(t,e){let r=io(),o=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,n=La(t,e),i=Ge(e?.in||t,0);return i.setFullYear(n,0,o),i.setHours(0,0,0,0),Pr(i,e)}function hp(t,e){let r=ce(t,e?.in),o=+Pr(r,e)-+gp(r,e);return Math.round(o/Va)+1}function ie(t,e){let r=t<0?"-":"",o=Math.abs(t).toString().padStart(e,"0");return r+o}var Ar={y(t,e){let r=t.getFullYear(),o=r>0?r:1-r;return ie(e==="yy"?o%100:o,e.length)},M(t,e){let r=t.getMonth();return e==="M"?String(r+1):ie(r+1,2)},d(t,e){return ie(t.getDate(),e.length)},a(t,e){let r=t.getHours()/12>=1?"pm":"am";switch(e){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(t,e){return ie(t.getHours()%12||12,e.length)},H(t,e){return ie(t.getHours(),e.length)},m(t,e){return ie(t.getMinutes(),e.length)},s(t,e){return ie(t.getSeconds(),e.length)},S(t,e){let r=e.length,o=t.getMilliseconds(),n=Math.trunc(o*Math.pow(10,r-3));return ie(n,e.length)}};var cn={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Vu={G:function(t,e,r){let o=t.getFullYear()>0?1:0;switch(e){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(t,e,r){if(e==="yo"){let o=t.getFullYear(),n=o>0?o:1-o;return r.ordinalNumber(n,{unit:"year"})}return Ar.y(t,e)},Y:function(t,e,r,o){let n=La(t,o),i=n>0?n:1-n;if(e==="YY"){let a=i%100;return ie(a,2)}return e==="Yo"?r.ordinalNumber(i,{unit:"year"}):ie(i,e.length)},R:function(t,e){let r=Na(t);return ie(r,e.length)},u:function(t,e){let r=t.getFullYear();return ie(r,e.length)},Q:function(t,e,r){let o=Math.ceil((t.getMonth()+1)/3);switch(e){case"Q":return String(o);case"QQ":return ie(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(t,e,r){let o=Math.ceil((t.getMonth()+1)/3);switch(e){case"q":return String(o);case"qq":return ie(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(t,e,r){let o=t.getMonth();switch(e){case"M":case"MM":return Ar.M(t,e);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(t,e,r){let o=t.getMonth();switch(e){case"L":return String(o+1);case"LL":return ie(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(t,e,r,o){let n=hp(t,o);return e==="wo"?r.ordinalNumber(n,{unit:"week"}):ie(n,e.length)},I:function(t,e,r){let o=vp(t);return e==="Io"?r.ordinalNumber(o,{unit:"week"}):ie(o,e.length)},d:function(t,e,r){return e==="do"?r.ordinalNumber(t.getDate(),{unit:"date"}):Ar.d(t,e)},D:function(t,e,r){let o=pp(t);return e==="Do"?r.ordinalNumber(o,{unit:"dayOfYear"}):ie(o,e.length)},E:function(t,e,r){let o=t.getDay();switch(e){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(t,e,r,o){let n=t.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(e){case"e":return String(i);case"ee":return ie(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(t,e,r,o){let n=t.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(e){case"c":return String(i);case"cc":return ie(i,e.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(t,e,r){let o=t.getDay(),n=o===0?7:o;switch(e){case"i":return String(n);case"ii":return ie(n,e.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(t,e,r){let n=t.getHours()/12>=1?"pm":"am";switch(e){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(t,e,r){let o=t.getHours(),n;switch(o===12?n=cn.noon:o===0?n=cn.midnight:n=o/12>=1?"pm":"am",e){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(t,e,r){let o=t.getHours(),n;switch(o>=17?n=cn.evening:o>=12?n=cn.afternoon:o>=4?n=cn.morning:n=cn.night,e){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(t,e,r){if(e==="ho"){let o=t.getHours()%12;return o===0&&(o=12),r.ordinalNumber(o,{unit:"hour"})}return Ar.h(t,e)},H:function(t,e,r){return e==="Ho"?r.ordinalNumber(t.getHours(),{unit:"hour"}):Ar.H(t,e)},K:function(t,e,r){let o=t.getHours()%12;return e==="Ko"?r.ordinalNumber(o,{unit:"hour"}):ie(o,e.length)},k:function(t,e,r){let o=t.getHours();return o===0&&(o=24),e==="ko"?r.ordinalNumber(o,{unit:"hour"}):ie(o,e.length)},m:function(t,e,r){return e==="mo"?r.ordinalNumber(t.getMinutes(),{unit:"minute"}):Ar.m(t,e)},s:function(t,e,r){return e==="so"?r.ordinalNumber(t.getSeconds(),{unit:"second"}):Ar.s(t,e)},S:function(t,e){return Ar.S(t,e)},X:function(t,e,r){let o=t.getTimezoneOffset();if(o===0)return"Z";switch(e){case"X":return xp(o);case"XXXX":case"XX":return To(o);default:return To(o,":")}},x:function(t,e,r){let o=t.getTimezoneOffset();switch(e){case"x":return xp(o);case"xxxx":case"xx":return To(o);default:return To(o,":")}},O:function(t,e,r){let o=t.getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+bp(o,":");default:return"GMT"+To(o,":")}},z:function(t,e,r){let o=t.getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+bp(o,":");default:return"GMT"+To(o,":")}},t:function(t,e,r){let o=Math.trunc(+t/1e3);return ie(o,e.length)},T:function(t,e,r){return ie(+t,e.length)}};function bp(t,e=""){let r=t>0?"-":"+",o=Math.abs(t),n=Math.trunc(o/60),i=o%60;return i===0?r+String(n):r+String(n)+e+ie(i,2)}function xp(t,e){return t%60===0?(t>0?"-":"+")+ie(Math.abs(t)/60,2):To(t,e)}function To(t,e=""){let r=t>0?"-":"+",o=Math.abs(t),n=ie(Math.trunc(o/60),2),i=ie(o%60,2);return r+n+e+i}var wp=(t,e)=>{switch(t){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});default:return e.date({width:"full"})}},_p=(t,e)=>{switch(t){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});default:return e.time({width:"full"})}},I0=(t,e)=>{let r=t.match(/(P+)(p+)?/)||[],o=r[1],n=r[2];if(!n)return wp(t,e);let i;switch(o){case"P":i=e.dateTime({width:"short"});break;case"PP":i=e.dateTime({width:"medium"});break;case"PPP":i=e.dateTime({width:"long"});break;default:i=e.dateTime({width:"full"});break}return i.replace("{{date}}",wp(o,e)).replace("{{time}}",_p(n,e))},yp={p:_p,P:I0};var T0=/^D+$/,O0=/^Y+$/,R0=["D","DD","YY","YYYY"];function Sp(t){return T0.test(t)}function Cp(t){return O0.test(t)}function Ep(t,e,r){let o=V0(t,e,r);if(console.warn(o),R0.includes(t))throw new RangeError(o)}function V0(t,e,r){let o=t[0]==="Y"?"years":"days of the month";return`Use \`${t.toLowerCase()}\` instead of \`${t}\` (in \`${e}\`) for formatting ${o} to the input \`${r}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var k0=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,D0=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,N0=/^'([^]*?)'?$/,M0=/''/g,F0=/[a-zA-Z]/;function ku(t,e,r){let o=io(),n=r?.locale??o.locale??Ru,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,l=ce(t,r?.in);if(!ln(l))throw new RangeError("Invalid time value");let s=e.match(D0).map(c=>{let p=c[0];if(p==="p"||p==="P"){let f=yp[p];return f(c,n.formatLong)}return c}).join("").match(k0).map(c=>{if(c==="''")return{isToken:!1,value:"'"};let p=c[0];if(p==="'")return{isToken:!1,value:L0(c)};if(Vu[p])return{isToken:!0,value:c};if(p.match(F0))throw new RangeError("Format string contains an unescaped latin alphabet character `"+p+"`");return{isToken:!1,value:c}});n.localize.preprocessor&&(s=n.localize.preprocessor(l,s));let u={firstWeekContainsDate:i,weekStartsOn:a,locale:n};return s.map(c=>{if(!c.isToken)return c.value;let p=c.value;(!r?.useAdditionalWeekYearTokens&&Cp(p)||!r?.useAdditionalDayOfYearTokens&&Sp(p))&&Ep(p,e,String(t));let f=Vu[p[0]];return f(l,p,n.localize,u)}).join("")}function L0(t){let e=t.match(N0);return e?e[1].replace(M0,"'"):t}function Oo(t,e,r){return ka(t,-e,r)}function Ba(t,e,r){return Da(t,-e,r)}function Pp(t,e,r){return np(t,-e,r)}function Ha(t,e,r){return ip(t,-e,r)}var B=d($(),1),Oe=d(j(),1),gt=d(Ro(),1);var Du=d(R(),1),Me={Name:(0,Du.jsx)("span",{className:"dataviews-filters__summary-filter-text-name"}),Value:(0,Du.jsx)("span",{className:"dataviews-filters__summary-filter-text-value"})};function Ip(t,e){switch(e){case"days":return Oo(new Date,t);case"weeks":return Pp(new Date,t);case"months":return Ba(new Date,t);case"years":return Ha(new Date,t);default:return new Date}}var Tp={label:(0,B.__)("Is none of"),filterText:(t,e)=>(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is none of: %2$s"),t.name,e.map(r=>r.label).join(", ")),Me),filter:((t,e,r)=>{if(!r?.length)return!0;let o=e.getValue({item:t});return Array.isArray(o)?!r.some(n=>o.includes(n)):typeof o=="string"?!r.includes(o):!1}),selection:"multi"},ja=[{name:Se,label:(0,B.__)("Includes"),filterText:(t,e)=>(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s includes: %2$s"),t.name,e.map(r=>r.label).join(", ")),Me),filter(t,e,r){if(!r?.length)return!0;let o=e.getValue({item:t});return Array.isArray(o)?r.some(n=>o.includes(n)):typeof o=="string"?r.includes(o):!1},selection:"multi"},{name:Ce,...Tp},{name:nt,label:(0,B.__)("Includes all"),filterText:(t,e)=>(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s includes all: %2$s"),t.name,e.map(r=>r.label).join(", ")),Me),filter(t,e,r){return r?.length?r.every(o=>e.getValue({item:t})?.includes(o)):!0},selection:"multi"},{name:it,...Tp},{name:ct,label:(0,B.__)("Between (inc)"),filterText:(t,e)=>(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s between (inc): %2$s and %3$s"),t.name,e[0].label[0],e[0].label[1]),Me),filter(t,e,r){if(!Array.isArray(r)||r.length!==2||r[0]===void 0||r[1]===void 0)return!0;let o=e.getValue({item:t});return typeof o=="number"||o instanceof Date||typeof o=="string"?o>=r[0]&&o<=r[1]:!1},selection:"custom"},{name:ft,label:(0,B.__)("In the past"),filterText:(t,e)=>(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is in the past: %2$s"),t.name,`${e[0].value.value} ${e[0].value.unit}`),Me),filter(t,e,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=Ip(r.value,r.unit),n=(0,gt.getDate)(e.getValue({item:t}));return n>=o&&n<=new Date},selection:"custom"},{name:xt,label:(0,B.__)("Over"),filterText:(t,e)=>(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is over: %2$s"),t.name,`${e[0].value.value} ${e[0].value.unit}`),Me),filter(t,e,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=Ip(r.value,r.unit);return(0,gt.getDate)(e.getValue({item:t}))(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is: %2$s"),t.name,e[0].label),Me),filter(t,e,r){return r===e.getValue({item:t})||r===void 0},selection:"single"},{name:Pe,label:(0,B.__)("Is not"),filterText:(t,e)=>(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is not: %2$s"),t.name,e[0].label),Me),filter(t,e,r){return r!==e.getValue({item:t})},selection:"single"},{name:Fr,label:(0,B.__)("Less than"),filterText:(t,e)=>(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is less than: %2$s"),t.name,e[0].label),Me),filter(t,e,r){return r===void 0?!0:e.getValue({item:t})(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is greater than: %2$s"),t.name,e[0].label),Me),filter(t,e,r){return r===void 0?!0:e.getValue({item:t})>r},selection:"single"},{name:Br,label:(0,B.__)("Less than or equal"),filterText:(t,e)=>(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is less than or equal to: %2$s"),t.name,e[0].label),Me),filter(t,e,r){return r===void 0?!0:e.getValue({item:t})<=r},selection:"single"},{name:Hr,label:(0,B.__)("Greater than or equal"),filterText:(t,e)=>(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is greater than or equal to: %2$s"),t.name,e[0].label),Me),filter(t,e,r){return r===void 0?!0:e.getValue({item:t})>=r},selection:"single"},{name:jr,label:(0,B.__)("Before"),filterText:(t,e)=>(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is before: %2$s"),t.name,e[0].label),Me),filter(t,e,r){if(r===void 0)return!0;let o=(0,gt.getDate)(r);return(0,gt.getDate)(e.getValue({item:t}))(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is after: %2$s"),t.name,e[0].label),Me),filter(t,e,r){if(r===void 0)return!0;let o=(0,gt.getDate)(r);return(0,gt.getDate)(e.getValue({item:t}))>o},selection:"single"},{name:Wr,label:(0,B.__)("Before (inc)"),filterText:(t,e)=>(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is on or before: %2$s"),t.name,e[0].label),Me),filter(t,e,r){if(r===void 0)return!0;let o=(0,gt.getDate)(r);return(0,gt.getDate)(e.getValue({item:t}))<=o},selection:"single"},{name:Gr,label:(0,B.__)("After (inc)"),filterText:(t,e)=>(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is on or after: %2$s"),t.name,e[0].label),Me),filter(t,e,r){if(r===void 0)return!0;let o=(0,gt.getDate)(r);return(0,gt.getDate)(e.getValue({item:t}))>=o},selection:"single"},{name:Ut,label:(0,B.__)("Contains"),filterText:(t,e)=>(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s contains: %2$s"),t.name,e[0].label),Me),filter(t,e,r){if(r===void 0)return!0;let o=e.getValue({item:t});return typeof o=="string"&&r&&o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:$t,label:(0,B.__)("Doesn't contain"),filterText:(t,e)=>(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s doesn't contain: %2$s"),t.name,e[0].label),Me),filter(t,e,r){if(r===void 0)return!0;let o=e.getValue({item:t});return typeof o=="string"&&r&&!o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:Kt,label:(0,B.__)("Starts with"),filterText:(t,e)=>(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s starts with: %2$s"),t.name,e[0].label),Me),filter(t,e,r){if(r===void 0)return!0;let o=e.getValue({item:t});return typeof o=="string"&&r&&o.toLowerCase().startsWith(String(r).toLowerCase())},selection:"single"},{name:qr,label:(0,B.__)("On"),filterText:(t,e)=>(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is: %2$s"),t.name,e[0].label),Me),filter(t,e,r){if(r===void 0)return!0;let o=(0,gt.getDate)(r),n=(0,gt.getDate)(e.getValue({item:t}));return o.getTime()===n.getTime()},selection:"single"},{name:Yr,label:(0,B.__)("Not on"),filterText:(t,e)=>(0,Oe.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is not: %2$s"),t.name,e[0].label),Me),filter(t,e,r){if(r===void 0)return!0;let o=(0,gt.getDate)(r),n=(0,gt.getDate)(e.getValue({item:t}));return o.getTime()!==n.getTime()},selection:"single"}],Vo=t=>ja.find(e=>e.name===t),Op=()=>ja.map(t=>t.name),Rp=t=>ja.filter(e=>e.selection==="single").some(e=>e.name===t),Vp=t=>ja.some(e=>e.name===t);var et=d(R(),1),B0="Enter",H0=" ",j0=({activeElements:t,filterInView:e,filter:r})=>{if(t===void 0||t.length===0)return r.name;let o=Vo(e?.operator);return o!==void 0?o.filterText(r,t):(0,Ir.sprintf)((0,Ir.__)("Unknown status for %1$s"),r.name)};function z0({filter:t,view:e,onChangeView:r}){let o=t.operators?.map(a=>({value:a,label:Vo(a)?.label||a})),n=e.filters?.find(a=>a.field===t.field),i=n?.operator||t.operators[0];return o.length>1&&(0,et.jsxs)(F,{direction:"row",gap:"sm",justify:"flex-start",className:"dataviews-filters__summary-operators-container",align:"center",children:[(0,et.jsx)(jt.FlexItem,{className:"dataviews-filters__summary-operators-filter-name",children:t.name}),(0,et.jsx)(jt.SelectControl,{className:"dataviews-filters__summary-operators-filter-select",label:(0,Ir.__)("Conditions"),value:i,options:o,onChange:a=>{let l=a,s=n?.operator,u=n?[...(e.filters??[]).map(c=>{if(c.field===t.field){let p=Vo(s)?.selection,f=Vo(l)?.selection,m=p!==f||[p,f].includes("custom");return{...c,value:m?void 0:c.value,operator:l}}return c})]:[...e.filters??[],{field:t.field,operator:l,value:void 0}];r({...e,page:1,filters:u})},size:"small",variant:"minimal",hideLabelFromVision:!0})]})}function kp({addFilterRef:t,openedFilter:e,fields:r,...o}){let n=(0,za.useRef)(null),{filter:i,view:a,onChangeView:l}=o,s=a.filters?.find(b=>b.field===i.field),u=[],c=(0,za.useMemo)(()=>{let b=r.find(x=>x.id===i.field);return b&&{...b,getValue:({item:x})=>x[b.id]}},[r,i.field]),{elements:p}=Ke({elements:i.elements,getElements:i.getElements});if(p.length>0)u=p.filter(b=>i.singleSelection?b.value===s?.value:s?.value?.includes(b.value));else if(Array.isArray(s?.value)){let b=s.value.map(x=>c?.getValueFormatted({item:{[c.id]:x},field:c})||String(x));u=[{value:s.value,label:b}]}else if(typeof s?.value=="object")u=[{value:s.value,label:s.value}];else if(s?.value!==void 0){let b=c!==void 0?c.getValueFormatted({item:{[c.id]:s.value},field:c}):String(s.value);u=[{value:s.value,label:b}]}let f=i.isPrimary,m=s?.isLocked,v=!m&&s?.value!==void 0,y=!m&&(!f||v);return(0,et.jsx)(jt.Dropdown,{defaultOpen:e===i.field,contentClassName:"dataviews-filters__summary-popover",popoverProps:{placement:"bottom-start",role:"dialog"},onClose:()=>{n.current?.focus()},renderToggle:({isOpen:b,onToggle:x})=>(0,et.jsxs)("div",{className:"dataviews-filters__summary-chip-container",children:[(0,et.jsx)(jt.Tooltip,{text:(0,Ir.sprintf)((0,Ir.__)("Filter by: %1$s"),i.name.toLowerCase()),placement:"top",children:(0,et.jsx)("div",{className:z("dataviews-filters__summary-chip",{"has-reset":y,"has-values":v,"is-not-clickable":m}),role:"button",tabIndex:m?-1:0,onClick:()=>{m||x()},onKeyDown:S=>{!m&&[B0,H0].includes(S.key)&&(x(),S.preventDefault())},"aria-disabled":m,"aria-pressed":b,"aria-expanded":b,ref:n,children:(0,et.jsx)(j0,{activeElements:u,filterInView:s,filter:i})})}),y&&(0,et.jsx)(jt.Tooltip,{text:f?(0,Ir.__)("Reset"):(0,Ir.__)("Remove"),placement:"top",children:(0,et.jsx)("button",{className:z("dataviews-filters__summary-chip-remove",{"has-values":v}),onClick:()=>{l({...a,page:1,filters:a.filters?.filter(S=>S.field!==i.field)}),f?n.current?.focus():t.current?.focus()},children:(0,et.jsx)(jt.Icon,{icon:Pn})})})]}),renderContent:()=>(0,et.jsxs)(F,{direction:"column",justify:"flex-start",children:[(0,et.jsx)(z0,{...o}),o.filter.hasElements?(0,et.jsx)(Ym,{...o,filter:{...o.filter,elements:p}}):(0,et.jsx)(Zm,{...o,fields:r})]})})}var Wa=d(q(),1),Dp=d($(),1),Np=d(j(),1);var Tr=d(R(),1),{Menu:ri}=K(Wa.privateApis);function Nu({filters:t,view:e,onChangeView:r,setOpenedFilter:o,triggerProps:n}){let i=t.filter(a=>!a.isVisible);return(0,Tr.jsxs)(ri,{children:[(0,Tr.jsx)(ri.TriggerButton,{...n}),(0,Tr.jsx)(ri.Popover,{children:i.map(a=>(0,Tr.jsx)(ri.Item,{onClick:()=>{o(a.field),r({...e,page:1,filters:[...e.filters||[],{field:a.field,value:void 0,operator:a.operators[0]}]})},children:(0,Tr.jsx)(ri.ItemLabel,{children:a.name})},a.field))})]})}function W0({filters:t,view:e,onChangeView:r,setOpenedFilter:o},n){if(!t.length||t.every(({isPrimary:a})=>a))return null;let i=t.filter(a=>!a.isVisible);return(0,Tr.jsx)(Nu,{triggerProps:{render:(0,Tr.jsx)(Wa.Button,{accessibleWhenDisabled:!0,size:"compact",className:"dataviews-filters-button",variant:"tertiary",disabled:!i.length,ref:n}),children:(0,Dp.__)("Add filter")},filters:t,view:e,onChangeView:r,setOpenedFilter:o})}var Mp=(0,Np.forwardRef)(W0);var Fp=d(q(),1),Lp=d($(),1),Bp=d(R(),1);function Hp({filters:t,view:e,onChangeView:r}){let o=i=>t.some(a=>a.field===i&&a.isPrimary),n=!e.search&&!e.filters?.some(i=>!i.isLocked&&(i.value!==void 0||!o(i.field)));return(0,Bp.jsx)(Fp.Button,{disabled:n,accessibleWhenDisabled:!0,size:"compact",variant:"tertiary",className:"dataviews-filters__reset-button",onClick:()=>{r({...e,page:1,search:"",filters:e.filters?.filter(i=>!!i.isLocked)||[]})},children:(0,Lp.__)("Reset")})}var jp=d(j(),1);function G0(t,e){return(0,jp.useMemo)(()=>{let r=[];return t.forEach(o=>{if(o.filterBy===!1||!o.hasElements&&!o.Edit)return;let n=o.filterBy.operators,i=!!o.filterBy?.isPrimary,a=e.filters?.some(l=>l.field===o.id&&!!l.isLocked)??!1;r.push({field:o.id,name:o.label,elements:o.elements,getElements:o.getElements,hasElements:o.hasElements,singleSelection:n.some(l=>Rp(l)),operators:n,isVisible:a||i||!!e.filters?.some(l=>l.field===o.id&&Vp(l.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},[t,e])}var oi=G0;var ni=d(R(),1);function q0({className:t}){let{fields:e,view:r,onChangeView:o,openedFilter:n,setOpenedFilter:i}=(0,fn.useContext)(G),a=(0,fn.useRef)(null),l=oi(e,r),s=(0,ni.jsx)(Mp,{filters:l,view:r,onChangeView:o,ref:a,setOpenedFilter:i},"add-filter"),u=l.filter(p=>p.isVisible);if(u.length===0)return null;let c=[...u.map(p=>(0,ni.jsx)(kp,{filter:p,view:r,fields:e,onChangeView:o,addFilterRef:a,openedFilter:n},p.field)),s];return c.push((0,ni.jsx)(Hp,{filters:l,view:r,onChangeView:o},"reset-filters")),(0,ni.jsx)(F,{direction:"row",justify:"flex-start",gap:"sm",style:{width:"fit-content"},wrap:"wrap",className:t,children:c})}var ii=(0,fn.memo)(q0);var ao=d(j(),1),zp=d(q(),1);var Ga=d($(),1);var ir=d(R(),1);function Y0(){let{filters:t,view:e,onChangeView:r,setOpenedFilter:o,isShowingFilter:n,setIsShowingFilter:i}=(0,ao.useContext)(G),a=(0,ao.useRef)(null),l=(0,ao.useCallback)(m=>{r(m),i(!0)},[r,i]);if(t.length===0)return null;let s=t.some(m=>m.isVisible),u={label:(0,Ga.__)("Add filter"),"aria-expanded":!1,isPressed:!1},c={label:(0,Ga._x)("Filter","verb"),"aria-expanded":n,isPressed:n,onClick:()=>{n||o(null),i(!n)}},p=t.some(m=>m.isPrimary||m.isLocked),f=(0,ir.jsx)(zp.Button,{ref:a,className:"dataviews-filters__visibility-toggle",size:"compact",icon:An,disabled:p,accessibleWhenDisabled:!0,...s?c:u});return(0,ir.jsx)("div",{className:"dataviews-filters__container-visibility-toggle",children:s?(0,ir.jsx)(U0,{buttonRef:a,filtersCount:e.filters?.length,children:f}):(0,ir.jsx)(Nu,{filters:t,view:e,onChangeView:l,setOpenedFilter:o,triggerProps:{render:f}})})}function U0({buttonRef:t,filtersCount:e,children:r}){return(0,ao.useEffect)(()=>()=>{t.current?.focus()},[t]),(0,ir.jsxs)(ir.Fragment,{children:[r,!!e&&(0,ir.jsx)("span",{className:"dataviews-filters-toggle__count",children:e})]})}var qa=Y0;var Wp=d(j(),1);var Gp=d(R(),1);function $0(t){let{isShowingFilter:e}=(0,Wp.useContext)(G);return e?(0,Gp.jsx)(ii,{...t}):null}var Ya=$0;var qp=d(j(),1),Yp=d($(),1);var Mu=d(R(),1);function Fu({className:t}){let{actions:e=[],data:r,fields:o,getItemId:n,getItemLevel:i,hasInitiallyLoaded:a,isLoading:l,view:s,onChangeView:u,selection:c,onChangeSelection:p,setOpenedFilter:f,onClickItem:m,isItemClickable:v,renderItemLink:y,defaultLayouts:b,empty:x=(0,Mu.jsx)("p",{children:(0,Yp.__)("No results")})}=(0,qp.useContext)(G);if(!a)return null;let S=Zr.find(A=>A.type===s.type&&b[A.type])?.component;return(0,Mu.jsx)(S,{className:t,actions:e,data:r,fields:o,getItemId:n,getItemLevel:i,isLoading:l,onChangeView:u,onChangeSelection:p,selection:c,setOpenedFilter:f,onClickItem:m,renderItemLink:y,isItemClickable:v,view:s,empty:x})}var Up=d(j(),1);var mn=d(R(),1),K0=[];function Lu(){let{view:t,paginationInfo:{totalItems:e=0,totalPages:r},data:o,actions:n=K0,isLoading:i,hasInitiallyLoaded:a,hasInfiniteScrollHandler:l}=(0,Up.useContext)(G),s=!!i&&a&&!l&&!!o?.length,u=Xt(!!s),c=Wo(n,o)&&[Lo,Yi].includes(t.type);return!s&&(!e||!r||r<=1&&!c)?null:(!!e||s)&&(0,mn.jsx)("div",{className:"dataviews-footer",inert:s?"true":void 0,children:(0,mn.jsxs)(F,{direction:"row",justify:"end",align:"center",className:z("dataviews-footer__content",{"is-refreshing":u}),gap:"sm",children:[c&&(0,mn.jsx)(Qi,{}),(0,mn.jsx)(Lc,{})]})})}var $p=d($(),1),zt=d(j(),1),Kp=d(q(),1),Qp=d(Et(),1);var Xp=d(R(),1),Q0=(0,zt.memo)(function({label:e}){let{view:r,onChangeView:o}=(0,zt.useContext)(G),[n,i,a]=(0,Qp.useDebouncedInput)(r.search);(0,zt.useEffect)(()=>{i(r.search??"")},[r.search,i]);let l=(0,zt.useRef)(o),s=(0,zt.useRef)(r);(0,zt.useEffect)(()=>{l.current=o,s.current=r},[o,r]),(0,zt.useEffect)(()=>{a!==s.current?.search&&l.current({...s.current,page:1,search:a})},[a]);let u=e||(0,$p.__)("Search");return(0,Xp.jsx)(Kp.SearchControl,{className:"dataviews-search",onChange:i,value:n,label:u,placeholder:u,size:"compact"})}),Bu=Q0;var Fe=d(q(),1),Or=d($(),1),Wt=d(j(),1);var ju=d(Jp(),1),nv=d(Et(),1);var ev=d(q(),1),Hu=d($(),1),tv=d(j(),1);var rv=d(R(),1);function ov(){let t=(0,tv.useContext)(G),{view:e,onChangeView:r}=t,o=e.infiniteScrollEnabled??!1;return t.hasInfiniteScrollHandler?(0,rv.jsx)(ev.ToggleControl,{label:(0,Hu.__)("Enable infinite scroll"),help:(0,Hu.__)("Automatically load more content as you scroll, instead of showing pagination links."),checked:o,onChange:n=>{r({...e,infiniteScrollEnabled:n})}}):null}var re=d(R(),1),{Menu:ai}=K(Fe.privateApis),X0={className:"dataviews-config__popover",placement:"bottom-end",offset:9};function zu(){let{view:t,onChangeView:e,defaultLayouts:r}=(0,Wt.useContext)(G),o=Object.keys(r);if(o.length<=1)return null;let n=Zr.find(i=>t.type===i.type);return(0,re.jsxs)(ai,{children:[(0,re.jsx)(ai.TriggerButton,{render:(0,re.jsx)(Fe.Button,{size:"compact",icon:n?.icon,label:(0,Or.__)("Layout")})}),(0,re.jsx)(ai.Popover,{children:o.map(i=>{let a=Zr.find(l=>l.type===i);return a?(0,re.jsx)(ai.RadioItem,{value:i,name:"view-actions-available-view",checked:i===t.type,hideOnClick:!0,onChange:l=>{switch(l.target.value){case"list":case"grid":case"table":case"pickerGrid":case"pickerTable":case"activity":let s={...t};return"layout"in s&&delete s.layout,e({...s,type:l.target.value,...r[l.target.value]})}(0,ju.default)("Invalid dataview")},children:(0,re.jsx)(ai.ItemLabel,{children:a.label})},i):null})})]})}function Z0(){let{view:t,fields:e,onChangeView:r}=(0,Wt.useContext)(G),o=(0,Wt.useMemo)(()=>e.filter(i=>i.enableSorting!==!1).map(i=>({label:i.label,value:i.id})),[e]);return(0,re.jsx)(Fe.SelectControl,{__next40pxDefaultSize:!0,label:(0,Or.__)("Sort by"),value:t.sort?.field,options:o,onChange:n=>{r({...t,sort:{direction:t?.sort?.direction||"desc",field:n},showLevels:!1})}})}function J0(){let{view:t,fields:e,onChangeView:r}=(0,Wt.useContext)(G);if(e.filter(i=>i.enableSorting!==!1).length===0)return null;let n=t.sort?.direction;return!n&&t.sort?.field&&(n="desc"),(0,re.jsx)(Fe.__experimentalToggleGroupControl,{className:"dataviews-view-config__sort-direction",__next40pxDefaultSize:!0,isBlock:!0,label:(0,Or.__)("Order"),value:n,onChange:i=>{if(i==="asc"||i==="desc"){r({...t,sort:{direction:i,field:t.sort?.field||e.find(a=>a.enableSorting!==!1)?.id||""},showLevels:!1});return}(0,ju.default)("Invalid direction")},children:Wi.map(i=>(0,re.jsx)(Fe.__experimentalToggleGroupControlOptionIcon,{value:i,icon:Ud[i],label:qi[i]},i))})}function ew(){let{view:t,config:e,onChangeView:r}=(0,Wt.useContext)(G),{infiniteScrollEnabled:o}=t;return!e||!e.perPageSizes||e.perPageSizes.length<2||e.perPageSizes.length>6||o?null:(0,re.jsx)(Fe.__experimentalToggleGroupControl,{__next40pxDefaultSize:!0,isBlock:!0,label:(0,Or.__)("Items per page"),value:t.perPage||10,disabled:!t?.sort?.field,onChange:n=>{let i=typeof n=="number"||n===void 0?n:parseInt(n,10);r({...t,perPage:i,page:1})},children:e.perPageSizes.map(n=>(0,re.jsx)(Fe.__experimentalToggleGroupControlOption,{value:n,label:n.toString()},n))})}function tw(){let{onReset:t}=(0,Wt.useContext)(G);return t===void 0?null:(0,re.jsx)(Fe.Button,{variant:"tertiary",size:"compact",disabled:t===!1,accessibleWhenDisabled:!0,className:"dataviews-view-config__reset-button",onClick:()=>{typeof t=="function"&&t()},children:(0,Or.__)("Reset view")})}function Wu(){let{view:t,onReset:e}=(0,Wt.useContext)(G),r=(0,nv.useInstanceId)(iv,"dataviews-view-config-dropdown"),o=Zr.find(i=>i.type===t.type),n=typeof e=="function";return(0,re.jsx)(Fe.Dropdown,{expandOnMobile:!0,popoverProps:{...X0,id:r},renderToggle:({onToggle:i,isOpen:a})=>(0,re.jsxs)("div",{className:"dataviews-view-config__toggle-wrapper",children:[(0,re.jsx)(Fe.Button,{size:"compact",icon:Js,label:(0,Or._x)("View options","View is used as a noun"),onClick:i,"aria-expanded":a?"true":"false","aria-controls":r}),n&&(0,re.jsx)("span",{className:"dataviews-view-config__modified-indicator"})]}),renderContent:()=>(0,re.jsx)(Fe.__experimentalDropdownContentWrapper,{paddingSize:"medium",className:"dataviews-config__popover-content-wrapper",children:(0,re.jsxs)(F,{direction:"column",className:"dataviews-view-config",gap:"xl",children:[(0,re.jsxs)(F,{direction:"row",justify:"space-between",align:"center",className:"dataviews-view-config__header",children:[(0,re.jsx)(Fe.__experimentalHeading,{level:2,className:"dataviews-settings-section__title",children:(0,Or.__)("Appearance")}),(0,re.jsx)(tw,{})]}),(0,re.jsxs)(F,{direction:"column",gap:"lg",children:[(0,re.jsxs)(F,{direction:"row",gap:"sm",className:"dataviews-view-config__sort-controls",children:[(0,re.jsx)(Z0,{}),(0,re.jsx)(J0,{})]}),!!o?.viewConfigOptions&&(0,re.jsx)(o.viewConfigOptions,{}),(0,re.jsx)(ov,{}),(0,re.jsx)(ew,{}),(0,re.jsx)(Ji,{})]})]})})})}function iv(){return(0,re.jsxs)(re.Fragment,{children:[(0,re.jsx)(zu,{}),(0,re.jsx)(Wu,{})]})}var rw=(0,Wt.memo)(iv),av=rw;var sv=d(q(),1),lv=d(j(),1);function pe(t,e){let r;return t?.required&&e?.required?r=e?.required?.message?e.required:void 0:t?.pattern&&e?.pattern?r=e.pattern:t?.min&&e?.min?r=e.min:t?.max&&e?.max?r=e.max:t?.minLength&&e?.minLength?r=e.minLength:t?.maxLength&&e?.maxLength?r=e.maxLength:t?.elements&&e?.elements?r=e.elements:e?.custom&&(r=e.custom),r}var uv=d(R(),1),{ValidatedCheckboxControl:ow}=K(sv.privateApis);function dv({field:t,onChange:e,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:l,label:s,description:u,isValid:c}=t,p=(0,lv.useCallback)(()=>{e(l({item:r,value:!a({item:r})}))},[r,a,e,l]);return(0,uv.jsx)(ow,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:pe(c,i),hidden:o,label:s,help:u,checked:a({item:r}),onChange:p})}var Ua=d(q(),1),cv=d(j(),1);var Gu=d(R(),1),{ValidatedComboboxControl:nw}=K(Ua.privateApis);function $a({data:t,field:e,onChange:r,hideLabelFromVision:o,validity:n}){let{label:i,description:a,placeholder:l,getValue:s,setValue:u,isValid:c}=e,p=s({item:t})??"",f=(0,cv.useCallback)(y=>r(u({item:t,value:y??""})),[t,r,u]),{elements:m,isLoading:v}=Ke({elements:e.elements,getElements:e.getElements});return v?(0,Gu.jsx)(Ua.Spinner,{}):(0,Gu.jsx)(nw,{required:!!e.isValid?.required,customValidity:pe(c,n),label:i,value:p,help:a,placeholder:l,options:m,onChange:f,hideLabelFromVision:o,allowReset:!0,expandOnFocus:!0})}var Za=d(q(),1),Bt=d(j(),1),Xa=d($(),1),Vt=d(Ro(),1);var vn=d(q(),1),qu=d(j(),1),ar=d($(),1);var pn=d(R(),1),iw={[ft]:[{value:"days",label:(0,ar.__)("Days")},{value:"weeks",label:(0,ar.__)("Weeks")},{value:"months",label:(0,ar.__)("Months")},{value:"years",label:(0,ar.__)("Years")}],[xt]:[{value:"days",label:(0,ar.__)("Days ago")},{value:"weeks",label:(0,ar.__)("Weeks ago")},{value:"months",label:(0,ar.__)("Months ago")},{value:"years",label:(0,ar.__)("Years ago")}]};function Ka({className:t,data:e,field:r,onChange:o,hideLabelFromVision:n,operator:i}){let a=iw[i===ft?"inThePast":"over"],{id:l,label:s,getValue:u,setValue:c}=r,p=u({item:e}),{value:f="",unit:m=a[0].value}=p&&typeof p=="object"?p:{},v=(0,qu.useCallback)(b=>o(c({item:e,value:{value:Number(b),unit:m}})),[o,c,e,m]),y=(0,qu.useCallback)(b=>o(c({item:e,value:{value:f,unit:b}})),[o,c,e,f]);return(0,pn.jsx)(vn.BaseControl,{id:l,className:z(t,"dataviews-controls__relative-date"),label:s,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:f,onChange:v}),(0,pn.jsx)(vn.SelectControl,{className:"dataviews-controls__relative-date-unit",__next40pxDefaultSize:!0,label:(0,ar.__)("Unit"),value:m,options:a,onChange:y,hideLabelFromVision:!0})]})})}var fv=d(Ro(),1);function Qa(t){if(!t)return null;let e=(0,fv.getDate)(t);return e&&ln(e)?e:null}var so=d(R(),1),{DateCalendar:aw,ValidatedInputControl:sw}=K(Za.privateApis),lw=t=>t?(0,Vt.dateI18n)("Y-m-d\\TH:i",(0,Vt.getDate)(t)):"";function uw({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:l,description:s,setValue:u,getValue:c,isValid:p}=e,f=c({item:t}),m=typeof f=="string"?f:void 0,[v,y]=(0,Bt.useState)(()=>Qa(m)||new Date),b=(0,Bt.useRef)(null),x=(0,Bt.useRef)(void 0),S=(0,Bt.useRef)(null),A=(0,Bt.useCallback)(k=>r(u({item:t,value:k})),[t,r,u]);(0,Bt.useEffect)(()=>()=>{x.current&&clearTimeout(x.current)},[]);let V=(0,Bt.useCallback)(k=>{let g;if(k){let P=(0,Vt.dateI18n)("Y-m-d",k),_;m?_=(0,Vt.dateI18n)("H:i",(0,Vt.getDate)(m)):_=(0,Vt.dateI18n)("H:i",k),g=(0,Vt.getDate)(`${P}T${_}`).toISOString(),A(g),x.current&&clearTimeout(x.current)}else A(void 0);S.current=b.current&&b.current.ownerDocument.activeElement,x.current=setTimeout(()=>{b.current&&(b.current.focus(),b.current.blur(),A(g),S.current&&S.current instanceof HTMLElement&&S.current.focus())},0)},[A,m]),T=(0,Bt.useCallback)(k=>{if(k){let g=(0,Vt.getDate)(k);A(g.toISOString());let P=Qa(g.toISOString());P&&y(P)}else A(void 0)},[A]),{format:N}=e,D=N.weekStartsOn??(0,Vt.getSettings)().l10n.startOfWeek,{timezone:{string:E}}=(0,Vt.getSettings)(),I=l;return p?.required&&!n&&!o?I=`${l} (${(0,Xa.__)("Required")})`:!p?.required&&n&&!o&&(I=`${l} (${(0,Xa.__)("Optional")})`),(0,so.jsx)(Za.BaseControl,{id:a,label:I,help:s,hideLabelFromVision:o,children:(0,so.jsxs)(F,{direction:"column",gap:"lg",children:[(0,so.jsx)(aw,{style:{width:"100%"},selected:m&&Qa(m)||void 0,onSelect:V,month:v,onMonthChange:y,timeZone:E||void 0,weekStartsOn:D}),(0,so.jsx)(sw,{ref:b,__next40pxDefaultSize:!0,required:!!p?.required,customValidity:pe(p,i),type:"datetime-local",label:(0,Xa.__)("Date time"),hideLabelFromVision:!0,value:lw(m),onChange:T})]})})}function mv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===ft||i===xt?(0,so.jsx)(Ka,{className:"dataviews-controls__datetime",data:t,field:e,onChange:r,hideLabelFromVision:o,operator:i}):(0,so.jsx)(uw,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var ut=d(q(),1),de=d(j(),1),qe=d($(),1),lt=d(Ro(),1);var ve=d(R(),1),{DateCalendar:dw,DateRangeCalendar:cw}=K(ut.privateApis),fw=[{id:"today",label:(0,qe.__)("Today"),getValue:()=>(0,lt.getDate)(null)},{id:"yesterday",label:(0,qe.__)("Yesterday"),getValue:()=>{let t=(0,lt.getDate)(null);return Oo(t,1)}},{id:"past-week",label:(0,qe.__)("Past week"),getValue:()=>{let t=(0,lt.getDate)(null);return Oo(t,7)}},{id:"past-month",label:(0,qe.__)("Past month"),getValue:()=>{let t=(0,lt.getDate)(null);return Ba(t,1)}}],mw=[{id:"last-7-days",label:(0,qe.__)("Last 7 days"),getValue:()=>{let t=(0,lt.getDate)(null);return[Oo(t,7),t]}},{id:"last-30-days",label:(0,qe.__)("Last 30 days"),getValue:()=>{let t=(0,lt.getDate)(null);return[Oo(t,30),t]}},{id:"month-to-date",label:(0,qe.__)("Month to date"),getValue:()=>{let t=(0,lt.getDate)(null);return[sp(t),t]}},{id:"last-year",label:(0,qe.__)("Last year"),getValue:()=>{let t=(0,lt.getDate)(null);return[Ha(t,1),t]}},{id:"year-to-date",label:(0,qe.__)("Year to date"),getValue:()=>{let t=(0,lt.getDate)(null);return[Ma(t),t]}}],gn=t=>{if(!t)return null;let e=(0,lt.getDate)(t);return e&&ln(e)?e:null},Yu=t=>t?typeof t=="string"?t:ku(t,"yyyy-MM-dd"):"";function pv({field:t,validity:e,inputRefs:r,isTouched:o,setIsTouched:n,children:i}){let{isValid:a}=t,[l,s]=(0,de.useState)(void 0),u=(0,de.useCallback)(()=>{let p=Array.isArray(r)?r:[r];for(let f of p){let m=f.current;if(m&&!m.validity.valid){s({type:"invalid",message:m.validationMessage});return}}s(void 0)},[r]);return(0,de.useEffect)(()=>{let p=Array.isArray(r)?r:[r],f=e?pe(a,e):void 0;for(let m of p){let v=m.current;v&&v.setCustomValidity(f?.type==="invalid"&&f.message?f.message:"")}},[r,a,e]),(0,de.useEffect)(()=>{let p=Array.isArray(r)?r:[r],f=m=>{m.preventDefault(),n(!0)};for(let m of p)m.current?.addEventListener("invalid",f);return()=>{for(let m of p)m.current?.removeEventListener("invalid",f)}},[r,n]),(0,de.useEffect)(()=>{if(!o)return;let p=e?pe(a,e):void 0;p?s(p):u()},[o,a,e,u]),(0,ve.jsxs)("div",{onBlur:p=>{o||(!p.relatedTarget||!p.currentTarget.contains(p.relatedTarget))&&n(!0)},children:[i,(0,ve.jsx)("div",{"aria-live":"polite",children:l&&(0,ve.jsxs)("p",{className:z("components-validated-control__indicator",l.type==="invalid"?"is-invalid":void 0),children:[(0,ve.jsx)(ut.Icon,{className:"components-validated-control__indicator-icon",icon:ol,size:16,fill:"currentColor"}),l.message]})})]})}function pw({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:l,setValue:s,getValue:u,isValid:c,format:p}=e,[f,m]=(0,de.useState)(null),v=p.weekStartsOn??(0,lt.getSettings)().l10n.startOfWeek,y=u({item:t}),b=typeof y=="string"?y:void 0,[x,S]=(0,de.useState)(()=>gn(b)||new Date),[A,V]=(0,de.useState)(!1),T=(0,de.useRef)(null),N=(0,de.useCallback)(P=>r(s({item:t,value:P})),[t,r,s]),D=(0,de.useCallback)(P=>{let _=P?ku(P,"yyyy-MM-dd"):void 0;N(_),m(null),V(!0)},[N]),E=(0,de.useCallback)(P=>{let _=P.getValue(),h=Yu(_);S(_),N(h),m(P.id),V(!0)},[N]),I=(0,de.useCallback)(P=>{if(N(P),P){let _=gn(P);_&&S(_)}m(null),V(!0)},[N]),{timezone:{string:k}}=(0,lt.getSettings)(),g=l;return c?.required&&!n?g=`${l} (${(0,qe.__)("Required")})`:!c?.required&&n&&(g=`${l} (${(0,qe.__)("Optional")})`),(0,ve.jsx)(pv,{field:e,validity:i,inputRefs:T,isTouched:A,setIsTouched:V,children:(0,ve.jsx)(ut.BaseControl,{id:a,className:"dataviews-controls__date",label:g,hideLabelFromVision:o,children:(0,ve.jsxs)(F,{direction:"column",gap:"lg",children:[(0,ve.jsxs)(F,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[fw.map(P=>{let _=f===P.id;return(0,ve.jsx)(ut.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:_,size:"small",onClick:()=>E(P),children:P.label},P.id)}),(0,ve.jsx)(ut.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!f,size:"small",disabled:!!f,accessibleWhenDisabled:!1,children:(0,qe.__)("Custom")})]}),(0,ve.jsx)(ut.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:T,type:"date",label:(0,qe.__)("Date"),hideLabelFromVision:!0,value:b,onChange:I,required:!!e.isValid?.required}),(0,ve.jsx)(dw,{style:{width:"100%"},selected:b&&gn(b)||void 0,onSelect:D,month:x,onMonthChange:S,timeZone:k||void 0,weekStartsOn:v})]})})})}function vw({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:l,getValue:s,setValue:u,format:c}=e,p,f=s({item:t});Array.isArray(f)&&f.length===2&&f.every(h=>typeof h=="string")&&(p=f);let m=c.weekStartsOn??(0,lt.getSettings)().l10n.startOfWeek,v=(0,de.useCallback)(h=>{r(u({item:t,value:h}))},[t,r,u]),[y,b]=(0,de.useState)(null),x=(0,de.useMemo)(()=>{if(!p)return{from:void 0,to:void 0};let[h,O]=p;return{from:gn(h)||void 0,to:gn(O)||void 0}},[p]),[S,A]=(0,de.useState)(()=>x.from||new Date),[V,T]=(0,de.useState)(!1),N=(0,de.useRef)(null),D=(0,de.useRef)(null),E=(0,de.useCallback)((h,O)=>{h&&O?v([Yu(h),Yu(O)]):!h&&!O&&v(void 0)},[v]),I=(0,de.useCallback)(h=>{E(h?.from,h?.to),b(null),T(!0)},[E]),k=(0,de.useCallback)(h=>{let[O,w]=h.getValue();A(O),E(O,w),b(h.id),T(!0)},[E]),g=(0,de.useCallback)((h,O)=>{let[w,C]=p||[void 0,void 0];if(E(h==="from"?O:w,h==="to"?O:C),O){let ae=gn(O);ae&&A(ae)}b(null),T(!0)},[p,E]),{timezone:P}=(0,lt.getSettings)(),_=l;return e.isValid?.required&&!n?_=`${l} (${(0,qe.__)("Required")})`:!e.isValid?.required&&n&&(_=`${l} (${(0,qe.__)("Optional")})`),(0,ve.jsx)(pv,{field:e,validity:i,inputRefs:[N,D],isTouched:V,setIsTouched:T,children:(0,ve.jsx)(ut.BaseControl,{id:a,className:"dataviews-controls__date",label:_,hideLabelFromVision:o,children:(0,ve.jsxs)(F,{direction:"column",gap:"lg",children:[(0,ve.jsxs)(F,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[mw.map(h=>{let O=y===h.id;return(0,ve.jsx)(ut.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:O,size:"small",onClick:()=>k(h),children:h.label},h.id)}),(0,ve.jsx)(ut.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!y,size:"small",accessibleWhenDisabled:!1,disabled:!!y,children:(0,qe.__)("Custom")})]}),(0,ve.jsxs)(F,{direction:"row",gap:"sm",justify:"space-between",className:"dataviews-controls__date-range-inputs",children:[(0,ve.jsx)(ut.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:N,type:"date",label:(0,qe.__)("From"),hideLabelFromVision:!0,value:p?.[0],onChange:h=>g("from",h),required:!!e.isValid?.required}),(0,ve.jsx)(ut.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:D,type:"date",label:(0,qe.__)("To"),hideLabelFromVision:!0,value:p?.[1],onChange:h=>g("to",h),required:!!e.isValid?.required})]}),(0,ve.jsx)(cw,{style:{width:"100%"},selected:x,onSelect:I,month:S,onMonthChange:A,timeZone:P.string||void 0,weekStartsOn:m})]})})})}function vv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===ft||i===xt?(0,ve.jsx)(Ka,{className:"dataviews-controls__date",data:t,field:e,onChange:r,hideLabelFromVision:o,operator:i}):i===ct?(0,ve.jsx)(vw,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a}):(0,ve.jsx)(pw,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var Ja=d(q(),1),gv=d(j(),1);var Uu=d(R(),1),{ValidatedSelectControl:gw}=K(Ja.privateApis);function es({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{type:a,label:l,description:s,getValue:u,setValue:c,isValid:p}=e,f=a==="array",m=u({item:t})??(f?[]:""),v=(0,gv.useCallback)(x=>r(c({item:t,value:x})),[t,r,c]),{elements:y,isLoading:b}=Ke({elements:e.elements,getElements:e.getElements});return b?(0,Uu.jsx)(Ja.Spinner,{}):(0,Uu.jsx)(gw,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:pe(p,i),label:l,value:m,help:s,options:y,onChange:v,__next40pxDefaultSize:!0,hideLabelFromVision:o,multiple:f})}var $u=d(R(),1),hw=10;function hv(t){let{field:e}=t,{elements:r}=Ke({elements:e.elements,getElements:e.getElements});return r.length>=hw?(0,$u.jsx)($a,{...t}):(0,$u.jsx)(es,{...t})}var rs=d(q(),1);var bv=d(q(),1),xv=d(j(),1);var wv=d(R(),1),{ValidatedInputControl:bw}=K(bv.privateApis);function sr({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,type:i,prefix:a,suffix:l,validity:s}){let{label:u,placeholder:c,description:p,getValue:f,setValue:m,isValid:v}=e,y=f({item:t}),b=(0,xv.useCallback)(x=>r(m({item:t,value:x})),[t,m,r]);return(0,wv.jsx)(bw,{required:!!v.required,markWhenOptional:n,customValidity:pe(v,s),label:u,placeholder:c,value:y??"",help:p,onChange:b,hideLabelFromVision:o,type:i,prefix:a,suffix:l,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 ts=d(R(),1);function _v({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,ts.jsx)(sr,{data:t,field:e,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:tl})})})}var ns=d(q(),1);var os=d(R(),1);function yv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,os.jsx)(sr,{data:t,field:e,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:fl})})})}var as=d(q(),1);var is=d(R(),1);function Sv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,is.jsx)(sr,{data:t,field:e,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:dl})})})}var Rr=d(q(),1),si=d(j(),1),ss=d($(),1);var lo=d(R(),1),{ValidatedNumberControl:xw}=K(Rr.privateApis);function Cv(t){if(t===""||t===void 0)return"";let e=Number(t);return Number.isFinite(e)?e:""}function ww({value:t,onChange:e,hideLabelFromVision:r,step:o}){let[n="",i=""]=t,a=(0,si.useCallback)(s=>e([Cv(s),i]),[e,i]),l=(0,si.useCallback)(s=>e([n,Cv(s)]),[e,n]);return(0,lo.jsx)(Rr.BaseControl,{help:(0,ss.__)("The max. value must be greater than the min. value."),children:(0,lo.jsxs)(Rr.Flex,{direction:"row",gap:4,children:[(0,lo.jsx)(Rr.__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)(Rr.__experimentalNumberControl,{label:(0,ss.__)("Max."),value:i,min:n?Number(n)+o:void 0,onChange:l,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o})]})})}function ls({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){let l=e.format?.decimals??0,s=Math.pow(10,Math.abs(l)*-1),{label:u,description:c,getValue:p,setValue:f,isValid:m}=e,v=p({item:t})??"",y=(0,si.useCallback)(x=>{r(f({item:t,value:["",void 0].includes(x)?void 0:Number(x)}))},[t,r,f]),b=(0,si.useCallback)(x=>{r(f({item:t,value:x}))},[t,r,f]);if(i===ct){let x=["",""];return Array.isArray(v)&&v.length===2&&v.every(S=>typeof S=="number"||S==="")&&(x=v),(0,lo.jsx)(ww,{value:x,onChange:b,hideLabelFromVision:o,step:s})}return(0,lo.jsx)(xw,{required:!!m.required,markWhenOptional:n,customValidity:pe(m,a),label:u,help:c,value:v,onChange:y,__next40pxDefaultSize:!0,hideLabelFromVision:o,step:s,min:m.min?m.min.constraint:void 0,max:m.max?m.max.constraint:void 0})}var Ev=d(R(),1);function Pv(t){return(0,Ev.jsx)(ls,{...t})}var Av=d(R(),1);function Iv(t){return(0,Av.jsx)(ls,{...t})}var us=d(q(),1),Tv=d(j(),1);var Ku=d(R(),1),{ValidatedRadioControl:_w}=K(us.privateApis);function Ov({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:l,getValue:s,setValue:u,isValid:c}=e,{elements:p,isLoading:f}=Ke({elements:e.elements,getElements:e.getElements}),m=s({item:t}),v=(0,Tv.useCallback)(y=>r(u({item:t,value:y})),[t,r,u]);return f?(0,Ku.jsx)(us.Spinner,{}):(0,Ku.jsx)(_w,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:pe(c,i),label:a,help:l,onChange:v,options:p,selected:m,hideLabelFromVision:o})}var Qu=d(j(),1);var Rv=d(R(),1);function Vv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{prefix:l,suffix:s}=i||{};return(0,Rv.jsx)(sr,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a,prefix:l?(0,Qu.createElement)(l):void 0,suffix:s?(0,Qu.createElement)(s):void 0})}var kv=d(q(),1),Dv=d(j(),1);var Nv=d(R(),1),{ValidatedToggleControl:yw}=K(kv.privateApis);function Mv({field:t,onChange:e,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:l,getValue:s,setValue:u,isValid:c}=t,p=(0,Dv.useCallback)(()=>{e(u({item:r,value:!s({item:r})}))},[e,u,r,s]);return(0,Nv.jsx)(yw,{required:!!c.required,markWhenOptional:n,customValidity:pe(c,i),hidden:o,label:a,help:l,checked:s({item:r}),onChange:p})}var Fv=d(q(),1),Lv=d(j(),1);var Bv=d(R(),1),{ValidatedTextareaControl:Sw}=K(Fv.privateApis);function Hv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{rows:l=4}=i||{},{label:s,placeholder:u,description:c,setValue:p,isValid:f}=e,m=e.getValue({item:t}),v=(0,Lv.useCallback)(y=>r(p({item:t,value:y})),[t,r,p]);return(0,Bv.jsx)(Sw,{required:!!f.required,markWhenOptional:n,customValidity:pe(f,a),label:s,placeholder:u,value:m??"",help:c,onChange:v,rows:l,minLength:f.minLength?f.minLength.constraint:void 0,maxLength:f.maxLength?f.maxLength.constraint:void 0,__next40pxDefaultSize:!0,hideLabelFromVision:o})}var hn=d(q(),1),jv=d(j(),1);var ds=d(R(),1),{ValidatedToggleGroupControl:Cw}=K(hn.privateApis);function zv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:l,isValid:s}=e,u=a({item:t}),c=(0,jv.useCallback)(v=>r(l({item:t,value:v})),[t,r,l]),{elements:p,isLoading:f}=Ke({elements:e.elements,getElements:e.getElements});if(f)return(0,ds.jsx)(hn.Spinner,{});if(p.length===0)return null;let m=p.find(v=>v.value===u);return(0,ds.jsx)(Cw,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:pe(s,i),__next40pxDefaultSize:!0,isBlock:!0,label:e.label,help:m?.description||e.description,onChange:c,value:u,hideLabelFromVision:o,children:p.map(v=>(0,ds.jsx)(hn.__experimentalToggleGroupControlOption,{label:v.label,value:v.value},v.value))})}var cs=d(q(),1),fs=d(j(),1);var li=d(R(),1),{ValidatedFormTokenField:Ew}=K(cs.privateApis);function Wv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:l,getValue:s,setValue:u,isValid:c}=e,p=s({item:t}),{elements:f,isLoading:m}=Ke({elements:e.elements,getElements:e.getElements}),v=(0,fs.useMemo)(()=>Array.isArray(p)?p.map(b=>f?.find(S=>S.value===b)||{value:b,label:b}):[],[p,f]),y=(0,fs.useCallback)(b=>{let x=b.map(S=>typeof S=="object"&&"value"in S?S.value:S);r(u({item:t,value:x}))},[r,u,t]);return m?(0,li.jsx)(cs.Spinner,{}):(0,li.jsx)(Ew,{required:!!c?.required,markWhenOptional:n,customValidity:pe(c,i),label:o?void 0:a,value:v,onChange:y,placeholder:l,suggestions:f?.map(b=>b.value),__experimentalValidateInput:b=>e.isValid?.elements&&f?f.some(x=>x.value===b||x.label===b):!0,__experimentalExpandOnFocus:f&&f.length>0,__experimentalShowHowTo:!e.isValid?.elements,displayTransform:b=>typeof b=="object"&&"label"in b?b.label:typeof b=="string"&&f&&f.find(S=>S.value===b)?.label||b,__experimentalRenderItem:({item:b})=>{if(typeof b=="string"&&f){let x=f.find(S=>S.value===b);return(0,li.jsx)("span",{children:x?.label||b})}return(0,li.jsx)("span",{children:b})}})}var Pw={grad:.9,turn:360,rad:360/(2*Math.PI)},Vr=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},Qe=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=Math.pow(10,e)),Math.round(r*t)/r+0},Ht=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=1),t>r?r:t>e?t:e},Zv=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},Gv=function(t){return{r:Ht(t.r,0,255),g:Ht(t.g,0,255),b:Ht(t.b,0,255),a:Ht(t.a)}},Xu=function(t){return{r:Qe(t.r),g:Qe(t.g),b:Qe(t.b),a:Qe(t.a,3)}},Aw=/^#([0-9a-f]{3,8})$/i,ms=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},Jv=function(t){var e=t.r,r=t.g,o=t.b,n=t.a,i=Math.max(e,r,o),a=i-Math.min(e,r,o),l=a?i===e?(r-o)/a:i===r?2+(o-e)/a:4+(e-r)/a:0;return{h:60*(l<0?l+6:l),s:i?a/i*100:0,v:i/255*100,a:n}},eg=function(t){var e=t.h,r=t.s,o=t.v,n=t.a;e=e/360*6,r/=100,o/=100;var i=Math.floor(e),a=o*(1-r),l=o*(1-(e-i)*r),s=o*(1-(1-e+i)*r),u=i%6;return{r:255*[o,l,a,a,s,o][u],g:255*[s,o,o,l,a,a][u],b:255*[a,a,s,o,o,l][u],a:n}},qv=function(t){return{h:Zv(t.h),s:Ht(t.s,0,100),l:Ht(t.l,0,100),a:Ht(t.a)}},Yv=function(t){return{h:Qe(t.h),s:Qe(t.s),l:Qe(t.l),a:Qe(t.a,3)}},Uv=function(t){return eg((r=(e=t).s,{h:e.h,s:(r*=((o=e.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:e.a}));var e,r,o},ui=function(t){return{h:(e=Jv(t)).h,s:(n=(200-(r=e.s))*(o=e.v)/100)>0&&n<200?r*o/100/(n<=100?n:200-n)*100:0,l:n/2,a:e.a};var e,r,o,n},Iw=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Tw=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Ow=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Rw=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,$v={string:[[function(t){var e=Aw.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?Qe(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?Qe(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=Ow.exec(t)||Rw.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:Gv({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=Iw.exec(t)||Tw.exec(t);if(!e)return null;var r,o,n=qv({h:(r=e[1],o=e[2],o===void 0&&(o="deg"),Number(r)*(Pw[o]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return Uv(n)},"hsl"]],object:[[function(t){var e=t.r,r=t.g,o=t.b,n=t.a,i=n===void 0?1:n;return Vr(e)&&Vr(r)&&Vr(o)?Gv({r:Number(e),g:Number(r),b:Number(o),a:Number(i)}):null},"rgb"],[function(t){var e=t.h,r=t.s,o=t.l,n=t.a,i=n===void 0?1:n;if(!Vr(e)||!Vr(r)||!Vr(o))return null;var a=qv({h:Number(e),s:Number(r),l:Number(o),a:Number(i)});return Uv(a)},"hsl"],[function(t){var e=t.h,r=t.s,o=t.v,n=t.a,i=n===void 0?1:n;if(!Vr(e)||!Vr(r)||!Vr(o))return null;var a=(function(l){return{h:Zv(l.h),s:Ht(l.s,0,100),v:Ht(l.v,0,100),a:Ht(l.a)}})({h:Number(e),s:Number(r),v:Number(o),a:Number(i)});return eg(a)},"hsv"]]},Kv=function(t,e){for(var r=0;r=.5},t.prototype.toHex=function(){return e=Xu(this.rgba),r=e.r,o=e.g,n=e.b,a=(i=e.a)<1?ms(Qe(255*i)):"","#"+ms(r)+ms(o)+ms(n)+a;var e,r,o,n,i,a},t.prototype.toRgb=function(){return Xu(this.rgba)},t.prototype.toRgbString=function(){return e=Xu(this.rgba),r=e.r,o=e.g,n=e.b,(i=e.a)<1?"rgba("+r+", "+o+", "+n+", "+i+")":"rgb("+r+", "+o+", "+n+")";var e,r,o,n,i},t.prototype.toHsl=function(){return Yv(ui(this.rgba))},t.prototype.toHslString=function(){return e=Yv(ui(this.rgba)),r=e.h,o=e.s,n=e.l,(i=e.a)<1?"hsla("+r+", "+o+"%, "+n+"%, "+i+")":"hsl("+r+", "+o+"%, "+n+"%)";var e,r,o,n,i},t.prototype.toHsv=function(){return e=Jv(this.rgba),{h:Qe(e.h),s:Qe(e.s),v:Qe(e.v),a:Qe(e.a,3)};var e},t.prototype.invert=function(){return dt({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),dt(Zu(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),dt(Zu(this.rgba,-e))},t.prototype.grayscale=function(){return dt(Zu(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),dt(Qv(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),dt(Qv(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?dt({r:(r=this.rgba).r,g:r.g,b:r.b,a:e}):Qe(this.rgba.a,3);var r},t.prototype.hue=function(e){var r=ui(this.rgba);return typeof e=="number"?dt({h:e,s:r.s,l:r.l,a:r.a}):Qe(r.h)},t.prototype.isEqual=function(e){return this.toHex()===dt(e).toHex()},t})(),dt=function(t){return t instanceof Xv?t:new Xv(t)};var Ct=d(q(),1),ed=d(j(),1),tg=d($(),1);var kr=d(R(),1),{ValidatedInputControl:kw}=K(Ct.privateApis),Dw=({color:t,onColorChange:e})=>{let r=t&&dt(t).isValid()?t:"#ffffff";return(0,kr.jsx)(Ct.Dropdown,{className:"dataviews-controls__color-picker-dropdown",popoverProps:{resize:!1},renderToggle:({onToggle:o})=>(0,kr.jsx)(Ct.Button,{onClick:o,"aria-label":(0,tg.__)("Open color picker"),size:"small",icon:()=>(0,kr.jsx)(Ct.ColorIndicator,{colorValue:r})}),renderContent:()=>(0,kr.jsx)(Ct.__experimentalDropdownContentWrapper,{paddingSize:"none",children:(0,kr.jsx)(Ct.ColorPicker,{color:r,onChange:e,enableAlpha:!0})})})};function rg({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:l,description:s,setValue:u,isValid:c}=e,p=e.getValue({item:t})||"",f=(0,ed.useCallback)(v=>{r(u({item:t,value:v}))},[t,r,u]),m=(0,ed.useCallback)(v=>{r(u({item:t,value:v||""}))},[t,r,u]);return(0,kr.jsx)(kw,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:pe(c,i),label:a,placeholder:l,value:p,help:s,onChange:m,hideLabelFromVision:o,type:"text",prefix:(0,kr.jsx)(Ct.__experimentalInputControlPrefixWrapper,{variant:"control",children:(0,kr.jsx)(Dw,{color:p,onColorChange:f})})})}var vs=d(q(),1),gs=d(j(),1),td=d($(),1);var ps=d(R(),1);function og({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let[a,l]=(0,gs.useState)(!1),s=(0,gs.useCallback)(()=>{l(u=>!u)},[]);return(0,ps.jsx)(sr,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:a?"text":"password",suffix:(0,ps.jsx)(vs.__experimentalInputControlSuffixWrapper,{variant:"control",children:(0,ps.jsx)(vs.Button,{icon:a?Tn:_l,onClick:s,size:"small",label:a?(0,td.__)("Hide password"):(0,td.__)("Show password")})})})}function hs(t){return Array.isArray(t.elements)&&t.elements.length>0||typeof t.getElements=="function"}var ig=d(R(),1),ng={adaptiveSelect:hv,array:Wv,checkbox:dv,color:rg,combobox:$a,datetime:mv,date:vv,email:_v,telephone:yv,url:Sv,integer:Pv,number:Iv,password:og,radio:Ov,select:es,text:Vv,toggle:Mv,textarea:Hv,toggleGroup:zv};function Nw(t){return t&&typeof t=="object"&&typeof t.control=="string"}function Mw(t){let{control:e,...r}=t,o=bs(e);return o===null?null:function(i){return(0,ig.jsx)(o,{...i,config:r})}}function ag(t,e){return typeof t.Edit=="function"?t.Edit:typeof t.Edit=="string"?bs(t.Edit):Nw(t.Edit)?Mw(t.Edit):hs(t)&&t.type!=="array"?bs("adaptiveSelect"):e===null?null:bs(e)}function bs(t){return Object.keys(ng).includes(t)?ng[t]:null}function Fw(t,e,r){if(t.filterBy===!1)return!1;let o=t.filterBy?.operators?.filter(n=>r.includes(n))??e;return o.length===0?!1:{isPrimary:!!t.filterBy?.isPrimary,operators:o}}var sg=Fw;var Lw=t=>({item:e})=>{let r=t.split("."),o=e;for(let n of r)o.hasOwnProperty(n)?o=o[n]:o=void 0;return o},lg=Lw;var Bw=t=>({value:e})=>{let r=t.split("."),o={},n=o;for(let i of r.slice(0,-1))n[i]={},n=n[i];return n[r.at(-1)]=e,o},ug=Bw;var cg=d($(),1);function xs({item:t,field:e}){let{elements:r,isLoading:o}=Ke({elements:e.elements,getElements:e.getElements}),n=e.getValue({item:t});return o||r.length===0?n:r?.find(i=>i.value===n)?.label||e.getValue({item:t})}var dg=d(R(),1);function Re({item:t,field:e}){return e.hasElements?(0,dg.jsx)(xs,{item:t,field:e}):e.getValueFormatted({item:t,field:e})}var lr=(t,e,r)=>r==="asc"?t.localeCompare(e):e.localeCompare(t);function Ve(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)}function ur(t,e){if(typeof e.isValid.minLength?.constraint!="number")return!1;let r=e.getValue({item:t});return[void 0,"",null].includes(r)?!0:String(r).length>=e.isValid.minLength.constraint}function dr(t,e){if(typeof e.isValid.maxLength?.constraint!="number")return!1;let r=e.getValue({item:t});return[void 0,"",null].includes(r)?!0:String(r).length<=e.isValid.maxLength.constraint}function cr(t,e){if(e.isValid.pattern?.constraint===void 0)return!0;try{let r=new RegExp(e.isValid.pattern.constraint),o=e.getValue({item:t});return[void 0,"",null].includes(o)?!0:r.test(String(o))}catch{return!1}}function we(t,e){let o=(e.elements??[]).map(i=>i.value);if(o.length===0)return!0;let n=e.getValue({item:t});return[].concat(n).every(i=>o.includes(i))}function Hw({item:t,field:e}){return e.getValue({item:t})}var ht=Hw;var jw=/^[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 zw(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&!jw.test(r)?(0,cg.__)("Value must be a valid email address."):null}var fg={type:"email",render:Re,Edit:"email",sort:lr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Se,Ce],validOperators:[Ee,Pe,Ut,$t,Kt,Se,Ce,nt,it],format:{},getValueFormatted:ht,validate:{required:Ve,pattern:cr,minLength:ur,maxLength:dr,elements:we,custom:zw}};var mg=d($(),1);var bn=(t,e,r)=>r==="asc"?t-e:e-t;function ws(t,e){if(typeof e.isValid.min?.constraint!="number")return!1;let r=e.getValue({item:t});return[void 0,"",null].includes(r)?!0:Number(r)>=e.isValid.min.constraint}function _s(t,e){if(typeof e.isValid.max?.constraint!="number")return!1;let r=e.getValue({item:t});return[void 0,"",null].includes(r)?!0:Number(r)<=e.isValid.max.constraint}var pg={separatorThousand:","};function Ww({item:t,field:e}){let r=e.getValue({item:t});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;e.type!=="integer"?o=pg:o=e.format;let{separatorThousand:n}=o,i=Math.trunc(r);return n?String(i).replace(/\B(?=(\d{3})+(?!\d))/g,n):String(i)}function Gw(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&!Number.isInteger(r)?(0,mg.__)("Value must be an integer."):null}var vg={type:"integer",render:Re,Edit:"integer",sort:bn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ee,Pe,Fr,Lr,Br,Hr,ct],validOperators:[Ee,Pe,Fr,Lr,Br,Hr,ct,Se,Ce,nt,it],format:pg,getValueFormatted:Ww,validate:{required:Ve,min:ws,max:_s,elements:we,custom:Gw}};var gg=d($(),1);var hg={separatorThousand:",",separatorDecimal:".",decimals:2};function qw({item:t,field:e}){let r=e.getValue({item:t});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;e.type!=="number"?o=hg:o=e.format;let{separatorThousand:n,separatorDecimal:i,decimals:a}=o,l=r.toFixed(a),[s,u]=l.split("."),c=n?s.replace(/\B(?=(\d{3})+(?!\d))/g,n):s;return a===0?c:c+i+u}function Yw(t){return t===""||t===void 0||t===null}function Uw(t,e){let r=e.getValue({item:t});return!Yw(r)&&!Number.isFinite(r)?(0,gg.__)("Value must be a number."):null}var bg={type:"number",render:Re,Edit:"number",sort:bn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ee,Pe,Fr,Lr,Br,Hr,ct],validOperators:[Ee,Pe,Fr,Lr,Br,Hr,ct,Se,Ce,nt,it],format:hg,getValueFormatted:qw,validate:{required:Ve,min:ws,max:_s,elements:we,custom:Uw}};var xg={type:"text",render:Re,Edit:"text",sort:lr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Se,Ce],validOperators:[Ee,Pe,Ut,$t,Kt,Se,Ce,nt,it],format:{},getValueFormatted:ht,validate:{required:Ve,pattern:cr,minLength:ur,maxLength:dr,elements:we}};var ko=d(Ro(),1);var wg={datetime:(0,ko.getSettings)().formats.datetime,weekStartsOn:(0,ko.getSettings)().l10n.startOfWeek};function $w({item:t,field:e}){let r=e.getValue({item:t});if(["",void 0,null].includes(r))return"";let o;return e.type!=="datetime"?o=wg:o=e.format,(0,ko.dateI18n)(o.datetime,(0,ko.getDate)(r))}var Kw=(t,e,r)=>{let o=new Date(t).getTime(),n=new Date(e).getTime();return r==="asc"?o-n:n-o},_g={type:"datetime",render:Re,Edit:"datetime",sort:Kw,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[qr,Yr,jr,zr,Wr,Gr,ft,xt],validOperators:[qr,Yr,jr,zr,Wr,Gr,ft,xt],format:wg,getValueFormatted:$w,validate:{required:Ve,elements:we}};var Do=d(Ro(),1);var yg={date:(0,Do.getSettings)().formats.date,weekStartsOn:(0,Do.getSettings)().l10n.startOfWeek};function Qw({item:t,field:e}){let r=e.getValue({item:t});if(["",void 0,null].includes(r))return"";let o;return e.type!=="date"?o=yg:o=e.format,(0,Do.dateI18n)(o.date,(0,Do.getDate)(r))}var Xw=(t,e,r)=>{let o=new Date(t).getTime(),n=new Date(e).getTime();return r==="asc"?o-n:n-o},Sg={type:"date",render:Re,Edit:"date",sort:Xw,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[qr,Yr,jr,zr,Wr,Gr,ft,xt,ct],validOperators:[qr,Yr,jr,zr,Wr,Gr,ft,xt,ct],format:yg,getValueFormatted:Qw,validate:{required:Ve,elements:we}};var ys=d($(),1);function Cg(t,e){return e.getValue({item:t})===!0}function Zw({item:t,field:e}){let r=e.getValue({item:t});return r===!0?(0,ys.__)("True"):r===!1?(0,ys.__)("False"):""}function Jw(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&![!0,!1].includes(r)?(0,ys.__)("Value must be true, false, or undefined"):null}var e_=(t,e,r)=>{let o=!!t;return o===!!e?0:r==="asc"?o?1:-1:o?-1:1},Eg={type:"boolean",render:Re,Edit:"checkbox",sort:e_,validate:{required:Cg,elements:we,custom:Jw},enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ee,Pe],validOperators:[Ee,Pe],format:{},getValueFormatted:Zw};var Pg={type:"media",render:()=>null,Edit:null,sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:ht,validate:{}};var rd=d($(),1);function Ag(t,e){let r=e.getValue({item:t});return Array.isArray(r)&&r.length>0&&r.every(o=>![void 0,"",null].includes(o))}function Ig({item:t,field:e}){let r=e.getValue({item:t});return(Array.isArray(r)?r:[]).join(", ")}function t_({item:t,field:e}){return Ig({item:t,field:e})}function r_(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&!Array.isArray(r)?(0,rd.__)("Value must be an array."):r.every(o=>typeof o=="string")?null:(0,rd.__)("Every value must be a string.")}var o_=(t,e,r)=>{let o=Array.isArray(t)?t:[],n=Array.isArray(e)?e:[];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)},Tg={type:"array",render:t_,Edit:"array",sort:o_,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Se,Ce],validOperators:[Se,Ce,nt,it],format:{},getValueFormatted:Ig,validate:{required:Ag,elements:we,custom:r_}};function n_({item:t,field:e}){return e.getValue({item:t})?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":""}var Og={type:"password",render:Re,Edit:"password",sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:n_,validate:{required:Ve,pattern:cr,minLength:ur,maxLength:dr,elements:we}};var Rg={type:"telephone",render:Re,Edit:"telephone",sort:lr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Se,Ce],validOperators:[Ee,Pe,Ut,$t,Kt,Se,Ce,nt,it],format:{},getValueFormatted:ht,validate:{required:Ve,pattern:cr,minLength:ur,maxLength:dr,elements:we}};var Vg=d($(),1);var xn=d(R(),1);function i_({item:t,field:e}){if(e.hasElements)return(0,xn.jsx)(xs,{item:t,field:e});let r=ht({item:t,field:e});return!r||!dt(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 a_(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&!dt(r).isValid()?(0,Vg.__)("Value must be a valid color."):null}var s_=(t,e,r)=>{let o=dt(t),n=dt(e);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},kg={type:"color",render:i_,Edit:"color",sort:s_,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Se,Ce],validOperators:[Ee,Pe,Se,Ce],format:{},getValueFormatted:ht,validate:{required:Ve,elements:we,custom:a_}};var Dg={type:"url",render:Re,Edit:"url",sort:lr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Se,Ce],validOperators:[Ee,Pe,Ut,$t,Kt,Se,Ce,nt,it],format:{},getValueFormatted:ht,validate:{required:Ve,pattern:cr,minLength:ur,maxLength:dr,elements:we}};var l_=(t,e,r)=>typeof t=="number"&&typeof e=="number"?bn(t,e,r):lr(t,e,r),Ng={render:Re,Edit:null,sort:l_,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ee,Pe],validOperators:Op(),format:{},getValueFormatted:ht,validate:{required:Ve,elements:we}};function Mg(t,e){let r;t.isValid?.required===!0&&e.validate.required!==void 0&&(r={constraint:!0,validate:e.validate.required});let o;(t.isValid?.elements===!0||t.isValid?.elements===void 0&&(t.elements||t.getElements))&&e.validate.elements!==void 0&&(o={constraint:!0,validate:e.validate.elements});let n;typeof t.isValid?.min=="number"&&e.validate.min!==void 0&&(n={constraint:t.isValid.min,validate:e.validate.min});let i;typeof t.isValid?.max=="number"&&e.validate.max!==void 0&&(i={constraint:t.isValid.max,validate:e.validate.max});let a;typeof t.isValid?.minLength=="number"&&e.validate.minLength!==void 0&&(a={constraint:t.isValid.minLength,validate:e.validate.minLength});let l;typeof t.isValid?.maxLength=="number"&&e.validate.maxLength!==void 0&&(l={constraint:t.isValid.maxLength,validate:e.validate.maxLength});let s;t.isValid?.pattern!==void 0&&e.validate.pattern!==void 0&&(s={constraint:t.isValid?.pattern,validate:e.validate.pattern});let u=t.isValid?.custom??e.validate.custom;return{required:r,elements:o,min:n,max:i,minLength:a,maxLength:l,pattern:s,custom:u}}function Fg(t){return t.validOperators.reduce((e,r)=>{let o=Vo(r);return o?.filter&&(e[r]=o.filter),e},{})}function u_(t,e){return{...e.format,...t.format}}var Lg=u_;function d_(t){let e=[fg,vg,bg,xg,_g,Sg,Eg,Pg,Tg,Og,Rg,kg,Dg].find(r=>r?.type===t);return e||Ng}function Bg(t){return t.map(e=>{let r=d_(e.type),o=e.getValue||lg(e.id),n=function(i,a,l){let s=o({item:i}),u=o({item:a});return e.sort?e.sort(s,u,l):r.sort(s,u,l)};return{id:e.id,label:e.label||e.id,header:e.header||e.label||e.id,description:e.description,placeholder:e.placeholder,getValue:o,setValue:e.setValue||ug(e.id),elements:e.elements,getElements:e.getElements,hasElements:hs(e),isVisible:e.isVisible,enableHiding:e.enableHiding??!0,readOnly:e.readOnly??!1,type:r.type,render:e.render??r.render,Edit:ag(e,r.Edit),sort:n,enableSorting:e.enableSorting??r.enableSorting,enableGlobalSearch:e.enableGlobalSearch??r.enableGlobalSearch,isValid:Mg(e,r),filterBy:sg(e,r.defaultOperators,r.validOperators),filter:Fg(r),format:Lg(e,r),getValueFormatted:e.getValueFormatted??r.getValueFormatted}})}var No=d(j(),1);function Hg(t,e,r){let o=(0,No.useRef)(t),n=(0,No.useRef)(r),[i,a]=(0,No.useState)(!e);return(0,No.useEffect)(()=>{e||(o.current=t,n.current=r,a(!0))},[t,e,r]),{data:e&&o.current?.length?o.current:t,paginationInfo:e&&o.current?.length?n.current:r,hasInitiallyLoaded:i}}var tt=d(R(),1),c_=t=>t.id,f_=()=>!0,m_=[],p_=Zr.filter(t=>!t.isPicker);function v_({header:t,search:e=!0,searchLabel:r=void 0}){return(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsxs)(F,{direction:"row",align:"top",justify:"space-between",className:"dataviews__view-actions",gap:"xs",children:[(0,tt.jsxs)(F,{direction:"row",justify:"start",gap:"sm",className:"dataviews__search",children:[e&&(0,tt.jsx)(Bu,{label:r}),(0,tt.jsx)(qa,{})]}),(0,tt.jsxs)(F,{direction:"row",gap:"xs",style:{flexShrink:0},children:[(0,tt.jsx)(av,{}),t]})]}),(0,tt.jsx)(Ya,{className:"dataviews-filters__container"}),(0,tt.jsx)(Fu,{}),(0,tt.jsx)(Lu,{})]})}function g_({view:t,onChangeView:e,fields:r,search:o=!0,searchLabel:n=void 0,actions:i=m_,data:a,getItemId:l=c_,getItemLevel:s,isLoading:u=!1,paginationInfo:c,defaultLayouts:p,selection:f,onChangeSelection:m,onClickItem:v,renderItemLink:y,isItemClickable:b=f_,header:x,children:S,config:A={perPageSizes:[10,20,50,100]},empty:V,onReset:T}){let{infiniteScrollHandler:N}=c,D=(0,bt.useRef)(null),[E,I]=(0,bt.useState)(0),k=(0,Ss.useResizeObserver)(Z=>{I(Z[0].borderBoxSize[0].inlineSize)},{box:"border-box"}),[g,P]=(0,bt.useState)([]),_=f===void 0||m===void 0,h=_?g:f,[O,w]=(0,bt.useState)(null);function C(Z){let ge=typeof Z=="function"?Z(h):Z;_&&P(ge),m&&m(ge)}let M=(0,bt.useMemo)(()=>Bg(r),[r]),H=(0,bt.useMemo)(()=>h.filter(Z=>a.some(ge=>l(ge)===Z)),[h,a,l]),ae=oi(M,t),_e=(0,bt.useMemo)(()=>(ae||[]).some(Z=>Z.isPrimary||Z.isLocked),[ae]),[ke,He]=(0,bt.useState)(_e);(0,bt.useEffect)(()=>{_e&&!ke&&He(!0)},[_e,ke]),(0,bt.useEffect)(()=>{if(!t.infiniteScrollEnabled||!D.current)return;let Z=(0,Ss.throttle)(pr=>{let vr=pr.target,co=vr.scrollTop,fo=vr.scrollHeight,Mo=vr.clientHeight;co+Mo>=fo-100&&N?.()},100),ge=D.current;return ge.addEventListener("scroll",Z),()=>{ge.removeEventListener("scroll",Z),Z.cancel()}},[N,t.infiniteScrollEnabled]);let rt=(0,bt.useMemo)(()=>Object.fromEntries(Object.entries(p).filter(([Z])=>p_.some(ge=>ge.type===Z))),[p]),{data:qt,paginationInfo:mr,hasInitiallyLoaded:Y}=Hg(a,u,c);return rt[t.type]?(0,tt.jsx)(G.Provider,{value:{view:t,onChangeView:e,fields:M,actions:i,data:qt,isLoading:u,paginationInfo:mr,selection:H,onChangeSelection:C,openedFilter:O,setOpenedFilter:w,getItemId:l,getItemLevel:s,isItemClickable:b,onClickItem:v,renderItemLink:y,containerWidth:E,containerRef:D,resizeObserverRef:k,defaultLayouts:rt,filters:ae,isShowingFilter:ke,setIsShowingFilter:He,config:A,empty:V,hasInitiallyLoaded:Y,hasInfiniteScrollHandler:!!N,onReset:T},children:(0,tt.jsx)("div",{className:"dataviews-wrapper",ref:D,children:S??(0,tt.jsx)(v_,{header:x,search:o,searchLabel:n})})}):null}var Gt=g_;Gt.BulkActionToolbar=Qi;Gt.Filters=ii;Gt.FiltersToggled=Ya;Gt.FiltersToggle=qa;Gt.Layout=Fu;Gt.LayoutSwitcher=zu;Gt.Pagination=Bl;Gt.Search=Bu;Gt.ViewConfig=Wu;Gt.Footer=Lu;var od=Gt;var jg=d(j(),1),zg=d(R(),1),Wg=(0,jg.forwardRef)(({children:t,className:e,ariaLabel:r,as:o="div",...n},i)=>(0,zg.jsx)(o,{ref:i,className:z("admin-ui-navigable-region",e),"aria-label":r,role:"region",tabIndex:"-1",...n,children:t}));Wg.displayName="NavigableRegion";var Gg=Wg;var uo=d(q(),1);var qg=d(q(),1),{Fill:Yg,Slot:Ug}=(0,qg.createSlotFill)("SidebarToggle");var Dr=d(R(),1);function $g({breadcrumbs:t,badges:e,title:r,subTitle:o,actions:n,showSidebarToggle:i=!0}){return(0,Dr.jsxs)(uo.__experimentalVStack,{className:"admin-ui-page__header",as:"header",children:[(0,Dr.jsxs)(uo.__experimentalHStack,{justify:"space-between",spacing:2,children:[(0,Dr.jsxs)(uo.__experimentalHStack,{spacing:2,justify:"left",children:[i&&(0,Dr.jsx)(Ug,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),r&&(0,Dr.jsx)(uo.__experimentalHeading,{as:"h2",level:3,weight:500,truncate:!0,children:r}),t,e]}),(0,Dr.jsx)(uo.__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 di=d(R(),1);function Kg({breadcrumbs:t,badges:e,title:r,subTitle:o,children:n,className:i,actions:a,hasPadding:l=!1,showSidebarToggle:s=!0}){let u=z("admin-ui-page",i);return(0,di.jsxs)(Gg,{className:u,ariaLabel:r,children:[(r||t||e)&&(0,di.jsx)($g,{breadcrumbs:t,badges:e,title:r,subTitle:o,actions:a,showSidebarToggle:s}),l?(0,di.jsx)("div",{className:"admin-ui-page__content has-padding",children:n}):n]})}Kg.SidebarToggleFill=Yg;var nd=Kg;var ci=d(id()),Es=d(q()),ld=d(Yt()),fr=d(j()),nh=d(Zg());var Jg=d(Sl()),{lock:ZM,unlock:Cs}=(0,Jg.__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 h_=d(Yt()),b_=d(id()),x_={type:"table",sort:{field:"date",direction:"desc"},fields:["author","status","date"],titleField:"title",mediaField:"featured_media",descriptionField:"excerpt"},eh={table:{},grid:{},list:{}},ad=[{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 th(t){return t==="all"?{}:{filters:[{field:"status",operator:"is",value:t}]}}function rh(t){return{...x_,showLevels:t?.hierarchical}}function oh(t,e){let r={};if(t.perPage!==void 0&&(r.per_page=t.perPage),t.page!==void 0&&(r.page=t.page),[void 0,""].includes(t.search)||(r.search=t.search),t.sort?.field!==void 0){let s=t.sort.field;s==="attached_to"&&(s="parent"),r.orderby=s}t.sort?.direction!==void 0&&(r.order=t.sort.direction),t.showLevels&&(r.orderby_hierarchy=!0);let o=t.filters?.find(s=>s.field==="status");o?r.status=o.value:e==="attachment"?r.status="inherit":r.status="draft,future,pending,private,publish";let n=t.filters?.find(s=>s.field==="author");n&&n.operator==="is"?r.author=n.value:n&&n.operator==="isNot"&&(r.author_exclude=n.value);let i=t.filters?.find(s=>s.field==="comment_status");i&&i.operator==="is"?r.comment_status=i.value:i&&i.operator==="isNot"&&(r.comment_status_exclude=i.value);let a=t.filters?.find(s=>s.field==="media_type");a&&(r.media_type=a.value);let l=t.filters?.find(s=>s.field==="date");return l&&l.value&&(l.operator==="before"?r.before=l.value:l.operator==="after"&&(r.after=l.value)),e==="attachment"&&(r._embed="wp:attached-to"),r}if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='b2d25721ea']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","b2d25721ea"),t.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;margin:0;padding:0;width:100%}fieldset.fields__media-edit .components-base-control__label{color:#1e1e1e}fieldset.fields__media-edit{container-type:inline-size}fieldset.fields__media-edit .fields__media-edit-compact-group{border:1px dashed #949494;border-radius:4px;overflow:hidden}fieldset.fields__media-edit .fields__media-edit-compact-group.is-single{border-radius:2px}fieldset.fields__media-edit .fields__media-edit-compact-group .fields__media-edit-picker-button{border:0;border-radius:0}fieldset.fields__media-edit .fields__media-edit-compact-group .fields__media-edit-picker-button:focus-visible{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color)}fieldset.fields__media-edit .fields__media-edit-compact-group .fields__media-edit-compact:not(:last-child){border-bottom:1px solid #f0f0f0}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-compact{min-width:0;position:relative}fieldset.fields__media-edit .fields__media-edit-compact:focus-within .fields__media-edit-compact-movers,fieldset.fields__media-edit .fields__media-edit-compact:hover .fields__media-edit-compact-movers{opacity:1}fieldset.fields__media-edit .fields__media-edit-compact .fields__media-edit-compact-movers{background:#fff;border-radius:2px;opacity:0;pointer-events:none;position:absolute;right:8px;top:50%;transform:translateY(-50%);z-index:1}fieldset.fields__media-edit .fields__media-edit-compact .fields__media-edit-compact-movers *{pointer-events:auto}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:2px;cursor:pointer;display:flex;gap:8px;min-height:40px;min-width:0;padding:4px 8px;position:relative}fieldset.fields__media-edit .fields__media-edit-picker-button:not(.has-attachment){border-color:var(--wp-admin-theme-color);color:var(--wp-admin-theme-color)}fieldset.fields__media-edit .fields__media-edit-picker-button:not(.has-attachment):hover{background-color:color-mix(in srgb,var(--wp-admin-theme-color,#3858e9) 4%,#0000);border-color:var(--wp-admin-theme-color-darker-20);color:var(--wp-admin-theme-color-darker-20)}fieldset.fields__media-edit .fields__media-edit-picker-button:hover{color:var(--wp-admin-theme-color)}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}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-actions{background:#fff;border-radius:2px;position:absolute;right:4px;top:4px}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item{border-radius:4px;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 .fields__media-edit-picker-button{border-radius:4px}fieldset.fields__media-edit .fields__media-edit-expanded.is-empty .fields__media-edit-picker-button{border-radius:2px}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{border:0;margin:0;padding:0}.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(t)}var{useEntityRecordsWithPermissions:E_}=Cs(ci.privateApis),{usePostActions:P_,usePostFields:A_}=Cs(nh.privateApis),{Tabs:sd}=Cs(Es.privateApis);function I_(t){return t.id.toString()}function T_(t){return t.level??0}function O_(){let t=C_(),{type:e,slug:r="all"}=w_({from:"/types/$type/list/$slug"}),o=__(),n=y_({from:"/types/$type/list/$slug"}),i=(0,ld.useSelect)(_=>_(ci.store).getPostType(e),[e]),a=i?.labels,l=(0,ld.useSelect)(_=>_(ci.store).canUser("create",{kind:"postType",name:e}),[e]),s=(0,fr.useMemo)(()=>rh(i),[i]),u=(0,fr.useMemo)(()=>th(r),[r]),c=(0,fr.useCallback)(_=>{o({search:{...n,..._}})},[n,o]),{view:p,isModified:f,updateView:m,resetToDefault:v}=Rs({kind:"postType",name:e,slug:"default-new",defaultView:s,activeViewOverrides:u,queryParams:n,onChangeQueryParams:c}),y=()=>{v(),t()},b=_=>{m(_),_.type!==p.type&&t()},x=(0,fr.useMemo)(()=>oh(p,e),[p,e]),{records:S,totalItems:A,totalPages:V,isResolving:T}=E_("postType",e,x),N=A_({postType:e}),D=(0,fr.useMemo)(()=>N.filter(_=>!(_.id==="status"&&r!=="all")).map(_=>_.id==="status"?{..._,filterBy:!1}:_),[N,r]),E=(0,fr.useCallback)(_=>{let h=_.map(C=>C.id.toString()),O=n.postIds||[],w=O.filter(C=>!h.includes(C));w.length!==O.length?o({search:{...n,postIds:w.length>0?w:void 0}}):t()},[t,n,o]),I=P_({postType:e,context:"list",onActionPerformed:(_,h)=>{(_==="move-to-trash"||_==="permanently-delete")&&E(h)}}),k=(0,fr.useMemo)(()=>[...I?.flatMap(_=>{switch(_.id){case"permanently-delete":return[{..._,isEligible(h){return h.type==="attachment"?!0:_.isEligible?.(h)??!1}}];case"move-to-trash":return[{..._,isEligible(h){return h.type==="attachment"?!1:_.isEligible?.(h)??!1}}];case"view-post-revisions":return[]}return[_]})],[I]),g=(0,fr.useCallback)(_=>{o({to:`/types/${e}/list/${_}`})},[o,e]);if(!i)return null;let P=n.postIds??[];return p.type==="list"&&P.length===0&&S?.length>0&&P.push(S[0].id.toString()),p.type==="list"&&P.splice(1),React.createElement(nd,{title:i.labels?.name,subTitle:i.labels?.description,className:`${i.name.toLowerCase()}-page`,actions:a?.add_new_item&&l&&e!=="attachment"&&React.createElement(Es.Button,{variant:"primary",onClick:()=>{o({to:`/types/${e}/new`})},size:"compact"},a.add_new_item),hasPadding:!1},ad.length>1&&React.createElement("div",{className:"routes-post-list__tabs-wrapper"},React.createElement(sd,{onSelect:g,selectedTabId:r??"all"},React.createElement(sd.TabList,null,ad.map(_=>React.createElement(sd.Tab,{tabId:_.slug,key:_.slug},_.label))))),React.createElement(od,{data:S,fields:D,view:p,onChangeView:b,actions:k,isLoading:T,paginationInfo:{totalItems:A,totalPages:V},defaultLayouts:eh,getItemId:I_,getItemLevel:T_,selection:P,onReset:f?y:!1,onChangeSelection:_=>{o({search:{...n,postIds:_.length>0?_:void 0,edit:_.length===0?void 0:n.edit}})},renderItemLink:({item:_,...h})=>React.createElement(S_,{to:`/types/${e}/edit/${encodeURIComponent(_.id)}`,...h,onClick:O=>{O.stopPropagation()}})}))}var R_=O_;export{R_ 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..b0b018112292e --- /dev/null +++ b/src/wp-includes/build/routes/post-list/route.js @@ -0,0 +1,328 @@ +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 +var SCALAR_VALUES = [ + "titleField", + "mediaField", + "descriptionField", + "showTitle", + "showMedia", + "showDescription", + "showLevels", + "infiniteScrollEnabled" +]; +function mergeActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + for (const key of SCALAR_VALUES) { + if (key in activeViewOverrides) { + result = { ...result, [key]: activeViewOverrides[key] }; + } + } + 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 + }; + } + } + if (activeViewOverrides.layout) { + result = { + ...result, + layout: { + ...result.layout, + ...activeViewOverrides.layout + } + }; + } + if (activeViewOverrides.groupBy) { + result = { + ...result, + groupBy: activeViewOverrides.groupBy + }; + } + 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..3eaf44669504e --- /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' => 'cf1814988f44c96c4aea'); \ 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..e6660279cb502 --- /dev/null +++ b/src/wp-includes/build/routes/post-list/route.min.js @@ -0,0 +1 @@ +var q=Object.create;var T=Object.defineProperty;var K=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var M=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var C=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of z(t))!R.call(e,s)&&s!==r&&T(e,s,{get:()=>t[s],enumerable:!(i=K(t,s))||i.enumerable});return e};var l=(e,t,r)=>(r=e!=null?q(M(e)):{},C(t||!e||!e.__esModule?T(r,"default",{value:e,enumerable:!0}):r,e));var p=u((J,S)=>{S.exports=window.wp.data});var y=u((X,x)=>{x.exports=window.wp.coreData});var P=u((v,A)=>{A.exports=window.wp.element});var g=u((O,_)=>{_.exports=window.wp.preferences});var c=l(p()),d=l(y());import{notFound as E}from"@wordpress/route";var b=l(P(),1),F=l(p(),1),Q=l(g(),1);function m(e,t,r){return`dataviews-${e}-${t}-${r}`}var N=["titleField","mediaField","descriptionField","showTitle","showMedia","showDescription","showLevels","infiniteScrollEnabled"];function h(e,t,r){if(!t)return e;let i=e;for(let s of N)s in t&&(i={...i,[s]:t[s]});if(t.filters&&t.filters.length>0){let s=new Set(t.filters.map(o=>o.field)),n=(e.filters??[]).filter(o=>!s.has(o.field));i={...i,filters:[...n,...t.filters]}}return t.sort&&r&&e.sort?.field===r.sort?.field&&e.sort?.direction===r.sort?.direction&&(i={...i,sort:t.sort}),t.layout&&(i={...i,layout:{...i.layout,...t.layout}}),t.groupBy&&(i={...i,groupBy:t.groupBy}),i}var L=l(p(),1),V=l(g(),1);async function w(e){let{kind:t,name:r,slug:i,defaultView:s,activeViewOverrides:n,queryParams:o}=e,f=m(t,r,i),j=(0,L.select)(V.store).get("core/views",f)??s,U=o?.page??1,$=o?.search??"";return h({...j,page:U,search:$},n,s)}var D=l(p()),k=l(y()),W={type:"table",sort:{field:"date",direction:"desc"},fields:["author","status","date"],titleField:"title",mediaField:"featured_media",descriptionField:"excerpt"};function Y(e){return e==="all"?{}:{filters:[{field:"status",operator:"is",value:e}]}}function G(e){return{...W,showLevels:e?.hierarchical}}async function I(e,t,r){let i=await(0,D.resolveSelect)(k.store).getPostType(e),s=G(i);return w({kind:"postType",name:e,slug:"default-new",defaultView:s,activeViewOverrides:Y(t??"all"),queryParams:r})}function B(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 n=e.filters?.find(a=>a.field==="comment_status");n&&n.operator==="is"?r.comment_status=n.value:n&&n.operator==="isNot"&&(r.comment_status_exclude=n.value);let o=e.filters?.find(a=>a.field==="media_type");o&&(r.media_type=o.value);let f=e.filters?.find(a=>a.field==="date");return f&&f.value&&(f.operator==="before"?r.before=f.value:f.operator==="after"&&(r.after=f.value)),t==="attachment"&&(r._embed="wp:attached-to"),r}var Te={beforeLoad:async({params:e})=>{try{if(!await(0,c.resolveSelect)(d.store).getPostType(e.type))throw E()}catch{throw E()}},title:async({params:e})=>(await(0,c.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 o=r.postIds[0].toString();return{postType:t.type,postId:o,isPreview:!0,editLink:`/types/${t.type}/edit/${o}`}}let s=B(i,t.type),n=await(0,c.resolveSelect)(d.store).getEntityRecords("postType",t.type,{...s,per_page:1});if(n&&n.length>0){let o=n[0].id.toString();return{postType:t.type,postId:o,isPreview:!0,editLink:`/types/${t.type}/edit/${o}`}}}};export{Te 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..e6def657bb6bd --- /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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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..042585cb06891 --- /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' => '18e5a1185ec0c9a23034'); \ 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..6f8fef2c084e4 --- /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 T=d((xa,B)=>{B.exports=window.wp.i18n});var i=d((Sa,N)=>{N.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((Va,z)=>{z.exports=window.wp.editor});var W=d((Oa,E)=>{E.exports=window.wp.compose});var J=d((Ma,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,H.jsx)(o,{ref:s,className:g("admin-ui-navigable-region",t),"aria-label":e,role:"region",tabIndex:"-1",...f,children:a}));F.displayName="NavigableRegion";var I=F;var m=r(i(),1);var U=r(i(),1),{Fill:V,Slot:O}=(0,U.createSlotFill)("SidebarToggle");var l=r(p(),1);function M({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 q({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)(I,{className:w,ariaLabel:e,children:[(e||a||t)&&(0,n.jsx)(M,{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]})}q.SidebarToggleFill=V;var C=q;var L=r(T()),Q=r(x()),Y=r(W()),y=r(i());var h=r(J(),1),S=r(p(),1),k=(0,S.jsx)(h.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",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..afd0f5cc5b832 --- /dev/null +++ b/src/wp-includes/build/routes/template-list/content.js @@ -0,0 +1,19314 @@ +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 = useState29({ + 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] + ); + useEffect22( + 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, useState29 = React9.useState, useEffect22 = 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 +var SCALAR_VALUES = [ + "titleField", + "mediaField", + "descriptionField", + "showTitle", + "showMedia", + "showDescription", + "showLevels", + "infiniteScrollEnabled" +]; +function mergeActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + for (const key of SCALAR_VALUES) { + if (key in activeViewOverrides) { + result = { ...result, [key]: activeViewOverrides[key] }; + } + } + 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 + }; + } + } + if (activeViewOverrides.layout) { + result = { + ...result, + layout: { + ...result.layout, + ...activeViewOverrides.layout + } + }; + } + if (activeViewOverrides.groupBy) { + result = { + ...result, + groupBy: activeViewOverrides.groupBy + }; + } + return result; +} +function stripActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + for (const key of SCALAR_VALUES) { + if (key in activeViewOverrides) { + const { [key]: _, ...rest } = result; + result = rest; + } + } + 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 + }; + } + if (activeViewOverrides.layout && "layout" in result && result.layout) { + const layout = { ...result.layout }; + for (const key of Object.keys(activeViewOverrides.layout)) { + delete layout[key]; + } + result = { + ...result, + layout: Object.keys(layout).length > 0 ? layout : void 0 + }; + } + if (activeViewOverrides.groupBy && "groupBy" in result) { + const { groupBy: _, ...rest } = result; + result = rest; + } + 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_element56 = __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/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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives9.Path, { fillRule: "evenodd", clipRule: "evenodd", 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" }) }); + +// 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", clipRule: "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" }) }); + +// 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", clipRule: "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" }) }); + +// 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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/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 gapTokens = { + xs: "var(--wpds-dimension-gap-xs, 4px)", + sm: "var(--wpds-dimension-gap-sm, 8px)", + md: "var(--wpds-dimension-gap-md, 12px)", + lg: "var(--wpds-dimension-gap-lg, 16px)", + xl: "var(--wpds-dimension-gap-xl, 24px)", + "2xl": "var(--wpds-dimension-gap-2xl, 32px)", + "3xl": "var(--wpds-dimension-gap-3xl, 40px)" +}; +var Stack = (0, import_element2.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render: render4, ...props }, ref) { + const style = { + gap: gap && gapTokens[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/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: () => { + }, + hasInitiallyLoaded: false, + 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_element11 = __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), + 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)(void 0); + 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 = void 0; + } + 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/hooks/use-delayed-loading.mjs +var import_element10 = __toESM(require_element(), 1); +function useDelayedLoading(isLoading, options = { delay: 400 }) { + const [showLoader, setShowLoader] = (0, import_element10.useState)(false); + (0, import_element10.useEffect)(() => { + if (!isLoading) { + return; + } + const timeout = setTimeout(() => { + setShowLoader(true); + }, options.delay); + return () => { + clearTimeout(timeout); + setShowLoader(false); + }; + }, [isLoading, options.delay]); + return showLoader; +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs +var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); +function getEffectiveAlign(explicitAlign, fieldType) { + if (explicitAlign) { + return explicitAlign; + } + if (fieldType === "integer" || fieldType === "number") { + return "end"; + } + return void 0; +} +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_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 || 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] ?? {}; + const field = fields.find((f2) => f2.id === column); + const effectiveAlign = getEffectiveAlign(align, field?.type); + return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + "td", + { + style: { + width, + maxWidth, + minWidth + }, + children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + TableColumnField, + { + fields, + item, + column, + align: effectiveAlign + } + ) + }, + 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_element11.useContext)(dataviews_context_default); + const isDelayedLoading = useDelayedLoading(isLoading); + const headerMenuRefs = (0, import_element11.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element11.useRef)(void 0); + const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element11.useState)(); + 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 + }); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data); + 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)(); + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + id: tableNoticeId, + children: empty + } + ); + } + 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, + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }), + "aria-busy": isLoading, + "aria-describedby": tableNoticeId, + role: isInfiniteScroll ? "feed" : void 0, + inert: !isInfiniteScroll && isLoading ? "true" : 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 field = fields.find( + (f2) => f2.id === column + ); + const effectiveAlign = getEffectiveAlign( + align, + field?.type + ); + const canInsertOrMove = view.layout?.enableMoving ?? true; + return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)( + "th", + { + style: { + width, + maxWidth, + minWidth, + textAlign: effectiveAlign + }, + "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) + )) }) + ] + } + ), + isInfiniteScroll && isLoading && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "dataviews-loading", id: tableNoticeId, children: /* @__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_element13 = __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_element12 = __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_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_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_element13.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, + inert, + isLoading, + view, + fields, + selection, + onChangeSelection, + onClickItem, + isItemClickable, + renderItemLink, + getItemId: getItemId3, + 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 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, + inert, + 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 isDelayedLoading = useDelayedLoading(!!isLoading); + 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; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + children: empty + } + ); + } + const gridProps = { + className: clsx_default(className, { + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }), + inert: !isInfiniteScroll && !!isLoading ? "true" : void 0, + 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. + !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime50.jsx)( + CompositeGrid, + { + ...gridProps, + data, + isInfiniteScroll: !!isInfiniteScroll + } + ), + isInfiniteScroll && 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_element14 = __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_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_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_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_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 isDelayedLoading = useDelayedLoading(!!isLoading); + 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_element14.useCallback)( + (item) => `${baseId}-${getItemId3(item)}`, + [baseId, getItemId3] + ); + 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; + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = hasData && groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + children: empty + } + ); + } + 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 + ), + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }), + role: view.infiniteScrollEnabled ? "feed" : "grid", + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + inert: !isInfiniteScroll && !!isLoading ? "true" : void 0, + 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 + ); + }) + } + ), + isInfiniteScroll && 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_element15 = __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_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_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_element16 = __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_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_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_element16.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 isDelayedLoading = useDelayedLoading(!!isLoading); + const hasData = !!data?.length; + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = hasData && groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + children: empty + } + ); + } + const isInert = !isInfiniteScroll && !!isLoading; + const wrapperClassName = clsx_default("dataviews-view-activity", className, { + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }); + 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, + inert: isInert ? "true" : void 0, + 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, + inert: isInert ? "true" : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(ActivityItems, { ...props }) + } + ), + isInfiniteScroll && 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_element20 = __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_element18 = __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_element17 = __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_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_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_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_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_element17.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_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_runtime57 = __toESM(require_jsx_runtime(), 1); +var GridItems = (0, import_element19.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_element20.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_element21 = __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_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 || 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_element21.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element21.useRef)(void 0); + 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 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_element22 = __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_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_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_element23 = __toESM(require_element(), 1); +var import_jsx_runtime61 = __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_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_element31 = __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_element28 = __toESM(require_element(), 1); + +// node_modules/@ariakit/core/esm/__chunks/XMCVU3LR.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 = { ...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/YXGXYGQX.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 = { ...element.props }; + return props.ref || element.ref; +} +function mergeProps2(base, overrides) { + const props = { ...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] ? { ...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/3DNM6L6E.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) { + var _a; + const { activeElement } = getDocument(node); + if (!(activeElement == null ? void 0 : activeElement.nodeName)) { + return null; + } + if (isFrame(activeElement) && ((_a = activeElement.contentDocument) == null ? void 0 : _a.body)) { + 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/SNHYQNEZ.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 = { ...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/KPHZR4MB.js +var React6 = __toESM(require_react(), 1); +var import_react5 = __toESM(require_react(), 1); +var _React = { ...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 { ...props, wrapElement }; +} +function useMetadataProps(props, key, value) { + const parent = props.onLoadedMetadataCapture; + const onLoadedMetadataCapture = (0, import_react5.useMemo)(() => { + return Object.assign(() => { + }, { ...parent, [key]: value }); + }, [parent, key, value]); + return [parent == null ? void 0 : parent[key], { onLoadedMetadataCapture }]; +} +var hasInstalledGlobalEventListeners = false; +function useIsMouseMoving() { + (0, import_react5.useEffect)(() => { + if (hasInstalledGlobalEventListeners) return; + addGlobalEventListener("mousemove", setMouseMoving, true); + addGlobalEventListener("mousedown", resetMouseMoving, true); + addGlobalEventListener("mouseup", resetMouseMoving, true); + addGlobalEventListener("keydown", resetMouseMoving, true); + addGlobalEventListener("scroll", resetMouseMoving, true); + hasInstalledGlobalEventListeners = 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/GWSL6KNJ.js +var React7 = __toESM(require_react(), 1); +var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1); +function forwardRef22(render4) { + const Role = React7.forwardRef( + // @ts-ignore Incompatible with React 19 types. Ignore for now. + (props, ref) => render4({ ...props, ref }) + ); + Role.displayName = render4.displayName || render4.name; + return Role; +} +function memo22(Component, propsAreEqual) { + return React7.memo(Component, propsAreEqual); +} +function createElement3(Type, props) { + const { wrapElement, render: render4, ...rest } = props; + const mergedRef = useMergeRefs(props.ref, getRefProperty(render4)); + let element; + if (React7.isValidElement(render4)) { + const renderProps = { + // @ts-ignore Incompatible with React 19 types. Ignore for now. + ...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, { ...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, { ...props, children }), + /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(context.Provider, { ...props }) + ); + }; + const ScopedContextProvider = (props) => { + return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(ContextProvider, { ...props, children: scopedProviders.reduceRight( + (children, Provider) => /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Provider, { ...props, children }), + /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(scopedContext.Provider, { ...props }) + ) }); + }; + return { + context, + scopedContext, + useContext: useContext28, + useScopedContext, + useProviderContext, + ContextProvider, + ScopedContextProvider + }; +} + +// node_modules/@ariakit/react-core/esm/__chunks/SMPCIMZM.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/AVVXDJMZ.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/5VQZOHHZ.js +function findFirstEnabledItem(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 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 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/Z2O3VLAQ.js +var import_react7 = __toESM(require_react(), 1); +var TagName = "div"; +var useCollectionItem = createHook( + function useCollectionItem2({ + store, + shouldRegisterItem = true, + getItem = identity, + // @ts-expect-error This prop may come from a collection renderer. + element, + ...props + }) { + const context = useCollectionContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react7.useRef)(element); + (0, import_react7.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 = { + ...props, + ref: useMergeRefs(ref, props.ref) + }; + return removeUndefinedValues(props); + } +); +var CollectionItem = forwardRef22(function CollectionItem2(props) { + const htmlProps = useCollectionItem(props); + return createElement3(TagName, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/SWN3JYXT.js +var import_react8 = __toESM(require_react(), 1); +var FocusableContext = (0, import_react8.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({ block: "nearest", inline: "nearest", ...options }); + } +} + +// node_modules/@ariakit/react-core/esm/__chunks/U6HHPQDW.js +var import_react9 = __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 hasInstalledGlobalEventListeners2 = false; +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({ + focusable = true, + accessibleWhenDisabled, + autoFocus, + onFocusVisible, + ...props + }) { + const ref = (0, import_react9.useRef)(null); + (0, import_react9.useEffect)(() => { + if (!focusable) return; + if (hasInstalledGlobalEventListeners2) return; + addGlobalEventListener("mousedown", onGlobalMouseDown, true); + addGlobalEventListener("keydown", onGlobalKeyDown, true); + hasInstalledGlobalEventListeners2 = true; + }, [focusable]); + if (isSafariBrowser) { + (0, import_react9.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_react9.useState)(false); + (0, import_react9.useEffect)(() => { + if (!focusable) return; + if (trulyDisabled && focusVisible) { + setFocusVisible(false); + } + }, [focusable, trulyDisabled, focusVisible]); + (0, import_react9.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; + event.currentTarget.removeAttribute("data-focus-visible"); + setFocusVisible(false); + }); + const autoFocusOnShow = (0, import_react9.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_react9.useMemo)(() => { + if (trulyDisabled) { + return { pointerEvents: "none", ...styleProp }; + } + return styleProp; + }, [trulyDisabled, styleProp]); + props = { + "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/PZ3OL7I2.js +var import_react10 = __toESM(require_react(), 1); +var TagName3 = "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({ clickOnEnter = true, clickOnSpace = true, ...props }) { + const ref = (0, import_react10.useRef)(null); + const [isNativeButton, setIsNativeButton] = (0, import_react10.useState)(false); + (0, import_react10.useEffect)(() => { + if (!ref.current) return; + setIsNativeButton(isButton(ref.current)); + }, []); + const [active, setActive] = (0, import_react10.useState)(false); + const activeRef = (0, import_react10.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 { view, ...eventInit } = event; + 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 { view, ...eventInit } = event; + queueMicrotask(() => fireClickEvent(element, eventInit)); + } + } + }); + props = { + "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(TagName3, htmlProps); +}); + +// node_modules/@ariakit/core/esm/__chunks/SXKM4CGU.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 = { ...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) { + var _a; + const initialState = {}; + for (const store2 of stores) { + const nextState = (_a = store2 == null ? void 0 : store2.getState) == null ? void 0 : _a.call(store2); + if (nextState) { + Object.assign(initialState, 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/Q5W46E73.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 = { ...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 useState29 = React8.useCallback( + (keyOrSelector) => useStoreState(store, keyOrSelector), + [store] + ); + const memoizedStore = React8.useMemo( + () => ({ ...store, useState: useState29 }), + [store, useState29] + ); + const updateStore = useEvent(() => { + setStore((store2) => createStore2({ ...props, ...store2.getState() })); + }); + return [memoizedStore, updateStore]; +} + +// node_modules/@ariakit/react-core/esm/__chunks/WZWDIE3S.js +var import_react11 = __toESM(require_react(), 1); +var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1); +var TagName4 = "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({ + store, + rowId: rowIdProp, + preventScrollOnKeyDown = false, + moveOnKeyPress = true, + tabbable = false, + getItem: getItemProp, + "aria-setsize": ariaSetSizeProp, + "aria-posinset": ariaPosInSetProp, + ...props + }) { + const context = useCompositeContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react11.useRef)(null); + const row = (0, import_react11.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_react11.useCallback)( + (item) => { + var _a; + const nextItem = { + ...item, + id: id || item.id, + rowId, + disabled: !!trulyDisabled, + children: (_a = item.element) == null ? void 0 : _a.textContent + }; + if (getItemProp) { + return getItemProp(nextItem); + } + return nextItem; + }, + [id, rowId, trulyDisabled, getItemProp] + ); + const onFocusProp = props.onFocus; + const hasFocusedComposite = (0, import_react11.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_react11.useMemo)( + () => ({ id, baseElement }), + [id, baseElement] + ); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(CompositeItemContext.Provider, { value: providerValue, children: element }), + [providerValue] + ); + props = { + 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({ + store, + ...props, + getItem, + shouldRegisterItem: id ? props.shouldRegisterItem : false + }); + return removeUndefinedValues({ + ...props, + "aria-setsize": ariaSetSize, + "aria-posinset": ariaPosInSet + }); + } +); +var CompositeItem = memo22( + forwardRef22(function CompositeItem2(props) { + const htmlProps = useCompositeItem(props); + return createElement3(TagName4, htmlProps); + }) +); + +// 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/react-core/esm/__chunks/ZMWF7ASR.js +var import_react12 = __toESM(require_react(), 1); +var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1); +var TagName5 = "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 { view, ...eventInit } = event; + 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 findFirstEnabledItem( + flatten2DArray(reverseArray(groupItemsByRows(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({ + store, + composite = true, + focusOnMove = composite, + moveOnKeyPress = true, + ...props + }) { + 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 _a; + if (!store) return; + if (!moves) return; + if (!composite) return; + if (!focusOnMove) return; + const { activeId: activeId2 } = store.getState(); + const itemElement = (_a = getEnabledItem(store, activeId2)) == null ? void 0 : _a.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 _a; + if (!store) return; + if (!composite) return; + if (!virtualFocus) return; + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (!previousElement) return; + const activeElement = (_a = getEnabledItem(store, activeId)) == null ? void 0 : _a.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 _a; + 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 = (_a = getEnabledItem(store, activeId2)) == null ? void 0 : _a.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 _a; + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.nativeEvent.isComposing) return; + if (event.defaultPrevented) return; + if (!store) return; + if (!isSelfTarget(event)) return; + const { orientation, renderedItems, activeId: activeId2 } = store.getState(); + const activeItem = getEnabledItem(store, activeId2); + if ((_a = activeItem == null ? void 0 : activeItem.element) == null ? void 0 : _a.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_runtime64.jsx)(CompositeContextProvider, { value: store, children: element }), + [store] + ); + const activeDescendant = store.useState((state) => { + var _a; + if (!store) return; + if (!composite) return; + if (!state.virtualFocus) return; + return (_a = getEnabledItem(store, state.activeId)) == null ? void 0 : _a.id; + }); + props = { + "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({ focusable, ...props }); + return props; + } +); +var Composite5 = forwardRef22(function Composite22(props) { + const htmlProps = useComposite(props); + return createElement3(TagName5, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/LVDQFHCH.js +var ctx3 = createStoreContext(); +var useDisclosureContext = ctx3.useContext; +var useDisclosureScopedContext = ctx3.useScopedContext; +var useDisclosureProviderContext = ctx3.useProviderContext; +var DisclosureContextProvider = ctx3.ContextProvider; +var DisclosureScopedContextProvider = ctx3.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/A62MDFCW.js +var import_react13 = __toESM(require_react(), 1); +var ctx4 = createStoreContext( + [DisclosureContextProvider], + [DisclosureScopedContextProvider] +); +var useDialogContext = ctx4.useContext; +var useDialogScopedContext = ctx4.useScopedContext; +var useDialogProviderContext = ctx4.useProviderContext; +var DialogContextProvider = ctx4.ContextProvider; +var DialogScopedContextProvider = ctx4.ScopedContextProvider; +var DialogHeadingContext = (0, import_react13.createContext)(void 0); +var DialogDescriptionContext = (0, import_react13.createContext)(void 0); + +// node_modules/@ariakit/react-core/esm/__chunks/6B3RXHKP.js +var import_react14 = __toESM(require_react(), 1); +var import_react_dom = __toESM(require_react_dom(), 1); +var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1); +var TagName6 = "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({ store, alwaysVisible, ...props }) { + 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_react14.useRef)(null); + const id = useId3(props.id); + const [transition, setTransition] = (0, import_react14.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_runtime65.jsx)(DialogScopedContextProvider, { value: store, children: element }), + [store] + ); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const styleProp = props.style; + const style = (0, import_react14.useMemo)(() => { + if (hidden) { + return { ...styleProp, display: "none" }; + } + return styleProp; + }, [hidden, styleProp]); + props = { + 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(TagName6, htmlProps); +}); +var DisclosureContent = forwardRef22(function DisclosureContent2({ + unmountOnHide, + ...props +}) { + 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_runtime65.jsx)(DisclosureContentImpl, { ...props }); +}); + +// node_modules/@ariakit/core/esm/__chunks/75BJEVSH.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 { + ...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/WLZ6H5FH.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/react-core/esm/__chunks/JMU4N4M5.js +var ctx5 = createStoreContext( + [DialogContextProvider], + [DialogScopedContextProvider] +); +var usePopoverContext = ctx5.useContext; +var usePopoverScopedContext = ctx5.useScopedContext; +var usePopoverProviderContext = ctx5.useProviderContext; +var PopoverContextProvider = ctx5.ContextProvider; +var PopoverScopedContextProvider = ctx5.ScopedContextProvider; + +// node_modules/@ariakit/core/esm/__chunks/N5XGANPW.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 = { ...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 { + ...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/GVAFFF2B.js +function useCollectionStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.store]); + useStoreProps(store, props, "items", "setItems"); + return store; +} + +// node_modules/@ariakit/core/esm/__chunks/RVTIKFRL.js +var NULL_ITEM = { id: null }; +function findFirstEnabledItem2(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 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 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 ? findFirstEnabledItem2(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 = groupItemsByRows2(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({ + ...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 = { + ...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 = findFirstEnabledItem2(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(groupItemsByRows2(renderedItems), activeId2, canShift) + ); + items = canReverse ? reverseArray(items) : items; + items = isVerticalDirection ? verticalizeItems(items) : items; + if (activeId2 == null) { + return (_a2 = findFirstEnabledItem2(items)) == null ? void 0 : _a2.id; + } + const activeItem = items.find((item) => item.id === activeId2); + if (!activeItem) { + return (_b = findFirstEnabledItem2(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 = findFirstEnabledItem2(sortedItems, activeId2); + return nextItem2 == null ? void 0 : nextItem2.id; + } + if (canWrap) { + const nextItem2 = findFirstEnabledItem2( + // 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 = findFirstEnabledItem2(nextItemsInRow, activeId2); + if (!nextItem && hasNullItem) { + return null; + } + return nextItem == null ? void 0 : nextItem.id; + }; + return { + ...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 = findFirstEnabledItem2(composite.getState().renderedItems)) == null ? void 0 : _a2.id; + }, + last: () => { + var _a2; + return (_a2 = findFirstEnabledItem2(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/IQYAUKXT.js +function useCompositeStoreOptions(props) { + const id = useId3(props.id); + return { 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/react-core/esm/__chunks/CVCFNOHX.js +var import_react15 = __toESM(require_react(), 1); +var ComboboxListRoleContext = (0, import_react15.createContext)( + void 0 +); +var ctx6 = createStoreContext( + [PopoverContextProvider, CompositeContextProvider], + [PopoverScopedContextProvider, CompositeScopedContextProvider] +); +var useComboboxContext = ctx6.useContext; +var useComboboxScopedContext = ctx6.useScopedContext; +var useComboboxProviderContext = ctx6.useProviderContext; +var ComboboxContextProvider = ctx6.ContextProvider; +var ComboboxScopedContextProvider = ctx6.ScopedContextProvider; +var ComboboxItemValueContext = (0, import_react15.createContext)( + void 0 +); +var ComboboxItemCheckedContext = (0, import_react15.createContext)(false); + +// node_modules/@ariakit/core/esm/__chunks/KMAUV3TY.js +function createDialogStore(props = {}) { + return createDisclosureStore(props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/4NYSH4UO.js +function useDialogStoreProps(store, update2, props) { + return useDisclosureStoreProps(store, update2, props); +} + +// node_modules/@ariakit/core/esm/__chunks/BFGNM53A.js +function createPopoverStore({ + popover: otherPopover, + ...props +} = {}) { + 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({ ...props, store }); + const placement = defaultValue( + props.placement, + syncState == null ? void 0 : syncState.placement, + "bottom" + ); + const initialState = { + ...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 { + ...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/B6FLPFJM.js +function usePopoverStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.popover]); + useStoreProps(store, props, "placement"); + return useDialogStoreProps(store, update2, props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/4POTBZ2J.js +var TagName7 = "div"; +var usePopoverAnchor = createHook( + function usePopoverAnchor2({ store, ...props }) { + const context = usePopoverProviderContext(); + store = store || context; + props = { + ...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(TagName7, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/X6LNAU2F.js +var import_react16 = __toESM(require_react(), 1); +var TagName8 = "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({ + store, + focusOnHover = true, + blurOnHoverEnd = !!focusOnHover, + ...props + }) { + 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 _a; + 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); + (_a = store == null ? void 0 : store.getState().baseElement) == null ? void 0 : _a.focus(); + }); + const ref = (0, import_react16.useCallback)((element) => { + if (!element) return; + element[symbol2] = true; + }, []); + props = { + ...props, + ref: useMergeRefs(ref, props.ref), + onMouseMove, + onMouseLeave + }; + return removeUndefinedValues(props); + } +); +var CompositeHover = memo22( + forwardRef22(function CompositeHover2(props) { + const htmlProps = useCompositeHover(props); + return createElement3(TagName8, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/combobox/combobox.js +var import_react17 = __toESM(require_react(), 1); +var TagName9 = "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({ + store, + focusable = true, + autoSelect: autoSelectProp = false, + getAutoSelectId, + setValueOnChange, + showMinLength = 0, + showOnChange, + showOnMouseDown, + showOnClick = showOnMouseDown, + showOnKeyDown, + showOnKeyPress = showOnKeyDown, + blurActiveItemOnClick, + setValueOnClick = true, + moveOnKeyPress = true, + autoComplete = "list", + ...props + }) { + 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_react17.useRef)(null); + const [valueUpdated, forceValueUpdate] = useForceUpdate(); + const canAutoSelectRef = (0, import_react17.useRef)(false); + const composingRef = (0, import_react17.useRef)(false); + const autoSelect = store.useState( + (state) => state.virtualFocus && autoSelectProp + ); + const inline = autoComplete === "inline" || autoComplete === "both"; + const [canInline, setCanInline] = (0, import_react17.useState)(inline); + useUpdateLayoutEffect(() => { + if (!inline) return; + setCanInline(true); + }, [inline]); + const storeValue = store.useState("value"); + const prevSelectedValueRef = (0, import_react17.useRef)(void 0); + (0, import_react17.useEffect)(() => { + return sync(store, ["selectedValue", "activeId"], (_, prev) => { + prevSelectedValueRef.current = prev.selectedValue; + }); + }, []); + const inlineActiveValue = store.useState((state) => { + var _a; + if (!inline) return; + if (!canInline) return; + if (state.activeValue && Array.isArray(state.selectedValue)) { + if (state.selectedValue.includes(state.activeValue)) return; + if ((_a = prevSelectedValueRef.current) == null ? void 0 : _a.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_react17.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_react17.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_react17.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_react17.useRef)(null); + const getAutoSelectIdProp = useEvent(getAutoSelectId); + const autoSelectIdRef = (0, import_react17.useRef)(null); + (0, import_react17.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 _a, _b; + 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 : (_a = getDefaultAutoSelectId(items)) != null ? _a : store.first(); + autoSelectIdRef.current = autoSelectId; + store.move(autoSelectId != null ? autoSelectId : null); + } else { + const element = (_b = store.item(activeId || store.first())) == null ? void 0 : _b.element; + if (element && "scrollIntoView" in element) { + element.scrollIntoView({ block: "nearest", inline: "nearest" }); + } + } + return; + }, [ + store, + open, + valueUpdated, + storeValue, + autoSelect, + resetValueOnSelect, + getAutoSelectIdProp, + items + ]); + (0, import_react17.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 = { + 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({ + 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({ store, ...props }); + return { autoComplete: "off", ...props }; + } +); +var Combobox = forwardRef22(function Combobox2(props) { + const htmlProps = useCombobox(props); + return createElement3(TagName9, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/IBXZ2LQC.js +var import_react18 = __toESM(require_react(), 1); +var import_jsx_runtime66 = __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({ + store, + value, + hideOnClick, + setValueOnClick, + selectValueOnClick = true, + resetValueOnSelect, + focusOnHover = false, + moveOnKeyPress = true, + getItem: getItemProp, + ...props + }) { + var _a; + 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_react18.useCallback)( + (item) => { + const nextItem = { ...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( + (_a = resetValueOnSelect != null ? resetValueOnSelect : resetValueOnSelectState) != null ? _a : 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 = { + "aria-selected": selected, + ...props + }; + } + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(ComboboxItemValueContext.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(ComboboxItemCheckedContext.Provider, { value: selected != null ? selected : false, children: element }) }), + [value, selected] + ); + const popupRole = (0, import_react18.useContext)(ComboboxListRoleContext); + props = { + role: getItemRole(popupRole), + children: value, + ...props, + onClick, + onKeyDown + }; + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + props = useCompositeItem({ + 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({ 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-item-value.js +var import_react19 = __toESM(require_react(), 1); +var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1); +var TagName11 = "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_runtime67.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({ store, value, userValue, ...props }) { + const context = useComboboxScopedContext(); + store = store || context; + const itemContext = (0, import_react19.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_react19.useMemo)(() => { + if (!itemValue) return; + if (!inputValue) return itemValue; + return splitValue(itemValue, inputValue); + }, [itemValue, inputValue]); + props = { + children, + ...props + }; + return removeUndefinedValues(props); +}); +var ComboboxItemValue = forwardRef22(function ComboboxItemValue2(props) { + const htmlProps = useComboboxItemValue(props); + return createElement3(TagName11, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-label.js +var TagName12 = "label"; +var useComboboxLabel = createHook( + function useComboboxLabel2({ store, ...props }) { + 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 _a; + return (_a = state.baseElement) == null ? void 0 : _a.id; + }); + props = { + htmlFor: comboboxId, + ...props + }; + return removeUndefinedValues(props); + } +); +var ComboboxLabel = memo22( + forwardRef22(function ComboboxLabel2(props) { + const htmlProps = useComboboxLabel(props); + return createElement3(TagName12, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/2G6YEJT4.js +var import_react20 = __toESM(require_react(), 1); +var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1); +var TagName13 = "div"; +var useComboboxList = createHook( + function useComboboxList2({ store, alwaysVisible, ...props }) { + 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_react20.useRef)(null); + const id = useId3(props.id); + const mounted = store.useState("mounted"); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const style = hidden ? { ...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_react20.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 = { + role: "listbox", + "aria-multiselectable": ariaMultiSelectable, + ...props + }; + } + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ComboboxScopedContextProvider, { value: store, children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ComboboxListRoleContext.Provider, { value: role, children: element }) }), + [store, role] + ); + const setContentElement = id && (!scopedContext || !scopedContextSameStore) ? store.setContentElement : null; + props = { + 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); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/XSIEPKGA.js +var import_react21 = __toESM(require_react(), 1); +var TagValueContext = (0, import_react21.createContext)(null); +var TagRemoveIdContext = (0, import_react21.createContext)( + null +); +var ctx7 = createStoreContext( + [CompositeContextProvider], + [CompositeScopedContextProvider] +); +var useTagContext = ctx7.useContext; +var useTagScopedContext = ctx7.useScopedContext; +var useTagProviderContext = ctx7.useProviderContext; +var TagContextProvider = ctx7.ContextProvider; +var TagScopedContextProvider = ctx7.ScopedContextProvider; + +// node_modules/@ariakit/core/esm/combobox/combobox-store.js +var isTouchSafari = isSafari() && isTouchDevice(); +function createComboboxStore({ + tag, + ...props +} = {}) { + 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({ + ...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({ + ...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 = { + ...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 { + ...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/SVN33SY6.js +function useComboboxStoreOptions(props) { + const tag = useTagContext(); + props = { + ...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/combobox/combobox-provider.js +var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1); +function ComboboxProvider(props = {}) { + const store = useComboboxStore(props); + return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ComboboxContextProvider, { value: store, children: props.children }); +} + +// 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_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_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_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_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_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", + { + className: "dataviews-filters__search-widget-listitem-value", + title: element.label, + 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_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", + { + className: "dataviews-filters__search-widget-listitem-value", + title: element.label, + 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_element26 = __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_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_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_element27 = __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_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_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_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_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_element29 = __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_element29.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_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_runtime76 = __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_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_element31.memo)(Filters); + +// packages/dataviews/build-module/components/dataviews-filters/toggle.mjs +var import_element32 = __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_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] + ); + if (filters.length === 0) { + return null; + } + const hasVisibleFilters = filters.some((filter) => filter.isVisible); + 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 hasPrimaryOrLockedFilters = filters.some( + (filter) => filter.isPrimary || filter.isLocked + ); + const buttonComponent = /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( + import_components24.Button, + { + ref: buttonRef, + className: "dataviews-filters__visibility-toggle", + size: "compact", + icon: funnel_default, + disabled: hasPrimaryOrLockedFilters, + accessibleWhenDisabled: true, + ...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_element32.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_element33 = __toESM(require_element(), 1); +var import_jsx_runtime78 = __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_runtime78.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_runtime79 = __toESM(require_jsx_runtime(), 1); +function DataViewsLayout({ className }) { + const { + actions = [], + data, + fields, + getItemId: getItemId3, + getItemLevel, + hasInitiallyLoaded, + 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_element34.useContext)(dataviews_context_default); + if (!hasInitiallyLoaded) { + return null; + } + 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_element35 = __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, + isLoading, + hasInitiallyLoaded, + hasInfiniteScrollHandler + } = (0, import_element35.useContext)(dataviews_context_default); + const isRefreshing = !!isLoading && hasInitiallyLoaded && !hasInfiniteScrollHandler && !!data?.length; + const isDelayedRefreshing = useDelayedLoading(!!isRefreshing); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data) && [LAYOUT_TABLE, LAYOUT_GRID].includes(view.type); + if (!isRefreshing && (!totalItems || !totalPages || totalPages <= 1 && !hasBulkActions)) { + return null; + } + return (!!totalItems || isRefreshing) && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)( + "div", + { + className: "dataviews-footer", + inert: isRefreshing ? "true" : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)( + Stack, + { + direction: "row", + justify: "end", + align: "center", + className: clsx_default("dataviews-footer__content", { + "is-refreshing": isDelayedRefreshing + }), + 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_element36 = __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_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_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_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_components26 = __toESM(require_components(), 1); +var import_i18n30 = __toESM(require_i18n(), 1); +var import_element37 = __toESM(require_element(), 1); +var import_jsx_runtime82 = __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_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_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_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_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_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_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_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_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_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 ResetViewButton() { + const { onReset } = (0, import_element38.useContext)(dataviews_context_default); + if (onReset === void 0) { + return null; + } + const isDisabled = onReset === false; + return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + import_components27.Button, + { + variant: "tertiary", + size: "compact", + disabled: isDisabled, + accessibleWhenDisabled: true, + className: "dataviews-view-config__reset-button", + onClick: () => { + if (typeof onReset === "function") { + onReset(); + } + }, + children: (0, import_i18n31.__)("Reset view") + } + ); +} +function DataviewsViewConfigDropdown() { + const { view, onReset } = (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 + ); + const isModified = typeof onReset === "function"; + 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.jsxs)("div", { className: "dataviews-view-config__toggle-wrapper", children: [ + /* @__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 + } + ), + isModified && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "dataviews-view-config__modified-indicator" }) + ] }); + }, + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + import_components27.__experimentalDropdownContentWrapper, + { + paddingSize: "medium", + className: "dataviews-config__popover-content-wrapper", + children: /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)( + Stack, + { + direction: "column", + className: "dataviews-view-config", + gap: "xl", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)( + Stack, + { + direction: "row", + justify: "space-between", + align: "center", + className: "dataviews-view-config__header", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + import_components27.__experimentalHeading, + { + level: 2, + className: "dataviews-settings-section__title", + children: (0, import_i18n31.__)("Appearance") + } + ), + /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(ResetViewButton, {}) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + className: "dataviews-view-config__sort-controls", + 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_element38.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_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_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_element39.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_element40 = __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_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_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_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_components30 = __toESM(require_components(), 1); +var import_element41 = __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_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_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 = (value) => { + if (!value) { + return ""; + } + return (0, import_date3.dateI18n)("Y-m-d\\TH:i", (0, import_date3.getDate)(value)); +}; +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)(void 0); + 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) { + const wpDate = (0, import_date3.dateI18n)("Y-m-d", newDate); + let wpTime; + if (value) { + wpTime = (0, import_date3.dateI18n)("H:i", (0, import_date3.getDate)(value)); + } else { + wpTime = (0, import_date3.dateI18n)("H:i", newDate); + } + const finalDateTime = (0, import_date3.getDate)(`${wpDate}T${wpTime}`); + 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 = (0, import_date3.getDate)(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: formatDateTime(value), + 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_element43 = __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_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_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_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_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_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_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/select.mjs +var import_components33 = __toESM(require_components(), 1); +var import_element44 = __toESM(require_element(), 1); +var import_jsx_runtime89 = __toESM(require_jsx_runtime(), 1); +var { ValidatedSelectControl } = unlock(import_components33.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_element44.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_components33.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime89.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/adaptive-select.mjs +var import_jsx_runtime90 = __toESM(require_jsx_runtime(), 1); +var ELEMENTS_THRESHOLD = 10; +function AdaptiveSelect(props) { + const { field } = props; + const { elements } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (elements.length >= ELEMENTS_THRESHOLD) { + return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(Combobox3, { ...props }); + } + return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(Select, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/email.mjs +var import_components35 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-input.mjs +var import_components34 = __toESM(require_components(), 1); +var import_element45 = __toESM(require_element(), 1); +var import_jsx_runtime91 = __toESM(require_jsx_runtime(), 1); +var { ValidatedInputControl: ValidatedInputControl2 } = unlock(import_components34.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_element45.useCallback)( + (newValue) => onChange( + setValue({ + item: data, + value: newValue + }) + ), + [data, setValue, onChange] + ); + return /* @__PURE__ */ (0, import_jsx_runtime91.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_runtime92 = __toESM(require_jsx_runtime(), 1); +function Email({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "email", + prefix: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(import_components35.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(import_components35.Icon, { icon: envelope_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/telephone.mjs +var import_components36 = __toESM(require_components(), 1); +var import_jsx_runtime93 = __toESM(require_jsx_runtime(), 1); +function Telephone({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "tel", + prefix: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_components36.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_components36.Icon, { icon: mobile_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/url.mjs +var import_components37 = __toESM(require_components(), 1); +var import_jsx_runtime94 = __toESM(require_jsx_runtime(), 1); +function Url({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "url", + prefix: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_components37.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_components37.Icon, { icon: link_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-number.mjs +var import_components38 = __toESM(require_components(), 1); +var import_element46 = __toESM(require_element(), 1); +var import_i18n35 = __toESM(require_i18n(), 1); +var import_jsx_runtime95 = __toESM(require_jsx_runtime(), 1); +var { ValidatedNumberControl } = unlock(import_components38.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_element46.useCallback)( + (newValue) => onChange([toNumberOrEmpty(newValue), max]), + [onChange, max] + ); + const onChangeMax = (0, import_element46.useCallback)( + (newValue) => onChange([min, toNumberOrEmpty(newValue)]), + [onChange, min] + ); + return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)( + import_components38.BaseControl, + { + help: (0, import_i18n35.__)("The max. value must be greater than the min. value."), + children: /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_components38.Flex, { direction: "row", gap: 4, children: [ + /* @__PURE__ */ (0, import_jsx_runtime95.jsx)( + import_components38.__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_runtime95.jsx)( + import_components38.__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_element46.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_element46.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_runtime95.jsx)( + BetweenControls, + { + value: valueBetween, + onChange: onChangeBetweenControls, + hideLabelFromVision, + step + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime95.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_runtime96 = __toESM(require_jsx_runtime(), 1); +function Integer(props) { + return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/number.mjs +var import_jsx_runtime97 = __toESM(require_jsx_runtime(), 1); +function Number2(props) { + return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/radio.mjs +var import_components39 = __toESM(require_components(), 1); +var import_element47 = __toESM(require_element(), 1); +var import_jsx_runtime98 = __toESM(require_jsx_runtime(), 1); +var { ValidatedRadioControl } = unlock(import_components39.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_element47.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_components39.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime98.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/text.mjs +var import_element48 = __toESM(require_element(), 1); +var import_jsx_runtime99 = __toESM(require_jsx_runtime(), 1); +function Text({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + config, + validity +}) { + const { prefix, suffix } = config || {}; + return /* @__PURE__ */ (0, import_jsx_runtime99.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_components40 = __toESM(require_components(), 1); +var import_element49 = __toESM(require_element(), 1); +var import_jsx_runtime100 = __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_element49.useCallback)(() => { + onChange( + setValue({ item: data, value: !getValue({ item: data }) }) + ); + }, [onChange, setValue, data, getValue]); + return /* @__PURE__ */ (0, import_jsx_runtime100.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_element50 = __toESM(require_element(), 1); +var import_jsx_runtime101 = __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_element50.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime101.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_element51 = __toESM(require_element(), 1); +var import_jsx_runtime102 = __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_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_runtime102.jsx)(import_components42.Spinner, {}); + } + if (elements.length === 0) { + return null; + } + const selectedOption = elements.find((el) => el.value === value); + return /* @__PURE__ */ (0, import_jsx_runtime102.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_runtime102.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_element52 = __toESM(require_element(), 1); +var import_jsx_runtime103 = __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_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_runtime103.jsx)(import_components43.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime103.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_runtime103.jsx)("span", { children: element?.label || item }); + } + return /* @__PURE__ */ (0, import_jsx_runtime103.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_element53 = __toESM(require_element(), 1); +var import_i18n36 = __toESM(require_i18n(), 1); +var import_jsx_runtime104 = __toESM(require_jsx_runtime(), 1); +var { ValidatedInputControl: ValidatedInputControl3 } = unlock(import_components44.privateApis); +var ColorPickerDropdown = ({ + color, + onColorChange +}) => { + const validColor = color && w(color).isValid() ? color : "#ffffff"; + return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)( + import_components44.Dropdown, + { + className: "dataviews-controls__color-picker-dropdown", + popoverProps: { resize: false }, + renderToggle: ({ onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime104.jsx)( + import_components44.Button, + { + onClick: onToggle, + "aria-label": (0, import_i18n36.__)("Open color picker"), + size: "small", + icon: () => /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_components44.ColorIndicator, { colorValue: validColor }) + } + ), + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_components44.__experimentalDropdownContentWrapper, { paddingSize: "none", children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)( + import_components44.ColorPicker, + { + color: 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)( + (newColor) => { + onChange(setValue({ item: data, value: newColor })); + }, + [data, onChange, setValue] + ); + const handleInputChange = (0, import_element53.useCallback)( + (newValue) => { + onChange(setValue({ item: data, value: newValue || "" })); + }, + [data, onChange, setValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime104.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_runtime104.jsx)(import_components44.__experimentalInputControlPrefixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)( + ColorPickerDropdown, + { + color: value, + onColorChange: handleColorChange + } + ) }) + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/password.mjs +var import_components45 = __toESM(require_components(), 1); +var import_element54 = __toESM(require_element(), 1); +var import_i18n37 = __toESM(require_i18n(), 1); +var import_jsx_runtime105 = __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_runtime105.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: isVisible2 ? "text" : "password", + suffix: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(import_components45.__experimentalInputControlSuffixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)( + import_components45.Button, + { + icon: isVisible2 ? unseen_default : seen_default, + onClick: toggleVisibility, + size: "small", + label: isVisible2 ? (0, import_i18n37.__)("Hide password") : (0, import_i18n37.__)("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_runtime106 = __toESM(require_jsx_runtime(), 1); +var FORM_CONTROLS = { + adaptiveSelect: AdaptiveSelect, + 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: Text, + 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_runtime106.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("adaptiveSelect"); + } + 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_i18n38 = __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_runtime107 = __toESM(require_jsx_runtime(), 1); +function render({ + item, + field +}) { + if (field.hasElements) { + return /* @__PURE__ */ (0, import_jsx_runtime107.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_i18n38.__)("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_i18n39 = __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_i18n39.__)("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_i18n40 = __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_i18n40.__)("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_i18n41 = __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_i18n41.__)("True"); + } + if (value === false) { + return (0, import_i18n41.__)("False"); + } + return ""; +} +function isValidCustom4(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && ![true, false].includes(value)) { + return (0, import_i18n41.__)("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_i18n42 = __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_i18n42.__)("Value must be an array."); + } + if (!value.every((v2) => typeof v2 === "string")) { + return (0, import_i18n42.__)("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_i18n43 = __toESM(require_i18n(), 1); +var import_jsx_runtime108 = __toESM(require_jsx_runtime(), 1); +function render3({ item, field }) { + if (field.hasElements) { + return /* @__PURE__ */ (0, import_jsx_runtime108.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_runtime108.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [ + /* @__PURE__ */ (0, import_jsx_runtime108.jsx)( + "div", + { + style: { + width: "16px", + height: "16px", + borderRadius: "50%", + backgroundColor: value, + border: "1px solid #ddd", + flexShrink: 0 + } + } + ), + /* @__PURE__ */ (0, import_jsx_runtime108.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_i18n43.__)("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/hooks/use-data.mjs +var import_element55 = __toESM(require_element(), 1); +function useData(data, isLoading, paginationInfo) { + const previousDataRef = (0, import_element55.useRef)(data); + const previousPaginationInfoRef = (0, import_element55.useRef)(paginationInfo); + const [hasInitiallyLoaded, setHasInitiallyLoaded] = (0, import_element55.useState)( + !isLoading + ); + (0, import_element55.useEffect)(() => { + if (!isLoading) { + previousDataRef.current = data; + previousPaginationInfoRef.current = paginationInfo; + setHasInitiallyLoaded(true); + } + }, [data, isLoading, paginationInfo]); + return { + data: isLoading && previousDataRef.current?.length ? previousDataRef.current : data, + paginationInfo: isLoading && previousDataRef.current?.length ? previousPaginationInfoRef.current : paginationInfo, + hasInitiallyLoaded + }; +} + +// packages/dataviews/build-module/dataviews/index.mjs +var import_jsx_runtime109 = __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_runtime109.jsxs)(import_jsx_runtime109.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)( + Stack, + { + direction: "row", + align: "top", + justify: "space-between", + className: "dataviews__view-actions", + gap: "xs", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)( + Stack, + { + direction: "row", + justify: "start", + gap: "sm", + className: "dataviews__search", + children: [ + search && /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(dataviews_search_default, { label: searchLabel }), + /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(toggle_default, {}) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(Stack, { direction: "row", gap: "xs", style: { flexShrink: 0 }, children: [ + /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(dataviews_view_config_default, {}), + header + ] }) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(filters_toggled_default, { className: "dataviews-filters__container" }), + /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(DataViewsLayout, {}), + /* @__PURE__ */ (0, import_jsx_runtime109.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, + onReset +}) { + const { infiniteScrollHandler } = paginationInfo; + const containerRef = (0, import_element56.useRef)(null); + const [containerWidth, setContainerWidth] = (0, import_element56.useState)(0); + const resizeObserverRef = (0, import_compose12.useResizeObserver)( + (resizeObserverEntries) => { + setContainerWidth( + resizeObserverEntries[0].borderBoxSize[0].inlineSize + ); + }, + { box: "border-box" } + ); + const [selectionState, setSelectionState] = (0, import_element56.useState)([]); + const isUncontrolled = selectionProperty === void 0 || onChangeSelection === void 0; + const selection = isUncontrolled ? selectionState : selectionProperty; + const [openedFilter, setOpenedFilter] = (0, import_element56.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_element56.useMemo)(() => normalizeFields(fields), [fields]); + const _selection = (0, import_element56.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_element56.useMemo)( + () => (filters || []).some( + (filter) => filter.isPrimary || filter.isLocked + ), + [filters] + ); + const [isShowingFilter, setIsShowingFilter] = (0, import_element56.useState)( + hasPrimaryOrLockedFilters + ); + (0, import_element56.useEffect)(() => { + if (hasPrimaryOrLockedFilters && !isShowingFilter) { + setIsShowingFilter(true); + } + }, [hasPrimaryOrLockedFilters, isShowingFilter]); + (0, import_element56.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_element56.useMemo)( + () => Object.fromEntries( + Object.entries(defaultLayoutsProperty).filter( + ([layoutType]) => { + return dataViewsLayouts.some( + (viewLayout) => viewLayout.type === layoutType + ); + } + ) + ), + [defaultLayoutsProperty] + ); + const { + data: displayData, + paginationInfo: displayPaginationInfo, + hasInitiallyLoaded + } = useData(data, isLoading, paginationInfo); + if (!defaultLayouts[view.type]) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)( + dataviews_context_default.Provider, + { + value: { + view, + onChangeView, + fields: _fields, + actions, + data: displayData, + isLoading, + paginationInfo: displayPaginationInfo, + selection: _selection, + onChangeSelection: setSelectionWithChange, + openedFilter, + setOpenedFilter, + getItemId: getItemId3, + getItemLevel, + isItemClickable, + onClickItem, + renderItemLink, + containerWidth, + containerRef, + resizeObserverRef, + defaultLayouts, + filters, + isShowingFilter, + setIsShowingFilter, + config, + empty, + hasInitiallyLoaded, + hasInfiniteScrollHandler: !!infiniteScrollHandler, + onReset + }, + children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { className: "dataviews-wrapper", ref: containerRef, children: children ?? /* @__PURE__ */ (0, import_jsx_runtime109.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_element57 = __toESM(require_element(), 1); +var import_jsx_runtime110 = __toESM(require_jsx_runtime(), 1); +var NavigableRegion = (0, import_element57.forwardRef)( + ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { + return /* @__PURE__ */ (0, import_jsx_runtime110.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_runtime111 = __toESM(require_jsx_runtime(), 1); +function Header({ + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle = true +}) { + return /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_components47.__experimentalVStack, { className: "admin-ui-page__header", as: "header", children: [ + /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_components47.__experimentalHStack, { justify: "space-between", spacing: 2, children: [ + /* @__PURE__ */ (0, import_jsx_runtime111.jsxs)(import_components47.__experimentalHStack, { spacing: 2, justify: "left", children: [ + showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)( + SidebarToggleSlot, + { + bubblesVirtually: true, + className: "admin-ui-page__sidebar-toggle-slot" + } + ), + title && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(import_components47.__experimentalHeading, { as: "h2", level: 3, weight: 500, truncate: true, children: title }), + breadcrumbs, + badges + ] }), + /* @__PURE__ */ (0, import_jsx_runtime111.jsx)( + import_components47.__experimentalHStack, + { + style: { width: "auto", flexShrink: 0 }, + spacing: 2, + className: "admin-ui-page__header-actions", + children: actions + } + ) + ] }), + subTitle && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) + ] }); +} + +// packages/admin-ui/build-module/page/index.mjs +var import_jsx_runtime112 = __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_runtime112.jsxs)(navigable_region_default, { className: classes, ariaLabel: title, children: [ + (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime112.jsx)( + Header, + { + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle + } + ), + hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime112.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_element65 = __toESM(require_element()); +var import_editor = __toESM(require_editor()); +var import_i18n54 = __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_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-list/fields/author.tsx +var import_components48 = __toESM(require_components()); +var import_i18n45 = __toESM(require_i18n()); +var import_element58 = __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_element58.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_i18n45.__)("Unknown"), + icon: "admin-users" + }; + }, [author, authorText]); +} +function AuthorField({ item }) { + const [isImageLoaded, setIsImageLoaded] = (0, import_element58.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_i18n45.__)("Author"), + id: "author", + getValue: ({ item }) => item.author_text ?? item.author, + render: AuthorField +}; + +// routes/template-list/fields/description.tsx +var import_i18n46 = __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_i18n46.__)("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_i18n47 = __toESM(require_i18n()); +var import_components49 = __toESM(require_components()); +var { Badge: Badge3 } = unlock2(import_components49.privateApis); +var activeField = { + label: (0, import_i18n47.__)("Status"), + id: "active", + type: "boolean", + getValue: ({ item }) => item._isActive, + render: function Render({ item }) { + const activeLabel = item._isCustom ? (0, import_i18n47._x)("Active when used", "template") : (0, import_i18n47._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_i18n47._x)("Inactive", "template")); + } +}; + +// routes/template-list/fields/slug.tsx +var import_i18n48 = __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_i18n48.__)("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_i18n48._x)("Custom", "template type"); + } +}; + +// routes/template-list/use-templates.ts +var import_element59 = __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_element59.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_element59.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_i18n49 = __toESM(require_i18n()); +var import_element60 = __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_element60.useMemo)( + () => ({ + id: "set-active-template", + label(items) { + return items.some((item) => item._isActive) ? (0, import_i18n49.__)("Deactivate") : (0, import_i18n49.__)("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_element64 = __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_i18n53 = __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_element62 = __toESM(require_element()); +var import_i18n51 = __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_element61 = __toESM(require_element()); +var import_i18n50 = __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_element61.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_element61.useMemo)(() => { + return taxonomies?.filter( + ({ visibility }) => visibility?.publicly_queryable + ); + }, [taxonomies]); +}; +function usePostTypeArchiveMenuItems() { + const publicPostTypes = usePublicPostTypes(); + const postTypesWithArchives = (0, import_element61.useMemo)( + () => publicPostTypes?.filter( + (postType) => postType.has_archive + ), + [publicPostTypes] + ); + const existingTemplates = useExistingTemplates(); + const postTypeLabels = (0, import_element61.useMemo)( + () => publicPostTypes?.reduce((accumulator, { labels }) => { + const singularName = labels.singular_name.toLowerCase(); + accumulator[singularName] = (accumulator[singularName] || 0) + 1; + return accumulator; + }, {}), + [publicPostTypes] + ); + const needsUniqueIdentifier = (0, import_element61.useCallback)( + ({ labels, slug }) => { + const singularName = labels.singular_name.toLowerCase(); + return postTypeLabels[singularName] > 1 && singularName !== slug; + }, + [postTypeLabels] + ); + return (0, import_element61.useMemo)( + () => postTypesWithArchives?.filter( + (postType) => !(existingTemplates || []).some( + (existingTemplate) => existingTemplate.slug === "archive-" + postType.slug + ) + ).map((postType) => { + let title; + if (needsUniqueIdentifier(postType)) { + title = (0, import_i18n50.sprintf)( + // translators: %1s: Name of the post type e.g: "Post"; %2s: Slug of the post type e.g: "book". + (0, import_i18n50.__)("Archive: %1$s (%2$s)"), + postType.labels.singular_name, + postType.slug + ); + } else { + title = (0, import_i18n50.sprintf)( + // translators: %s: Name of the post type e.g: "Post". + (0, import_i18n50.__)("Archive: %s"), + postType.labels.singular_name + ); + } + return { + slug: "archive-" + postType.slug, + description: (0, import_i18n50.sprintf)( + // translators: %s: Name of the post type e.g: "Post". + (0, import_i18n50.__)( + "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_element61.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_element61.useCallback)( + ({ labels, slug }) => { + const templateName = (labels.template_name || labels.singular_name).toLowerCase(); + return templateLabels[templateName] > 1 && templateName !== slug; + }, + [templateLabels] + ); + const templatePrefixes = (0, import_element61.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_i18n50.sprintf)( + // translators: %s: Name of the post type e.g: "Post". + (0, import_i18n50.__)("Single item: %s"), + labels.singular_name + ); + if (_needsUniqueIdentifier) { + menuItemTitle = labels.template_name ? (0, import_i18n50.sprintf)( + // translators: 1: Name of the template e.g: "Single Item: Post". 2: Slug of the post type e.g: "book". + (0, import_i18n50._x)("%1$s (%2$s)", "post type menu label"), + labels.template_name, + slug + ) : (0, import_i18n50.sprintf)( + // translators: 1: Name of the post type e.g: "Post". 2: Slug of the post type e.g: "book". + (0, import_i18n50._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_i18n50.sprintf)( + // translators: %s: Name of the post type e.g: "Post". + (0, import_i18n50.__)("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_element61.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_element61.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_i18n50.sprintf)( + // translators: 1: Name of the template e.g: "Products by Category". 2: Slug of the taxonomy e.g: "product_cat". + (0, import_i18n50._x)("%1$s (%2$s)", "taxonomy template menu label"), + labels.template_name, + slug + ) : (0, import_i18n50.sprintf)( + // translators: 1: Name of the taxonomy e.g: "Category". 2: Slug of the taxonomy e.g: "product_cat". + (0, import_i18n50._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_i18n50.sprintf)( + // translators: %s: Name of the taxonomy e.g: "Product Categories". + (0, import_i18n50.__)("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_element61.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_i18n50.__)( + "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_i18n50.sprintf)( + // translators: %s: Name of the author e.g: "Admin". + (0, import_i18n50.__)("Author: %s"), + suggestion.name + ), + slug: templateSlug, + templatePrefix: "author" + }; + } + }, + labels: { + singular_name: (0, import_i18n50.__)("Author"), + search_items: (0, import_i18n50.__)("Search Authors"), + not_found: (0, import_i18n50.__)("No authors found."), + all_items: (0, import_i18n50.__)("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_element61.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_element62.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_element62.useState)(EMPTY_ARRAY8); + (0, import_element62.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_element62.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_i18n51.__)("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_element62.useState)(false); + (0, import_element62.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_i18n51.__)( + "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_i18n51.__)("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_i18n51.__)("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_i18n51.__)("Back") + ))), + showSearchEntities && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(import_components50.__experimentalText, { as: "p" }, (0, import_i18n51.__)( + "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_i18n51.__)("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_element63 = __toESM(require_element()); +var import_i18n52 = __toESM(require_i18n()); +var import_components51 = __toESM(require_components()); +function AddCustomGenericTemplateModalContent({ + createTemplate, + onBack +}) { + const [title, setTitle] = (0, import_element63.useState)(""); + const defaultTitle = (0, import_i18n52.__)("Custom Template"); + const [isBusy, setIsBusy] = (0, import_element63.useState)(false); + const inputRef = (0, import_element63.useRef)(null); + (0, import_element63.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_i18n52.__)("Name"), + value: title, + onChange: setTitle, + placeholder: defaultTitle, + disabled: isBusy, + ref: inputRef, + help: (0, import_i18n52.__)( + // 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_i18n52.__)("Back") + ), + /* @__PURE__ */ React.createElement( + import_components51.Button, + { + __next40pxDefaultSize: true, + variant: "primary", + type: "submit", + isBusy, + "aria-disabled": isBusy + }, + (0, import_i18n52.__)("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_element64.useState)(modalContentMap.templatesList); + const [entityForSuggestions, setEntityForSuggestions] = (0, import_element64.useState)(); + const [isSubmitting, setIsSubmitting] = (0, import_element64.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_element64.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_i18n53.sprintf)( + // translators: %s: The homepage url. + (0, import_i18n53.__)("E.g. %s"), + homeUrl + "/" + (/* @__PURE__ */ new Date()).getFullYear() + ) + }; + (0, import_element64.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_i18n53.sprintf)( + // translators: %s: Title of the created post or template, e.g: "Hello world". + (0, import_i18n53.__)('"%s" successfully created.'), + (0, import_html_entities4.decodeEntities)(newTemplate.title?.rendered || title) || (0, import_i18n53.__)("(no title)") + ), + { + type: "snackbar" + } + ); + } catch (error) { + const errorMessage = error.message && error.code !== "unknown_error" ? error.message : (0, import_i18n53.__)("An error occurred while creating the template."); + createErrorNotice(errorMessage, { + type: "snackbar" + }); + } finally { + setIsSubmitting(false); + } + } + const onModalClose = () => { + onClose(); + setModalContent(modalContentMap.templatesList); + }; + let modalTitle = (0, import_i18n53.__)("Add template"); + if (modalContent === modalContentMap.customTemplate && entityForSuggestions) { + modalTitle = (0, import_i18n53.sprintf)( + // translators: %s: Name of the post type e.g: "Post". + (0, import_i18n53.__)("Add template: %s"), + entityForSuggestions.labels.singular_name + ); + } else if (modalContent === modalContentMap.customGenericTemplate) { + modalTitle = (0, import_i18n53.__)("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_i18n53.__)( + "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_i18n53.__)("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_i18n53.__)( + "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_element64.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_element64.memo)(NewTemplate); + +// routes/template-list/style.scss +if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='bfa9b6f0e8']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "bfa9b6f0e8"); + 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;margin:0;padding:0;width:100%}fieldset.fields__media-edit .components-base-control__label{color:#1e1e1e}fieldset.fields__media-edit{container-type:inline-size}fieldset.fields__media-edit .fields__media-edit-compact-group{border:1px dashed #949494;border-radius:4px;overflow:hidden}fieldset.fields__media-edit .fields__media-edit-compact-group.is-single{border-radius:2px}fieldset.fields__media-edit .fields__media-edit-compact-group .fields__media-edit-picker-button{border:0;border-radius:0}fieldset.fields__media-edit .fields__media-edit-compact-group .fields__media-edit-picker-button:focus-visible{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color)}fieldset.fields__media-edit .fields__media-edit-compact-group .fields__media-edit-compact:not(:last-child){border-bottom:1px solid #f0f0f0}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-compact{min-width:0;position:relative}fieldset.fields__media-edit .fields__media-edit-compact:focus-within .fields__media-edit-compact-movers,fieldset.fields__media-edit .fields__media-edit-compact:hover .fields__media-edit-compact-movers{opacity:1}fieldset.fields__media-edit .fields__media-edit-compact .fields__media-edit-compact-movers{background:#fff;border-radius:2px;opacity:0;pointer-events:none;position:absolute;right:8px;top:50%;transform:translateY(-50%);z-index:1}fieldset.fields__media-edit .fields__media-edit-compact .fields__media-edit-compact-movers *{pointer-events:auto}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:2px;cursor:pointer;display:flex;gap:8px;min-height:40px;min-width:0;padding:4px 8px;position:relative}fieldset.fields__media-edit .fields__media-edit-picker-button:not(.has-attachment){border-color:var(--wp-admin-theme-color);color:var(--wp-admin-theme-color)}fieldset.fields__media-edit .fields__media-edit-picker-button:not(.has-attachment):hover{background-color:color-mix(in srgb,var(--wp-admin-theme-color,#3858e9) 4%,#0000);border-color:var(--wp-admin-theme-color-darker-20);color:var(--wp-admin-theme-color-darker-20)}fieldset.fields__media-edit .fields__media-edit-picker-button:hover{color:var(--wp-admin-theme-color)}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}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-actions{background:#fff;border-radius:2px;position:absolute;right:4px;top:4px}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item{border-radius:4px;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 .fields__media-edit-picker-button{border-radius:4px}fieldset.fields__media-edit .fields__media-edit-expanded.is-empty .fields__media-edit-picker-button{border-radius:2px}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{border:0;margin:0;padding:0}.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_element65.useState)(null); + const defaultView = DEFAULT_VIEW; + const activeViewOverrides = (0, import_element65.useMemo)( + () => getActiveViewOverridesForTab(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, 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_element65.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_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/user` + }); + } + }, + [cleanupDeletedPostIdsFromUrl, navigate] + ); + const setActiveTemplateAction = useSetActiveTemplateAction(); + const postTypeActions = usePostActions({ + postType: "wp_template", + context: "list", + onActionPerformed + }); + const actions = (0, import_element65.useMemo)(() => { + return [ + setActiveTemplateAction, + ...postTypeActions?.flatMap((action) => { + if (action.id === "view-post-revisions") { + return []; + } + return [action]; + }) + ]; + }, [setActiveTemplateAction, postTypeActions]); + const tabs = (0, import_element65.useMemo)(() => { + const baseTabs = [ + { + slug: "active", + label: (0, import_i18n54.__)("Active"), + icon: published_default + }, + { + slug: "user", + label: (0, import_i18n54.__)("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_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); + } + 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_i18n54.__)("Templates"), + className: "template-page", + actions: /* @__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, + onReset: isModified ? onReset : false, + 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_i18n54.__)("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_element67 = __toESM(require_element()); +var import_editor2 = __toESM(require_editor()); +var import_i18n55 = __toESM(require_i18n()); + +// routes/template-list/use-templates-legacy.ts +var import_element66 = __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_element66.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_element67.useMemo)( + () => getActiveViewOverridesForTabLegacy(activeView), + [activeView] + ); + const handleQueryParamsChange = (0, import_element67.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_element67.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_element67.useMemo)(() => { + return filterSortAndPaginate(records, view, fields); + }, [records, view, fields]); + const cleanupDeletedPostIdsFromUrl = (0, import_element67.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_element67.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_element67.useMemo)(() => { + return postTypeActions?.flatMap((action) => { + if (action.id === "view-post-revisions") { + return []; + } + return [action]; + }); + }, [postTypeActions]); + const tabs = (0, import_element67.useMemo)(() => { + const baseTabs = [ + { + slug: "all", + label: (0, import_i18n55.__)("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_element67.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_i18n55.__)("Templates"), + className: "template-page", + actions: /* @__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, + onReset: isModified ? onReset : false, + 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..0c68ceddc3a3f --- /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' => '71cfec3a65af6a8912b7'); \ 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..b6ee3f1e89a82 --- /dev/null +++ b/src/wp-includes/build/routes/template-list/content.min.js @@ -0,0 +1,14 @@ +var t_=Object.create;var em=Object.defineProperty;var r_=Object.getOwnPropertyDescriptor;var o_=Object.getOwnPropertyNames;var n_=Object.getPrototypeOf,i_=Object.prototype.hasOwnProperty;var Ce=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var a_=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of o_(e))!i_.call(t,n)&&n!==r&&em(t,n,{get:()=>e[n],enumerable:!(o=r_(e,n))||o.enumerable});return t};var u=(t,e,r)=>(r=t!=null?t_(n_(t)):{},a_(e||!t||!t.__esModule?em(r,"default",{value:t,enumerable:!0}):r,t));var j=Ce((nS,om)=>{om.exports=window.wp.element});var gt=Ce((iS,nm)=>{nm.exports=window.wp.data});var Nl=Ce((aS,im)=>{im.exports=window.wp.preferences});var ht=Ce((_S,sm)=>{sm.exports=window.wp.compose});var de=Ce((xS,lm)=>{lm.exports=window.React});var V=Ce((wS,dm)=>{dm.exports=window.ReactJSXRuntime});var Tm=Ce(($S,Cm)=>{Cm.exports=window.ReactDOM});var Pm=Ce(Em=>{"use strict";var Xo=de();function S_(t,e){return t===e&&(t!==0||1/t===1/e)||t!==t&&e!==e}var C_=typeof Object.is=="function"?Object.is:S_,T_=Xo.useState,E_=Xo.useEffect,P_=Xo.useLayoutEffect,A_=Xo.useDebugValue;function I_(t,e){var r=e(),o=T_({inst:{value:r,getSnapshot:e}}),n=o[0].inst,i=o[1];return P_(function(){n.value=r,n.getSnapshot=e,Ul(n)&&i({inst:n})},[t,r,e]),E_(function(){return Ul(n)&&i({inst:n}),t(function(){Ul(n)&&i({inst:n})})},[t]),A_(r),r}function Ul(t){var e=t.getSnapshot;t=t.value;try{var r=e();return!C_(t,r)}catch{return!0}}function O_(t,e){return e()}var R_=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?O_:I_;Em.useSyncExternalStore=Xo.useSyncExternalStore!==void 0?Xo.useSyncExternalStore:R_});var Im=Ce((ZS,Am)=>{"use strict";Am.exports=Pm()});var W=Ce((eC,Vm)=>{Vm.exports=window.wp.i18n});var K=Ce((tC,km)=>{km.exports=window.wp.primitives});var ec=Ce((PT,Dm)=>{Dm.exports=window.wp.privateApis});var G=Ce((MT,Wm)=>{Wm.exports=window.wp.components});var rc=Ce((LT,Gm)=>{Gm.exports=window.wp.keycodes});var od=Ce((iV,Is)=>{var Cg={\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"},Tg=Object.keys(Cg).join("|"),Ny=new RegExp(Tg,"g"),My=new RegExp(Tg,"");function Ly(t){return Cg[t]}var Eg=function(t){return t.replace(Ny,Ly)},Fy=function(t){return!!t.match(My)};Is.exports=Eg;Is.exports.has=Fy;Is.exports.remove=Eg});var Lg=Ce((fV,Mg)=>{"use strict";Mg.exports=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var o,n,i;if(Array.isArray(e)){if(o=e.length,o!=r.length)return!1;for(n=o;n--!==0;)if(!t(e[n],r[n]))return!1;return!0}if(e instanceof Map&&r instanceof Map){if(e.size!==r.size)return!1;for(n of e.entries())if(!r.has(n[0]))return!1;for(n of e.entries())if(!t(n[1],r.get(n[0])))return!1;return!0}if(e instanceof Set&&r instanceof Set){if(e.size!==r.size)return!1;for(n of e.entries())if(!r.has(n[0]))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(r)){if(o=e.length,o!=r.length)return!1;for(n=o;n--!==0;)if(e[n]!==r[n])return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(i=Object.keys(e),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(!t(e[a],r[a]))return!1}return!0}return e!==e&&r!==r}});var Go=Ce((kk,hh)=>{hh.exports=window.wp.date});var zh=Ce((A4,Hh)=>{Hh.exports=window.wp.warning});var Ob=Ce((FL,Ib)=>{Ib.exports=window.wp.deprecated});var Zt=Ce((oF,Wb)=>{Wb.exports=window.wp.coreData});var Nd=Ce((nF,Gb)=>{Gb.exports=window.wp.editor});var Ui=Ce((fF,Qb)=>{Qb.exports=window.wp.htmlEntities});var m0=Ce((CF,d0)=>{d0.exports=window.wp.notices});var jd=Ce((TF,f0)=>{f0.exports=window.wp.dom});var Hd=Ce((EF,p0)=>{p0.exports=window.wp.url});import{useParams as L2,useNavigate as F2,useSearch as B2,useInvalidate as j2}from"@wordpress/route";var tm=Object.prototype.hasOwnProperty;function rm(t,e,r){for(r of t.keys())if(Yr(r,e))return r}function Yr(t,e){var r,o,n;if(t===e)return!0;if(t&&e&&(r=t.constructor)===e.constructor){if(r===Date)return t.getTime()===e.getTime();if(r===RegExp)return t.toString()===e.toString();if(r===Array){if((o=t.length)===e.length)for(;o--&&Yr(t[o],e[o]););return o===-1}if(r===Set){if(t.size!==e.size)return!1;for(o of t)if(n=o,n&&typeof n=="object"&&(n=rm(e,n),!n)||!e.has(n))return!1;return!0}if(r===Map){if(t.size!==e.size)return!1;for(o of t)if(n=o[0],n&&typeof n=="object"&&(n=rm(e,n),!n)||!Yr(o[1],e.get(n)))return!1;return!0}if(r===ArrayBuffer)t=new Uint8Array(t),e=new Uint8Array(e);else if(r===DataView){if((o=t.byteLength)===e.byteLength)for(;o--&&t.getInt8(o)===e.getInt8(o););return o===-1}if(ArrayBuffer.isView(t)){if((o=t.byteLength)===e.byteLength)for(;o--&&t[o]===e[o];);return o===-1}if(!r||typeof t=="object"){o=0;for(r in t)if(tm.call(t,r)&&++o&&!tm.call(e,r)||!(r in e)||!Yr(t[r],e[r]))return!1;return Object.keys(e).length===o}}return t!==t&&e!==e}var zn=u(j(),1),Qi=u(gt(),1),Fl=u(Nl(),1);function Ml(t,e,r){return`dataviews-${t}-${e}-${r}`}var am=["titleField","mediaField","descriptionField","showTitle","showMedia","showDescription","showLevels","infiniteScrollEnabled"];function Ll(t,e,r){if(!e)return t;let o=t;for(let n of am)n in e&&(o={...o,[n]:e[n]});if(e.filters&&e.filters.length>0){let n=new Set(e.filters.map(a=>a.field)),i=(t.filters??[]).filter(a=>!n.has(a.field));o={...o,filters:[...i,...e.filters]}}return e.sort&&r&&t.sort?.field===r.sort?.field&&t.sort?.direction===r.sort?.direction&&(o={...o,sort:e.sort}),e.layout&&(o={...o,layout:{...o.layout,...e.layout}}),e.groupBy&&(o={...o,groupBy:e.groupBy}),o}function Xi(t,e,r){if(!e)return t;let o=t;for(let n of am)if(n in e){let{[n]:i,...a}=o;o=a}if(e.filters&&e.filters.length>0){let n=new Set(e.filters.map(i=>i.field));o={...o,filters:(t.filters??[]).filter(i=>!n.has(i.field))}}if(e.sort&&t.sort?.field===e.sort.field&&t.sort?.direction===e.sort.direction&&(o={...o,sort:r?.sort}),e.layout&&"layout"in o&&o.layout){let n={...o.layout};for(let i of Object.keys(e.layout))delete n[i];o={...o,layout:Object.keys(n).length>0?n:void 0}}if(e.groupBy&&"groupBy"in o){let{groupBy:n,...i}=o;o=i}return o}function s_(t,e){let r={...t};for(let o of e)delete r[o];return r}function Wn(t){let{kind:e,name:r,slug:o,defaultView:n,activeViewOverrides:i,queryParams:a,onChangeQueryParams:l}=t,s=Ml(e,r,o),c=(0,Qi.useSelect)(S=>S(Fl.store).get("core/views",s),[s]),{set:f}=(0,Qi.useDispatch)(Fl.store),m=c??n,d=Number(a?.page??m.page??1),p=a?.search??m.search??"",g=(0,zn.useMemo)(()=>Ll({...m,page:d,search:p},i,n),[m,d,p,i,n]),w=!!c,v=(0,zn.useCallback)(S=>{let P={page:S?.page,search:S?.search},R=Xi(s_(S,["page","search"]),i,n);l&&!Yr(P,{page:d,search:p})&&l(P);let I=Xi(m,i,n),k=Xi(n,i,n);Yr(I,R)||(Yr(R,k)?f("core/views",s,void 0):f("core/views",s,R))},[l,d,p,m,n,i,f,s]),b=(0,zn.useCallback)(()=>{f("core/views",s,void 0)},[s,f]);return{view:g,isModified:w,updateView:v,resetToDefault:b}}var l_=u(gt(),1),u_=u(Nl(),1);var Ct=u(j(),1),wl=u(ht(),1);var cm=u(de(),1),um={};function Bl(t,e){let r=cm.useRef(um);return r.current===um&&(r.current=t(e)),r}function jl(t,...e){let r=new URL(`https://base-ui.com/production-error/${t}`);return e.forEach(o=>r.searchParams.append("args[]",o)),`Base UI error #${t}; visit ${r} for the full message.`}var ea=u(de(),1);function Hl(t,e,r,o){let n=Bl(fm).current;return d_(n,t,e,r,o)&&pm(n,[t,e,r,o]),n.callback}function mm(t){let e=Bl(fm).current;return m_(e,t)&&pm(e,t),e.callback}function fm(){return{callback:null,cleanup:null,refs:[]}}function d_(t,e,r,o,n){return t.refs[0]!==e||t.refs[1]!==r||t.refs[2]!==o||t.refs[3]!==n}function m_(t,e){return t.refs.length!==e.length||t.refs.some((r,o)=>r!==e[o])}function pm(t,e){if(t.refs=e,e.every(r=>r==null)){t.callback=null;return}t.callback=r=>{if(t.cleanup&&(t.cleanup(),t.cleanup=null),r!=null){let o=Array(e.length).fill(null);for(let n=0;n{for(let n=0;n=t}function zl(t){if(!vm.isValidElement(t))return null;let e=t,r=e.props;return(hm(19)?r?.ref:e.ref)??null}function Gn(t,e){if(t&&!e)return t;if(!t&&e)return e;if(t||e)return{...t,...e}}function bm(t,e){let r={};for(let o in t){let n=t[o];if(e?.hasOwnProperty(o)){let i=e[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 _m(t,e){return typeof t=="function"?t(e):t}function xm(t,e){return typeof t=="function"?t(e):t}var Un={};function Ji(t,e,r,o,n){let i={...Wl(t,Un)};return e&&(i=qn(i,e)),r&&(i=qn(i,r)),o&&(i=qn(i,o)),n&&(i=qn(i,n)),i}function ym(t){if(t.length===0)return Un;if(t.length===1)return Wl(t[0],Un);let e={...Wl(t[0],Un)};for(let r=1;r=65&&n<=90&&(typeof e=="function"||typeof e>"u")}function wm(t){return typeof t=="function"}function Wl(t,e){return wm(t)?t(e):t??Un}function h_(t,e){return e?t?r=>{if(b_(r)){let n=r;v_(n);let i=e(n);return n.baseUIHandlerPrevented||t?.(n),i}let o=e(r);return t?.(r),o}:e:t}function v_(t){return t.preventBaseUIHandler=()=>{t.baseUIHandlerPrevented=!0},t}function Gl(t,e){return e?t?e+" "+t:e:t}function b_(t){return t!=null&&typeof t=="object"&&"nativeEvent"in t}var __=Object.freeze([]),$r=Object.freeze({});var ql=u(de(),1);function Sm(t,e,r={}){let o=e.render,n=x_(e,r);if(r.enabled===!1)return null;let i=r.state??$r;return y_(t,o,n,i)}function x_(t,e={}){let{className:r,style:o,render:n}=t,{state:i=$r,ref:a,props:l,stateAttributesMapping:s,enabled:c=!0}=e,f=c?_m(r,i):void 0,m=c?xm(o,i):void 0,d=c?bm(i,s):$r,p=c?Gn(d,Array.isArray(l)?ym(l):l)??$r:$r;return typeof document<"u"&&(c?Array.isArray(a)?p.ref=mm([p.ref,zl(n),...a]):p.ref=Hl(p.ref,zl(n),a):Hl(null,null)),c?(f!==void 0&&(p.className=Gl(p.className,f)),m!==void 0&&(p.style=Gn(p.style,m)),p):$r}function y_(t,e,r,o){if(e){if(typeof e=="function")return e(r,o);let n=Ji(r,e.props);return n.ref=r.ref,ea.cloneElement(e,n)}if(t&&typeof t=="string")return w_(t,r);throw new Error(jl(8))}function w_(t,e){return t==="button"?(0,ql.createElement)("button",{type:"button",...e,key:e.key}):t==="img"?(0,ql.createElement)("img",{alt:"",...e,key:e.key}):ea.createElement(t,e)}function Om(t){return Sm(t.defaultTagName??"div",t,t)}function Rm(t){var e,r,o="";if(typeof t=="string"||typeof t=="number")o+=t;else if(typeof t=="object")if(Array.isArray(t)){var n=t.length;for(e=0;e{},fields:[],data:[],paginationInfo:{totalItems:0,totalPages:0},selection:[],onChangeSelection:()=>{},setOpenedFilter:()=>{},openedFilter:null,getItemId:t=>t.id,isItemClickable:()=>!0,renderItemLink:void 0,containerWidth:0,containerRef:(0,qa.createRef)(),resizeObserverRef:()=>{},defaultLayouts:{list:{},grid:{},table:{}},filters:[],isShowingFilter:!1,setIsShowingFilter:()=>{},hasInitiallyLoaded:!1,hasInfiniteScrollHandler:!1,config:{perPageSizes:[]}});zm.displayName="DataViewsContext";var U=zm;var Or=u(W(),1);var Io=u(W(),1),Ja=u(G(),1),It=u(j(),1),lc=u(rc(),1);var qm=u(G(),1),Um=u(W(),1),Ym=u(V(),1);function io({selection:t,onChangeSelection:e,item:r,getItemId:o,titleField:n,disabled:i,...a}){let l=o(r),s=!i&&t.includes(l),c=n?.getValue?.({item:r})||(0,Um.__)("(no title)");return(0,Ym.jsx)(qm.CheckboxControl,{className:"dataviews-selection-checkbox","aria-label":c,"aria-disabled":i,checked:s,onChange:()=>{i||e(t.includes(l)?t.filter(f=>l!==f):[...t,l])},...a})}var Po=u(G(),1),Zm=u(W(),1),tn=u(j(),1);var Xm=u(gt(),1),oc=u(ht(),1);var $m=u(ec(),1),{lock:BT,unlock:Z}=(0,$m.__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(V(),1),{Menu:en,kebabCase:N_}=Z(Po.privateApis);function M_({action:t,onClick:e,items:r,variant:o}){let n=typeof t.label=="string"?t.label:t.label(r);return(0,xe.jsx)(Po.Button,{disabled:!!t.disabled,accessibleWhenDisabled:!0,size:"compact",variant:o,onClick:e,children:n})}function L_({action:t,onClick:e,items:r}){let o=typeof t.label=="string"?t.label:t.label(r);return(0,xe.jsx)(en.Item,{disabled:t.disabled,onClick:e,children:(0,xe.jsx)(en.ItemLabel,{children:o})})}function Ao({action:t,items:e,closeModal:r}){let o=typeof t.label=="string"?t.label:t.label(e),n=typeof t.modalHeader=="function"?t.modalHeader(e):t.modalHeader;return(0,xe.jsx)(Po.Modal,{title:n||o,__experimentalHideHeader:!!t.hideModalHeader,onRequestClose:r,focusOnMount:t.modalFocusOnMount??!0,size:t.modalSize||"medium",overlayClassName:`dataviews-action-modal dataviews-action-modal__${N_(t.id)}`,children:(0,xe.jsx)(t.RenderModal,{items:e,closeModal:r})})}function nc({actions:t,item:e,registry:r,setActiveModalAction:o}){let{primaryActions:n,regularActions:i}=(0,tn.useMemo)(()=>t.reduce((l,s)=>((s.isPrimary?l.primaryActions:l.regularActions).push(s),l),{primaryActions:[],regularActions:[]}),[t]),a=l=>l.map(s=>(0,xe.jsx)(L_,{action:s,onClick:()=>{if("RenderModal"in s){o(s);return}s.callback([e],{registry:r})},items:[e]},s.id));return(0,xe.jsxs)(en.Group,{children:[a(n),a(i)]})}function rn({item:t,actions:e,isCompact:r}){let o=(0,Xm.useRegistry)(),{primaryActions:n,eligibleActions:i}=(0,tn.useMemo)(()=>{let l=e.filter(c=>!c.isEligible||c.isEligible(t));return{primaryActions:l.filter(c=>c.isPrimary),eligibleActions:l}},[e,t]),a=(0,oc.useViewportMatch)("medium","<");return r?(0,xe.jsx)(Km,{item:t,actions:i,isSmall:!0,registry:o}):(0,xe.jsxs)(F,{direction:"row",justify:"flex-end",className:"dataviews-item-actions",style:{flexShrink:0,width:"auto"},children:[(0,xe.jsx)(ic,{item:t,actions:n,registry:o}),(n.lengthi(null)})]})}function ic({item:t,actions:e,registry:r,buttonVariant:o}){let[n,i]=(0,tn.useState)(null);return(0,oc.useViewportMatch)("medium","<")||!Array.isArray(e)||e.length===0?null:(0,xe.jsxs)(xe.Fragment,{children:[e.map(l=>(0,xe.jsx)(M_,{action:l,onClick:()=>{if("RenderModal"in l){i(l);return}l.callback([t],{registry:r})},items:[t],variant:o},l.id)),!!n&&(0,xe.jsx)(Ao,{action:n,items:[t],closeModal:()=>i(null)})]})}var on=u(G(),1),Ua=u(W(),1),ut=u(j(),1),tf=u(gt(),1);var ac=u(ht(),1);var ao=u(W(),1);function Qm(t,e,r){return t>0?(0,ao.sprintf)((0,ao._n)("%d Item selected","%d Items selected",t),t):r>e?(0,ao.sprintf)((0,ao._n)("%1$d of %2$d Item","%1$d of %2$d Items",r),e,r):(0,ao.sprintf)((0,ao._n)("%d Item","%d Items",e),e)}var qe=u(V(),1);function F_({action:t,items:e,ActionTriggerComponent:r}){let[o,n]=(0,ut.useState)(!1);return(0,qe.jsxs)(qe.Fragment,{children:[(0,qe.jsx)(r,{...{action:t,onClick:()=>{n(!0)},items:e}}),o&&(0,qe.jsx)(Ao,{action:t,items:e,closeModal:()=>n(!1)})]})}function Ya(t,e){return(0,ut.useMemo)(()=>t.some(r=>r.supportsBulk&&(!r.isEligible||r.isEligible(e))),[t,e])}function nn(t,e){return(0,ut.useMemo)(()=>e.some(r=>t.some(o=>o.supportsBulk&&(!o.isEligible||o.isEligible(r)))),[t,e])}function li({selection:t,onChangeSelection:e,data:r,actions:o,getItemId:n}){let i=(0,ut.useMemo)(()=>r.filter(s=>o.some(c=>c.supportsBulk&&(!c.isEligible||c.isEligible(s)))),[r,o]),a=r.filter(s=>t.includes(n(s))&&i.includes(s)),l=a.length===i.length;return(0,qe.jsx)(on.CheckboxControl,{className:"dataviews-view-table-selection-checkbox",checked:l,indeterminate:!l&&!!a.length,onChange:()=>{e(l?[]:i.map(s=>n(s)))},"aria-label":l?(0,Ua.__)("Deselect all"):(0,Ua.__)("Select all")})}function Jm({action:t,onClick:e,isBusy:r,items:o}){let n=typeof t.label=="string"?t.label:t.label(o);return(0,ac.useViewportMatch)("medium","<")?(0,qe.jsx)(on.Button,{disabled:r,accessibleWhenDisabled:!0,label:n,icon:t.icon,size:"compact",onClick:e,isBusy:r}):(0,qe.jsx)(on.Button,{disabled:r,accessibleWhenDisabled:!0,size:"compact",onClick:e,isBusy:r,children:n})}var rf=[];function B_({action:t,selectedItems:e,actionInProgress:r,setActionInProgress:o}){let n=(0,tf.useRegistry)(),i=(0,ut.useMemo)(()=>e.filter(a=>!t.isEligible||t.isEligible(a)),[t,e]);return"RenderModal"in t?(0,qe.jsx)(F_,{action:t,items:i,ActionTriggerComponent:Jm},t.id):(0,qe.jsx)(Jm,{action:t,onClick:async()=>{o(t.id),await t.callback(e,{registry:n}),o(null)},items:i,isBusy:r===t.id},t.id)}function ef(t,e,r,o,n,i,a,l,s,c){let f=Qm(o.length,t.length,c.totalItems);return(0,qe.jsxs)(F,{direction:"row",className:"dataviews-bulk-actions-footer__container",gap:"md",align:"center",children:[(0,qe.jsx)(li,{selection:o,onChangeSelection:s,data:t,actions:e,getItemId:r}),(0,qe.jsx)("span",{className:"dataviews-bulk-actions-footer__item-count",children:f}),(0,qe.jsxs)(F,{direction:"row",className:"dataviews-bulk-actions-footer__action-buttons",gap:"xs",children:[n.map(m=>(0,qe.jsx)(B_,{action:m,selectedItems:i,actionInProgress:a,setActionInProgress:l},m.id)),i.length>0&&(0,qe.jsx)(on.Button,{icon:Zn,showTooltip:!0,tooltipPosition:"top",size:"compact",label:(0,Ua.__)("Cancel"),disabled:!!a,accessibleWhenDisabled:!1,onClick:()=>{s(rf)}})]})]})}function j_({selection:t,actions:e,onChangeSelection:r,data:o,getItemId:n,paginationInfo:i}){let[a,l]=(0,ut.useState)(null),s=(0,ut.useRef)(void 0),c=(0,ac.useViewportMatch)("medium","<"),f=(0,ut.useMemo)(()=>e.filter(g=>g.supportsBulk),[e]),m=(0,ut.useMemo)(()=>o.filter(g=>f.some(w=>!w.isEligible||w.isEligible(g))),[o,f]),d=(0,ut.useMemo)(()=>o.filter(g=>t.includes(n(g))&&m.includes(g)),[t,o,n,m]),p=(0,ut.useMemo)(()=>e.filter(g=>g.supportsBulk&&(!c||g.icon)&&d.some(w=>!g.isEligible||g.isEligible(w))),[e,d,c]);if(a)s.current||(s.current=ef(o,e,n,t,p,d,a,l,r,i));else return s.current&&(s.current=void 0),ef(o,e,n,t,p,d,a,l,r,i);return s.current}function $a(){let{data:t,selection:e,actions:r=rf,onChangeSelection:o,getItemId:n,paginationInfo:i}=(0,ut.useContext)(U);return(0,qe.jsx)(j_,{selection:e,onChangeSelection:o,data:t,actions:r,getItemId:n,paginationInfo:i})}var Pr=u(W(),1);var Ar=u(G(),1),so=u(j(),1);function Ka(t,e){let r=[t?.titleField,t?.mediaField,t?.descriptionField].filter(Boolean);return e.filter(o=>!r.includes(o.id)&&o.type!=="media"&&o.enableHiding!==!1)}var Q=u(V(),1),{Menu:me}=Z(Ar.privateApis);function H_({children:t}){return so.Children.toArray(t).filter(Boolean).map((e,r)=>(0,Q.jsxs)(so.Fragment,{children:[r>0&&(0,Q.jsx)(me.Separator,{}),e]},r))}var z_=(0,so.forwardRef)(function({fieldId:e,view:r,fields:o,onChangeView:n,onHide:i,setOpenedFilter:a,canMove:l=!0,canInsertLeft:s=!0,canInsertRight:c=!0},f){let m=r.fields??[],d=m?.indexOf(e),p=r.sort?.field===e,g=!1,w=!1,v=!1,b=[],S=o.find(T=>T.id===e),{setIsShowingFilter:P}=(0,so.useContext)(U);if(!S)return null;g=S.enableHiding!==!1,w=S.enableSorting!==!1;let R=S.header;if(b=!!S.filterBy&&S.filterBy?.operators||[],v=!r.filters?.some(T=>e===T.field)&&!!(S.hasElements||S.Edit)&&S.filterBy!==!1&&!S.filterBy?.isPrimary,!w&&!l&&!g&&!v)return R;let I=Ka(r,o).filter(T=>!m.includes(T.id)),k=(s||c)&&!!I.length,D=(0,Pr.isRTL)();return(0,Q.jsxs)(me,{children:[(0,Q.jsxs)(me.TriggerButton,{render:(0,Q.jsx)(Ar.Button,{size:"compact",className:"dataviews-view-table-header-button",ref:f,variant:"tertiary"}),children:[R,r.sort&&p&&(0,Q.jsx)("span",{"aria-hidden":"true",children:Mm[r.sort.direction]})]}),(0,Q.jsx)(me.Popover,{style:{minWidth:"240px"},children:(0,Q.jsxs)(H_,{children:[w&&(0,Q.jsx)(me.Group,{children:Ha.map(T=>{let O=r.sort&&p&&r.sort.direction===T,N=`${e}-${T}`;return(0,Q.jsx)(me.RadioItem,{name:"view-table-sorting",value:N,checked:O,onChange:()=>{n({...r,sort:{field:e,direction:T},showLevels:!1})},children:(0,Q.jsx)(me.ItemLabel,{children:Wa[T]})},N)})}),v&&(0,Q.jsx)(me.Group,{children:(0,Q.jsx)(me.Item,{prefix:(0,Q.jsx)(Ar.Icon,{icon:Qn}),onClick:()=>{a(e),P(!0),n({...r,page:1,filters:[...r.filters||[],{field:e,value:void 0,operator:b[0]}]})},children:(0,Q.jsx)(me.ItemLabel,{children:(0,Pr.__)("Add filter")})})}),(l||g||k)&&S&&(0,Q.jsxs)(me.Group,{children:[l&&(0,Q.jsx)(me.Item,{prefix:(0,Q.jsx)(Ar.Icon,{icon:Xl}),disabled:D?d>=m.length-1:d<1,onClick:()=>{let T=D?d+1:d-1,O=[...m];O.splice(d,1),O.splice(T,0,e),n({...r,fields:O})},children:(0,Q.jsx)(me.ItemLabel,{children:(0,Pr.__)("Move left")})}),l&&(0,Q.jsx)(me.Item,{prefix:(0,Q.jsx)(Ar.Icon,{icon:Jl}),disabled:D?d<1:d>=m.length-1,onClick:()=>{let T=D?d-1:d+1,O=[...m];O.splice(d,1),O.splice(T,0,e),n({...r,fields:O})},children:(0,Q.jsx)(me.ItemLabel,{children:(0,Pr.__)("Move right")})}),s&&!!I.length&&(0,Q.jsxs)(me,{children:[(0,Q.jsx)(me.SubmenuTriggerItem,{children:(0,Q.jsx)(me.ItemLabel,{children:(0,Pr.__)("Insert left")})}),(0,Q.jsx)(me.Popover,{children:I.map(T=>{let O=D?d+1:d;return(0,Q.jsx)(me.Item,{onClick:()=>{n({...r,fields:[...m.slice(0,O),T.id,...m.slice(O)]})},children:(0,Q.jsx)(me.ItemLabel,{children:T.label})},T.id)})})]}),c&&!!I.length&&(0,Q.jsxs)(me,{children:[(0,Q.jsx)(me.SubmenuTriggerItem,{children:(0,Q.jsx)(me.ItemLabel,{children:(0,Pr.__)("Insert right")})}),(0,Q.jsx)(me.Popover,{children:I.map(T=>{let O=D?d:d+1;return(0,Q.jsx)(me.Item,{onClick:()=>{n({...r,fields:[...m.slice(0,O),T.id,...m.slice(O)]})},children:(0,Q.jsx)(me.ItemLabel,{children:T.label})},T.id)})})]}),g&&S&&(0,Q.jsx)(me.Item,{prefix:(0,Q.jsx)(Ar.Icon,{icon:si}),onClick:()=>{i(S),n({...r,fields:m.filter(T=>T!==e)})},children:(0,Q.jsx)(me.ItemLabel,{children:(0,Pr.__)("Hide column")})})]})]})})]})}),W_=z_,an=W_;var of=u(j(),1),sc=u(V(),1);function G_({item:t,isItemClickable:e,onClickItem:r,className:o}){return!e(t)||!r?{className:o}:{className:o?`${o} ${o}--clickable`:void 0,role:"button",tabIndex:0,onClick:n=>{n.stopPropagation(),r(t)},onKeyDown:n=>{(n.key==="Enter"||n.key===""||n.key===" ")&&(n.stopPropagation(),r(t))}}}function lo({item:t,isItemClickable:e,onClickItem:r,renderItemLink:o,className:n,children:i,...a}){if(!e(t))return(0,sc.jsx)("div",{className:n,...a,children:i});if(o){let s=o({item:t,className:`${n} ${n}--clickable`,...a,children:i});return(0,of.cloneElement)(s,{onClick:c=>{c.stopPropagation(),s.props.onClick&&s.props.onClick(c)},onKeyDown:c=>{(c.key==="Enter"||c.key===""||c.key===" ")&&(c.stopPropagation(),s.props.onKeyDown&&s.props.onKeyDown(c))}})}let l=G_({item:t,isItemClickable:e,onClickItem:r,className:n});return(0,sc.jsx)("div",{...l,...a,children:i})}var sr=u(V(),1);function q_({item:t,level:e,titleField:r,mediaField:o,descriptionField:n,onClickItem:i,renderItemLink:a,isItemClickable:l}){return(0,sr.jsxs)(F,{direction:"row",gap:"md",align:"flex-start",justify:"flex-start",children:[o&&(0,sr.jsx)(lo,{item:t,isItemClickable:l,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-column-primary__media","aria-label":l(t)&&(i||a)&&r?r.getValue?.({item:t}):void 0,children:(0,sr.jsx)(o.render,{item:t,field:o,config:{sizes:"32px"}})}),(0,sr.jsxs)(F,{direction:"column",align:"flex-start",className:"dataviews-view-table__primary-column-content",children:[r&&(0,sr.jsxs)(lo,{item:t,isItemClickable:l,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-title-field",children:[e!==void 0&&e>0&&(0,sr.jsxs)("span",{className:"dataviews-view-table__level",children:[Array(e).fill("\u2014").join(" "),"\xA0"]}),(0,sr.jsx)(r.render,{item:t,field:r})]}),n&&(0,sr.jsx)(n.render,{item:t,field:n})]})]})}var Za=q_;var nf=u(ht(),1),sn=u(j(),1),af=u(W(),1),U_=t=>(0,af.isRTL)()?Math.abs(t.scrollLeft)<=1:t.scrollLeft+t.clientWidth>=t.scrollWidth-1;function sf({scrollContainerRef:t,enabled:e=!1}){let[r,o]=(0,sn.useState)(!1),n=(0,nf.useDebounce)((0,sn.useCallback)(()=>{let i=t.current;i&&o(U_(i))},[t,o]),200);return(0,sn.useEffect)(()=>typeof window>"u"||!e||!t.current?()=>{}:(n(),t.current.addEventListener("scroll",n),window.addEventListener("resize",n),()=>{t.current?.removeEventListener("scroll",n),window.removeEventListener("resize",n)}),[t,e]),r}function Wt(t,e){return t.reduce((r,o)=>{let n=e.getValue({item:o});return r.has(n)||r.set(n,[]),r.get(n)?.push(o),r},new Map)}var uo=u(G(),1),uf=u(W(),1),cf=u(j(),1);var Dt=u(V(),1);function lf({field:t,isVisible:e,onToggleVisibility:r}){return(0,Dt.jsx)(uo.__experimentalItem,{onClick:t.enableHiding?r:void 0,children:(0,Dt.jsxs)(F,{direction:"row",gap:"sm",justify:"flex-start",align:"center",children:[(0,Dt.jsx)("div",{style:{height:24,width:24},children:e&&(0,Dt.jsx)(uo.Icon,{icon:Kn})}),(0,Dt.jsx)("span",{className:"dataviews-view-config__label",children:t.label})]})})}function Y_(t){return!!t}function Xa({showLabel:t=!0}){let{view:e,fields:r,onChangeView:o}=(0,cf.useContext)(U),n=Ka(e,r);if(!n?.length)return null;let i=r.find(g=>g.id===e.titleField),a=r.find(g=>g.id===e.mediaField),l=r.find(g=>g.id===e.descriptionField),s=[{field:i,isVisibleFlag:"showTitle"},{field:a,isVisibleFlag:"showMedia"},{field:l,isVisibleFlag:"showDescription"}].filter(({field:g})=>Y_(g)),c=e.fields??[],f=n.filter(g=>c.includes(g.id)).length,m=s.filter(({isVisibleFlag:g})=>e[g]??!0),d=m.length+f,p=d===1&&m.length===1;return(0,Dt.jsxs)(F,{direction:"column",className:"dataviews-field-control",children:[t&&(0,Dt.jsx)(uo.BaseControl.VisualLabel,{children:(0,uf.__)("Properties")}),(0,Dt.jsx)(F,{direction:"column",className:"dataviews-view-config__properties",children:(0,Dt.jsxs)(uo.__experimentalItemGroup,{isBordered:!0,isSeparated:!0,size:"medium",children:[s.map(({field:g,isVisibleFlag:w})=>{let v=e[w]??!0,b=p&&v?{...g,enableHiding:!1}:g;return(0,Dt.jsx)(lf,{field:b,isVisible:v,onToggleVisibility:()=>{o({...e,[w]:!v})}},g.id)}),n.map(g=>{let w=c.includes(g.id),v=d===1&&w?{...g,enableHiding:!1}:g;return(0,Dt.jsx)(lf,{field:v,isVisible:w,onToggleVisibility:()=>{o({...e,fields:w?c.filter(b=>b!==g.id):[...c,g.id]})}},g.id)})]})})]})}var Qa=u(j(),1);function lr(t,e={delay:400}){let[r,o]=(0,Qa.useState)(!1);return(0,Qa.useEffect)(()=>{if(!t)return;let n=setTimeout(()=>{o(!0)},e.delay);return()=>{clearTimeout(n),o(!1)}},[t,e.delay]),r}var $=u(V(),1);function mf(t,e){if(t)return t;if(e==="integer"||e==="number")return"end"}function $_({item:t,fields:e,column:r,align:o}){let n=e.find(a=>a.id===r);if(!n)return null;let i=z("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,$.jsx)("div",{className:i,children:(0,$.jsx)(n.render,{item:t,field:n})})}function df({hasBulkActions:t,item:e,level:r,actions:o,fields:n,id:i,view:a,titleField:l,mediaField:s,descriptionField:c,selection:f,getItemId:m,isItemClickable:d,onClickItem:p,renderItemLink:g,onChangeSelection:w,isActionsColumnSticky:v,posinset:b}){let{paginationInfo:S}=(0,It.useContext)(U),P=Ya(o,e),R=P&&f.includes(i),{showTitle:I=!0,showMedia:k=!0,showDescription:D=!0,infiniteScrollEnabled:T}=a,O=(0,It.useRef)(!1),N=a.fields??[],_=l&&I||s&&k||c&&D;return(0,$.jsxs)("tr",{className:z("dataviews-view-table__row",{"is-selected":P&&R,"has-bulk-actions":P}),onTouchStart:()=>{O.current=!0},"aria-setsize":T?S.totalItems:void 0,"aria-posinset":b,role:T?"article":void 0,onMouseDown:y=>{let E=(0,lc.isAppleOS)()?y.metaKey:y.ctrlKey;y.button===0&&E&&window.navigator.userAgent.toLowerCase().includes("firefox")&&y?.preventDefault()},onClick:y=>{if(!P)return;((0,lc.isAppleOS)()?y.metaKey:y.ctrlKey)&&!O.current&&document.getSelection()?.type!=="Range"&&w(f.includes(i)?f.filter(x=>i!==x):[...f,i])},children:[t&&(0,$.jsx)("td",{className:"dataviews-view-table__checkbox-column",children:(0,$.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,$.jsx)(io,{item:e,selection:f,onChangeSelection:w,getItemId:m,titleField:l,disabled:!P})})}),_&&(0,$.jsx)("td",{children:(0,$.jsx)(Za,{item:e,level:r,titleField:I?l:void 0,mediaField:k?s:void 0,descriptionField:D?c:void 0,isItemClickable:d,onClickItem:p,renderItemLink:g})}),N.map(y=>{let{width:E,maxWidth:x,minWidth:A,align:h}=a.layout?.styles?.[y]??{},C=n.find(L=>L.id===y),M=mf(h,C?.type);return(0,$.jsx)("td",{style:{width:E,maxWidth:x,minWidth:A},children:(0,$.jsx)($_,{fields:n,item:e,column:y,align:M})},y)}),!!o?.length&&(0,$.jsx)("td",{className:z("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":v}),onClick:y=>y.stopPropagation(),children:(0,$.jsx)(rn,{item:e,actions:o})})]})}function K_({actions:t,data:e,fields:r,getItemId:o,getItemLevel:n,isLoading:i=!1,onChangeView:a,onChangeSelection:l,selection:s,setOpenedFilter:c,onClickItem:f,isItemClickable:m,renderItemLink:d,view:p,className:g,empty:w}){let{containerRef:v}=(0,It.useContext)(U),b=lr(i),S=(0,It.useRef)(new Map),P=(0,It.useRef)(void 0),[R,I]=(0,It.useState)(),[k,D]=(0,It.useState)(null);(0,It.useEffect)(()=>{P.current&&(P.current.focus(),P.current=void 0)});let T=(0,It.useId)(),O=sf({scrollContainerRef:v,enabled:!!t?.length}),N=nn(t,e);if(R){P.current=R,I(void 0);return}let _=Y=>{let J=S.current.get(Y.id),_e=J?S.current.get(J.fallback):void 0;I(_e?.node)},y=Y=>{Y.preventDefault(),Y.stopPropagation();let J={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(J)})},E=!!e?.length,x=r.find(Y=>Y.id===p.titleField),A=r.find(Y=>Y.id===p.mediaField),h=r.find(Y=>Y.id===p.descriptionField),C=p.groupBy?.field?r.find(Y=>Y.id===p.groupBy?.field):null,M=C?Wt(e,C):null,{showTitle:L=!0,showMedia:ne=!0,showDescription:Te=!0}=p,Me=x&&L||A&&ne||h&&Te,ze=p.fields??[],at=(Y,J)=>_e=>{_e?S.current.set(Y,{node:_e,fallback:ze[J>0?J-1:1]}):S.current.delete(Y)},or=p.infiniteScrollEnabled&&!M,Sr=(0,Io.isRTL)();return E?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)("table",{className:z("dataviews-view-table",g,{[`has-${p.layout?.density}-density`]:p.layout?.density&&["compact","comfortable"].includes(p.layout.density),"has-bulk-actions":N,"is-refreshing":!or&&b}),"aria-busy":i,"aria-describedby":T,role:or?"feed":void 0,inert:!or&&i?"true":void 0,children:[(0,$.jsxs)("colgroup",{children:[N&&(0,$.jsx)("col",{className:"dataviews-view-table__col-checkbox"}),Me&&(0,$.jsx)("col",{className:"dataviews-view-table__col-first-data"}),ze.map((Y,J)=>(0,$.jsx)("col",{className:z(`dataviews-view-table__col-${Y}`,{"dataviews-view-table__col-first-data":!Me&&J===0})},`col-${Y}`)),!!t?.length&&(0,$.jsx)("col",{className:"dataviews-view-table__col-actions"})]}),k&&(0,$.jsx)(Ja.Popover,{anchor:k,onClose:()=>D(null),placement:"bottom-start",children:(0,$.jsx)(Xa,{showLabel:!1})}),(0,$.jsx)("thead",{onContextMenu:y,children:(0,$.jsxs)("tr",{className:"dataviews-view-table__row",children:[N&&(0,$.jsx)("th",{className:"dataviews-view-table__checkbox-column",scope:"col",onContextMenu:y,children:(0,$.jsx)(li,{selection:s,onChangeSelection:l,data:e,actions:t,getItemId:o})}),Me&&(0,$.jsx)("th",{scope:"col",children:x&&(0,$.jsx)(an,{ref:at(x.id,0),fieldId:x.id,view:p,fields:r,onChangeView:a,onHide:_,setOpenedFilter:c,canMove:!1,canInsertLeft:Sr?p.layout?.enableMoving??!0:!1,canInsertRight:Sr?!1:p.layout?.enableMoving??!0})}),ze.map((Y,J)=>{let{width:_e,maxWidth:Cr,minWidth:Tr,align:Co}=p.layout?.styles?.[Y]??{},To=r.find(Dl=>Dl.id===Y),Zo=mf(Co,To?.type),Hn=p.layout?.enableMoving??!0;return(0,$.jsx)("th",{style:{width:_e,maxWidth:Cr,minWidth:Tr,textAlign:Zo},"aria-sort":p.sort?.direction&&p.sort?.field===Y?za[p.sort.direction]:void 0,scope:"col",children:(0,$.jsx)(an,{ref:at(Y,J),fieldId:Y,view:p,fields:r,onChangeView:a,onHide:_,setOpenedFilter:c,canMove:Hn,canInsertLeft:Hn,canInsertRight:Hn})},Y)}),!!t?.length&&(0,$.jsx)("th",{className:z("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":!O}),children:(0,$.jsx)("span",{className:"dataviews-view-table-header",children:(0,Io.__)("Actions")})})]})}),E&&C&&M?Array.from(M.entries()).map(([Y,J])=>(0,$.jsxs)("tbody",{children:[(0,$.jsx)("tr",{className:"dataviews-view-table__group-header-row",children:(0,$.jsx)("td",{colSpan:ze.length+(Me?1:0)+(N?1:0)+(t?.length?1:0),className:"dataviews-view-table__group-header-cell",children:p.groupBy?.showLabel===!1?Y:(0,Io.sprintf)((0,Io.__)("%1$s: %2$s"),C.label,Y)})}),J.map((_e,Cr)=>(0,$.jsx)(df,{item:_e,level:p.showLevels&&typeof n=="function"?n(_e):void 0,hasBulkActions:N,actions:t,fields:r,id:o(_e)||Cr.toString(),view:p,titleField:x,mediaField:A,descriptionField:h,selection:s,getItemId:o,onChangeSelection:l,onClickItem:f,renderItemLink:d,isItemClickable:m,isActionsColumnSticky:!O},o(_e)))]},`group-${Y}`)):(0,$.jsx)("tbody",{children:E&&e.map((Y,J)=>(0,$.jsx)(df,{item:Y,level:p.showLevels&&typeof n=="function"?n(Y):void 0,hasBulkActions:N,actions:t,fields:r,id:o(Y)||J.toString(),view:p,titleField:x,mediaField:A,descriptionField:h,selection:s,getItemId:o,onChangeSelection:l,onClickItem:f,renderItemLink:d,isItemClickable:m,isActionsColumnSticky:!O,posinset:or?J+1:void 0},o(Y)))})]}),or&&i&&(0,$.jsx)("div",{className:"dataviews-loading",id:T,children:(0,$.jsx)("p",{className:"dataviews-loading-more",children:(0,$.jsx)(Ja.Spinner,{})})})]}):(0,$.jsx)("div",{className:z("dataviews-no-results",{"is-refreshing":b}),id:T,children:w})}var ff=K_;var vf=u(G(),1),rs=u(W(),1);var Nt=u(G(),1);var ui=u(W(),1),gf=u(ht(),1),hf=u(rc(),1),ts=u(j(),1);var Z_=u(G(),1),X_=u(W(),1),es=u(j(),1);var Q_=u(V(),1),J_=[{value:120,breakpoint:1},{value:170,breakpoint:1},{value:230,breakpoint:1},{value:290,breakpoint:1112},{value:350,breakpoint:1636},{value:430,breakpoint:588}],ex=J_[2].value;function pf(){let t=(0,es.useContext)(U),e=t.view;return(0,es.useMemo)(()=>{let r=t.containerWidth,o=32,n=e.layout?.previewSize??ex,i=Math.floor((r+o)/(n+o));return Math.max(1,i)},[t.containerWidth,e.layout?.previewSize])}var se=u(V(),1),{Badge:tx}=Z(Nt.privateApis);function rx(t,e){let r=[];for(let o=0,n=t.length;o{if(b.onClickCapture?.(h),(0,hf.isAppleOS)()?h.metaKey:h.ctrlKey){if(h.stopPropagation(),h.preventDefault(),!k)return;o(r.includes(D)?r.filter(C=>D!==C):[...r,D])}},children:[(0,se.jsx)(lo,{item:s,isItemClickable:i,onClickItem:n,renderItemLink:a,className:z("dataviews-view-grid__media",{"dataviews-view-grid__media--placeholder":!_}),...x,children:y}),w&&(0,se.jsx)(io,{item:s,selection:r,onChangeSelection:o,getItemId:l,titleField:m,disabled:!k}),!!c?.length&&(0,se.jsx)("div",{className:"dataviews-view-grid__media-actions",children:(0,se.jsx)(rn,{item:s,actions:c,isCompact:!0})}),P&&(0,se.jsx)("div",{className:"dataviews-view-grid__title",children:(0,se.jsx)(lo,{item:s,isItemClickable:i,onClickItem:n,renderItemLink:a,className:"dataviews-view-grid__title-field dataviews-title-field",...A,title:m?.getValueFormatted({item:s,field:m})||void 0,children:E})}),(0,se.jsxs)(F,{direction:"column",gap:"xs",children:[I&&d?.render&&(0,se.jsx)(d.render,{item:s,field:d}),!!g?.length&&(0,se.jsx)(F,{direction:"row",className:"dataviews-view-grid__badge-fields",gap:"sm",wrap:"wrap",align:"top",justify:"flex-start",children:g.map(h=>(0,se.jsx)(tx,{className:"dataviews-view-grid__field-value",children:(0,se.jsx)(h.render,{item:s,field:h})},h.id))}),!!p?.length&&(0,se.jsx)(F,{direction:"column",className:"dataviews-view-grid__fields",gap:"xs",children:p.map(h=>(0,se.jsx)(Nt.Flex,{className:"dataviews-view-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,se.jsxs)(se.Fragment,{children:[(0,se.jsx)(Nt.Tooltip,{text:h.label,children:(0,se.jsx)(Nt.FlexItem,{className:"dataviews-view-grid__field-name",children:h.header})}),(0,se.jsx)(Nt.FlexItem,{className:"dataviews-view-grid__field-value",style:{maxHeight:"none"},children:(0,se.jsx)(h.render,{item:s,field:h})})]})},h.id))})]})]})});function uc({data:t,isInfiniteScroll:e,className:r,inert:o,isLoading:n,view:i,fields:a,selection:l,onChangeSelection:s,onClickItem:c,isItemClickable:f,renderItemLink:m,getItemId:d,actions:p}){let{paginationInfo:g,resizeObserverRef:w}=(0,ts.useContext)(U),v=pf(),b=nn(p,t),S=a.find(N=>N.id===i?.titleField),P=a.find(N=>N.id===i?.mediaField),R=a.find(N=>N.id===i?.descriptionField),I=i.fields??[],{regularFields:k,badgeFields:D}=I.reduce((N,_)=>{let y=a.find(x=>x.id===_);if(!y)return N;let E=i.layout?.badgeFields?.includes(_)?"badgeFields":"regularFields";return N[E].push(y),N},{regularFields:[],badgeFields:[]}),T="900px",O=Math.ceil(t.length/v);return(0,se.jsx)(Nt.Composite,{role:e?"feed":"grid",className:z("dataviews-view-grid",r),focusWrap:!0,"aria-busy":n,"aria-rowcount":e?void 0:O,ref:w,inert:o,children:rx(t,v).map((N,_)=>(0,se.jsx)(Nt.Composite.Row,{render:(0,se.jsx)("div",{role:"row","aria-rowindex":_+1,"aria-label":(0,ui.sprintf)((0,ui.__)("Row %d"),_+1),className:"dataviews-view-grid__row",style:{gridTemplateColumns:`repeat( ${v}, minmax(0, 1fr) )`}}),children:N.map((y,E)=>{let x=_*v+E;return(0,se.jsx)(Nt.Composite.Item,{render:A=>(0,se.jsx)(ox,{...A,role:e?"article":"gridcell","aria-setsize":e?g.totalItems:void 0,"aria-posinset":e?x+1:void 0,view:i,selection:l,onChangeSelection:s,onClickItem:c,isItemClickable:f,renderItemLink:m,getItemId:d,item:y,actions:p,mediaField:P,titleField:S,descriptionField:R,regularFields:k,badgeFields:D,hasBulkActions:b,config:{sizes:T}})},d(y))})},_))})}var Mt=u(V(),1);function nx({actions:t,data:e,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,onClickItem:a,isItemClickable:l,renderItemLink:s,selection:c,view:f,className:m,empty:d}){let p=lr(!!n),g=!!e?.length,w=f.groupBy?.field?r.find(P=>P.id===f.groupBy?.field):null,v=w?Wt(e,w):null,b=f.infiniteScrollEnabled&&!v;if(!g)return(0,Mt.jsx)("div",{className:z("dataviews-no-results",{"is-refreshing":p}),children:d});let S={className:z(m,{"is-refreshing":!b&&p}),inert:!b&&n?"true":void 0,isLoading:n,view:f,fields:r,selection:c,onChangeSelection:i,onClickItem:a,isItemClickable:l,renderItemLink:s,getItemId:o,actions:t};return(0,Mt.jsxs)(Mt.Fragment,{children:[g&&w&&v&&(0,Mt.jsx)(F,{direction:"column",gap:"lg",children:Array.from(v.entries()).map(([P,R])=>(0,Mt.jsxs)(F,{direction:"column",gap:"sm",children:[(0,Mt.jsx)("h3",{className:"dataviews-view-grid__group-header",children:f.groupBy?.showLabel===!1?P:(0,rs.sprintf)((0,rs.__)("%1$s: %2$s"),w.label,P)}),(0,Mt.jsx)(uc,{...S,data:R,isInfiniteScroll:!1})]},P))}),!v&&(0,Mt.jsx)(uc,{...S,data:e,isInfiniteScroll:!!b}),b&&n&&(0,Mt.jsx)("p",{className:"dataviews-loading-more",children:(0,Mt.jsx)(vf.Spinner,{})})]})}var bf=nx;var os=u(ht(),1),Ke=u(G(),1),He=u(j(),1),ci=u(W(),1);var fc=u(gt(),1);var q=u(V(),1),{Menu:cc}=Z(Ke.privateApis);function dc(t){return`${t}-item-wrapper`}function ix(t,e){return`${t}-primary-action-${e}`}function mc(t){return`${t}-dropdown`}function ax({idPrefix:t,primaryAction:e,item:r}){let o=(0,fc.useRegistry)(),[n,i]=(0,He.useState)(!1),a=ix(t,e.id),l=typeof e.label=="string"?e.label:e.label([r]);return"RenderModal"in e?(0,q.jsx)("div",{role:"gridcell",children:(0,q.jsx)(Ke.Composite.Item,{id:a,render:(0,q.jsx)(Ke.Button,{disabled:!!e.disabled,accessibleWhenDisabled:!0,text:l,size:"small",onClick:()=>i(!0)}),children:n&&(0,q.jsx)(Ao,{action:e,items:[r],closeModal:()=>i(!1)})})},e.id):(0,q.jsx)("div",{role:"gridcell",children:(0,q.jsx)(Ke.Composite.Item,{id:a,render:(0,q.jsx)(Ke.Button,{disabled:!!e.disabled,accessibleWhenDisabled:!0,size:"small",onClick:()=>{e.callback([r],{registry:o})},children:l})})},e.id)}function _f({view:t,actions:e,idPrefix:r,isSelected:o,item:n,titleField:i,mediaField:a,descriptionField:l,onSelect:s,otherFields:c,onDropdownTriggerKeyDown:f,posinset:m}){let{showTitle:d=!0,showMedia:p=!0,showDescription:g=!0,infiniteScrollEnabled:w}=t,v=(0,He.useRef)(null),b=`${r}-label`,S=`${r}-description`,P=(0,fc.useRegistry)(),[R,I]=(0,He.useState)(!1),[k,D]=(0,He.useState)(null),T=({type:h})=>{I(h==="mouseenter")},{paginationInfo:O}=(0,He.useContext)(U);(0,He.useEffect)(()=>{o&&v.current?.scrollIntoView({behavior:"auto",block:"nearest",inline:"nearest"})},[o]);let{primaryAction:N,eligibleActions:_}=(0,He.useMemo)(()=>{let h=e.filter(M=>!M.isEligible||M.isEligible(n));return{primaryAction:h.filter(M=>M.isPrimary)[0],eligibleActions:h}},[e,n]),y=N&&e.length===1,E=p&&a?.render?(0,q.jsx)("div",{className:"dataviews-view-list__media-wrapper",children:(0,q.jsx)(a.render,{item:n,field:a,config:{sizes:"52px"}})}):null,x=d&&i?.render?(0,q.jsx)(i.render,{item:n,field:i}):null,A=_?.length>0&&(0,q.jsxs)(F,{direction:"row",gap:"md",className:"dataviews-view-list__item-actions",children:[N&&(0,q.jsx)(ax,{idPrefix:r,primaryAction:N,item:n}),!y&&(0,q.jsxs)("div",{role:"gridcell",children:[(0,q.jsxs)(cc,{placement:"bottom-end",children:[(0,q.jsx)(cc.TriggerButton,{render:(0,q.jsx)(Ke.Composite.Item,{id:mc(r),render:(0,q.jsx)(Ke.Button,{size:"small",icon:ri,label:(0,ci.__)("Actions"),accessibleWhenDisabled:!0,disabled:!e.length,onKeyDown:f})})}),(0,q.jsx)(cc.Popover,{children:(0,q.jsx)(nc,{actions:_,item:n,registry:P,setActiveModalAction:D})})]}),!!k&&(0,q.jsx)(Ao,{action:k,items:[n],closeModal:()=>D(null)})]})]});return(0,q.jsx)(Ke.Composite.Row,{ref:v,render:(0,q.jsx)("div",{"aria-posinset":m,"aria-setsize":w?O.totalItems:void 0}),role:w?"article":"row",className:z({"is-selected":o,"is-hovered":R}),onMouseEnter:T,onMouseLeave:T,children:(0,q.jsxs)(F,{direction:"row",className:"dataviews-view-list__item-wrapper",children:[(0,q.jsx)("div",{role:"gridcell",children:(0,q.jsx)(Ke.Composite.Item,{id:dc(r),"aria-pressed":o,"aria-labelledby":b,"aria-describedby":S,className:"dataviews-view-list__item",onClick:()=>s(n)})}),(0,q.jsxs)(F,{direction:"row",gap:"md",justify:"start",align:"flex-start",style:{flex:1,minWidth:0},children:[E,(0,q.jsxs)(F,{direction:"column",gap:"xs",className:"dataviews-view-list__field-wrapper",children:[(0,q.jsxs)(F,{direction:"row",align:"center",children:[(0,q.jsx)("div",{className:"dataviews-title-field dataviews-view-list__title-field",id:b,children:x}),A]}),g&&l?.render&&(0,q.jsx)("div",{className:"dataviews-view-list__field",children:(0,q.jsx)(l.render,{item:n,field:l})}),(0,q.jsx)("div",{className:"dataviews-view-list__fields",id:S,children:c.map(h=>(0,q.jsxs)("div",{className:"dataviews-view-list__field",children:[(0,q.jsx)(Ke.VisuallyHidden,{as:"span",className:"dataviews-view-list__field-label",children:h.label}),(0,q.jsx)("span",{className:"dataviews-view-list__field-value",children:(0,q.jsx)(h.render,{item:n,field:h})})]},h.id))})]})]})]})})}function sx(t){return!!t}function pc(t){let{actions:e,data:r,fields:o,getItemId:n,isLoading:i,onChangeSelection:a,selection:l,view:s,className:c,empty:f}=t,m=(0,os.useInstanceId)(pc,"view-list"),d=lr(!!i),p=r?.findLast(h=>l.includes(n(h))),g=o.find(h=>h.id===s.titleField),w=o.find(h=>h.id===s.mediaField),v=o.find(h=>h.id===s.descriptionField),b=(s?.fields??[]).map(h=>o.find(C=>h===C.id)).filter(sx),S=h=>a([n(h)]),P=(0,He.useCallback)(h=>`${m}-${n(h)}`,[m,n]),R=(0,He.useCallback)((h,C)=>C.startsWith(P(h)),[P]),[I,k]=(0,He.useState)(void 0);(0,He.useEffect)(()=>{p&&k(dc(P(p)))},[p,P]);let D=r.findIndex(h=>R(h,I??"")),T=(0,os.usePrevious)(D),O=D!==-1,N=(0,He.useCallback)((h,C)=>{let M=Math.min(r.length-1,Math.max(0,h));if(!r[M])return;let L=P(r[M]),ne=C(L);k(ne),document.getElementById(ne)?.focus()},[r,P]);(0,He.useEffect)(()=>{!O&&(T!==void 0&&T!==-1)&&N(T,dc)},[O,N,T]);let _=(0,He.useCallback)(h=>{h.key==="ArrowDown"&&(h.preventDefault(),N(D+1,mc)),h.key==="ArrowUp"&&(h.preventDefault(),N(D-1,mc))},[N,D]),y=!!r?.length,E=s.groupBy?.field?o.find(h=>h.id===s.groupBy?.field):null,x=y&&E?Wt(r,E):null,A=s.infiniteScrollEnabled&&!x;return y?y&&E&&x?(0,q.jsx)(Ke.Composite,{id:`${m}`,render:(0,q.jsx)("div",{}),className:"dataviews-view-list__group",role:"grid",activeId:I,setActiveId:k,children:(0,q.jsx)(F,{direction:"column",gap:"lg",className:z("dataviews-view-list",c),children:Array.from(x.entries()).map(([h,C])=>(0,q.jsxs)(F,{direction:"column",gap:"sm",children:[(0,q.jsx)("h3",{className:"dataviews-view-list__group-header",children:s.groupBy?.showLabel===!1?h:(0,ci.sprintf)((0,ci.__)("%1$s: %2$s"),E.label,h)}),C.map(M=>{let L=P(M);return(0,q.jsx)(_f,{view:s,idPrefix:L,actions:e,item:M,isSelected:M===p,onSelect:S,mediaField:w,titleField:g,descriptionField:v,otherFields:b,onDropdownTriggerKeyDown:_},L)})]},h))})}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(Ke.Composite,{id:m,render:(0,q.jsx)("div",{}),className:z("dataviews-view-list",c,{[`has-${s.layout?.density}-density`]:s.layout?.density&&["compact","comfortable"].includes(s.layout.density),"is-refreshing":!A&&d}),role:s.infiniteScrollEnabled?"feed":"grid",activeId:I,setActiveId:k,inert:!A&&i?"true":void 0,children:r.map((h,C)=>{let M=P(h);return(0,q.jsx)(_f,{view:s,idPrefix:M,actions:e,item:h,isSelected:h===p,onSelect:S,mediaField:w,titleField:g,descriptionField:v,otherFields:b,onDropdownTriggerKeyDown:_,posinset:s.infiniteScrollEnabled?C+1:void 0},M)})}),A&&i&&(0,q.jsx)("p",{className:"dataviews-loading-more",children:(0,q.jsx)(Ke.Spinner,{})})]}):(0,q.jsx)("div",{className:z("dataviews-no-results",{"is-refreshing":d}),children:f})}var Pf=u(G(),1);var ns=u(W(),1),xf=u(j(),1);var ln=u(V(),1);function yf({groupName:t,groupData:e,groupField:r,showLabel:o=!0,children:n}){let i=o?(0,xf.createInterpolateElement)((0,ns.sprintf)((0,ns.__)("%s: "),r.label).trim(),{groupName:(0,ln.jsx)(r.render,{item:e[0],field:r})}):(0,ln.jsx)(r.render,{item:e[0],field:r});return(0,ln.jsxs)(F,{direction:"column",className:"dataviews-view-activity__group",children:[(0,ln.jsx)("h3",{className:"dataviews-view-activity__group-header",children:i}),n]},t)}var wf=u(G(),1),Oo=u(j(),1),Sf=u(gt(),1),Cf=u(ht(),1);var Le=u(V(),1);function lx(t){let{view:e,actions:r,item:o,titleField:n,mediaField:i,descriptionField:a,otherFields:l,posinset:s,onClickItem:c,renderItemLink:f,isItemClickable:m}=t,{showTitle:d=!0,showMedia:p=!0,showDescription:g=!0,infiniteScrollEnabled:w}=e,v=(0,Oo.useRef)(null),b=(0,Sf.useRegistry)(),{paginationInfo:S}=(0,Oo.useContext)(U),{primaryActions:P,eligibleActions:R}=(0,Oo.useMemo)(()=>{let _=r.filter(E=>!E.isEligible||E.isEligible(o));return{primaryActions:_.filter(E=>E.isPrimary),eligibleActions:_}},[r,o]),I=(0,Cf.useViewportMatch)("medium","<"),k=e.layout?.density??"balanced",D=p&&k!=="compact"&&i?.render?(0,Le.jsx)(i.render,{item:o,field:i,config:{sizes:k==="comfortable"?"32px":"24px"}}):null,T=(0,Le.jsx)("div",{className:"dataviews-view-activity__item-type-icon",children:D||(0,Le.jsx)("span",{className:"dataviews-view-activity__item-bullet","aria-hidden":"true"})}),O=d&&n?.render?(0,Le.jsx)(n.render,{item:o,field:n}):null,N=(0,Oo.useMemo)(()=>k==="comfortable"?"md":"sm",[k]);return(0,Le.jsx)("div",{ref:v,role:w?"article":void 0,"aria-posinset":s,"aria-setsize":w?S.totalItems:void 0,className:z("dataviews-view-activity__item",k==="compact"&&"is-compact",k==="balanced"&&"is-balanced",k==="comfortable"&&"is-comfortable"),children:(0,Le.jsxs)(F,{direction:"row",gap:"lg",justify:"start",align:"flex-start",children:[(0,Le.jsx)(F,{direction:"column",gap:"xs",align:"center",className:"dataviews-view-activity__item-type",children:T}),(0,Le.jsxs)(F,{direction:"column",gap:N,align:"flex-start",className:"dataviews-view-activity__item-content",children:[O&&(0,Le.jsx)(lo,{item:o,isItemClickable:m,onClickItem:c,renderItemLink:f,className:"dataviews-view-activity__item-title",children:O}),g&&a&&(0,Le.jsx)("div",{className:"dataviews-view-activity__item-description",children:(0,Le.jsx)(a.render,{item:o,field:a})}),(0,Le.jsx)("div",{className:"dataviews-view-activity__item-fields",children:l.map(_=>(0,Le.jsxs)("div",{className:"dataviews-view-activity__item-field",children:[(0,Le.jsx)(wf.VisuallyHidden,{as:"span",className:"dataviews-view-activity__item-field-label",children:_.label}),(0,Le.jsx)("span",{className:"dataviews-view-activity__item-field-value",children:(0,Le.jsx)(_.render,{item:o,field:_})})]},_.id))}),!!P?.length&&(0,Le.jsx)(ic,{item:o,actions:P,registry:b,buttonVariant:"secondary"})]}),(P.length0)&&(0,Le.jsx)("div",{className:"dataviews-view-activity__item-actions",children:(0,Le.jsx)(rn,{item:o,actions:R,isCompact:!0})})]})})}var Tf=lx;var Ef=u(de(),1);function ux(t){return!!t}function gc(t){let{data:e,fields:r,getItemId:o,view:n}=t,i=r.find(c=>c.id===n.titleField),a=r.find(c=>c.id===n.mediaField),l=r.find(c=>c.id===n.descriptionField),s=(n?.fields??[]).map(c=>r.find(f=>c===f.id)).filter(ux);return e.map((c,f)=>(0,Ef.createElement)(Tf,{...t,key:o(c),item:c,mediaField:a,titleField:i,descriptionField:l,otherFields:s,posinset:n.infiniteScrollEnabled?f+1:void 0}))}var Lt=u(V(),1);function Af(t){let{empty:e,data:r,fields:o,isLoading:n,view:i,className:a}=t,l=lr(!!n),s=!!r?.length,c=i.groupBy?.field?o.find(w=>w.id===i.groupBy?.field):null,f=s&&c?Wt(r,c):null,m=i.infiniteScrollEnabled&&!f;if(!s)return(0,Lt.jsx)("div",{className:z("dataviews-no-results",{"is-refreshing":l}),children:e});let d=!m&&!!n,p=z("dataviews-view-activity",a,{"is-refreshing":!m&&l}),g=f?Array.from(f.entries()):[];return s&&c&&f?(0,Lt.jsx)(F,{direction:"column",gap:"sm",className:p,inert:d?"true":void 0,children:g.map(([w,v])=>(0,Lt.jsx)(yf,{groupName:w,groupData:v,groupField:c,showLabel:i.groupBy?.showLabel!==!1,children:(0,Lt.jsx)(gc,{...t,data:v})},w))}):(0,Lt.jsxs)(Lt.Fragment,{children:[(0,Lt.jsx)("div",{className:p,role:i.infiniteScrollEnabled?"feed":void 0,inert:d?"true":void 0,children:(0,Lt.jsx)(gc,{...t})}),m&&n&&(0,Lt.jsx)("p",{className:"dataviews-loading-more",children:(0,Lt.jsx)(Pf.Spinner,{})})]})}var Ot=u(G(),1),mi=u(W(),1),Nf=u(ht(),1),Mf=u(j(),1);var Of=u(G(),1),cx=u(gt(),1),is=u(j(),1);var dx=u(W(),1);var di=u(G(),1),un=u(j(),1),Ft=u(W(),1);var Ir=u(V(),1);function hc(){let{view:t,onChangeView:e,paginationInfo:{totalItems:r=0,totalPages:o}}=(0,un.useContext)(U);if(!r||!o||t.infiniteScrollEnabled)return null;let n=t.page??1,i=Array.from(Array(o)).map((a,l)=>{let s=l+1;return{value:s.toString(),label:s.toString(),"aria-label":n===s?(0,Ft.sprintf)((0,Ft.__)("Page %1$d of %2$d"),n,o):s.toString()}});return!!r&&o!==1&&(0,Ir.jsxs)(F,{direction:"row",className:"dataviews-pagination",justify:"end",align:"center",gap:"xl",children:[(0,Ir.jsx)(F,{direction:"row",justify:"flex-start",align:"center",gap:"xs",className:"dataviews-pagination__page-select",children:(0,un.createInterpolateElement)((0,Ft.sprintf)((0,Ft._x)("
Page
%1$s
of %2$d
","paging"),"",o),{div:(0,Ir.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,Ir.jsx)(di.SelectControl,{"aria-label":(0,Ft.__)("Current page"),value:n.toString(),options:i,onChange:a=>{e({...t,page:+a})},size:"small",variant:"minimal"})})}),(0,Ir.jsxs)(F,{direction:"row",gap:"xs",align:"center",children:[(0,Ir.jsx)(di.Button,{onClick:()=>e({...t,page:n-1}),disabled:n===1,accessibleWhenDisabled:!0,label:(0,Ft.__)("Previous page"),icon:(0,Ft.isRTL)()?Pa:ka,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,Ir.jsx)(di.Button,{onClick:()=>e({...t,page:n+1}),disabled:n>=o,accessibleWhenDisabled:!0,label:(0,Ft.__)("Next page"),icon:(0,Ft.isRTL)()?ka:Pa,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})}var If=(0,un.memo)(hc);var Rf=u(V(),1);function as(t){return(0,is.useMemo)(()=>t?.every(e=>e.supportsBulk),[t])}var Vf=u(j(),1);var kf=u(V(),1),vc=(0,Vf.forwardRef)(({className:t,previewSize:e,...r},o)=>(0,kf.jsx)("div",{ref:o,className:z("dataviews-view-grid-items",t),style:{gridTemplateColumns:e&&`repeat(auto-fill, minmax(${e}px, 1fr))`},...r}));var X=u(V(),1),{Badge:mx}=Z(Ot.privateApis);function Df({view:t,multiselect:e,selection:r,onChangeSelection:o,getItemId:n,item:i,mediaField:a,titleField:l,descriptionField:s,regularFields:c,badgeFields:f,config:m,posinset:d,setsize:p}){let{showTitle:g=!0,showMedia:w=!0,showDescription:v=!0}=t,b=n(i),S=r.includes(b),P=a?.render?(0,X.jsx)(a.render,{item:i,field:a,config:m}):null,R=g&&l?.render?(0,X.jsx)(l.render,{item:i,field:l}):null;return(0,X.jsxs)(Ot.Composite.Item,{"aria-label":l?l.getValue({item:i})||(0,mi.__)("(no title)"):void 0,render:({children:I,...k})=>(0,X.jsx)(F,{direction:"column",children:I,...k}),role:"option","aria-posinset":d,"aria-setsize":p,className:z("dataviews-view-picker-grid__card",{"is-selected":S}),"aria-selected":S,onClick:()=>{if(S)o(r.filter(I=>b!==I));else{let I=e?[...r,b]:[b];o(I)}},children:[w&&P&&(0,X.jsx)("div",{className:"dataviews-view-picker-grid__media",children:P}),w&&P&&(0,X.jsx)(io,{item:i,selection:r,onChangeSelection:o,getItemId:n,titleField:l,disabled:!1,"aria-hidden":!0,tabIndex:-1}),g&&(0,X.jsx)(F,{direction:"row",justify:"space-between",className:"dataviews-view-picker-grid__title-actions",children:(0,X.jsx)("div",{className:"dataviews-view-picker-grid__title-field dataviews-title-field",children:R})}),(0,X.jsxs)(F,{direction:"column",gap:"xs",children:[v&&s?.render&&(0,X.jsx)(s.render,{item:i,field:s}),!!f?.length&&(0,X.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,X.jsx)(mx,{className:"dataviews-view-picker-grid__field-value",children:(0,X.jsx)(I.render,{item:i,field:I})},I.id))}),!!c?.length&&(0,X.jsx)(F,{direction:"column",className:"dataviews-view-picker-grid__fields",gap:"xs",children:c.map(I=>(0,X.jsx)(Ot.Flex,{className:"dataviews-view-picker-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(Ot.FlexItem,{className:"dataviews-view-picker-grid__field-name",children:I.header}),(0,X.jsx)(Ot.FlexItem,{className:"dataviews-view-picker-grid__field-value",style:{maxHeight:"none"},children:(0,X.jsx)(I.render,{item:i,field:I})})]})},I.id))})]})]},b)}function Lf({groupName:t,groupField:e,showLabel:r=!0,children:o}){let n=(0,Nf.useInstanceId)(Lf,"dataviews-view-picker-grid-group__header");return(0,X.jsxs)(F,{direction:"column",gap:"sm",role:"group","aria-labelledby":n,children:[(0,X.jsx)("h3",{className:"dataviews-view-picker-grid-group__header",id:n,children:r?(0,mi.sprintf)((0,mi.__)("%1$s: %2$s"),e.label,t):t}),o]},t)}function fx({actions:t,data:e,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,selection:a,view:l,className:s,empty:c}){let{resizeObserverRef:f,paginationInfo:m,itemListLabel:d}=(0,Mf.useContext)(U),p=r.find(E=>E.id===l?.titleField),g=r.find(E=>E.id===l?.mediaField),w=r.find(E=>E.id===l?.descriptionField),v=l.fields??[],{regularFields:b,badgeFields:S}=v.reduce((E,x)=>{let A=r.find(C=>C.id===x);if(!A)return E;let h=l.layout?.badgeFields?.includes(x)?"badgeFields":"regularFields";return E[h].push(A),E},{regularFields:[],badgeFields:[]}),P=!!e?.length,R=l.layout?.previewSize,I=as(t),k="900px",D=l.groupBy?.field?r.find(E=>E.id===l.groupBy?.field):null,T=D?Wt(e,D):null,O=l.infiniteScrollEnabled&&!T,N=l?.page??1,_=l?.perPage??0,y=O?m?.totalItems:void 0;return(0,X.jsxs)(X.Fragment,{children:[P&&D&&T&&(0,X.jsx)(Ot.Composite,{virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":I,className:z("dataviews-view-picker-grid",s),"aria-label":d,render:({children:E,...x})=>(0,X.jsx)(F,{direction:"column",gap:"lg",children:E,...x}),children:Array.from(T.entries()).map(([E,x])=>(0,X.jsx)(Lf,{groupName:E,groupField:D,showLabel:l.groupBy?.showLabel!==!1,children:(0,X.jsx)(vc,{previewSize:R,style:{gridTemplateColumns:R&&`repeat(auto-fill, minmax(${R}px, 1fr))`},"aria-busy":n,ref:f,children:x.map(A=>{let h=(N-1)*_+e.indexOf(A)+1;return(0,X.jsx)(Df,{view:l,multiselect:I,selection:a,onChangeSelection:i,getItemId:o,item:A,mediaField:g,titleField:p,descriptionField:w,regularFields:b,badgeFields:S,config:{sizes:k},posinset:h,setsize:y},o(A))})})},E))}),P&&!T&&(0,X.jsx)(Ot.Composite,{render:(0,X.jsx)(vc,{className:z("dataviews-view-picker-grid",s),previewSize:R,"aria-busy":n,ref:f}),virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":I,"aria-label":d,children:e.map((E,x)=>{let A=O?x+1:void 0;return O||(A=(N-1)*_+x+1),(0,X.jsx)(Df,{view:l,multiselect:I,selection:a,onChangeSelection:i,getItemId:o,item:E,mediaField:g,titleField:p,descriptionField:w,regularFields:b,badgeFields:S,config:{sizes:k},posinset:A,setsize:y},o(E))})}),!P&&(0,X.jsx)("div",{className:z({"dataviews-loading":n,"dataviews-no-results":!n}),children:n?(0,X.jsx)("p",{children:(0,X.jsx)(Ot.Spinner,{})}):c}),P&&n&&(0,X.jsx)("p",{className:"dataviews-loading-more",children:(0,X.jsx)(Ot.Spinner,{})})]})}var Ff=fx;var ss=u(W(),1),Ro=u(G(),1),Gt=u(j(),1);var ee=u(V(),1);function px({item:t,fields:e,column:r,align:o}){let n=e.find(a=>a.id===r);if(!n)return null;let i=z("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,ee.jsx)("div",{className:i,children:(0,ee.jsx)(n.render,{item:t,field:n})})}function Bf({item:t,fields:e,id:r,view:o,titleField:n,mediaField:i,descriptionField:a,selection:l,getItemId:s,onChangeSelection:c,multiselect:f,posinset:m}){let{paginationInfo:d}=(0,Gt.useContext)(U),p=l.includes(r),[g,w]=(0,Gt.useState)(!1),{showTitle:v=!0,showMedia:b=!0,showDescription:S=!0,infiniteScrollEnabled:P}=o,R=()=>{w(!0)},I=()=>{w(!1)},k=o.fields??[],D=n&&v||i&&b||a&&S;return(0,ee.jsxs)(Ro.Composite.Item,{render:({children:T,...O})=>(0,ee.jsx)("tr",{className:z("dataviews-view-table__row",{"is-selected":p,"is-hovered":g}),onMouseEnter:R,onMouseLeave:I,children:T,...O}),"aria-selected":p,"aria-setsize":d.totalItems||void 0,"aria-posinset":m,role:P?"article":"option",onClick:()=>{if(p)c(l.filter(T=>r!==T));else{let T=f?[...l,r]:[r];c(T)}},children:[(0,ee.jsx)("td",{className:"dataviews-view-table__checkbox-column",role:"presentation",children:(0,ee.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,ee.jsx)(io,{item:t,selection:l,onChangeSelection:c,getItemId:s,titleField:n,disabled:!1,"aria-hidden":!0,tabIndex:-1})})}),D&&(0,ee.jsx)("td",{role:"presentation",children:(0,ee.jsx)(Za,{item:t,titleField:v?n:void 0,mediaField:b?i:void 0,descriptionField:S?a:void 0,isItemClickable:()=>!1})}),k.map(T=>{let{width:O,maxWidth:N,minWidth:_,align:y}=o.layout?.styles?.[T]??{};return(0,ee.jsx)("td",{style:{width:O,maxWidth:N,minWidth:_},role:"presentation",children:(0,ee.jsx)(px,{fields:e,item:t,column:T,align:y})},T)})]},r)}function gx({actions:t,data:e,fields:r,getItemId:o,isLoading:n=!1,onChangeView:i,onChangeSelection:a,selection:l,setOpenedFilter:s,view:c,className:f,empty:m}){let d=(0,Gt.useRef)(new Map),p=(0,Gt.useRef)(void 0),[g,w]=(0,Gt.useState)(),v=as(t)??!1;(0,Gt.useEffect)(()=>{p.current&&(p.current.focus(),p.current=void 0)});let b=(0,Gt.useId)();if(g){p.current=g,w(void 0);return}let S=h=>{let C=d.current.get(h.id),M=C?d.current.get(C.fallback):void 0;w(M?.node)},P=!!e?.length,R=r.find(h=>h.id===c.titleField),I=r.find(h=>h.id===c.mediaField),k=r.find(h=>h.id===c.descriptionField),D=c.groupBy?.field?r.find(h=>h.id===c.groupBy?.field):null,T=D?Wt(e,D):null,{showTitle:O=!0,showMedia:N=!0,showDescription:_=!0}=c,y=R&&O||I&&N||k&&_,E=c.fields??[],x=(h,C)=>M=>{M?d.current.set(h,{node:M,fallback:E[C>0?C-1:1]}):d.current.delete(h)},A=c.infiniteScrollEnabled&&!T;return(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsxs)("table",{className:z("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":b,role:A?"feed":"listbox",children:[(0,ee.jsx)("thead",{role:"presentation",children:(0,ee.jsxs)("tr",{className:"dataviews-view-table__row",role:"presentation",children:[(0,ee.jsx)("th",{className:"dataviews-view-table__checkbox-column",children:v&&(0,ee.jsx)(li,{selection:l,onChangeSelection:a,data:e,actions:t,getItemId:o})}),y&&(0,ee.jsx)("th",{children:R&&(0,ee.jsx)(an,{ref:x(R.id,0),fieldId:R.id,view:c,fields:r,onChangeView:i,onHide:S,setOpenedFilter:s,canMove:!1})}),E.map((h,C)=>{let{width:M,maxWidth:L,minWidth:ne,align:Te}=c.layout?.styles?.[h]??{};return(0,ee.jsx)("th",{style:{width:M,maxWidth:L,minWidth:ne,textAlign:Te},"aria-sort":c.sort?.direction&&c.sort?.field===h?za[c.sort.direction]:void 0,scope:"col",children:(0,ee.jsx)(an,{ref:x(h,C),fieldId:h,view:c,fields:r,onChangeView:i,onHide:S,setOpenedFilter:s,canMove:c.layout?.enableMoving??!0})},h)})]})}),P&&D&&T?Array.from(T.entries()).map(([h,C])=>(0,ee.jsxs)(Ro.Composite,{virtualFocus:!0,orientation:"vertical",render:(0,ee.jsx)("tbody",{role:"group"}),children:[(0,ee.jsx)("tr",{className:"dataviews-view-table__group-header-row",role:"presentation",children:(0,ee.jsx)("td",{colSpan:E.length+(y?1:0)+1,className:"dataviews-view-table__group-header-cell",role:"presentation",children:c.groupBy?.showLabel===!1?h:(0,ss.sprintf)((0,ss.__)("%1$s: %2$s"),D.label,h)})}),C.map((M,L)=>(0,ee.jsx)(Bf,{item:M,fields:r,id:o(M)||L.toString(),view:c,titleField:R,mediaField:I,descriptionField:k,selection:l,getItemId:o,onChangeSelection:a,multiselect:v},o(M)))]},`group-${h}`)):(0,ee.jsx)(Ro.Composite,{render:(0,ee.jsx)("tbody",{role:"presentation"}),virtualFocus:!0,orientation:"vertical",children:P&&e.map((h,C)=>(0,ee.jsx)(Bf,{item:h,fields:r,id:o(h)||C.toString(),view:c,titleField:R,mediaField:I,descriptionField:k,selection:l,getItemId:o,onChangeSelection:a,multiselect:v,posinset:C+1},o(h)))})]}),(0,ee.jsxs)("div",{className:z({"dataviews-loading":n,"dataviews-no-results":!P&&!n}),id:b,children:[!P&&(n?(0,ee.jsx)("p",{children:(0,ee.jsx)(Ro.Spinner,{})}):m),P&&n&&(0,ee.jsx)("p",{className:"dataviews-loading-more",children:(0,ee.jsx)(Ro.Spinner,{})})]})]})}var jf=gx;var Hf=u(G(),1),zf=u(W(),1),Wf=u(j(),1);var Gf=u(V(),1),hx=[{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 bc(){let t=(0,Wf.useContext)(U),e=t.view,r=hx.filter(a=>t.containerWidth>=a.breakpoint),o=e.layout?.previewSize??230,n=r.map((a,l)=>({...a,index:l})).filter(a=>a.value<=o).sort((a,l)=>l.value-a.value)[0]?.index??0,i=r.map((a,l)=>({value:l}));return(0,Gf.jsx)(Hf.RangeControl,{__next40pxDefaultSize:!0,showTooltip:!1,label:(0,zf.__)("Preview size"),value:n,min:0,max:r.length-1,withInputField:!1,onChange:(a=0)=>{t.onChangeView({...e,layout:{...e.layout,previewSize:r[a].value}})},step:1,marks:i})}var cn=u(G(),1),dn=u(W(),1),qf=u(j(),1);var mn=u(V(),1);function fi(){let t=(0,qf.useContext)(U),e=t.view;return(0,mn.jsxs)(cn.__experimentalToggleGroupControl,{size:"__unstable-large",label:(0,dn.__)("Density"),value:e.layout?.density||"balanced",onChange:r=>{t.onChangeView({...e,layout:{...e.layout,density:r}})},isBlock:!0,children:[(0,mn.jsx)(cn.__experimentalToggleGroupControlOption,{value:"comfortable",label:(0,dn._x)("Comfortable","Density option for DataView layout")},"comfortable"),(0,mn.jsx)(cn.__experimentalToggleGroupControlOption,{value:"balanced",label:(0,dn._x)("Balanced","Density option for DataView layout")},"balanced"),(0,mn.jsx)(cn.__experimentalToggleGroupControlOption,{value:"compact",label:(0,dn._x)("Compact","Density option for DataView layout")},"compact")]})}var co=[{type:Jo,label:(0,Or.__)("Table"),component:ff,icon:la,viewConfigOptions:fi},{type:Ga,label:(0,Or.__)("Grid"),component:bf,icon:Qo,viewConfigOptions:bc},{type:Fm,label:(0,Or.__)("List"),component:pc,icon:(0,Or.isRTL)()?vu:_u,viewConfigOptions:fi},{type:Bm,label:(0,Or.__)("Activity"),component:Af,icon:qu,viewConfigOptions:fi},{type:jm,label:(0,Or.__)("Grid"),component:Ff,icon:Qo,viewConfigOptions:bc,isPicker:!0},{type:Hm,label:(0,Or.__)("Table"),component:jf,icon:la,viewConfigOptions:fi,isPicker:!0}];var Pn=u(j(),1);var Xt=u(G(),1),Fr=u(W(),1),js=u(j(),1);function pi(...t){}function _c(t,e){if(vx(t)){let r=bx(e)?e():e;return t(r)}return t}function vx(t){return typeof t=="function"}function bx(t){return typeof t=="function"}function Rt(t,e){return typeof Object.hasOwn=="function"?Object.hasOwn(t,e):Object.prototype.hasOwnProperty.call(t,e)}function mo(...t){return(...e)=>{for(let r of t)typeof r=="function"&&r(...e)}}function gi(t){return t.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}function xc(t,e){let r={...t};for(let o of e)Rt(r,o)&&delete r[o];return r}function yc(t,e){let r={};for(let o of e)Rt(t,o)&&(r[o]=t[o]);return r}function hi(t){return t}function et(t,e){if(!t)throw typeof e!="string"?new Error("Invariant failed"):new Error(e)}function wc(t){return Object.keys(t)}function Sc(t,...e){let r=typeof t=="function"?t(...e):t;return r==null?!1:!r}function Vo(t){return t.disabled||t["aria-disabled"]===!0||t["aria-disabled"]==="true"}function tt(t){let e={};for(let r in t)t[r]!==void 0&&(e[r]=t[r]);return e}function te(...t){for(let e of t)if(e!==void 0)return e}var Uf=u(de(),1);function Yf(t,e){typeof t=="function"?t(e):t&&(t.current=e)}function _x(t){return!t||!(0,Uf.isValidElement)(t)?!1:"ref"in t.props||"ref"in t}function $f(t){return _x(t)?{...t.props}.ref||t.ref:null}function Kf(t,e){let r={...t};for(let o in e){if(!Rt(e,o))continue;if(o==="className"){let i="className";r[i]=t[i]?`${t[i]} ${e[i]}`:e[i];continue}if(o==="style"){let i="style";r[i]=t[i]?{...t[i],...e[i]}:e[i];continue}let n=e[o];if(typeof n=="function"&&o.startsWith("on")){let i=t[o];if(typeof i=="function"){r[o]=(...a)=>{n(...a),i(...a)};continue}}r[o]=n}return r}var fo=xx();function xx(){var t;return typeof window<"u"&&!!((t=window.document)!=null&&t.createElement)}function Rr(t){return t?"self"in t?t.document:t.ownerDocument||document:document}function ko(t,e=!1){var r;let{activeElement:o}=Rr(t);if(!o?.nodeName)return null;if(Cc(o)&&((r=o.contentDocument)!=null&&r.body))return ko(o.contentDocument.body,e);if(e){let n=o.getAttribute("aria-activedescendant");if(n){let i=Rr(o).getElementById(n);if(i)return i}}return o}function ur(t,e){return t===e||t.contains(e)}function Cc(t){return t.tagName==="IFRAME"}function Vr(t){let e=t.tagName.toLowerCase();return e==="button"?!0:e==="input"&&t.type?yx.indexOf(t.type)!==-1:!1}var yx=["button","color","file","image","reset","submit"];function Tc(t){if(typeof t.checkVisibility=="function")return t.checkVisibility();let e=t;return e.offsetWidth>0||e.offsetHeight>0||t.getClientRects().length>0}function _t(t){try{let e=t instanceof HTMLInputElement&&t.selectionStart!==null,r=t.tagName==="TEXTAREA";return e||r||!1}catch{return!1}}function vi(t){return t.isContentEditable||_t(t)}function Ec(t){if(_t(t))return t.value;if(t.isContentEditable){let e=Rr(t).createRange();return e.selectNodeContents(t),e.toString()}return""}function fn(t){let e=0,r=0;if(_t(t))e=t.selectionStart||0,r=t.selectionEnd||0;else if(t.isContentEditable){let o=Rr(t).getSelection();if(o?.rangeCount&&o.anchorNode&&ur(t,o.anchorNode)&&o.focusNode&&ur(t,o.focusNode)){let n=o.getRangeAt(0),i=n.cloneRange();i.selectNodeContents(t),i.setEnd(n.startContainer,n.startOffset),e=i.toString().length,i.setEnd(n.endContainer,n.endOffset),r=i.toString().length}}return{start:e,end:r}}function Pc(t,e){let r=["dialog","menu","listbox","tree","grid"],o=t?.getAttribute("role");return o&&r.indexOf(o)!==-1?o:e}function pn(t){if(!t)return null;let e=r=>r==="auto"||r==="scroll";if(t.clientHeight&&t.scrollHeight>t.clientHeight){let{overflowY:r}=getComputedStyle(t);if(e(r))return t}else if(t.clientWidth&&t.scrollWidth>t.clientWidth){let{overflowX:r}=getComputedStyle(t);if(e(r))return t}return pn(t.parentElement)||document.scrollingElement||document.body}function bi(t,...e){/text|search|password|tel|url/i.test(t.type)&&t.setSelectionRange(...e)}function Ac(t,e){let r=t.map((n,i)=>[i,n]),o=!1;return r.sort(([n,i],[a,l])=>{let s=e(i),c=e(l);return s===c||!s||!c?0:wx(s,c)?(n>a&&(o=!0),-1):(ni):t}function wx(t,e){return!!(e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_PRECEDING)}function Ic(){return fo&&!!navigator.maxTouchPoints}function ls(){return fo?/mac|iphone|ipad|ipod/i.test(navigator.platform):!1}function Do(){return fo&&ls()&&/apple/i.test(navigator.vendor)}function Oc(){return fo&&/firefox\//i.test(navigator.userAgent)}function us(t){return!!(t.currentTarget&&!ur(t.currentTarget,t.target))}function ct(t){return t.target===t.currentTarget}function Zf(t){let e=t.currentTarget;if(!e)return!1;let r=ls();if(r&&!t.metaKey||!r&&!t.ctrlKey)return!1;let o=e.tagName.toLowerCase();return o==="a"||o==="button"&&e.type==="submit"||o==="input"&&e.type==="submit"}function Xf(t){let e=t.currentTarget;if(!e)return!1;let r=e.tagName.toLowerCase();return t.altKey?r==="a"||r==="button"&&e.type==="submit"||r==="input"&&e.type==="submit":!1}function No(t,e){let r=new FocusEvent("blur",e),o=t.dispatchEvent(r),n={...e,bubbles:!0};return t.dispatchEvent(new FocusEvent("focusout",n)),o}function Qf(t,e,r){let o=new KeyboardEvent(e,r);return t.dispatchEvent(o)}function Rc(t,e){let r=new MouseEvent("click",e);return t.dispatchEvent(r)}function cs(t,e){let r=e||t.currentTarget,o=t.relatedTarget;return!o||!ur(r,o)}function po(t,e,r,o){let i=(l=>{if(o){let c=setTimeout(l,o);return()=>clearTimeout(c)}let s=requestAnimationFrame(l);return()=>cancelAnimationFrame(s)})(()=>{t.removeEventListener(e,a,!0),r()}),a=()=>{i(),r()};return t.addEventListener(e,a,{once:!0,capture:!0}),i}function cr(t,e,r,o=window){let n=[];try{o.document.addEventListener(t,e,r);for(let a of Array.from(o.frames))n.push(cr(t,e,r,a))}catch{}return()=>{try{o.document.removeEventListener(t,e,r)}catch{}for(let a of n)a()}}var Sx=u(de(),1),ge=u(de(),1),Vc={...Sx},Jf=Vc.useId,DA=Vc.useDeferredValue,ep=Vc.useInsertionEffect,Oe=fo?ge.useLayoutEffect:ge.useEffect;function Cx(t){let[e]=(0,ge.useState)(t);return e}function np(t){let e=(0,ge.useRef)(t);return Oe(()=>{e.current=t}),e}function re(t){let e=(0,ge.useRef)(()=>{throw new Error("Cannot call an event handler while rendering.")});return ep?ep(()=>{e.current=t}):e.current=t,(0,ge.useCallback)((...r)=>{var o;return(o=e.current)==null?void 0:o.call(e,...r)},[])}function ip(t){let[e,r]=(0,ge.useState)(null);return Oe(()=>{if(e==null||!t)return;let o=null;return t(n=>(o=n,e)),()=>{t(o)}},[e,t]),[e,r]}function Re(...t){return(0,ge.useMemo)(()=>{if(t.some(Boolean))return e=>{for(let r of t)Yf(r,e)}},t)}function qt(t){if(Jf){let o=Jf();return t||o}let[e,r]=(0,ge.useState)(t);return Oe(()=>{if(t||e)return;let o=Math.random().toString(36).slice(2,8);r(`id-${o}`)},[t,e]),t||e}function ap(t,e){let r=i=>{if(typeof i=="string")return i},[o,n]=(0,ge.useState)(()=>r(e));return Oe(()=>{let i=t&&"current"in t?t.current:t;n(i?.tagName.toLowerCase()||r(e))},[t,e]),o}function sp(t,e,r){let o=Cx(r),[n,i]=(0,ge.useState)(o);return(0,ge.useEffect)(()=>{let a=t&&"current"in t?t.current:t;if(!a)return;let l=()=>{let c=a.getAttribute(e);i(c??o)},s=new MutationObserver(l);return s.observe(a,{attributeFilter:[e]}),l(),()=>s.disconnect()},[t,e,o]),n}function dr(t,e){let r=(0,ge.useRef)(!1);(0,ge.useEffect)(()=>{if(r.current)return t();r.current=!0},e),(0,ge.useEffect)(()=>()=>{r.current=!1},[])}function lp(t,e){let r=(0,ge.useRef)(!1);Oe(()=>{if(r.current)return t();r.current=!0},e),Oe(()=>()=>{r.current=!1},[])}function up(){return(0,ge.useReducer)(()=>[],[])}function Fe(t){return re(typeof t=="function"?t:()=>t)}function mr(t,e,r=[]){let o=(0,ge.useCallback)(n=>(t.wrapElement&&(n=t.wrapElement(n)),e(n)),[...r,t.wrapElement]);return{...t,wrapElement:o}}function cp(t,e,r){let o=t.onLoadedMetadataCapture,n=(0,ge.useMemo)(()=>Object.assign(()=>{},{...o,[e]:r}),[o,e,r]);return[o?.[e],{onLoadedMetadataCapture:n}]}var tp=!1;function dp(){return(0,ge.useEffect)(()=>{tp||(cr("mousemove",Ex,!0),cr("mousedown",ds,!0),cr("mouseup",ds,!0),cr("keydown",ds,!0),cr("scroll",ds,!0),tp=!0)},[]),re(()=>kc)}var kc=!1,rp=0,op=0;function Tx(t){let e=t.movementX||t.screenX-rp,r=t.movementY||t.screenY-op;return rp=t.screenX,op=t.screenY,e||r||!1}function Ex(t){Tx(t)&&(kc=!0)}function ds(){kc=!1}var xt=u(de(),1),Mo=u(V(),1);function he(t){let e=xt.forwardRef((r,o)=>t({...r,ref:o}));return e.displayName=t.displayName||t.name,e}function go(t,e){return xt.memo(t,e)}function ye(t,e){let{wrapElement:r,render:o,...n}=e,i=Re(e.ref,$f(o)),a;if(xt.isValidElement(o)){let l={...o.props,ref:i};a=xt.cloneElement(o,Kf(n,l))}else o?a=o(n):a=(0,Mo.jsx)(t,{...n});return r?r(a):a}function we(t){let e=(r={})=>t(r);return e.displayName=t.name,e}function Vt(t=[],e=[]){let r=xt.createContext(void 0),o=xt.createContext(void 0),n=()=>xt.useContext(r),i=(c=!1)=>{let f=xt.useContext(o),m=n();return c?f:f||m},a=()=>{let c=xt.useContext(o),f=n();if(!(c&&c===f))return f},l=c=>t.reduceRight((f,m)=>(0,Mo.jsx)(m,{...c,children:f}),(0,Mo.jsx)(r.Provider,{...c}));return{context:r,scopedContext:o,useContext:n,useScopedContext:i,useProviderContext:a,ContextProvider:l,ScopedContextProvider:c=>(0,Mo.jsx)(l,{...c,children:e.reduceRight((f,m)=>(0,Mo.jsx)(m,{...c,children:f}),(0,Mo.jsx)(o.Provider,{...c}))})}}var _i=Vt(),mp=_i.useContext,jA=_i.useScopedContext,HA=_i.useProviderContext,fp=_i.ContextProvider,pp=_i.ScopedContextProvider;var Dc=u(de(),1),xi=Vt([fp],[pp]),ms=xi.useContext,qA=xi.useScopedContext,gp=xi.useProviderContext,gn=xi.ContextProvider,fs=xi.ScopedContextProvider,hp=(0,Dc.createContext)(void 0),vp=(0,Dc.createContext)(void 0);function bp(t,e){return t.find(r=>e?!r.disabled&&r.id!==e:!r.disabled)}function fr(t,e){return e&&t.item(e)||null}function _p(t){let e=[];for(let r of t){let o=e.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):e.push([r])}return e}function xp(t,e=!1){if(_t(t))t.setSelectionRange(e?t.value.length:0,t.value.length);else if(t.isContentEditable){let r=Rr(t).getSelection();r?.selectAllChildren(t),e&&r?.collapseToEnd()}}var Nc=Symbol("FOCUS_SILENTLY");function yp(t){t[Nc]=!0,t.focus({preventScroll:!0})}function wp(t){let e=t[Nc];return delete t[Nc],e}function Lo(t,e,r){if(!e||e===r)return!1;let o=t.item(e.id);return!(!o||r&&o.element===r)}var ps=u(de(),1),Px="div",Mc=we(function({store:e,shouldRegisterItem:r=!0,getItem:o=hi,element:n,...i}){let a=mp();e=e||a;let l=qt(i.id),s=(0,ps.useRef)(n);return(0,ps.useEffect)(()=>{let c=s.current;if(!l||!c||!r)return;let f=o({id:l,element:c});return e?.renderItem(f)},[l,r,o,e]),i={...i,ref:Re(s,i.ref)},tt(i)}),JA=he(function(e){let r=Mc(e);return ye(Px,r)});var Sp=u(de(),1),Cp=(0,Sp.createContext)(!0);var Tp="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 yi(t){return!(!t.matches(Tp)||!Tc(t)||t.closest("[inert]"))}function Ep(t){for(;t&&!yi(t);)t=t.closest(Tp);return t||null}function Ut(t){let e=ko(t);if(!e)return!1;if(e===t)return!0;let r=e.getAttribute("aria-activedescendant");return r?r===t.id:!1}function Lc(t){let e=ko(t);if(!e)return!1;if(ur(t,e))return!0;let r=e.getAttribute("aria-activedescendant");return!r||!("id"in t)?!1:r===t.id?!0:!!t.querySelector(`#${CSS.escape(r)}`)}function Pp(t){!Lc(t)&&yi(t)&&t.focus()}function Ap(t,e){"scrollIntoView"in t?(t.focus({preventScroll:!0}),t.scrollIntoView({block:"nearest",inline:"nearest",...e})):t.focus()}var Bt=u(de(),1),Ax="div",Ip=Do(),Ix=["text","search","url","tel","email","password","number","date","month","week","time","datetime","datetime-local"],Ox=Symbol("safariFocusAncestor");function Op(t,e){t&&(t[Ox]=e)}function Rx(t){let{tagName:e,readOnly:r,type:o}=t;return e==="TEXTAREA"&&!r||e==="SELECT"&&!r?!0:e==="INPUT"&&!r?Ix.includes(o):!!(t.isContentEditable||t.getAttribute("role")==="combobox"&&t.dataset.name)}function Vx(t){return"labels"in t?t.labels:null}function Rp(t){return t.tagName.toLowerCase()==="input"&&t.type?t.type==="radio"||t.type==="checkbox":!1}function kx(t){return t?t==="button"||t==="summary"||t==="input"||t==="select"||t==="textarea"||t==="a":!0}function Dx(t){return t?t==="button"||t==="input"||t==="select"||t==="textarea":!0}function Nx(t,e,r,o,n){return t?e?r&&!o?-1:void 0:r?n:n||0:n}function Fc(t,e){return re(r=>{t?.(r),!r.defaultPrevented&&e&&(r.stopPropagation(),r.preventDefault())})}var Vp=!1,Bc=!0;function Mx(t){let e=t.target;e&&"hasAttribute"in e&&(e.hasAttribute("data-focus-visible")||(Bc=!1))}function Lx(t){t.metaKey||t.ctrlKey||t.altKey||(Bc=!0)}var wi=we(function({focusable:e=!0,accessibleWhenDisabled:r,autoFocus:o,onFocusVisible:n,...i}){let a=(0,Bt.useRef)(null);(0,Bt.useEffect)(()=>{e&&(Vp||(cr("mousedown",Mx,!0),cr("keydown",Lx,!0),Vp=!0))},[e]),Ip&&(0,Bt.useEffect)(()=>{if(!e)return;let x=a.current;if(!x||!Rp(x))return;let A=Vx(x);if(!A)return;let h=()=>queueMicrotask(()=>x.focus());for(let C of A)C.addEventListener("mouseup",h);return()=>{for(let C of A)C.removeEventListener("mouseup",h)}},[e]);let l=e&&Vo(i),s=!!l&&!r,[c,f]=(0,Bt.useState)(!1);(0,Bt.useEffect)(()=>{e&&s&&c&&f(!1)},[e,s,c]),(0,Bt.useEffect)(()=>{if(!e||!c)return;let x=a.current;if(!x||typeof IntersectionObserver>"u")return;let A=new IntersectionObserver(()=>{yi(x)||f(!1)});return A.observe(x),()=>A.disconnect()},[e,c]);let m=Fc(i.onKeyPressCapture,l),d=Fc(i.onMouseDownCapture,l),p=Fc(i.onClickCapture,l),g=i.onMouseDown,w=re(x=>{if(g?.(x),x.defaultPrevented||!e)return;let A=x.currentTarget;if(!Ip||us(x)||!Vr(A)&&!Rp(A))return;let h=!1,C=()=>{h=!0},M={capture:!0,once:!0};A.addEventListener("focusin",C,M);let L=Ep(A.parentElement);Op(L,!0),po(A,"mouseup",()=>{A.removeEventListener("focusin",C,!0),Op(L,!1),!h&&Pp(A)})}),v=(x,A)=>{if(A&&(x.currentTarget=A),!e)return;let h=x.currentTarget;h&&Ut(h)&&(n?.(x),!x.defaultPrevented&&(h.dataset.focusVisible="true",f(!0)))},b=i.onKeyDownCapture,S=re(x=>{if(b?.(x),x.defaultPrevented||!e||c||x.metaKey||x.altKey||x.ctrlKey||!ct(x))return;let A=x.currentTarget;po(A,"focusout",()=>v(x,A))}),P=i.onFocusCapture,R=re(x=>{if(P?.(x),x.defaultPrevented||!e)return;if(!ct(x)){f(!1);return}let A=x.currentTarget,h=()=>v(x,A);Bc||Rx(x.target)?po(x.target,"focusout",h):f(!1)}),I=i.onBlur,k=re(x=>{I?.(x),e&&cs(x)&&(x.currentTarget.removeAttribute("data-focus-visible"),f(!1))}),D=(0,Bt.useContext)(Cp),T=re(x=>{e&&o&&x&&D&&queueMicrotask(()=>{Ut(x)||yi(x)&&x.focus()})}),O=ap(a),N=e&&kx(O),_=e&&Dx(O),y=i.style,E=(0,Bt.useMemo)(()=>s?{pointerEvents:"none",...y}:y,[s,y]);return i={"data-focus-visible":e&&c||void 0,"data-autofocus":o||void 0,"aria-disabled":l||void 0,...i,ref:Re(a,T,i.ref),style:E,tabIndex:Nx(e,s,N,_,i.tabIndex),disabled:_&&s?!0:void 0,contentEditable:l?void 0:i.contentEditable,onKeyPressCapture:m,onClickCapture:p,onMouseDownCapture:d,onMouseDown:w,onKeyDownCapture:S,onFocusCapture:R,onBlur:k},tt(i)}),gI=he(function(e){let r=wi(e);return ye(Ax,r)});var ho=u(de(),1),Fx="button";function kp(t){if(!t.isTrusted)return!1;let e=t.currentTarget;return t.key==="Enter"?Vr(e)||e.tagName==="SUMMARY"||e.tagName==="A":t.key===" "?Vr(e)||e.tagName==="SUMMARY"||e.tagName==="INPUT"||e.tagName==="SELECT":!1}var Bx=Symbol("command"),jc=we(function({clickOnEnter:e=!0,clickOnSpace:r=!0,...o}){let n=(0,ho.useRef)(null),[i,a]=(0,ho.useState)(!1);(0,ho.useEffect)(()=>{n.current&&a(Vr(n.current))},[]);let[l,s]=(0,ho.useState)(!1),c=(0,ho.useRef)(!1),f=Vo(o),[m,d]=cp(o,Bx,!0),p=o.onKeyDown,g=re(b=>{p?.(b);let S=b.currentTarget;if(b.defaultPrevented||m||f||!ct(b)||_t(S)||S.isContentEditable)return;let P=e&&b.key==="Enter",R=r&&b.key===" ",I=b.key==="Enter"&&!e,k=b.key===" "&&!r;if(I||k){b.preventDefault();return}if(P||R){let D=kp(b);if(P){if(!D){b.preventDefault();let{view:T,...O}=b,N=()=>Rc(S,O);Oc()?po(S,"keyup",N):queueMicrotask(N)}}else R&&(c.current=!0,D||(b.preventDefault(),s(!0)))}}),w=o.onKeyUp,v=re(b=>{if(w?.(b),b.defaultPrevented||m||f||b.metaKey)return;let S=r&&b.key===" ";if(c.current&&S&&(c.current=!1,!kp(b))){b.preventDefault(),s(!1);let P=b.currentTarget,{view:R,...I}=b;queueMicrotask(()=>Rc(P,I))}});return o={"data-active":l||void 0,type:i?"button":void 0,...d,...o,ref:Re(n,o.ref),onKeyDown:g,onKeyUp:v},o=wi(o),o}),CI=he(function(e){let r=jc(e);return ye(Fx,r)});function Fo(t,e){let r=t.__unstableInternals;return et(r,"Invalid store"),r[e]}function yt(t,...e){let r=t,o=r,n=Symbol(),i=pi,a=new Set,l=new Set,s=new Set,c=new Set,f=new Set,m=new WeakMap,d=new WeakMap,p=T=>(s.add(T),()=>s.delete(T)),g=()=>{let T=a.size,O=Symbol();a.add(O);let N=()=>{a.delete(O),!a.size&&i()};if(T)return N;let _=wc(r).map(x=>mo(...e.map(A=>{var h;let C=(h=A?.getState)==null?void 0:h.call(A);if(C&&Rt(C,x))return Xe(A,[x],M=>{k(x,M[x],!0)})}))),y=[];for(let x of s)y.push(x());let E=e.map(hn);return i=mo(..._,...y,...E),N},w=(T,O,N=c)=>(N.add(O),d.set(O,T),()=>{var _;(_=m.get(O))==null||_(),m.delete(O),d.delete(O),N.delete(O)}),v=(T,O)=>w(T,O),b=(T,O)=>(m.set(O,O(r,r)),w(T,O)),S=(T,O)=>(m.set(O,O(r,o)),w(T,O,f)),P=T=>yt(yc(r,T),D),R=T=>yt(xc(r,T),D),I=()=>r,k=(T,O,N=!1)=>{var _;if(!Rt(r,T))return;let y=_c(O,r[T]);if(y===r[T])return;if(!N)for(let h of e)(_=h?.setState)==null||_.call(h,T,y);let E=r;r={...r,[T]:y};let x=Symbol();n=x,l.add(T);let A=(h,C,M)=>{var L;let ne=d.get(h),Te=Me=>M?M.has(Me):Me===T;(!ne||ne.some(Te))&&((L=m.get(h))==null||L(),m.set(h,h(r,C)))};for(let h of c)A(h,E);queueMicrotask(()=>{if(n!==x)return;let h=r;for(let C of f)A(C,o,l);o=h,l.clear()})},D={getState:I,setState:k,__unstableInternals:{setup:p,init:g,subscribe:v,sync:b,batch:S,pick:P,omit:R}};return D}function Ze(t,...e){if(t)return Fo(t,"setup")(...e)}function hn(t,...e){if(t)return Fo(t,"init")(...e)}function vn(t,...e){if(t)return Fo(t,"subscribe")(...e)}function Xe(t,...e){if(t)return Fo(t,"sync")(...e)}function vo(t,...e){if(t)return Fo(t,"batch")(...e)}function Si(t,...e){if(t)return Fo(t,"omit")(...e)}function Hc(t,...e){if(t)return Fo(t,"pick")(...e)}function Bo(...t){var e;let r={};for(let n of t){let i=(e=n?.getState)==null?void 0:e.call(n);i&&Object.assign(r,i)}let o=yt(r,...t);return Object.assign({},...t,o)}var pr=u(de(),1),Dp=u(Im(),1),{useSyncExternalStore:Np}=Dp.default,Mp=()=>()=>{};function bn(t,e=hi){let r=pr.useCallback(n=>t?vn(t,null,n):Mp(),[t]),o=()=>{let n=typeof e=="string"?e:null,i=typeof e=="function"?e:null,a=t?.getState();if(i)return i(a);if(a&&n&&Rt(a,n))return a[n]};return Np(r,o,o)}function hs(t,e){let r=pr.useRef({}),o=pr.useCallback(i=>t?vn(t,null,i):Mp(),[t]),n=()=>{let i=t?.getState(),a=!1,l=r.current;for(let s in e){let c=e[s];if(typeof c=="function"){let f=c(i);f!==l[s]&&(l[s]=f,a=!0)}if(typeof c=="string"){if(!i||!Rt(i,c))continue;let f=i[c];f!==l[s]&&(l[s]=f,a=!0)}}return a&&(r.current={...l}),r.current};return Np(o,n,n)}function Ve(t,e,r,o){let n=Rt(e,r)?e[r]:void 0,i=o?e[o]:void 0,a=np({value:n,setValue:i});Oe(()=>Xe(t,[r],(l,s)=>{let{value:c,setValue:f}=a.current;f&&l[r]!==s[r]&&l[r]!==c&&f(l[r])}),[t,r]),Oe(()=>{if(n!==void 0)return t.setState(r,n),vo(t,[r],()=>{n!==void 0&&t.setState(r,n)})})}function _n(t,e){let[r,o]=pr.useState(()=>t(e));Oe(()=>hn(r),[r]);let n=pr.useCallback(l=>bn(r,l),[r]),i=pr.useMemo(()=>({...r,useState:n}),[r,n]),a=re(()=>{o(l=>t({...e,...l.getState()}))});return[i,a]}var kr=u(de(),1),Fp=u(V(),1),jx="button";function Hx(t){return vi(t)?!0:t.tagName==="INPUT"&&!Vr(t)}function zx(t,e=!1){let r=t.clientHeight,{top:o}=t.getBoundingClientRect(),n=Math.max(r*.875,r-40)*1.5,i=e?r-n+o:n+o;return t.tagName==="HTML"?i+t.scrollTop:i}function Wx(t,e=!1){let{top:r}=t.getBoundingClientRect();return e?r+t.clientHeight:r}function Lp(t,e,r,o=!1){var n;if(!e||!r)return;let{renderedItems:i}=e.getState(),a=pn(t);if(!a)return;let l=zx(a,o),s,c;for(let f=0;f=0){c!==void 0&&cL.rowId===v);return p.ariaPosInSet+M.findIndex(L=>L.id===m)},isTabbable(C){if(!C?.renderedItems.length)return!0;if(C.virtualFocus)return!1;if(i)return!0;if(C.activeId===null)return!1;let M=e?.item(C.activeId);return M?.disabled||!M?.element?!0:C.activeId===m}}),k=(0,kr.useCallback)(C=>{var M;let L={...C,id:m||C.id,rowId:v,disabled:!!w,children:(M=C.element)==null?void 0:M.textContent};return a?a(L):L},[m,v,w,a]),D=c.onFocus,T=(0,kr.useRef)(!1),O=re(C=>{if(D?.(C),C.defaultPrevented||us(C)||!m||!e||Gx(C,e))return;let{virtualFocus:M,baseElement:L}=e.getState();if(e.setActiveId(m),vi(C.currentTarget)&&xp(C.currentTarget),!M||!ct(C)||Hx(C.currentTarget)||!L?.isConnected)return;Do()&&C.currentTarget.hasAttribute("data-autofocus")&&C.currentTarget.scrollIntoView({block:"nearest",inline:"nearest"}),T.current=!0,C.relatedTarget===L||Lo(e,C.relatedTarget)?yp(L):L.focus()}),N=c.onBlurCapture,_=re(C=>{if(N?.(C),C.defaultPrevented)return;let M=e?.getState();M?.virtualFocus&&T.current&&(T.current=!1,C.preventDefault(),C.stopPropagation())}),y=c.onKeyDown,E=Fe(o),x=Fe(n),A=re(C=>{if(y?.(C),C.defaultPrevented||!ct(C)||!e)return;let{currentTarget:M}=C,L=e.getState(),ne=e.item(m),Te=!!ne?.rowId,Me=L.orientation!=="horizontal",ze=L.orientation!=="vertical",at=()=>!!(Te||ze||!L.baseElement||!_t(L.baseElement)),Sr={ArrowUp:(Te||Me)&&e.up,ArrowRight:(Te||ze)&&e.next,ArrowDown:(Te||Me)&&e.down,ArrowLeft:(Te||ze)&&e.previous,Home:()=>{if(at())return!Te||C.ctrlKey?e?.first():e?.previous(-1)},End:()=>{if(at())return!Te||C.ctrlKey?e?.last():e?.next(-1)},PageUp:()=>Lp(M,e,e?.up,!0),PageDown:()=>Lp(M,e,e?.down)}[C.key];if(Sr){if(vi(M)){let J=fn(M),_e=ze&&C.key==="ArrowLeft",Cr=ze&&C.key==="ArrowRight",Tr=Me&&C.key==="ArrowUp",Co=Me&&C.key==="ArrowDown";if(Cr||Co){let{length:To}=Ec(M);if(J.end!==To)return}else if((_e||Tr)&&J.start!==0)return}let Y=Sr();if(E(C)||Y!==void 0){if(!x(C))return;C.preventDefault(),e.move(Y)}}}),h=(0,kr.useMemo)(()=>({id:m,baseElement:b}),[m,b]);return c=mr(c,C=>(0,Fp.jsx)(hp.Provider,{value:h,children:C}),[h]),c={id:m,"data-active-item":S||void 0,...c,ref:Re(d,c.ref),tabIndex:I?c.tabIndex:-1,onFocus:O,onBlurCapture:_,onKeyDown:A},c=jc(c),c=Mc({store:e,...c,getItem:k,shouldRegisterItem:m?c.shouldRegisterItem:!1}),tt({...c,"aria-setsize":P,"aria-posinset":R})}),qI=go(he(function(e){let r=zc(e);return ye(jx,r)}));function Wc(t){return Array.isArray(t)?t:typeof t<"u"?[t]:[]}function Ci(t){let e=[];for(let r of t)e.push(...r);return e}function xn(t){return t.slice().reverse()}var gr=u(de(),1),jp=u(V(),1),qx="div";function Ux(t){return t.some(e=>!!e.rowId)}function Yx(t){let e=t.target;return e&&!_t(e)?!1:t.key.length===1&&!t.ctrlKey&&!t.metaKey}function $x(t){return t.key==="Shift"||t.key==="Control"||t.key==="Alt"||t.key==="Meta"}function Bp(t,e,r){return re(o=>{var n;if(e?.(o),o.defaultPrevented||o.isPropagationStopped()||!ct(o)||$x(o)||Yx(o))return;let i=t.getState(),a=(n=fr(t,i.activeId))==null?void 0:n.element;if(!a)return;let{view:l,...s}=o,c=r?.current;a!==c&&a.focus(),Qf(a,o.type,s)||o.preventDefault(),o.currentTarget.contains(a)&&o.stopPropagation()})}function Kx(t){return bp(Ci(xn(_p(t))))}function Zx(t){let[e,r]=(0,gr.useState)(!1),o=(0,gr.useCallback)(()=>r(!0),[]),n=t.useState(i=>fr(t,i.activeId));return(0,gr.useEffect)(()=>{let i=n?.element;e&&i&&(r(!1),i.focus({preventScroll:!0}))},[n,e]),o}var Gc=we(function({store:e,composite:r=!0,focusOnMove:o=r,moveOnKeyPress:n=!0,...i}){let a=gp();e=e||a,et(e,!1);let l=(0,gr.useRef)(null),s=(0,gr.useRef)(null),c=Zx(e),f=e.useState("moves"),[,m]=ip(r?e.setBaseElement:null);(0,gr.useEffect)(()=>{var _;if(!e||!f||!r||!o)return;let{activeId:y}=e.getState(),E=(_=fr(e,y))==null?void 0:_.element;E&&Ap(E)},[e,f,r,o]),Oe(()=>{if(!e||!f||!r)return;let{baseElement:_,activeId:y}=e.getState();if(!(y===null)||!_)return;let x=s.current;s.current=null,x&&No(x,{relatedTarget:_}),Ut(_)||_.focus()},[e,f,r]);let d=e.useState("activeId"),p=e.useState("virtualFocus");Oe(()=>{var _;if(!e||!r||!p)return;let y=s.current;if(s.current=null,!y)return;let x=((_=fr(e,d))==null?void 0:_.element)||ko(y);x!==y&&No(y,{relatedTarget:x})},[e,d,p,r]);let g=Bp(e,i.onKeyDownCapture,s),w=Bp(e,i.onKeyUpCapture,s),v=i.onFocusCapture,b=re(_=>{if(v?.(_),_.defaultPrevented||!e)return;let{virtualFocus:y}=e.getState();if(!y)return;let E=_.relatedTarget,x=wp(_.currentTarget);ct(_)&&x&&(_.stopPropagation(),s.current=E)}),S=i.onFocus,P=re(_=>{if(S?.(_),_.defaultPrevented||!r||!e)return;let{relatedTarget:y}=_,{virtualFocus:E}=e.getState();E?ct(_)&&!Lo(e,y)&&queueMicrotask(c):ct(_)&&e.setActiveId(null)}),R=i.onBlurCapture,I=re(_=>{var y;if(R?.(_),_.defaultPrevented||!e)return;let{virtualFocus:E,activeId:x}=e.getState();if(!E)return;let A=(y=fr(e,x))==null?void 0:y.element,h=_.relatedTarget,C=Lo(e,h),M=s.current;s.current=null,ct(_)&&C?(h===A?M&&M!==h&&No(M,_):A?No(A,_):M&&No(M,_),_.stopPropagation()):!Lo(e,_.target)&&A&&No(A,_)}),k=i.onKeyDown,D=Fe(n),T=re(_=>{var y;if(k?.(_),_.nativeEvent.isComposing||_.defaultPrevented||!e||!ct(_))return;let{orientation:E,renderedItems:x,activeId:A}=e.getState(),h=fr(e,A);if((y=h?.element)!=null&&y.isConnected)return;let C=E!=="horizontal",M=E!=="vertical",L=Ux(x);if((_.key==="ArrowLeft"||_.key==="ArrowRight"||_.key==="Home"||_.key==="End")&&_t(_.currentTarget))return;let ze={ArrowUp:(L||C)&&(()=>{if(L){let at=Kx(x);return at?.id}return e?.last()}),ArrowRight:(L||M)&&e.first,ArrowDown:(L||C)&&e.first,ArrowLeft:(L||M)&&e.last,Home:e.first,End:e.last,PageUp:e.first,PageDown:e.last}[_.key];if(ze){let at=ze();if(at!==void 0){if(!D(_))return;_.preventDefault(),e.move(at)}}});i=mr(i,_=>(0,jp.jsx)(gn,{value:e,children:_}),[e]),i={"aria-activedescendant":e.useState(_=>{var y;if(e&&r&&_.virtualFocus)return(y=fr(e,_.activeId))==null?void 0:y.id}),...i,ref:Re(l,m,i.ref),onKeyDownCapture:g,onKeyUpCapture:w,onFocusCapture:b,onFocus:P,onBlurCapture:I,onKeyDown:T};let N=e.useState(_=>r&&(_.virtualFocus||_.activeId===null));return i=wi({focusable:N,...i}),i}),sO=he(function(e){let r=Gc(e);return ye(qx,r)});var Ti=Vt(),cO=Ti.useContext,dO=Ti.useScopedContext,qc=Ti.useProviderContext,Hp=Ti.ContextProvider,zp=Ti.ScopedContextProvider;var Uc=u(de(),1),Ei=Vt([Hp],[zp]),gO=Ei.useContext,hO=Ei.useScopedContext,vO=Ei.useProviderContext,Wp=Ei.ContextProvider,vs=Ei.ScopedContextProvider,bO=(0,Uc.createContext)(void 0),_O=(0,Uc.createContext)(void 0);var yn=u(de(),1),Up=u(Tm(),1),Yc=u(V(),1),Xx="div";function Gp(t,e){let r=setTimeout(e,t);return()=>clearTimeout(r)}function Qx(t){let e=requestAnimationFrame(()=>{e=requestAnimationFrame(t)});return()=>cancelAnimationFrame(e)}function qp(...t){return t.join(", ").split(", ").reduce((e,r)=>{let o=r.endsWith("ms")?1:1e3,n=Number.parseFloat(r||"0s")*o;return n>e?n:e},0)}function $c(t,e,r){return!r&&e!==!1&&(!t||!!e)}var Jx=we(function({store:e,alwaysVisible:r,...o}){let n=qc();e=e||n,et(e,!1);let i=(0,yn.useRef)(null),a=qt(o.id),[l,s]=(0,yn.useState)(null),c=e.useState("open"),f=e.useState("mounted"),m=e.useState("animated"),d=e.useState("contentElement"),p=bn(e.disclosure,"contentElement");Oe(()=>{i.current&&e?.setContentElement(i.current)},[e]),Oe(()=>{let b;return e?.setState("animated",S=>(b=S,!0)),()=>{b!==void 0&&e?.setState("animated",b)}},[e]),Oe(()=>{if(m){if(!d?.isConnected){s(null);return}return Qx(()=>{s(c?"enter":f?"leave":null)})}},[m,d,c,f]),Oe(()=>{if(!e||!m||!l||!d)return;let b=()=>e?.setState("animating",!1),S=()=>(0,Up.flushSync)(b);if(l==="leave"&&c||l==="enter"&&!c)return;if(typeof m=="number")return Gp(m,S);let{transitionDuration:P,animationDuration:R,transitionDelay:I,animationDelay:k}=getComputedStyle(d),{transitionDuration:D="0",animationDuration:T="0",transitionDelay:O="0",animationDelay:N="0"}=p?getComputedStyle(p):{},_=qp(I,k,O,N),y=qp(P,R,D,T),E=_+y;if(!E){l==="enter"&&e.setState("animated",!1),b();return}let x=1e3/60,A=Math.max(E-x,0);return Gp(A,S)},[e,m,d,p,c,l]),o=mr(o,b=>(0,Yc.jsx)(vs,{value:e,children:b}),[e]);let g=$c(f,o.hidden,r),w=o.style,v=(0,yn.useMemo)(()=>g?{...w,display:"none"}:w,[g,w]);return o={id:a,"data-open":c||void 0,"data-enter":l==="enter"||void 0,"data-leave":l==="leave"||void 0,hidden:g,...o,ref:Re(a?e.setContentElement:null,i,o.ref),style:v},tt(o)}),ey=he(function(e){let r=Jx(e);return ye(Xx,r)}),PO=he(function({unmountOnHide:e,...r}){let o=qc(),n=r.store||o;return bn(n,a=>!e||a?.mounted)===!1?null:(0,Yc.jsx)(ey,{...r})});function Yp(t={}){let e=Bo(t.store,Si(t.disclosure,["contentElement","disclosureElement"]));let r=e?.getState(),o=te(t.open,r?.open,t.defaultOpen,!1),n=te(t.animated,r?.animated,!1),i={open:o,animated:n,animating:!!n&&o,mounted:o,contentElement:te(r?.contentElement,null),disclosureElement:te(r?.disclosureElement,null)},a=yt(i,e);return Ze(a,()=>Xe(a,["animated","animating"],l=>{l.animated||a.setState("animating",!1)})),Ze(a,()=>vn(a,["open"],()=>{a.getState().animated&&a.setState("animating",!0)})),Ze(a,()=>Xe(a,["open","animating"],l=>{a.setState("mounted",l.open||l.animating)})),{...a,disclosure:t.disclosure,setOpen:l=>a.setState("open",l),show:()=>a.setState("open",!0),hide:()=>a.setState("open",!1),toggle:()=>a.setState("open",l=>!l),stopAnimation:()=>a.setState("animating",!1),setContentElement:l=>a.setState("contentElement",l),setDisclosureElement:l=>a.setState("disclosureElement",l)}}function $p(t,e,r){return dr(e,[r.store,r.disclosure]),Ve(t,r,"open","setOpen"),Ve(t,r,"mounted","setMounted"),Ve(t,r,"animated"),Object.assign(t,{disclosure:r.disclosure})}var Pi=Vt([Wp],[vs]),LO=Pi.useContext,FO=Pi.useScopedContext,Kp=Pi.useProviderContext,Zp=Pi.ContextProvider,Xp=Pi.ScopedContextProvider;function ty(t){var e;let r=t.find(i=>!!i.element),o=[...t].reverse().find(i=>!!i.element),n=(e=r?.element)==null?void 0:e.parentElement;for(;n&&o?.element;){if(o&&n.contains(o.element))return n;n=n.parentElement}return Rr(n).body}function ry(t){return t?.__unstablePrivateStore}function Qp(t={}){var e;t.store;let r=(e=t.store)==null?void 0:e.getState(),o=te(t.items,r?.items,t.defaultItems,[]),n=new Map(o.map(d=>[d.id,d])),i={items:o,renderedItems:te(r?.renderedItems,[])},a=ry(t.store),l=yt({items:o,renderedItems:i.renderedItems},a),s=yt(i,t.store),c=d=>{let p=Ac(d,g=>g.element);l.setState("renderedItems",p),s.setState("renderedItems",p)};Ze(s,()=>hn(l)),Ze(l,()=>vo(l,["items"],d=>{s.setState("items",d.items)})),Ze(l,()=>vo(l,["renderedItems"],d=>{let p=!0,g=requestAnimationFrame(()=>{let{renderedItems:S}=s.getState();d.renderedItems!==S&&c(d.renderedItems)});if(typeof IntersectionObserver!="function")return()=>cancelAnimationFrame(g);let w=()=>{if(p){p=!1;return}cancelAnimationFrame(g),g=requestAnimationFrame(()=>c(d.renderedItems))},v=ty(d.renderedItems),b=new IntersectionObserver(w,{root:v});for(let S of d.renderedItems)S.element&&b.observe(S.element);return()=>{cancelAnimationFrame(g),b.disconnect()}}));let f=(d,p,g=!1)=>{let w;return p(b=>{let S=b.findIndex(({id:R})=>R===d.id),P=b.slice();if(S!==-1){w=b[S];let R={...w,...d};P[S]=R,n.set(d.id,R)}else P.push(d),n.set(d.id,d);return P}),()=>{p(b=>{if(!w)return g&&n.delete(d.id),b.filter(({id:R})=>R!==d.id);let S=b.findIndex(({id:R})=>R===d.id);if(S===-1)return b;let P=b.slice();return P[S]=w,n.set(d.id,w),P})}},m=d=>f(d,p=>l.setState("items",p),!0);return{...s,registerItem:m,renderItem:d=>mo(m(d),f(d,p=>l.setState("renderedItems",p))),item:d=>{if(!d)return null;let p=n.get(d);if(!p){let{items:g}=l.getState();p=g.find(w=>w.id===d),p&&n.set(d,p)}return p||null},__unstablePrivateStore:l}}function Jp(t,e,r){return dr(e,[r.store]),Ve(t,r,"items","setItems"),t}var oy={id:null};function Dr(t,e){return t.find(r=>e?!r.disabled&&r.id!==e:!r.disabled)}function ny(t,e){return t.filter(r=>e?!r.disabled&&r.id!==e:!r.disabled)}function eg(t,e){return t.filter(r=>r.rowId===e)}function iy(t,e,r=!1){let o=t.findIndex(n=>n.id===e);return[...t.slice(o+1),...r?[oy]:[],...t.slice(0,o)]}function tg(t){let e=[];for(let r of t){let o=e.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):e.push([r])}return e}function rg(t){let e=0;for(let{length:r}of t)r>e&&(e=r);return e}function ay(t){return{id:"__EMPTY_ITEM__",disabled:!0,rowId:t}}function sy(t,e,r){let o=rg(t);for(let n of t)for(let i=0;iXe(a,["renderedItems","activeId"],s=>{a.setState("activeId",c=>{var f;return c!==void 0?c:(f=Dr(s.renderedItems))==null?void 0:f.id})}));let l=(s="next",c={})=>{var f,m;let d=a.getState(),{skip:p=0,activeId:g=d.activeId,focusShift:w=d.focusShift,focusLoop:v=d.focusLoop,focusWrap:b=d.focusWrap,includesBaseElement:S=d.includesBaseElement,renderedItems:P=d.renderedItems,rtl:R=d.rtl}=c,I=s==="up"||s==="down",k=s==="next"||s==="down",D=k?R&&!I:!R||I,T=w&&!p,O=I?Ci(sy(tg(P),g,T)):P;if(O=D?xn(O):O,O=I?ly(O):O,g==null)return(f=Dr(O))==null?void 0:f.id;let N=O.find(L=>L.id===g);if(!N)return(m=Dr(O))==null?void 0:m.id;let _=O.some(L=>L.rowId),y=O.indexOf(N),E=O.slice(y+1),x=eg(E,N.rowId);if(p){let L=ny(x,g),ne=L.slice(p)[0]||L[L.length-1];return ne?.id}let A=v&&(I?v!=="horizontal":v!=="vertical"),h=_&&b&&(I?b!=="horizontal":b!=="vertical"),C=k?(!_||I)&&A&&S:I?S:!1;if(A){let L=h&&!C?O:eg(O,N.rowId),ne=iy(L,g,C),Te=Dr(ne,g);return Te?.id}if(h){let L=Dr(C?x:E,g);return C?L?.id||null:L?.id}let M=Dr(x,g);return!M&&C?null:M?.id};return{...o,...a,setBaseElement:s=>a.setState("baseElement",s),setActiveId:s=>a.setState("activeId",s),move:s=>{s!==void 0&&(a.setState("activeId",s),a.setState("moves",c=>c+1))},first:()=>{var s;return(s=Dr(a.getState().renderedItems))==null?void 0:s.id},last:()=>{var s;return(s=Dr(xn(a.getState().renderedItems)))==null?void 0:s.id},next:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("next",s)),previous:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("previous",s)),down:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("down",s)),up:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("up",s))}}function ng(t){return{id:qt(t.id),...t}}function ig(t,e,r){return t=Jp(t,e,r),Ve(t,r,"activeId","setActiveId"),Ve(t,r,"includesBaseElement"),Ve(t,r,"virtualFocus"),Ve(t,r,"orientation"),Ve(t,r,"rtl"),Ve(t,r,"focusLoop"),Ve(t,r,"focusWrap"),Ve(t,r,"focusShift"),t}var bs=u(de(),1),_s=(0,bs.createContext)(void 0),Ai=Vt([Zp,gn],[Xp,fs]),Kc=Ai.useContext,wn=Ai.useScopedContext,xs=Ai.useProviderContext,ag=Ai.ContextProvider,sg=Ai.ScopedContextProvider,ys=(0,bs.createContext)(void 0),lg=(0,bs.createContext)(!1);function ug(t={}){return Yp(t)}function cg(t,e,r){return $p(t,e,r)}function dg({popover:t,...e}={}){let r=Bo(e.store,Si(t,["arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));let o=r?.getState(),n=ug({...e,store:r}),i=te(e.placement,o?.placement,"bottom"),a={...n.getState(),placement:i,currentPlacement:i,anchorElement:te(o?.anchorElement,null),popoverElement:te(o?.popoverElement,null),arrowElement:te(o?.arrowElement,null),rendered:Symbol("rendered")},l=yt(a,n,r);return{...n,...l,setAnchorElement:s=>l.setState("anchorElement",s),setPopoverElement:s=>l.setState("popoverElement",s),setArrowElement:s=>l.setState("arrowElement",s),render:()=>l.setState("rendered",Symbol("rendered"))}}function mg(t,e,r){return dr(e,[r.popover]),Ve(t,r,"placement"),cg(t,e,r)}var uy="div",Zc=we(function({store:e,...r}){let o=Kp();return e=e||o,r={...r,ref:Re(e?.setAnchorElement,r.ref)},r}),yR=he(function(e){let r=Zc(e);return ye(uy,r)});var fg=u(de(),1),cy="div";function pg(t){let e=t.relatedTarget;return e?.nodeType===Node.ELEMENT_NODE?e:null}function dy(t){let e=pg(t);return e?ur(t.currentTarget,e):!1}var Xc=Symbol("composite-hover");function my(t){let e=pg(t);if(!e)return!1;do{if(Rt(e,Xc)&&e[Xc])return!0;e=e.parentElement}while(e);return!1}var Qc=we(function({store:e,focusOnHover:r=!0,blurOnHoverEnd:o=!!r,...n}){let i=ms();e=e||i,et(e,!1);let a=dp(),l=n.onMouseMove,s=Fe(r),c=re(g=>{if(l?.(g),!g.defaultPrevented&&a()&&s(g)){if(!Lc(g.currentTarget)){let w=e?.getState().baseElement;w&&!Ut(w)&&w.focus()}e?.setActiveId(g.currentTarget.id)}}),f=n.onMouseLeave,m=Fe(o),d=re(g=>{var w;f?.(g),!g.defaultPrevented&&a()&&(dy(g)||my(g)||s(g)&&m(g)&&(e?.setActiveId(null),(w=e?.getState().baseElement)==null||w.focus()))}),p=(0,fg.useCallback)(g=>{g&&(g[Xc]=!0)},[]);return n={...n,ref:Re(p,n.ref),onMouseMove:c,onMouseLeave:d},tt(n)}),IR=go(he(function(e){let r=Qc(e);return ye(cy,r)}));var rt=u(de(),1),fy="input";function gg(t,e,r){if(!r)return!1;let o=t.find(n=>!n.disabled&&n.value);return o?.value===e}function hg(t,e){return!e||t==null?!1:(t=gi(t),e.length>t.length&&e.toLowerCase().indexOf(t.toLowerCase())===0)}function py(t){return t.type==="input"}function gy(t){return t==="inline"||t==="list"||t==="both"||t==="none"}function hy(t){let e=t.find(r=>{var o;return r.disabled?!1:((o=r.element)==null?void 0:o.getAttribute("role"))!=="tab"});return e?.id}var vy=we(function({store:e,focusable:r=!0,autoSelect:o=!1,getAutoSelectId:n,setValueOnChange:i,showMinLength:a=0,showOnChange:l,showOnMouseDown:s,showOnClick:c=s,showOnKeyDown:f,showOnKeyPress:m=f,blurActiveItemOnClick:d,setValueOnClick:p=!0,moveOnKeyPress:g=!0,autoComplete:w="list",...v}){let b=xs();e=e||b,et(e,!1);let S=(0,rt.useRef)(null),[P,R]=up(),I=(0,rt.useRef)(!1),k=(0,rt.useRef)(!1),D=e.useState(B=>B.virtualFocus&&o),T=w==="inline"||w==="both",[O,N]=(0,rt.useState)(T);lp(()=>{T&&N(!0)},[T]);let _=e.useState("value"),y=(0,rt.useRef)(void 0);(0,rt.useEffect)(()=>Xe(e,["selectedValue","activeId"],(B,ue)=>{y.current=ue.selectedValue}),[]);let E=e.useState(B=>{var ue;if(T&&O&&!(B.activeValue&&Array.isArray(B.selectedValue)&&(B.selectedValue.includes(B.activeValue)||(ue=y.current)!=null&&ue.includes(B.activeValue))))return B.activeValue}),x=e.useState("renderedItems"),A=e.useState("open"),h=e.useState("contentElement"),C=(0,rt.useMemo)(()=>{if(!T||!O)return _;if(gg(x,E,D)){if(hg(_,E)){let ue=E?.slice(_.length)||"";return _+ue}return _}return E||_},[T,O,x,E,D,_]);(0,rt.useEffect)(()=>{let B=S.current;if(!B)return;let ue=()=>N(!0);return B.addEventListener("combobox-item-move",ue),()=>{B.removeEventListener("combobox-item-move",ue)}},[]),(0,rt.useEffect)(()=>{if(!T||!O||!E||!gg(x,E,D)||!hg(_,E))return;let ue=pi;return queueMicrotask(()=>{let We=S.current;if(!We)return;let{start:Ge,end:zt}=fn(We),Er=_.length,st=E.length;bi(We,Er,st),ue=()=>{if(!Ut(We))return;let{start:Eo,end:e_}=fn(We);Eo===Er&&e_===st&&bi(We,Ge,zt)}}),()=>ue()},[P,T,O,E,x,D,_]);let M=(0,rt.useRef)(null),L=re(n),ne=(0,rt.useRef)(null);(0,rt.useEffect)(()=>{if(!A||!h)return;let B=pn(h);if(!B)return;M.current=B;let ue=()=>{I.current=!1},We=()=>{if(!e||!I.current)return;let{activeId:zt}=e.getState();zt!==null&&zt!==ne.current&&(I.current=!1)},Ge={passive:!0,capture:!0};return B.addEventListener("wheel",ue,Ge),B.addEventListener("touchmove",ue,Ge),B.addEventListener("scroll",We,Ge),()=>{B.removeEventListener("wheel",ue,!0),B.removeEventListener("touchmove",ue,!0),B.removeEventListener("scroll",We,!0)}},[A,h,e]),Oe(()=>{_&&(k.current||(I.current=!0))},[_]),Oe(()=>{D!=="always"&&A||(I.current=A)},[D,A]);let Te=e.useState("resetValueOnSelect");dr(()=>{var B,ue;let We=I.current;if(!e||!A||!We&&!Te)return;let{baseElement:Ge,contentElement:zt,activeId:Er}=e.getState();if(!(Ge&&!Ut(Ge))){if(zt?.hasAttribute("data-placing")){let st=new MutationObserver(R);return st.observe(zt,{attributeFilter:["data-placing"]}),()=>st.disconnect()}if(D&&We){let st=L(x),Eo=st!==void 0?st:(B=hy(x))!=null?B:e.first();ne.current=Eo,e.move(Eo??null)}else{let st=(ue=e.item(Er||e.first()))==null?void 0:ue.element;st&&"scrollIntoView"in st&&st.scrollIntoView({block:"nearest",inline:"nearest"})}}},[e,A,P,_,D,Te,L,x]),(0,rt.useEffect)(()=>{if(!T)return;let B=S.current;if(!B)return;let ue=[B,h].filter(Ge=>!!Ge),We=Ge=>{ue.every(zt=>cs(Ge,zt))&&e?.setValue(C)};for(let Ge of ue)Ge.addEventListener("focusout",We);return()=>{for(let Ge of ue)Ge.removeEventListener("focusout",We)}},[T,h,e,C]);let Me=B=>B.currentTarget.value.length>=a,ze=v.onChange,at=Fe(l??Me),or=Fe(i??!e.tag),Sr=re(B=>{if(ze?.(B),B.defaultPrevented||!e)return;let ue=B.currentTarget,{value:We,selectionStart:Ge,selectionEnd:zt}=ue,Er=B.nativeEvent;if(I.current=!0,py(Er)&&(Er.isComposing&&(I.current=!1,k.current=!0),T)){let st=Er.inputType==="insertText"||Er.inputType==="insertCompositionText",Eo=Ge===We.length;N(st&&Eo)}if(or(B)){let st=We===e.getState().value;e.setValue(We),queueMicrotask(()=>{bi(ue,Ge,zt)}),T&&D&&st&&R()}at(B)&&e.show(),(!D||!I.current)&&e.setActiveId(null)}),Y=v.onCompositionEnd,J=re(B=>{I.current=!0,k.current=!1,Y?.(B),!B.defaultPrevented&&D&&R()}),_e=v.onMouseDown,Cr=Fe(d??(()=>!!e?.getState().includesBaseElement)),Tr=Fe(p),Co=Fe(c??Me),To=re(B=>{_e?.(B),!B.defaultPrevented&&(B.button||B.ctrlKey||e&&(Cr(B)&&e.setActiveId(null),Tr(B)&&e.setValue(C),Co(B)&&po(B.currentTarget,"mouseup",e.show)))}),Zo=v.onKeyDown,Hn=Fe(m??Me),Dl=re(B=>{if(Zo?.(B),B.repeat||(I.current=!1),B.defaultPrevented||B.ctrlKey||B.altKey||B.shiftKey||B.metaKey||!e)return;let{open:ue}=e.getState();ue||(B.key==="ArrowUp"||B.key==="ArrowDown")&&Hn(B)&&(B.preventDefault(),e.show())}),Jd=v.onBlur,Z0=re(B=>{I.current=!1,Jd?.(B),B.defaultPrevented}),X0=qt(v.id),Q0=gy(w)?w:void 0,J0=e.useState(B=>B.activeId===null);return v={id:X0,role:"combobox","aria-autocomplete":Q0,"aria-haspopup":Pc(h,"listbox"),"aria-expanded":A,"aria-controls":h?.id,"data-active-item":J0||void 0,value:C,...v,ref:Re(S,v.ref),onChange:Sr,onCompositionEnd:J,onMouseDown:To,onKeyDown:Dl,onBlur:Z0},v=Gc({store:e,focusable:r,...v,moveOnKeyPress:B=>Sc(g,B)?!1:(T&&N(!0),!0)}),v=Zc({store:e,...v}),{autoComplete:"off",...v}}),ws=he(function(e){let r=vy(e);return ye(fy,r)});var Ss=u(de(),1),Jc=u(V(),1),by="div";function _y(t,e){if(e!=null)return t==null?!1:Array.isArray(t)?t.includes(e):t===e}function xy(t){var e;return(e={menu:"menuitem",listbox:"option",tree:"treeitem"}[t])!=null?e:"option"}var vg=we(function({store:e,value:r,hideOnClick:o,setValueOnClick:n,selectValueOnClick:i=!0,resetValueOnSelect:a,focusOnHover:l=!1,moveOnKeyPress:s=!0,getItem:c,...f}){var m;let d=wn();e=e||d,et(e,!1);let{resetValueOnSelectState:p,multiSelectable:g,selected:w}=hs(e,{resetValueOnSelectState:"resetValueOnSelect",multiSelectable(_){return Array.isArray(_.selectedValue)},selected(_){return _y(_.selectedValue,r)}}),v=(0,Ss.useCallback)(_=>{let y={..._,value:r};return c?c(y):y},[r,c]);n=n??!g,o=o??(r!=null&&!g);let b=f.onClick,S=Fe(n),P=Fe(i),R=Fe((m=a??p)!=null?m:g),I=Fe(o),k=re(_=>{b?.(_),!_.defaultPrevented&&(Xf(_)||Zf(_)||(r!=null&&(P(_)&&(R(_)&&e?.resetValue(),e?.setSelectedValue(y=>Array.isArray(y)?y.includes(r)?y.filter(E=>E!==r):[...y,r]:r)),S(_)&&e?.setValue(r)),I(_)&&e?.hide()))}),D=f.onKeyDown,T=re(_=>{if(D?.(_),_.defaultPrevented)return;let y=e?.getState().baseElement;if(!y||Ut(y))return;(_.key.length===1||_.key==="Backspace"||_.key==="Delete")&&(queueMicrotask(()=>y.focus()),_t(y)&&e?.setValue(y.value))});g&&w!=null&&(f={"aria-selected":w,...f}),f=mr(f,_=>(0,Jc.jsx)(ys.Provider,{value:r,children:(0,Jc.jsx)(lg.Provider,{value:w??!1,children:_})}),[r,w]);let O=(0,Ss.useContext)(_s);f={role:xy(O),children:r,...f,onClick:k,onKeyDown:T};let N=Fe(s);return f=zc({store:e,...f,getItem:v,moveOnKeyPress:_=>{if(!N(_))return!1;let y=new Event("combobox-item-move"),E=e?.getState().baseElement;return E?.dispatchEvent(y),!0}}),f=Qc({store:e,focusOnHover:l,...f}),f}),Ii=go(he(function(e){let r=vg(e);return ye(by,r)}));var Cs=u(de(),1),_g=u(V(),1),yy="span";function bg(t){return gi(t).toLowerCase()}function wy(t,e){let r=[];for(let o of e){let n=0,i=o.length;for(;t.indexOf(o,n)!==-1;){let a=t.indexOf(o,n);a!==-1&&r.push([a,i]),n=a+1}}return r}function Sy(t){return t.filter(([e,r],o,n)=>!n.some(([i,a],l)=>l!==o&&i<=e&&i+a>=e+r))}function Cy(t){return t.sort(([e],[r])=>e-r)}function Ty(t,e){if(!t||!e)return t;let r=Wc(e).filter(Boolean).map(bg),o=[],n=(s,c=!1)=>(0,_g.jsx)("span",{"data-autocomplete-value":c?"":void 0,"data-user-value":c?void 0:"",children:s},o.length),i=Cy(Sy(wy(bg(t),new Set(r))));if(!i.length)return o.push(n(t,!0)),o;let[a]=i[0];return[t.slice(0,a),...i.flatMap(([s,c],f)=>{var m;let d=t.slice(s,s+c),p=(m=i[f+1])==null?void 0:m[0],g=t.slice(s+c,p);return[d,g]})].forEach((s,c)=>{s&&o.push(n(s,c%2===0))}),o}var Ey=we(function({store:e,value:r,userValue:o,...n}){let i=wn();e=e||i;let a=(0,Cs.useContext)(ys),l=r??a,s=bn(e,f=>o??f?.value);return n={children:(0,Cs.useMemo)(()=>{if(l)return s?Ty(l,s):l},[l,s]),...n},tt(n)}),Ts=he(function(e){let r=Ey(e);return ye(yy,r)});var Py="label",Ay=we(function({store:e,...r}){let o=xs();return e=e||o,et(e,!1),r={htmlFor:e.useState(i=>{var a;return(a=i.baseElement)==null?void 0:a.id}),...r},tt(r)}),Es=go(he(function(e){let r=Ay(e);return ye(Py,r)}));var Ps=u(de(),1),ed=u(V(),1),Iy="div",xg=we(function({store:e,alwaysVisible:r,...o}){let n=wn(!0),i=Kc();e=e||i;let a=!!e&&e===n;et(e,!1);let l=(0,Ps.useRef)(null),s=qt(o.id),c=e.useState("mounted"),f=$c(c,o.hidden,r),m=f?{...o.style,display:"none"}:o.style,d=e.useState(R=>Array.isArray(R.selectedValue)),p=sp(l,"role",o.role),w=(p==="listbox"||p==="tree"||p==="grid")&&d||void 0,[v,b]=(0,Ps.useState)(!1),S=e.useState("contentElement");Oe(()=>{if(!c)return;let R=l.current;if(!R||S!==R)return;let I=()=>{b(!!R.querySelector("[role='listbox']"))},k=new MutationObserver(I);return k.observe(R,{subtree:!0,childList:!0,attributeFilter:["role"]}),I(),()=>k.disconnect()},[c,S]),v||(o={role:"listbox","aria-multiselectable":w,...o}),o=mr(o,R=>(0,ed.jsx)(sg,{value:e,children:(0,ed.jsx)(_s.Provider,{value:p,children:R})}),[e,p]);let P=s&&(!n||!a)?e.setContentElement:null;return o={id:s,hidden:f,...o,ref:Re(P,l,o.ref),style:m},tt(o)}),Oi=he(function(e){let r=xg(e);return ye(Iy,r)});var td=u(de(),1),y5=(0,td.createContext)(null),w5=(0,td.createContext)(null),Ri=Vt([gn],[fs]),yg=Ri.useContext,S5=Ri.useScopedContext,C5=Ri.useProviderContext,T5=Ri.ContextProvider,E5=Ri.ScopedContextProvider;var Oy=Do()&&Ic();function wg({tag:t,...e}={}){let r=Bo(e.store,Hc(t,["value","rtl"]));let o=t?.getState(),n=r?.getState(),i=te(e.activeId,n?.activeId,e.defaultActiveId,null),a=og({...e,activeId:i,includesBaseElement:te(e.includesBaseElement,n?.includesBaseElement,!0),orientation:te(e.orientation,n?.orientation,"vertical"),focusLoop:te(e.focusLoop,n?.focusLoop,!0),focusWrap:te(e.focusWrap,n?.focusWrap,!0),virtualFocus:te(e.virtualFocus,n?.virtualFocus,!0)}),l=dg({...e,placement:te(e.placement,n?.placement,"bottom-start")}),s=te(e.value,n?.value,e.defaultValue,""),c=te(e.selectedValue,n?.selectedValue,o?.values,e.defaultSelectedValue,""),f=Array.isArray(c),m={...a.getState(),...l.getState(),value:s,selectedValue:c,resetValueOnSelect:te(e.resetValueOnSelect,n?.resetValueOnSelect,f),resetValueOnHide:te(e.resetValueOnHide,n?.resetValueOnHide,f&&!t),activeValue:n?.activeValue},d=yt(m,a,l,r);return Oy&&Ze(d,()=>Xe(d,["virtualFocus"],()=>{d.setState("virtualFocus",!1)})),Ze(d,()=>{if(t)return mo(Xe(d,["selectedValue"],p=>{Array.isArray(p.selectedValue)&&t.setValues(p.selectedValue)}),Xe(t,["values"],p=>{d.setState("selectedValue",p.values)}))}),Ze(d,()=>Xe(d,["resetValueOnHide","mounted"],p=>{p.resetValueOnHide&&(p.mounted||d.setState("value",s))})),Ze(d,()=>Xe(d,["open"],p=>{p.open||(d.setState("activeId",i),d.setState("moves",0))})),Ze(d,()=>Xe(d,["moves","activeId"],(p,g)=>{p.moves===g.moves&&d.setState("activeValue",void 0)})),Ze(d,()=>vo(d,["moves","renderedItems"],(p,g)=>{if(p.moves===g.moves)return;let{activeId:w}=d.getState(),v=a.item(w);d.setState("activeValue",v?.value)})),{...l,...a,...d,tag:t,setValue:p=>d.setState("value",p),resetValue:()=>d.setState("value",m.value),setSelectedValue:p=>d.setState("selectedValue",p)}}function Vy(t){let e=yg();return t={...t,tag:t.tag!==void 0?t.tag:e},ng(t)}function ky(t,e,r){return dr(e,[r.tag]),Ve(t,r,"value","setValue"),Ve(t,r,"selectedValue","setSelectedValue"),Ve(t,r,"resetValueOnHide"),Ve(t,r,"resetValueOnSelect"),Object.assign(ig(mg(t,e,r),e,r),{tag:r.tag})}function rd(t={}){t=Vy(t);let[e,r]=_n(wg,t);return ky(e,r,t)}var Sg=u(V(),1);function As(t={}){let e=rd(t);return(0,Sg.jsx)(ag,{value:e,children:t.children})}var Og=u(od(),1);var Rg=u(ht(),1),Nr=u(W(),1),jo=u(j(),1),Yt=u(G(),1);var By=[],Vi=(t,e)=>t.singleSelection?e?.value:Array.isArray(e?.value)?e.value:!Array.isArray(e?.value)&&e?.value?[e.value]:By;var ki=u(j(),1),jy=[];function Qe({elements:t,getElements:e}){let r=Array.isArray(t)&&t.length>0?t:jy,[o,n]=(0,ki.useState)(r),[i,a]=(0,ki.useState)(!1);return(0,ki.useEffect)(()=>{if(!e){n(r);return}let l=!1;return a(!0),e().then(s=>{if(!l){let c=Array.isArray(s)&&s.length>0?s:r;n(c)}}).catch(()=>{l||n(r)}).finally(()=>{l||a(!1)}),()=>{l=!0}},[e,r]),{elements:o,isLoading:i}}var ie=u(V(),1);function Pg(t=""){return(0,Og.default)(t.trim().toLowerCase())}var Ag=(t,e,r)=>t.singleSelection?r:Array.isArray(e?.value)?e.value.includes(r)?e.value.filter(o=>o!==r):[...e.value,r]:[r];function Ig(t,e){return`${t}-${e}`}var Vg=({selected:t})=>(0,ie.jsx)("span",{className:z("dataviews-filters__search-widget-listitem-multi-selection",{"is-selected":t}),children:t&&(0,ie.jsx)(Yt.Icon,{icon:Kn})}),kg=({selected:t})=>(0,ie.jsx)("span",{className:z("dataviews-filters__search-widget-listitem-single-selection",{"is-selected":t})});function Dg({view:t,filter:e,onChangeView:r}){let o=(0,Rg.useInstanceId)(Dg,"dataviews-filter-list-box"),[n,i]=(0,jo.useState)(e.operators?.length===1?void 0:null),a=t.filters?.find(s=>s.field===e.field),l=Vi(e,a);return(0,ie.jsx)(Yt.Composite,{virtualFocus:!0,focusLoop:!0,activeId:n,setActiveId:i,role:"listbox",className:"dataviews-filters__search-widget-listbox","aria-label":(0,Nr.sprintf)((0,Nr.__)("List of: %1$s"),e.name),onFocusVisible:()=>{!n&&e.elements.length&&i(Ig(o,e.elements[0].value))},render:(0,ie.jsx)(Yt.Composite.Typeahead,{}),children:e.elements.map(s=>(0,ie.jsxs)(Yt.Composite.Hover,{render:(0,ie.jsx)(Yt.Composite.Item,{id:Ig(o,s.value),render:(0,ie.jsx)("div",{"aria-label":s.label,role:"option",className:"dataviews-filters__search-widget-listitem"}),onClick:()=>{let c=a?[...(t.filters??[]).map(f=>f.field===e.field?{...f,operator:a.operator||e.operators[0],value:Ag(e,a,s.value)}:f)]:[...t.filters??[],{field:e.field,operator:e.operators[0],value:Ag(e,a,s.value)}];r({...t,page:1,filters:c})}}),children:[e.singleSelection&&(0,ie.jsx)(kg,{selected:l===s.value}),!e.singleSelection&&(0,ie.jsx)(Vg,{selected:l.includes(s.value)}),(0,ie.jsx)("span",{className:"dataviews-filters__search-widget-listitem-value",title:s.label,children:s.label})]},s.value))})}function Hy({view:t,filter:e,onChangeView:r}){let[o,n]=(0,jo.useState)(""),i=(0,jo.useDeferredValue)(o),a=t.filters?.find(c=>c.field===e.field),l=Vi(e,a),s=(0,jo.useMemo)(()=>{let c=Pg(i);return e.elements.filter(f=>Pg(f.label).includes(c))},[e.elements,i]);return(0,ie.jsxs)(As,{selectedValue:l,setSelectedValue:c=>{let f=a?[...(t.filters??[]).map(m=>m.field===e.field?{...m,operator:a.operator||e.operators[0],value:c}:m)]:[...t.filters??[],{field:e.field,operator:e.operators[0],value:c}];r({...t,page:1,filters:f})},setValue:n,children:[(0,ie.jsxs)("div",{className:"dataviews-filters__search-widget-filter-combobox__wrapper",children:[(0,ie.jsx)(Es,{render:(0,ie.jsx)(Yt.VisuallyHidden,{children:(0,Nr.__)("Search items")}),children:(0,Nr.__)("Search items")}),(0,ie.jsx)(ws,{autoSelect:"always",placeholder:(0,Nr.__)("Search"),className:"dataviews-filters__search-widget-filter-combobox__input"}),(0,ie.jsx)("div",{className:"dataviews-filters__search-widget-filter-combobox__icon",children:(0,ie.jsx)(Yt.Icon,{icon:ai})})]}),(0,ie.jsxs)(Oi,{className:"dataviews-filters__search-widget-filter-combobox-list",alwaysVisible:!0,children:[s.map(c=>(0,ie.jsxs)(Ii,{resetValueOnSelect:!1,value:c.value,className:"dataviews-filters__search-widget-listitem",hideOnClick:!1,setValueOnClick:!1,focusOnHover:!0,children:[e.singleSelection&&(0,ie.jsx)(kg,{selected:l===c.value}),!e.singleSelection&&(0,ie.jsx)(Vg,{selected:l.includes(c.value)}),(0,ie.jsxs)("span",{className:"dataviews-filters__search-widget-listitem-value",title:c.label,children:[(0,ie.jsx)(Ts,{className:"dataviews-filters__search-widget-filter-combobox-item-value",value:c.label}),!!c.description&&(0,ie.jsx)("span",{className:"dataviews-filters__search-widget-listitem-description",children:c.description})]})]},c.value)),!s.length&&(0,ie.jsx)("p",{children:(0,Nr.__)("No results found")})]})]})}function Ng(t){let{elements:e,isLoading:r}=Qe({elements:t.filter.elements,getElements:t.filter.getElements});if(r)return(0,ie.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,ie.jsx)(Yt.Spinner,{})});if(e.length===0)return(0,ie.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,Nr.__)("No elements found")});let o=e.length>10?Hy:Dg;return(0,ie.jsx)(o,{...t,filter:{...t.filter,elements:e}})}var Fg=u(Lg(),1),Bg=u(ht(),1),nd=u(j(),1),jg=u(G(),1);var id=u(V(),1);function Hg({filter:t,view:e,onChangeView:r,fields:o}){let n=e.filters?.find(c=>c.field===t.field),i=Vi(t,n),a=(0,nd.useMemo)(()=>{let c=o.find(f=>f.id===t.field);return c&&{...c,isValid:{},getValue:({item:f})=>f[c.id],setValue:({value:f})=>({[c.id]:f})}},[o,t.field]),l=(0,nd.useMemo)(()=>(e.filters??[]).reduce((c,f)=>(c[f.field]=f.value,c),{}),[e.filters]),s=(0,Bg.useEvent)(c=>{if(!a||!n)return;let f=a.getValue({item:c});(0,Fg.default)(f,i)||r({...e,filters:(e.filters??[]).map(m=>m.field===t.field?{...m,operator:n.operator||t.operators[0],value:f===""?void 0:f}:m)})});return!a||!a.Edit||!n?null:(0,id.jsx)(jg.Flex,{className:"dataviews-filters__user-input-widget",gap:2.5,direction:"column",children:(0,id.jsx)(a.Edit,{hideLabelFromVision:!0,data:l,field:a,operator:n.operator,onChange:s})})}var zy=Math.pow(10,8)*24*60*60*1e3,hV=-zy,Os=6048e5,zg=864e5;var Wy=3600;var Wg=Wy*24,vV=Wg*7,Gy=Wg*365.2425,qy=Gy/12,bV=qy*3,ad=Symbol.for("constructDateFrom");function Ue(t,e){return typeof t=="function"?t(e):t&&typeof t=="object"&&ad in t?t[ad](e):t instanceof Date?new t.constructor(e):new Date(e)}function pe(t,e){return Ue(e||t,t)}function Rs(t,e,r){let o=pe(t,r?.in);return isNaN(e)?Ue(r?.in||t,NaN):(e&&o.setDate(o.getDate()+e),o)}function Vs(t,e,r){let o=pe(t,r?.in);if(isNaN(e))return Ue(r?.in||t,NaN);if(!e)return o;let n=o.getDate(),i=Ue(r?.in||t,o.getTime());i.setMonth(o.getMonth()+e+1,0);let a=i.getDate();return n>=a?i:(o.setFullYear(i.getFullYear(),i.getMonth(),n),o)}var Uy={};function bo(){return Uy}function Mr(t,e){let r=bo(),o=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,n=pe(t,e?.in),i=n.getDay(),a=(i=i.getTime()?o+1:r.getTime()>=l.getTime()?o:o-1}function sd(t){let e=pe(t),r=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return r.setUTCFullYear(e.getFullYear()),+t-+r}function Gg(t,...e){let r=Ue.bind(null,t||e.find(o=>typeof o=="object"));return e.map(r)}function ld(t,e){let r=pe(t,e?.in);return r.setHours(0,0,0,0),r}function qg(t,e,r){let[o,n]=Gg(r?.in,t,e),i=ld(o),a=ld(n),l=+i-sd(i),s=+a-sd(a);return Math.round((l-s)/zg)}function Ug(t,e){let r=ks(t,e),o=Ue(e?.in||t,0);return o.setFullYear(r,0,4),o.setHours(0,0,0,0),Ho(o)}function Yg(t,e,r){return Rs(t,e*7,r)}function $g(t,e,r){return Vs(t,e*12,r)}function Kg(t){return t instanceof Date||typeof t=="object"&&Object.prototype.toString.call(t)==="[object Date]"}function Sn(t){return!(!Kg(t)&&typeof t!="number"||isNaN(+pe(t)))}function Zg(t,e){let r=pe(t,e?.in);return r.setDate(1),r.setHours(0,0,0,0),r}function Ds(t,e){let r=pe(t,e?.in);return r.setFullYear(r.getFullYear(),0,1),r.setHours(0,0,0,0),r}var Yy={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"}},Xg=(t,e,r)=>{let o,n=Yy[t];return typeof n=="string"?o=n:e===1?o=n.one:o=n.other.replace("{{count}}",e.toString()),r?.addSuffix?r.comparison&&r.comparison>0?"in "+o:o+" ago":o};function Ns(t){return(e={})=>{let r=e.width?String(e.width):t.defaultWidth;return t.formats[r]||t.formats[t.defaultWidth]}}var $y={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Ky={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},Zy={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Qg={date:Ns({formats:$y,defaultWidth:"full"}),time:Ns({formats:Ky,defaultWidth:"full"}),dateTime:Ns({formats:Zy,defaultWidth:"full"})};var Xy={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},Jg=(t,e,r,o)=>Xy[t];function Cn(t){return(e,r)=>{let o=r?.context?String(r.context):"standalone",n;if(o==="formatting"&&t.formattingValues){let a=t.defaultFormattingWidth||t.defaultWidth,l=r?.width?String(r.width):a;n=t.formattingValues[l]||t.formattingValues[a]}else{let a=t.defaultWidth,l=r?.width?String(r.width):t.defaultWidth;n=t.values[l]||t.values[a]}let i=t.argumentCallback?t.argumentCallback(e):e;return n[i]}}var Qy={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},Jy={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},ew={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"]},tw={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"]},rw={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"}},ow={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=(t,e)=>{let r=Number(t),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"},eh={ordinalNumber:nw,era:Cn({values:Qy,defaultWidth:"wide"}),quarter:Cn({values:Jy,defaultWidth:"wide",argumentCallback:t=>t-1}),month:Cn({values:ew,defaultWidth:"wide"}),day:Cn({values:tw,defaultWidth:"wide"}),dayPeriod:Cn({values:rw,defaultWidth:"wide",formattingValues:ow,defaultFormattingWidth:"wide"})};function Tn(t){return(e,r={})=>{let o=r.width,n=o&&t.matchPatterns[o]||t.matchPatterns[t.defaultMatchWidth],i=e.match(n);if(!i)return null;let a=i[0],l=o&&t.parsePatterns[o]||t.parsePatterns[t.defaultParseWidth],s=Array.isArray(l)?aw(l,m=>m.test(a)):iw(l,m=>m.test(a)),c;c=t.valueCallback?t.valueCallback(s):s,c=r.valueCallback?r.valueCallback(c):c;let f=e.slice(a.length);return{value:c,rest:f}}}function iw(t,e){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&e(t[r]))return r}function aw(t,e){for(let r=0;r{let o=e.match(t.matchPattern);if(!o)return null;let n=o[0],i=e.match(t.parsePattern);if(!i)return null;let a=t.valueCallback?t.valueCallback(i[0]):i[0];a=r.valueCallback?r.valueCallback(a):a;let l=e.slice(n.length);return{value:a,rest:l}}}var sw=/^(\d+)(th|st|nd|rd)?/i,lw=/\d+/i,uw={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},cw={any:[/^b/i,/^(a|c)/i]},dw={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},mw={any:[/1/i,/2/i,/3/i,/4/i]},fw={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},pw={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},hw={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]},vw={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},bw={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}},rh={ordinalNumber:th({matchPattern:sw,parsePattern:lw,valueCallback:t=>parseInt(t,10)}),era:Tn({matchPatterns:uw,defaultMatchWidth:"wide",parsePatterns:cw,defaultParseWidth:"any"}),quarter:Tn({matchPatterns:dw,defaultMatchWidth:"wide",parsePatterns:mw,defaultParseWidth:"any",valueCallback:t=>t+1}),month:Tn({matchPatterns:fw,defaultMatchWidth:"wide",parsePatterns:pw,defaultParseWidth:"any"}),day:Tn({matchPatterns:gw,defaultMatchWidth:"wide",parsePatterns:hw,defaultParseWidth:"any"}),dayPeriod:Tn({matchPatterns:vw,defaultMatchWidth:"any",parsePatterns:bw,defaultParseWidth:"any"})};var ud={code:"en-US",formatDistance:Xg,formatLong:Qg,formatRelative:Jg,localize:eh,match:rh,options:{weekStartsOn:0,firstWeekContainsDate:1}};function oh(t,e){let r=pe(t,e?.in);return qg(r,Ds(r))+1}function nh(t,e){let r=pe(t,e?.in),o=+Ho(r)-+Ug(r);return Math.round(o/Os)+1}function Ms(t,e){let r=pe(t,e?.in),o=r.getFullYear(),n=bo(),i=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,a=Ue(e?.in||t,0);a.setFullYear(o+1,0,i),a.setHours(0,0,0,0);let l=Mr(a,e),s=Ue(e?.in||t,0);s.setFullYear(o,0,i),s.setHours(0,0,0,0);let c=Mr(s,e);return+r>=+l?o+1:+r>=+c?o:o-1}function ih(t,e){let r=bo(),o=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,n=Ms(t,e),i=Ue(e?.in||t,0);return i.setFullYear(n,0,o),i.setHours(0,0,0,0),Mr(i,e)}function ah(t,e){let r=pe(t,e?.in),o=+Mr(r,e)-+ih(r,e);return Math.round(o/Os)+1}function le(t,e){let r=t<0?"-":"",o=Math.abs(t).toString().padStart(e,"0");return r+o}var Lr={y(t,e){let r=t.getFullYear(),o=r>0?r:1-r;return le(e==="yy"?o%100:o,e.length)},M(t,e){let r=t.getMonth();return e==="M"?String(r+1):le(r+1,2)},d(t,e){return le(t.getDate(),e.length)},a(t,e){let r=t.getHours()/12>=1?"pm":"am";switch(e){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(t,e){return le(t.getHours()%12||12,e.length)},H(t,e){return le(t.getHours(),e.length)},m(t,e){return le(t.getMinutes(),e.length)},s(t,e){return le(t.getSeconds(),e.length)},S(t,e){let r=e.length,o=t.getMilliseconds(),n=Math.trunc(o*Math.pow(10,r-3));return le(n,e.length)}};var En={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},cd={G:function(t,e,r){let o=t.getFullYear()>0?1:0;switch(e){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(t,e,r){if(e==="yo"){let o=t.getFullYear(),n=o>0?o:1-o;return r.ordinalNumber(n,{unit:"year"})}return Lr.y(t,e)},Y:function(t,e,r,o){let n=Ms(t,o),i=n>0?n:1-n;if(e==="YY"){let a=i%100;return le(a,2)}return e==="Yo"?r.ordinalNumber(i,{unit:"year"}):le(i,e.length)},R:function(t,e){let r=ks(t);return le(r,e.length)},u:function(t,e){let r=t.getFullYear();return le(r,e.length)},Q:function(t,e,r){let o=Math.ceil((t.getMonth()+1)/3);switch(e){case"Q":return String(o);case"QQ":return le(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(t,e,r){let o=Math.ceil((t.getMonth()+1)/3);switch(e){case"q":return String(o);case"qq":return le(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(t,e,r){let o=t.getMonth();switch(e){case"M":case"MM":return Lr.M(t,e);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(t,e,r){let o=t.getMonth();switch(e){case"L":return String(o+1);case"LL":return le(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(t,e,r,o){let n=ah(t,o);return e==="wo"?r.ordinalNumber(n,{unit:"week"}):le(n,e.length)},I:function(t,e,r){let o=nh(t);return e==="Io"?r.ordinalNumber(o,{unit:"week"}):le(o,e.length)},d:function(t,e,r){return e==="do"?r.ordinalNumber(t.getDate(),{unit:"date"}):Lr.d(t,e)},D:function(t,e,r){let o=oh(t);return e==="Do"?r.ordinalNumber(o,{unit:"dayOfYear"}):le(o,e.length)},E:function(t,e,r){let o=t.getDay();switch(e){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(t,e,r,o){let n=t.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(e){case"e":return String(i);case"ee":return le(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(t,e,r,o){let n=t.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(e){case"c":return String(i);case"cc":return le(i,e.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(t,e,r){let o=t.getDay(),n=o===0?7:o;switch(e){case"i":return String(n);case"ii":return le(n,e.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(t,e,r){let n=t.getHours()/12>=1?"pm":"am";switch(e){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(t,e,r){let o=t.getHours(),n;switch(o===12?n=En.noon:o===0?n=En.midnight:n=o/12>=1?"pm":"am",e){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(t,e,r){let o=t.getHours(),n;switch(o>=17?n=En.evening:o>=12?n=En.afternoon:o>=4?n=En.morning:n=En.night,e){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(t,e,r){if(e==="ho"){let o=t.getHours()%12;return o===0&&(o=12),r.ordinalNumber(o,{unit:"hour"})}return Lr.h(t,e)},H:function(t,e,r){return e==="Ho"?r.ordinalNumber(t.getHours(),{unit:"hour"}):Lr.H(t,e)},K:function(t,e,r){let o=t.getHours()%12;return e==="Ko"?r.ordinalNumber(o,{unit:"hour"}):le(o,e.length)},k:function(t,e,r){let o=t.getHours();return o===0&&(o=24),e==="ko"?r.ordinalNumber(o,{unit:"hour"}):le(o,e.length)},m:function(t,e,r){return e==="mo"?r.ordinalNumber(t.getMinutes(),{unit:"minute"}):Lr.m(t,e)},s:function(t,e,r){return e==="so"?r.ordinalNumber(t.getSeconds(),{unit:"second"}):Lr.s(t,e)},S:function(t,e){return Lr.S(t,e)},X:function(t,e,r){let o=t.getTimezoneOffset();if(o===0)return"Z";switch(e){case"X":return lh(o);case"XXXX":case"XX":return zo(o);default:return zo(o,":")}},x:function(t,e,r){let o=t.getTimezoneOffset();switch(e){case"x":return lh(o);case"xxxx":case"xx":return zo(o);default:return zo(o,":")}},O:function(t,e,r){let o=t.getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+sh(o,":");default:return"GMT"+zo(o,":")}},z:function(t,e,r){let o=t.getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+sh(o,":");default:return"GMT"+zo(o,":")}},t:function(t,e,r){let o=Math.trunc(+t/1e3);return le(o,e.length)},T:function(t,e,r){return le(+t,e.length)}};function sh(t,e=""){let r=t>0?"-":"+",o=Math.abs(t),n=Math.trunc(o/60),i=o%60;return i===0?r+String(n):r+String(n)+e+le(i,2)}function lh(t,e){return t%60===0?(t>0?"-":"+")+le(Math.abs(t)/60,2):zo(t,e)}function zo(t,e=""){let r=t>0?"-":"+",o=Math.abs(t),n=le(Math.trunc(o/60),2),i=le(o%60,2);return r+n+e+i}var uh=(t,e)=>{switch(t){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});default:return e.date({width:"full"})}},ch=(t,e)=>{switch(t){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});default:return e.time({width:"full"})}},_w=(t,e)=>{let r=t.match(/(P+)(p+)?/)||[],o=r[1],n=r[2];if(!n)return uh(t,e);let i;switch(o){case"P":i=e.dateTime({width:"short"});break;case"PP":i=e.dateTime({width:"medium"});break;case"PPP":i=e.dateTime({width:"long"});break;default:i=e.dateTime({width:"full"});break}return i.replace("{{date}}",uh(o,e)).replace("{{time}}",ch(n,e))},dh={p:ch,P:_w};var xw=/^D+$/,yw=/^Y+$/,ww=["D","DD","YY","YYYY"];function mh(t){return xw.test(t)}function fh(t){return yw.test(t)}function ph(t,e,r){let o=Sw(t,e,r);if(console.warn(o),ww.includes(t))throw new RangeError(o)}function Sw(t,e,r){let o=t[0]==="Y"?"years":"days of the month";return`Use \`${t.toLowerCase()}\` instead of \`${t}\` (in \`${e}\`) for formatting ${o} to the input \`${r}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var Cw=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Tw=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Ew=/^'([^]*?)'?$/,Pw=/''/g,Aw=/[a-zA-Z]/;function dd(t,e,r){let o=bo(),n=r?.locale??o.locale??ud,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,l=pe(t,r?.in);if(!Sn(l))throw new RangeError("Invalid time value");let s=e.match(Tw).map(f=>{let m=f[0];if(m==="p"||m==="P"){let d=dh[m];return d(f,n.formatLong)}return f}).join("").match(Cw).map(f=>{if(f==="''")return{isToken:!1,value:"'"};let m=f[0];if(m==="'")return{isToken:!1,value:Iw(f)};if(cd[m])return{isToken:!0,value:f};if(m.match(Aw))throw new RangeError("Format string contains an unescaped latin alphabet character `"+m+"`");return{isToken:!1,value:f}});n.localize.preprocessor&&(s=n.localize.preprocessor(l,s));let c={firstWeekContainsDate:i,weekStartsOn:a,locale:n};return s.map(f=>{if(!f.isToken)return f.value;let m=f.value;(!r?.useAdditionalWeekYearTokens&&fh(m)||!r?.useAdditionalDayOfYearTokens&&mh(m))&&ph(m,e,String(t));let d=cd[m[0]];return d(l,m,n.localize,c)}).join("")}function Iw(t){let e=t.match(Ew);return e?e[1].replace(Pw,"'"):t}function Wo(t,e,r){return Rs(t,-e,r)}function Ls(t,e,r){return Vs(t,-e,r)}function gh(t,e,r){return Yg(t,-e,r)}function Fs(t,e,r){return $g(t,-e,r)}var H=u(W(),1),ke=u(j(),1),wt=u(Go(),1);var md=u(V(),1),Be={Name:(0,md.jsx)("span",{className:"dataviews-filters__summary-filter-text-name"}),Value:(0,md.jsx)("span",{className:"dataviews-filters__summary-filter-text-value"})};function vh(t,e){switch(e){case"days":return Wo(new Date,t);case"weeks":return gh(new Date,t);case"months":return Ls(new Date,t);case"years":return Fs(new Date,t);default:return new Date}}var bh={label:(0,H.__)("Is none of"),filterText:(t,e)=>(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is none of: %2$s"),t.name,e.map(r=>r.label).join(", ")),Be),filter:((t,e,r)=>{if(!r?.length)return!0;let o=e.getValue({item:t});return Array.isArray(o)?!r.some(n=>o.includes(n)):typeof o=="string"?!r.includes(o):!1}),selection:"multi"},Bs=[{name:Ee,label:(0,H.__)("Includes"),filterText:(t,e)=>(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s includes: %2$s"),t.name,e.map(r=>r.label).join(", ")),Be),filter(t,e,r){if(!r?.length)return!0;let o=e.getValue({item:t});return Array.isArray(o)?r.some(n=>o.includes(n)):typeof o=="string"?r.includes(o):!1},selection:"multi"},{name:Pe,...bh},{name:lt,label:(0,H.__)("Includes all"),filterText:(t,e)=>(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s includes all: %2$s"),t.name,e.map(r=>r.label).join(", ")),Be),filter(t,e,r){return r?.length?r.every(o=>e.getValue({item:t})?.includes(o)):!0},selection:"multi"},{name:$e,...bh},{name:vt,label:(0,H.__)("Between (inc)"),filterText:(t,e)=>(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s between (inc): %2$s and %3$s"),t.name,e[0].label[0],e[0].label[1]),Be),filter(t,e,r){if(!Array.isArray(r)||r.length!==2||r[0]===void 0||r[1]===void 0)return!0;let o=e.getValue({item:t});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:(t,e)=>(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is in the past: %2$s"),t.name,`${e[0].value.value} ${e[0].value.unit}`),Be),filter(t,e,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=vh(r.value,r.unit),n=(0,wt.getDate)(e.getValue({item:t}));return n>=o&&n<=new Date},selection:"custom"},{name:At,label:(0,H.__)("Over"),filterText:(t,e)=>(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is over: %2$s"),t.name,`${e[0].value.value} ${e[0].value.unit}`),Be),filter(t,e,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=vh(r.value,r.unit);return(0,wt.getDate)(e.getValue({item:t}))(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is: %2$s"),t.name,e[0].label),Be),filter(t,e,r){return r===e.getValue({item:t})||r===void 0},selection:"single"},{name:Ie,label:(0,H.__)("Is not"),filterText:(t,e)=>(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is not: %2$s"),t.name,e[0].label),Be),filter(t,e,r){return r!==e.getValue({item:t})},selection:"single"},{name:Kr,label:(0,H.__)("Less than"),filterText:(t,e)=>(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is less than: %2$s"),t.name,e[0].label),Be),filter(t,e,r){return r===void 0?!0:e.getValue({item:t})(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is greater than: %2$s"),t.name,e[0].label),Be),filter(t,e,r){return r===void 0?!0:e.getValue({item:t})>r},selection:"single"},{name:Xr,label:(0,H.__)("Less than or equal"),filterText:(t,e)=>(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is less than or equal to: %2$s"),t.name,e[0].label),Be),filter(t,e,r){return r===void 0?!0:e.getValue({item:t})<=r},selection:"single"},{name:Qr,label:(0,H.__)("Greater than or equal"),filterText:(t,e)=>(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is greater than or equal to: %2$s"),t.name,e[0].label),Be),filter(t,e,r){return r===void 0?!0:e.getValue({item:t})>=r},selection:"single"},{name:Jr,label:(0,H.__)("Before"),filterText:(t,e)=>(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is before: %2$s"),t.name,e[0].label),Be),filter(t,e,r){if(r===void 0)return!0;let o=(0,wt.getDate)(r);return(0,wt.getDate)(e.getValue({item:t}))(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is after: %2$s"),t.name,e[0].label),Be),filter(t,e,r){if(r===void 0)return!0;let o=(0,wt.getDate)(r);return(0,wt.getDate)(e.getValue({item:t}))>o},selection:"single"},{name:to,label:(0,H.__)("Before (inc)"),filterText:(t,e)=>(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is on or before: %2$s"),t.name,e[0].label),Be),filter(t,e,r){if(r===void 0)return!0;let o=(0,wt.getDate)(r);return(0,wt.getDate)(e.getValue({item:t}))<=o},selection:"single"},{name:ro,label:(0,H.__)("After (inc)"),filterText:(t,e)=>(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is on or after: %2$s"),t.name,e[0].label),Be),filter(t,e,r){if(r===void 0)return!0;let o=(0,wt.getDate)(r);return(0,wt.getDate)(e.getValue({item:t}))>=o},selection:"single"},{name:nr,label:(0,H.__)("Contains"),filterText:(t,e)=>(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s contains: %2$s"),t.name,e[0].label),Be),filter(t,e,r){if(r===void 0)return!0;let o=e.getValue({item:t});return typeof o=="string"&&r&&o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:ir,label:(0,H.__)("Doesn't contain"),filterText:(t,e)=>(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s doesn't contain: %2$s"),t.name,e[0].label),Be),filter(t,e,r){if(r===void 0)return!0;let o=e.getValue({item:t});return typeof o=="string"&&r&&!o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:ar,label:(0,H.__)("Starts with"),filterText:(t,e)=>(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s starts with: %2$s"),t.name,e[0].label),Be),filter(t,e,r){if(r===void 0)return!0;let o=e.getValue({item:t});return typeof o=="string"&&r&&o.toLowerCase().startsWith(String(r).toLowerCase())},selection:"single"},{name:oo,label:(0,H.__)("On"),filterText:(t,e)=>(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is: %2$s"),t.name,e[0].label),Be),filter(t,e,r){if(r===void 0)return!0;let o=(0,wt.getDate)(r),n=(0,wt.getDate)(e.getValue({item:t}));return o.getTime()===n.getTime()},selection:"single"},{name:no,label:(0,H.__)("Not on"),filterText:(t,e)=>(0,ke.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is not: %2$s"),t.name,e[0].label),Be),filter(t,e,r){if(r===void 0)return!0;let o=(0,wt.getDate)(r),n=(0,wt.getDate)(e.getValue({item:t}));return o.getTime()!==n.getTime()},selection:"single"}],qo=t=>Bs.find(e=>e.name===t),_h=()=>Bs.map(t=>t.name),xh=t=>Bs.filter(e=>e.selection==="single").some(e=>e.name===t),yh=t=>Bs.some(e=>e.name===t);var ot=u(V(),1),Ow="Enter",Rw=" ",Vw=({activeElements:t,filterInView:e,filter:r})=>{if(t===void 0||t.length===0)return r.name;let o=qo(e?.operator);return o!==void 0?o.filterText(r,t):(0,Fr.sprintf)((0,Fr.__)("Unknown status for %1$s"),r.name)};function kw({filter:t,view:e,onChangeView:r}){let o=t.operators?.map(a=>({value:a,label:qo(a)?.label||a})),n=e.filters?.find(a=>a.field===t.field),i=n?.operator||t.operators[0];return o.length>1&&(0,ot.jsxs)(F,{direction:"row",gap:"sm",justify:"flex-start",className:"dataviews-filters__summary-operators-container",align:"center",children:[(0,ot.jsx)(Xt.FlexItem,{className:"dataviews-filters__summary-operators-filter-name",children:t.name}),(0,ot.jsx)(Xt.SelectControl,{className:"dataviews-filters__summary-operators-filter-select",label:(0,Fr.__)("Conditions"),value:i,options:o,onChange:a=>{let l=a,s=n?.operator,c=n?[...(e.filters??[]).map(f=>{if(f.field===t.field){let m=qo(s)?.selection,d=qo(l)?.selection,p=m!==d||[m,d].includes("custom");return{...f,value:p?void 0:f.value,operator:l}}return f})]:[...e.filters??[],{field:t.field,operator:l,value:void 0}];r({...e,page:1,filters:c})},size:"small",variant:"minimal",hideLabelFromVision:!0})]})}function wh({addFilterRef:t,openedFilter:e,fields:r,...o}){let n=(0,js.useRef)(null),{filter:i,view:a,onChangeView:l}=o,s=a.filters?.find(v=>v.field===i.field),c=[],f=(0,js.useMemo)(()=>{let v=r.find(b=>b.id===i.field);return v&&{...v,getValue:({item:b})=>b[v.id]}},[r,i.field]),{elements:m}=Qe({elements:i.elements,getElements:i.getElements});if(m.length>0)c=m.filter(v=>i.singleSelection?v.value===s?.value:s?.value?.includes(v.value));else if(Array.isArray(s?.value)){let v=s.value.map(b=>f?.getValueFormatted({item:{[f.id]:b},field:f})||String(b));c=[{value:s.value,label:v}]}else if(typeof s?.value=="object")c=[{value:s.value,label:s.value}];else if(s?.value!==void 0){let v=f!==void 0?f.getValueFormatted({item:{[f.id]:s.value},field:f}):String(s.value);c=[{value:s.value,label:v}]}let d=i.isPrimary,p=s?.isLocked,g=!p&&s?.value!==void 0,w=!p&&(!d||g);return(0,ot.jsx)(Xt.Dropdown,{defaultOpen:e===i.field,contentClassName:"dataviews-filters__summary-popover",popoverProps:{placement:"bottom-start",role:"dialog"},onClose:()=>{n.current?.focus()},renderToggle:({isOpen:v,onToggle:b})=>(0,ot.jsxs)("div",{className:"dataviews-filters__summary-chip-container",children:[(0,ot.jsx)(Xt.Tooltip,{text:(0,Fr.sprintf)((0,Fr.__)("Filter by: %1$s"),i.name.toLowerCase()),placement:"top",children:(0,ot.jsx)("div",{className:z("dataviews-filters__summary-chip",{"has-reset":w,"has-values":g,"is-not-clickable":p}),role:"button",tabIndex:p?-1:0,onClick:()=>{p||b()},onKeyDown:S=>{!p&&[Ow,Rw].includes(S.key)&&(b(),S.preventDefault())},"aria-disabled":p,"aria-pressed":v,"aria-expanded":v,ref:n,children:(0,ot.jsx)(Vw,{activeElements:c,filterInView:s,filter:i})})}),w&&(0,ot.jsx)(Xt.Tooltip,{text:d?(0,Fr.__)("Reset"):(0,Fr.__)("Remove"),placement:"top",children:(0,ot.jsx)("button",{className:z("dataviews-filters__summary-chip-remove",{"has-values":g}),onClick:()=>{l({...a,page:1,filters:a.filters?.filter(S=>S.field!==i.field)}),d?n.current?.focus():t.current?.focus()},children:(0,ot.jsx)(Xt.Icon,{icon:Zn})})})]}),renderContent:()=>(0,ot.jsxs)(F,{direction:"column",justify:"flex-start",children:[(0,ot.jsx)(kw,{...o}),o.filter.hasElements?(0,ot.jsx)(Ng,{...o,filter:{...o.filter,elements:m}}):(0,ot.jsx)(Hg,{...o,fields:r})]})})}var Hs=u(G(),1),Sh=u(W(),1),Ch=u(j(),1);var Br=u(V(),1),{Menu:Di}=Z(Hs.privateApis);function fd({filters:t,view:e,onChangeView:r,setOpenedFilter:o,triggerProps:n}){let i=t.filter(a=>!a.isVisible);return(0,Br.jsxs)(Di,{children:[(0,Br.jsx)(Di.TriggerButton,{...n}),(0,Br.jsx)(Di.Popover,{children:i.map(a=>(0,Br.jsx)(Di.Item,{onClick:()=>{o(a.field),r({...e,page:1,filters:[...e.filters||[],{field:a.field,value:void 0,operator:a.operators[0]}]})},children:(0,Br.jsx)(Di.ItemLabel,{children:a.name})},a.field))})]})}function Dw({filters:t,view:e,onChangeView:r,setOpenedFilter:o},n){if(!t.length||t.every(({isPrimary:a})=>a))return null;let i=t.filter(a=>!a.isVisible);return(0,Br.jsx)(fd,{triggerProps:{render:(0,Br.jsx)(Hs.Button,{accessibleWhenDisabled:!0,size:"compact",className:"dataviews-filters-button",variant:"tertiary",disabled:!i.length,ref:n}),children:(0,Sh.__)("Add filter")},filters:t,view:e,onChangeView:r,setOpenedFilter:o})}var Th=(0,Ch.forwardRef)(Dw);var Eh=u(G(),1),Ph=u(W(),1),Ah=u(V(),1);function Ih({filters:t,view:e,onChangeView:r}){let o=i=>t.some(a=>a.field===i&&a.isPrimary),n=!e.search&&!e.filters?.some(i=>!i.isLocked&&(i.value!==void 0||!o(i.field)));return(0,Ah.jsx)(Eh.Button,{disabled:n,accessibleWhenDisabled:!0,size:"compact",variant:"tertiary",className:"dataviews-filters__reset-button",onClick:()=>{r({...e,page:1,search:"",filters:e.filters?.filter(i=>!!i.isLocked)||[]})},children:(0,Ph.__)("Reset")})}var Oh=u(j(),1);function Nw(t,e){return(0,Oh.useMemo)(()=>{let r=[];return t.forEach(o=>{if(o.filterBy===!1||!o.hasElements&&!o.Edit)return;let n=o.filterBy.operators,i=!!o.filterBy?.isPrimary,a=e.filters?.some(l=>l.field===o.id&&!!l.isLocked)??!1;r.push({field:o.id,name:o.label,elements:o.elements,getElements:o.getElements,hasElements:o.hasElements,singleSelection:n.some(l=>xh(l)),operators:n,isVisible:a||i||!!e.filters?.some(l=>l.field===o.id&&yh(l.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},[t,e])}var Ni=Nw;var Mi=u(V(),1);function Mw({className:t}){let{fields:e,view:r,onChangeView:o,openedFilter:n,setOpenedFilter:i}=(0,Pn.useContext)(U),a=(0,Pn.useRef)(null),l=Ni(e,r),s=(0,Mi.jsx)(Th,{filters:l,view:r,onChangeView:o,ref:a,setOpenedFilter:i},"add-filter"),c=l.filter(m=>m.isVisible);if(c.length===0)return null;let f=[...c.map(m=>(0,Mi.jsx)(wh,{filter:m,view:r,fields:e,onChangeView:o,addFilterRef:a,openedFilter:n},m.field)),s];return f.push((0,Mi.jsx)(Ih,{filters:l,view:r,onChangeView:o},"reset-filters")),(0,Mi.jsx)(F,{direction:"row",justify:"flex-start",gap:"sm",style:{width:"fit-content"},wrap:"wrap",className:t,children:f})}var Li=(0,Pn.memo)(Mw);var _o=u(j(),1),Rh=u(G(),1);var zs=u(W(),1);var hr=u(V(),1);function Lw(){let{filters:t,view:e,onChangeView:r,setOpenedFilter:o,isShowingFilter:n,setIsShowingFilter:i}=(0,_o.useContext)(U),a=(0,_o.useRef)(null),l=(0,_o.useCallback)(p=>{r(p),i(!0)},[r,i]);if(t.length===0)return null;let s=t.some(p=>p.isVisible),c={label:(0,zs.__)("Add filter"),"aria-expanded":!1,isPressed:!1},f={label:(0,zs._x)("Filter","verb"),"aria-expanded":n,isPressed:n,onClick:()=>{n||o(null),i(!n)}},m=t.some(p=>p.isPrimary||p.isLocked),d=(0,hr.jsx)(Rh.Button,{ref:a,className:"dataviews-filters__visibility-toggle",size:"compact",icon:Qn,disabled:m,accessibleWhenDisabled:!0,...s?f:c});return(0,hr.jsx)("div",{className:"dataviews-filters__container-visibility-toggle",children:s?(0,hr.jsx)(Fw,{buttonRef:a,filtersCount:e.filters?.length,children:d}):(0,hr.jsx)(fd,{filters:t,view:e,onChangeView:l,setOpenedFilter:o,triggerProps:{render:d}})})}function Fw({buttonRef:t,filtersCount:e,children:r}){return(0,_o.useEffect)(()=>()=>{t.current?.focus()},[t]),(0,hr.jsxs)(hr.Fragment,{children:[r,!!e&&(0,hr.jsx)("span",{className:"dataviews-filters-toggle__count",children:e})]})}var Ws=Lw;var Vh=u(j(),1);var kh=u(V(),1);function Bw(t){let{isShowingFilter:e}=(0,Vh.useContext)(U);return e?(0,kh.jsx)(Li,{...t}):null}var Gs=Bw;var Dh=u(j(),1),Nh=u(W(),1);var pd=u(V(),1);function gd({className:t}){let{actions:e=[],data:r,fields:o,getItemId:n,getItemLevel:i,hasInitiallyLoaded:a,isLoading:l,view:s,onChangeView:c,selection:f,onChangeSelection:m,setOpenedFilter:d,onClickItem:p,isItemClickable:g,renderItemLink:w,defaultLayouts:v,empty:b=(0,pd.jsx)("p",{children:(0,Nh.__)("No results")})}=(0,Dh.useContext)(U);if(!a)return null;let S=co.find(P=>P.type===s.type&&v[P.type])?.component;return(0,pd.jsx)(S,{className:t,actions:e,data:r,fields:o,getItemId:n,getItemLevel:i,isLoading:l,onChangeView:c,onChangeSelection:m,selection:f,setOpenedFilter:d,onClickItem:p,renderItemLink:w,isItemClickable:g,view:s,empty:b})}var Mh=u(j(),1);var An=u(V(),1),jw=[];function hd(){let{view:t,paginationInfo:{totalItems:e=0,totalPages:r},data:o,actions:n=jw,isLoading:i,hasInitiallyLoaded:a,hasInfiniteScrollHandler:l}=(0,Mh.useContext)(U),s=!!i&&a&&!l&&!!o?.length,c=lr(!!s),f=nn(n,o)&&[Jo,Ga].includes(t.type);return!s&&(!e||!r||r<=1&&!f)?null:(!!e||s)&&(0,An.jsx)("div",{className:"dataviews-footer",inert:s?"true":void 0,children:(0,An.jsxs)(F,{direction:"row",justify:"end",align:"center",className:z("dataviews-footer__content",{"is-refreshing":c}),gap:"sm",children:[f&&(0,An.jsx)($a,{}),(0,An.jsx)(If,{})]})})}var Lh=u(W(),1),Qt=u(j(),1),Fh=u(G(),1),Bh=u(ht(),1);var jh=u(V(),1),Hw=(0,Qt.memo)(function({label:e}){let{view:r,onChangeView:o}=(0,Qt.useContext)(U),[n,i,a]=(0,Bh.useDebouncedInput)(r.search);(0,Qt.useEffect)(()=>{i(r.search??"")},[r.search,i]);let l=(0,Qt.useRef)(o),s=(0,Qt.useRef)(r);(0,Qt.useEffect)(()=>{l.current=o,s.current=r},[o,r]),(0,Qt.useEffect)(()=>{a!==s.current?.search&&l.current({...s.current,page:1,search:a})},[a]);let c=e||(0,Lh.__)("Search");return(0,jh.jsx)(Fh.SearchControl,{className:"dataviews-search",onChange:i,value:n,label:c,placeholder:c,size:"compact"})}),vd=Hw;var je=u(G(),1),jr=u(W(),1),Jt=u(j(),1);var _d=u(zh(),1),Yh=u(ht(),1);var Wh=u(G(),1),bd=u(W(),1),Gh=u(j(),1);var qh=u(V(),1);function Uh(){let t=(0,Gh.useContext)(U),{view:e,onChangeView:r}=t,o=e.infiniteScrollEnabled??!1;return t.hasInfiniteScrollHandler?(0,qh.jsx)(Wh.ToggleControl,{label:(0,bd.__)("Enable infinite scroll"),help:(0,bd.__)("Automatically load more content as you scroll, instead of showing pagination links."),checked:o,onChange:n=>{r({...e,infiniteScrollEnabled:n})}}):null}var oe=u(V(),1),{Menu:Fi}=Z(je.privateApis),zw={className:"dataviews-config__popover",placement:"bottom-end",offset:9};function xd(){let{view:t,onChangeView:e,defaultLayouts:r}=(0,Jt.useContext)(U),o=Object.keys(r);if(o.length<=1)return null;let n=co.find(i=>t.type===i.type);return(0,oe.jsxs)(Fi,{children:[(0,oe.jsx)(Fi.TriggerButton,{render:(0,oe.jsx)(je.Button,{size:"compact",icon:n?.icon,label:(0,jr.__)("Layout")})}),(0,oe.jsx)(Fi.Popover,{children:o.map(i=>{let a=co.find(l=>l.type===i);return a?(0,oe.jsx)(Fi.RadioItem,{value:i,name:"view-actions-available-view",checked:i===t.type,hideOnClick:!0,onChange:l=>{switch(l.target.value){case"list":case"grid":case"table":case"pickerGrid":case"pickerTable":case"activity":let s={...t};return"layout"in s&&delete s.layout,e({...s,type:l.target.value,...r[l.target.value]})}(0,_d.default)("Invalid dataview")},children:(0,oe.jsx)(Fi.ItemLabel,{children:a.label})},i):null})})]})}function Ww(){let{view:t,fields:e,onChangeView:r}=(0,Jt.useContext)(U),o=(0,Jt.useMemo)(()=>e.filter(i=>i.enableSorting!==!1).map(i=>({label:i.label,value:i.id})),[e]);return(0,oe.jsx)(je.SelectControl,{__next40pxDefaultSize:!0,label:(0,jr.__)("Sort by"),value:t.sort?.field,options:o,onChange:n=>{r({...t,sort:{direction:t?.sort?.direction||"desc",field:n},showLevels:!1})}})}function Gw(){let{view:t,fields:e,onChangeView:r}=(0,Jt.useContext)(U);if(e.filter(i=>i.enableSorting!==!1).length===0)return null;let n=t.sort?.direction;return!n&&t.sort?.field&&(n="desc"),(0,oe.jsx)(je.__experimentalToggleGroupControl,{className:"dataviews-view-config__sort-direction",__next40pxDefaultSize:!0,isBlock:!0,label:(0,jr.__)("Order"),value:n,onChange:i=>{if(i==="asc"||i==="desc"){r({...t,sort:{direction:i,field:t.sort?.field||e.find(a=>a.enableSorting!==!1)?.id||""},showLevels:!1});return}(0,_d.default)("Invalid direction")},children:Ha.map(i=>(0,oe.jsx)(je.__experimentalToggleGroupControlOptionIcon,{value:i,icon:Lm[i],label:Wa[i]},i))})}function qw(){let{view:t,config:e,onChangeView:r}=(0,Jt.useContext)(U),{infiniteScrollEnabled:o}=t;return!e||!e.perPageSizes||e.perPageSizes.length<2||e.perPageSizes.length>6||o?null:(0,oe.jsx)(je.__experimentalToggleGroupControl,{__next40pxDefaultSize:!0,isBlock:!0,label:(0,jr.__)("Items per page"),value:t.perPage||10,disabled:!t?.sort?.field,onChange:n=>{let i=typeof n=="number"||n===void 0?n:parseInt(n,10);r({...t,perPage:i,page:1})},children:e.perPageSizes.map(n=>(0,oe.jsx)(je.__experimentalToggleGroupControlOption,{value:n,label:n.toString()},n))})}function Uw(){let{onReset:t}=(0,Jt.useContext)(U);return t===void 0?null:(0,oe.jsx)(je.Button,{variant:"tertiary",size:"compact",disabled:t===!1,accessibleWhenDisabled:!0,className:"dataviews-view-config__reset-button",onClick:()=>{typeof t=="function"&&t()},children:(0,jr.__)("Reset view")})}function yd(){let{view:t,onReset:e}=(0,Jt.useContext)(U),r=(0,Yh.useInstanceId)($h,"dataviews-view-config-dropdown"),o=co.find(i=>i.type===t.type),n=typeof e=="function";return(0,oe.jsx)(je.Dropdown,{expandOnMobile:!0,popoverProps:{...zw,id:r},renderToggle:({onToggle:i,isOpen:a})=>(0,oe.jsxs)("div",{className:"dataviews-view-config__toggle-wrapper",children:[(0,oe.jsx)(je.Button,{size:"compact",icon:cu,label:(0,jr._x)("View options","View is used as a noun"),onClick:i,"aria-expanded":a?"true":"false","aria-controls":r}),n&&(0,oe.jsx)("span",{className:"dataviews-view-config__modified-indicator"})]}),renderContent:()=>(0,oe.jsx)(je.__experimentalDropdownContentWrapper,{paddingSize:"medium",className:"dataviews-config__popover-content-wrapper",children:(0,oe.jsxs)(F,{direction:"column",className:"dataviews-view-config",gap:"xl",children:[(0,oe.jsxs)(F,{direction:"row",justify:"space-between",align:"center",className:"dataviews-view-config__header",children:[(0,oe.jsx)(je.__experimentalHeading,{level:2,className:"dataviews-settings-section__title",children:(0,jr.__)("Appearance")}),(0,oe.jsx)(Uw,{})]}),(0,oe.jsxs)(F,{direction:"column",gap:"lg",children:[(0,oe.jsxs)(F,{direction:"row",gap:"sm",className:"dataviews-view-config__sort-controls",children:[(0,oe.jsx)(Ww,{}),(0,oe.jsx)(Gw,{})]}),!!o?.viewConfigOptions&&(0,oe.jsx)(o.viewConfigOptions,{}),(0,oe.jsx)(Uh,{}),(0,oe.jsx)(qw,{}),(0,oe.jsx)(Xa,{})]})]})})})}function $h(){return(0,oe.jsxs)(oe.Fragment,{children:[(0,oe.jsx)(xd,{}),(0,oe.jsx)(yd,{})]})}var Yw=(0,Jt.memo)($h),Kh=Yw;var Zh=u(G(),1),Xh=u(j(),1);function ve(t,e){let r;return t?.required&&e?.required?r=e?.required?.message?e.required:void 0:t?.pattern&&e?.pattern?r=e.pattern:t?.min&&e?.min?r=e.min:t?.max&&e?.max?r=e.max:t?.minLength&&e?.minLength?r=e.minLength:t?.maxLength&&e?.maxLength?r=e.maxLength:t?.elements&&e?.elements?r=e.elements:e?.custom&&(r=e.custom),r}var Qh=u(V(),1),{ValidatedCheckboxControl:$w}=Z(Zh.privateApis);function Jh({field:t,onChange:e,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:l,label:s,description:c,isValid:f}=t,m=(0,Xh.useCallback)(()=>{e(l({item:r,value:!a({item:r})}))},[r,a,e,l]);return(0,Qh.jsx)($w,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:ve(f,i),hidden:o,label:s,help:c,checked:a({item:r}),onChange:m})}var qs=u(G(),1),ev=u(j(),1);var wd=u(V(),1),{ValidatedComboboxControl:Kw}=Z(qs.privateApis);function Us({data:t,field:e,onChange:r,hideLabelFromVision:o,validity:n}){let{label:i,description:a,placeholder:l,getValue:s,setValue:c,isValid:f}=e,m=s({item:t})??"",d=(0,ev.useCallback)(w=>r(c({item:t,value:w??""})),[t,r,c]),{elements:p,isLoading:g}=Qe({elements:e.elements,getElements:e.getElements});return g?(0,wd.jsx)(qs.Spinner,{}):(0,wd.jsx)(Kw,{required:!!e.isValid?.required,customValidity:ve(f,n),label:i,value:m,help:a,placeholder:l,options:p,onChange:d,hideLabelFromVision:o,allowReset:!0,expandOnFocus:!0})}var Zs=u(G(),1),$t=u(j(),1),Ks=u(W(),1),jt=u(Go(),1);var On=u(G(),1),Sd=u(j(),1),vr=u(W(),1);var In=u(V(),1),Zw={[bt]:[{value:"days",label:(0,vr.__)("Days")},{value:"weeks",label:(0,vr.__)("Weeks")},{value:"months",label:(0,vr.__)("Months")},{value:"years",label:(0,vr.__)("Years")}],[At]:[{value:"days",label:(0,vr.__)("Days ago")},{value:"weeks",label:(0,vr.__)("Weeks ago")},{value:"months",label:(0,vr.__)("Months ago")},{value:"years",label:(0,vr.__)("Years ago")}]};function Ys({className:t,data:e,field:r,onChange:o,hideLabelFromVision:n,operator:i}){let a=Zw[i===bt?"inThePast":"over"],{id:l,label:s,getValue:c,setValue:f}=r,m=c({item:e}),{value:d="",unit:p=a[0].value}=m&&typeof m=="object"?m:{},g=(0,Sd.useCallback)(v=>o(f({item:e,value:{value:Number(v),unit:p}})),[o,f,e,p]),w=(0,Sd.useCallback)(v=>o(f({item:e,value:{value:d,unit:v}})),[o,f,e,d]);return(0,In.jsx)(On.BaseControl,{id:l,className:z(t,"dataviews-controls__relative-date"),label:s,hideLabelFromVision:n,children:(0,In.jsxs)(F,{direction:"row",gap:"sm",children:[(0,In.jsx)(On.__experimentalNumberControl,{__next40pxDefaultSize:!0,className:"dataviews-controls__relative-date-number",spinControls:"none",min:1,step:1,value:d,onChange:g}),(0,In.jsx)(On.SelectControl,{className:"dataviews-controls__relative-date-unit",__next40pxDefaultSize:!0,label:(0,vr.__)("Unit"),value:p,options:a,onChange:w,hideLabelFromVision:!0})]})})}var tv=u(Go(),1);function $s(t){if(!t)return null;let e=(0,tv.getDate)(t);return e&&Sn(e)?e:null}var xo=u(V(),1),{DateCalendar:Xw,ValidatedInputControl:Qw}=Z(Zs.privateApis),Jw=t=>t?(0,jt.dateI18n)("Y-m-d\\TH:i",(0,jt.getDate)(t)):"";function e1({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:l,description:s,setValue:c,getValue:f,isValid:m}=e,d=f({item:t}),p=typeof d=="string"?d:void 0,[g,w]=(0,$t.useState)(()=>$s(p)||new Date),v=(0,$t.useRef)(null),b=(0,$t.useRef)(void 0),S=(0,$t.useRef)(null),P=(0,$t.useCallback)(N=>r(c({item:t,value:N})),[t,r,c]);(0,$t.useEffect)(()=>()=>{b.current&&clearTimeout(b.current)},[]);let R=(0,$t.useCallback)(N=>{let _;if(N){let y=(0,jt.dateI18n)("Y-m-d",N),E;p?E=(0,jt.dateI18n)("H:i",(0,jt.getDate)(p)):E=(0,jt.dateI18n)("H:i",N),_=(0,jt.getDate)(`${y}T${E}`).toISOString(),P(_),b.current&&clearTimeout(b.current)}else P(void 0);S.current=v.current&&v.current.ownerDocument.activeElement,b.current=setTimeout(()=>{v.current&&(v.current.focus(),v.current.blur(),P(_),S.current&&S.current instanceof HTMLElement&&S.current.focus())},0)},[P,p]),I=(0,$t.useCallback)(N=>{if(N){let _=(0,jt.getDate)(N);P(_.toISOString());let y=$s(_.toISOString());y&&w(y)}else P(void 0)},[P]),{format:k}=e,D=k.weekStartsOn??(0,jt.getSettings)().l10n.startOfWeek,{timezone:{string:T}}=(0,jt.getSettings)(),O=l;return m?.required&&!n&&!o?O=`${l} (${(0,Ks.__)("Required")})`:!m?.required&&n&&!o&&(O=`${l} (${(0,Ks.__)("Optional")})`),(0,xo.jsx)(Zs.BaseControl,{id:a,label:O,help:s,hideLabelFromVision:o,children:(0,xo.jsxs)(F,{direction:"column",gap:"lg",children:[(0,xo.jsx)(Xw,{style:{width:"100%"},selected:p&&$s(p)||void 0,onSelect:R,month:g,onMonthChange:w,timeZone:T||void 0,weekStartsOn:D}),(0,xo.jsx)(Qw,{ref:v,__next40pxDefaultSize:!0,required:!!m?.required,customValidity:ve(m,i),type:"datetime-local",label:(0,Ks.__)("Date time"),hideLabelFromVision:!0,value:Jw(p),onChange:I})]})})}function rv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===bt||i===At?(0,xo.jsx)(Ys,{className:"dataviews-controls__datetime",data:t,field:e,onChange:r,hideLabelFromVision:o,operator:i}):(0,xo.jsx)(e1,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var mt=u(G(),1),fe=u(j(),1),Ye=u(W(),1),dt=u(Go(),1);var be=u(V(),1),{DateCalendar:t1,DateRangeCalendar:r1}=Z(mt.privateApis),o1=[{id:"today",label:(0,Ye.__)("Today"),getValue:()=>(0,dt.getDate)(null)},{id:"yesterday",label:(0,Ye.__)("Yesterday"),getValue:()=>{let t=(0,dt.getDate)(null);return Wo(t,1)}},{id:"past-week",label:(0,Ye.__)("Past week"),getValue:()=>{let t=(0,dt.getDate)(null);return Wo(t,7)}},{id:"past-month",label:(0,Ye.__)("Past month"),getValue:()=>{let t=(0,dt.getDate)(null);return Ls(t,1)}}],n1=[{id:"last-7-days",label:(0,Ye.__)("Last 7 days"),getValue:()=>{let t=(0,dt.getDate)(null);return[Wo(t,7),t]}},{id:"last-30-days",label:(0,Ye.__)("Last 30 days"),getValue:()=>{let t=(0,dt.getDate)(null);return[Wo(t,30),t]}},{id:"month-to-date",label:(0,Ye.__)("Month to date"),getValue:()=>{let t=(0,dt.getDate)(null);return[Zg(t),t]}},{id:"last-year",label:(0,Ye.__)("Last year"),getValue:()=>{let t=(0,dt.getDate)(null);return[Fs(t,1),t]}},{id:"year-to-date",label:(0,Ye.__)("Year to date"),getValue:()=>{let t=(0,dt.getDate)(null);return[Ds(t),t]}}],Rn=t=>{if(!t)return null;let e=(0,dt.getDate)(t);return e&&Sn(e)?e:null},Cd=t=>t?typeof t=="string"?t:dd(t,"yyyy-MM-dd"):"";function ov({field:t,validity:e,inputRefs:r,isTouched:o,setIsTouched:n,children:i}){let{isValid:a}=t,[l,s]=(0,fe.useState)(void 0),c=(0,fe.useCallback)(()=>{let m=Array.isArray(r)?r:[r];for(let d of m){let p=d.current;if(p&&!p.validity.valid){s({type:"invalid",message:p.validationMessage});return}}s(void 0)},[r]);return(0,fe.useEffect)(()=>{let m=Array.isArray(r)?r:[r],d=e?ve(a,e):void 0;for(let p of m){let g=p.current;g&&g.setCustomValidity(d?.type==="invalid"&&d.message?d.message:"")}},[r,a,e]),(0,fe.useEffect)(()=>{let m=Array.isArray(r)?r:[r],d=p=>{p.preventDefault(),n(!0)};for(let p of m)p.current?.addEventListener("invalid",d);return()=>{for(let p of m)p.current?.removeEventListener("invalid",d)}},[r,n]),(0,fe.useEffect)(()=>{if(!o)return;let m=e?ve(a,e):void 0;m?s(m):c()},[o,a,e,c]),(0,be.jsxs)("div",{onBlur:m=>{o||(!m.relatedTarget||!m.currentTarget.contains(m.relatedTarget))&&n(!0)},children:[i,(0,be.jsx)("div",{"aria-live":"polite",children:l&&(0,be.jsxs)("p",{className:z("components-validated-control__indicator",l.type==="invalid"?"is-invalid":void 0),children:[(0,be.jsx)(mt.Icon,{className:"components-validated-control__indicator-icon",icon:gu,size:16,fill:"currentColor"}),l.message]})})]})}function i1({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:l,setValue:s,getValue:c,isValid:f,format:m}=e,[d,p]=(0,fe.useState)(null),g=m.weekStartsOn??(0,dt.getSettings)().l10n.startOfWeek,w=c({item:t}),v=typeof w=="string"?w:void 0,[b,S]=(0,fe.useState)(()=>Rn(v)||new Date),[P,R]=(0,fe.useState)(!1),I=(0,fe.useRef)(null),k=(0,fe.useCallback)(y=>r(s({item:t,value:y})),[t,r,s]),D=(0,fe.useCallback)(y=>{let E=y?dd(y,"yyyy-MM-dd"):void 0;k(E),p(null),R(!0)},[k]),T=(0,fe.useCallback)(y=>{let E=y.getValue(),x=Cd(E);S(E),k(x),p(y.id),R(!0)},[k]),O=(0,fe.useCallback)(y=>{if(k(y),y){let E=Rn(y);E&&S(E)}p(null),R(!0)},[k]),{timezone:{string:N}}=(0,dt.getSettings)(),_=l;return f?.required&&!n?_=`${l} (${(0,Ye.__)("Required")})`:!f?.required&&n&&(_=`${l} (${(0,Ye.__)("Optional")})`),(0,be.jsx)(ov,{field:e,validity:i,inputRefs:I,isTouched:P,setIsTouched:R,children:(0,be.jsx)(mt.BaseControl,{id:a,className:"dataviews-controls__date",label:_,hideLabelFromVision:o,children:(0,be.jsxs)(F,{direction:"column",gap:"lg",children:[(0,be.jsxs)(F,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[o1.map(y=>{let E=d===y.id;return(0,be.jsx)(mt.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:E,size:"small",onClick:()=>T(y),children:y.label},y.id)}),(0,be.jsx)(mt.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!d,size:"small",disabled:!!d,accessibleWhenDisabled:!1,children:(0,Ye.__)("Custom")})]}),(0,be.jsx)(mt.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:I,type:"date",label:(0,Ye.__)("Date"),hideLabelFromVision:!0,value:v,onChange:O,required:!!e.isValid?.required}),(0,be.jsx)(t1,{style:{width:"100%"},selected:v&&Rn(v)||void 0,onSelect:D,month:b,onMonthChange:S,timeZone:N||void 0,weekStartsOn:g})]})})})}function a1({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:l,getValue:s,setValue:c,format:f}=e,m,d=s({item:t});Array.isArray(d)&&d.length===2&&d.every(x=>typeof x=="string")&&(m=d);let p=f.weekStartsOn??(0,dt.getSettings)().l10n.startOfWeek,g=(0,fe.useCallback)(x=>{r(c({item:t,value:x}))},[t,r,c]),[w,v]=(0,fe.useState)(null),b=(0,fe.useMemo)(()=>{if(!m)return{from:void 0,to:void 0};let[x,A]=m;return{from:Rn(x)||void 0,to:Rn(A)||void 0}},[m]),[S,P]=(0,fe.useState)(()=>b.from||new Date),[R,I]=(0,fe.useState)(!1),k=(0,fe.useRef)(null),D=(0,fe.useRef)(null),T=(0,fe.useCallback)((x,A)=>{x&&A?g([Cd(x),Cd(A)]):!x&&!A&&g(void 0)},[g]),O=(0,fe.useCallback)(x=>{T(x?.from,x?.to),v(null),I(!0)},[T]),N=(0,fe.useCallback)(x=>{let[A,h]=x.getValue();P(A),T(A,h),v(x.id),I(!0)},[T]),_=(0,fe.useCallback)((x,A)=>{let[h,C]=m||[void 0,void 0];if(T(x==="from"?A:h,x==="to"?A:C),A){let ne=Rn(A);ne&&P(ne)}v(null),I(!0)},[m,T]),{timezone:y}=(0,dt.getSettings)(),E=l;return e.isValid?.required&&!n?E=`${l} (${(0,Ye.__)("Required")})`:!e.isValid?.required&&n&&(E=`${l} (${(0,Ye.__)("Optional")})`),(0,be.jsx)(ov,{field:e,validity:i,inputRefs:[k,D],isTouched:R,setIsTouched:I,children:(0,be.jsx)(mt.BaseControl,{id:a,className:"dataviews-controls__date",label:E,hideLabelFromVision:o,children:(0,be.jsxs)(F,{direction:"column",gap:"lg",children:[(0,be.jsxs)(F,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[n1.map(x=>{let A=w===x.id;return(0,be.jsx)(mt.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:A,size:"small",onClick:()=>N(x),children:x.label},x.id)}),(0,be.jsx)(mt.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!w,size:"small",accessibleWhenDisabled:!1,disabled:!!w,children:(0,Ye.__)("Custom")})]}),(0,be.jsxs)(F,{direction:"row",gap:"sm",justify:"space-between",className:"dataviews-controls__date-range-inputs",children:[(0,be.jsx)(mt.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:k,type:"date",label:(0,Ye.__)("From"),hideLabelFromVision:!0,value:m?.[0],onChange:x=>_("from",x),required:!!e.isValid?.required}),(0,be.jsx)(mt.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:D,type:"date",label:(0,Ye.__)("To"),hideLabelFromVision:!0,value:m?.[1],onChange:x=>_("to",x),required:!!e.isValid?.required})]}),(0,be.jsx)(r1,{style:{width:"100%"},selected:b,onSelect:O,month:S,onMonthChange:P,timeZone:y.string||void 0,weekStartsOn:p})]})})})}function nv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===bt||i===At?(0,be.jsx)(Ys,{className:"dataviews-controls__date",data:t,field:e,onChange:r,hideLabelFromVision:o,operator:i}):i===vt?(0,be.jsx)(a1,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a}):(0,be.jsx)(i1,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var Xs=u(G(),1),iv=u(j(),1);var Td=u(V(),1),{ValidatedSelectControl:s1}=Z(Xs.privateApis);function Qs({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{type:a,label:l,description:s,getValue:c,setValue:f,isValid:m}=e,d=a==="array",p=c({item:t})??(d?[]:""),g=(0,iv.useCallback)(b=>r(f({item:t,value:b})),[t,r,f]),{elements:w,isLoading:v}=Qe({elements:e.elements,getElements:e.getElements});return v?(0,Td.jsx)(Xs.Spinner,{}):(0,Td.jsx)(s1,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:ve(m,i),label:l,value:p,help:s,options:w,onChange:g,__next40pxDefaultSize:!0,hideLabelFromVision:o,multiple:d})}var Ed=u(V(),1),l1=10;function av(t){let{field:e}=t,{elements:r}=Qe({elements:e.elements,getElements:e.getElements});return r.length>=l1?(0,Ed.jsx)(Us,{...t}):(0,Ed.jsx)(Qs,{...t})}var el=u(G(),1);var sv=u(G(),1),lv=u(j(),1);var uv=u(V(),1),{ValidatedInputControl:u1}=Z(sv.privateApis);function br({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,type:i,prefix:a,suffix:l,validity:s}){let{label:c,placeholder:f,description:m,getValue:d,setValue:p,isValid:g}=e,w=d({item:t}),v=(0,lv.useCallback)(b=>r(p({item:t,value:b})),[t,p,r]);return(0,uv.jsx)(u1,{required:!!g.required,markWhenOptional:n,customValidity:ve(g,s),label:c,placeholder:f,value:w??"",help:m,onChange:v,hideLabelFromVision:o,type:i,prefix:a,suffix:l,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(V(),1);function cv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,Js.jsx)(br,{data:t,field:e,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:fu})})})}var rl=u(G(),1);var tl=u(V(),1);function dv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,tl.jsx)(br,{data:t,field:e,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:Ou})})})}var nl=u(G(),1);var ol=u(V(),1);function mv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,ol.jsx)(br,{data:t,field:e,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:Tu})})})}var Hr=u(G(),1),Bi=u(j(),1),il=u(W(),1);var yo=u(V(),1),{ValidatedNumberControl:c1}=Z(Hr.privateApis);function fv(t){if(t===""||t===void 0)return"";let e=Number(t);return Number.isFinite(e)?e:""}function d1({value:t,onChange:e,hideLabelFromVision:r,step:o}){let[n="",i=""]=t,a=(0,Bi.useCallback)(s=>e([fv(s),i]),[e,i]),l=(0,Bi.useCallback)(s=>e([n,fv(s)]),[e,n]);return(0,yo.jsx)(Hr.BaseControl,{help:(0,il.__)("The max. value must be greater than the min. value."),children:(0,yo.jsxs)(Hr.Flex,{direction:"row",gap:4,children:[(0,yo.jsx)(Hr.__experimentalNumberControl,{label:(0,il.__)("Min."),value:n,max:i?Number(i)-o:void 0,onChange:a,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o}),(0,yo.jsx)(Hr.__experimentalNumberControl,{label:(0,il.__)("Max."),value:i,min:n?Number(n)+o:void 0,onChange:l,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o})]})})}function al({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){let l=e.format?.decimals??0,s=Math.pow(10,Math.abs(l)*-1),{label:c,description:f,getValue:m,setValue:d,isValid:p}=e,g=m({item:t})??"",w=(0,Bi.useCallback)(b=>{r(d({item:t,value:["",void 0].includes(b)?void 0:Number(b)}))},[t,r,d]),v=(0,Bi.useCallback)(b=>{r(d({item:t,value:b}))},[t,r,d]);if(i===vt){let b=["",""];return Array.isArray(g)&&g.length===2&&g.every(S=>typeof S=="number"||S==="")&&(b=g),(0,yo.jsx)(d1,{value:b,onChange:v,hideLabelFromVision:o,step:s})}return(0,yo.jsx)(c1,{required:!!p.required,markWhenOptional:n,customValidity:ve(p,a),label:c,help:f,value:g,onChange:w,__next40pxDefaultSize:!0,hideLabelFromVision:o,step:s,min:p.min?p.min.constraint:void 0,max:p.max?p.max.constraint:void 0})}var pv=u(V(),1);function gv(t){return(0,pv.jsx)(al,{...t})}var hv=u(V(),1);function vv(t){return(0,hv.jsx)(al,{...t})}var sl=u(G(),1),bv=u(j(),1);var Pd=u(V(),1),{ValidatedRadioControl:m1}=Z(sl.privateApis);function _v({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:l,getValue:s,setValue:c,isValid:f}=e,{elements:m,isLoading:d}=Qe({elements:e.elements,getElements:e.getElements}),p=s({item:t}),g=(0,bv.useCallback)(w=>r(c({item:t,value:w})),[t,r,c]);return d?(0,Pd.jsx)(sl.Spinner,{}):(0,Pd.jsx)(m1,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:ve(f,i),label:a,help:l,onChange:g,options:m,selected:p,hideLabelFromVision:o})}var Ad=u(j(),1);var xv=u(V(),1);function yv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{prefix:l,suffix:s}=i||{};return(0,xv.jsx)(br,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a,prefix:l?(0,Ad.createElement)(l):void 0,suffix:s?(0,Ad.createElement)(s):void 0})}var wv=u(G(),1),Sv=u(j(),1);var Cv=u(V(),1),{ValidatedToggleControl:f1}=Z(wv.privateApis);function Tv({field:t,onChange:e,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:l,getValue:s,setValue:c,isValid:f}=t,m=(0,Sv.useCallback)(()=>{e(c({item:r,value:!s({item:r})}))},[e,c,r,s]);return(0,Cv.jsx)(f1,{required:!!f.required,markWhenOptional:n,customValidity:ve(f,i),hidden:o,label:a,help:l,checked:s({item:r}),onChange:m})}var Ev=u(G(),1),Pv=u(j(),1);var Av=u(V(),1),{ValidatedTextareaControl:p1}=Z(Ev.privateApis);function Iv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{rows:l=4}=i||{},{label:s,placeholder:c,description:f,setValue:m,isValid:d}=e,p=e.getValue({item:t}),g=(0,Pv.useCallback)(w=>r(m({item:t,value:w})),[t,r,m]);return(0,Av.jsx)(p1,{required:!!d.required,markWhenOptional:n,customValidity:ve(d,a),label:s,placeholder:c,value:p??"",help:f,onChange:g,rows:l,minLength:d.minLength?d.minLength.constraint:void 0,maxLength:d.maxLength?d.maxLength.constraint:void 0,__next40pxDefaultSize:!0,hideLabelFromVision:o})}var Vn=u(G(),1),Ov=u(j(),1);var ll=u(V(),1),{ValidatedToggleGroupControl:g1}=Z(Vn.privateApis);function Rv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:l,isValid:s}=e,c=a({item:t}),f=(0,Ov.useCallback)(g=>r(l({item:t,value:g})),[t,r,l]),{elements:m,isLoading:d}=Qe({elements:e.elements,getElements:e.getElements});if(d)return(0,ll.jsx)(Vn.Spinner,{});if(m.length===0)return null;let p=m.find(g=>g.value===c);return(0,ll.jsx)(g1,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:ve(s,i),__next40pxDefaultSize:!0,isBlock:!0,label:e.label,help:p?.description||e.description,onChange:f,value:c,hideLabelFromVision:o,children:m.map(g=>(0,ll.jsx)(Vn.__experimentalToggleGroupControlOption,{label:g.label,value:g.value},g.value))})}var ul=u(G(),1),cl=u(j(),1);var ji=u(V(),1),{ValidatedFormTokenField:h1}=Z(ul.privateApis);function Vv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:l,getValue:s,setValue:c,isValid:f}=e,m=s({item:t}),{elements:d,isLoading:p}=Qe({elements:e.elements,getElements:e.getElements}),g=(0,cl.useMemo)(()=>Array.isArray(m)?m.map(v=>d?.find(S=>S.value===v)||{value:v,label:v}):[],[m,d]),w=(0,cl.useCallback)(v=>{let b=v.map(S=>typeof S=="object"&&"value"in S?S.value:S);r(c({item:t,value:b}))},[r,c,t]);return p?(0,ji.jsx)(ul.Spinner,{}):(0,ji.jsx)(h1,{required:!!f?.required,markWhenOptional:n,customValidity:ve(f,i),label:o?void 0:a,value:g,onChange:w,placeholder:l,suggestions:d?.map(v=>v.value),__experimentalValidateInput:v=>e.isValid?.elements&&d?d.some(b=>b.value===v||b.label===v):!0,__experimentalExpandOnFocus:d&&d.length>0,__experimentalShowHowTo:!e.isValid?.elements,displayTransform:v=>typeof v=="object"&&"label"in v?v.label:typeof v=="string"&&d&&d.find(S=>S.value===v)?.label||v,__experimentalRenderItem:({item:v})=>{if(typeof v=="string"&&d){let b=d.find(S=>S.value===v);return(0,ji.jsx)("span",{children:b?.label||v})}return(0,ji.jsx)("span",{children:v})}})}var v1={grad:.9,turn:360,rad:360/(2*Math.PI)},zr=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},Je=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=Math.pow(10,e)),Math.round(r*t)/r+0},Kt=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=1),t>r?r:t>e?t:e},Hv=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},kv=function(t){return{r:Kt(t.r,0,255),g:Kt(t.g,0,255),b:Kt(t.b,0,255),a:Kt(t.a)}},Id=function(t){return{r:Je(t.r),g:Je(t.g),b:Je(t.b),a:Je(t.a,3)}},b1=/^#([0-9a-f]{3,8})$/i,dl=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},zv=function(t){var e=t.r,r=t.g,o=t.b,n=t.a,i=Math.max(e,r,o),a=i-Math.min(e,r,o),l=a?i===e?(r-o)/a:i===r?2+(o-e)/a:4+(e-r)/a:0;return{h:60*(l<0?l+6:l),s:i?a/i*100:0,v:i/255*100,a:n}},Wv=function(t){var e=t.h,r=t.s,o=t.v,n=t.a;e=e/360*6,r/=100,o/=100;var i=Math.floor(e),a=o*(1-r),l=o*(1-(e-i)*r),s=o*(1-(1-e+i)*r),c=i%6;return{r:255*[o,l,a,a,s,o][c],g:255*[s,o,o,l,a,a][c],b:255*[a,a,s,o,o,l][c],a:n}},Dv=function(t){return{h:Hv(t.h),s:Kt(t.s,0,100),l:Kt(t.l,0,100),a:Kt(t.a)}},Nv=function(t){return{h:Je(t.h),s:Je(t.s),l:Je(t.l),a:Je(t.a,3)}},Mv=function(t){return Wv((r=(e=t).s,{h:e.h,s:(r*=((o=e.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:e.a}));var e,r,o},Hi=function(t){return{h:(e=zv(t)).h,s:(n=(200-(r=e.s))*(o=e.v)/100)>0&&n<200?r*o/100/(n<=100?n:200-n)*100:0,l:n/2,a:e.a};var e,r,o,n},_1=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,x1=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,y1=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,w1=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Lv={string:[[function(t){var e=b1.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?Je(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?Je(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=y1.exec(t)||w1.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:kv({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=_1.exec(t)||x1.exec(t);if(!e)return null;var r,o,n=Dv({h:(r=e[1],o=e[2],o===void 0&&(o="deg"),Number(r)*(v1[o]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return Mv(n)},"hsl"]],object:[[function(t){var e=t.r,r=t.g,o=t.b,n=t.a,i=n===void 0?1:n;return zr(e)&&zr(r)&&zr(o)?kv({r:Number(e),g:Number(r),b:Number(o),a:Number(i)}):null},"rgb"],[function(t){var e=t.h,r=t.s,o=t.l,n=t.a,i=n===void 0?1:n;if(!zr(e)||!zr(r)||!zr(o))return null;var a=Dv({h:Number(e),s:Number(r),l:Number(o),a:Number(i)});return Mv(a)},"hsl"],[function(t){var e=t.h,r=t.s,o=t.v,n=t.a,i=n===void 0?1:n;if(!zr(e)||!zr(r)||!zr(o))return null;var a=(function(l){return{h:Hv(l.h),s:Kt(l.s,0,100),v:Kt(l.v,0,100),a:Kt(l.a)}})({h:Number(e),s:Number(r),v:Number(o),a:Number(i)});return Wv(a)},"hsv"]]},Fv=function(t,e){for(var r=0;r=.5},t.prototype.toHex=function(){return e=Id(this.rgba),r=e.r,o=e.g,n=e.b,a=(i=e.a)<1?dl(Je(255*i)):"","#"+dl(r)+dl(o)+dl(n)+a;var e,r,o,n,i,a},t.prototype.toRgb=function(){return Id(this.rgba)},t.prototype.toRgbString=function(){return e=Id(this.rgba),r=e.r,o=e.g,n=e.b,(i=e.a)<1?"rgba("+r+", "+o+", "+n+", "+i+")":"rgb("+r+", "+o+", "+n+")";var e,r,o,n,i},t.prototype.toHsl=function(){return Nv(Hi(this.rgba))},t.prototype.toHslString=function(){return e=Nv(Hi(this.rgba)),r=e.h,o=e.s,n=e.l,(i=e.a)<1?"hsla("+r+", "+o+"%, "+n+"%, "+i+")":"hsl("+r+", "+o+"%, "+n+"%)";var e,r,o,n,i},t.prototype.toHsv=function(){return e=zv(this.rgba),{h:Je(e.h),s:Je(e.s),v:Je(e.v),a:Je(e.a,3)};var e},t.prototype.invert=function(){return ft({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),ft(Od(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),ft(Od(this.rgba,-e))},t.prototype.grayscale=function(){return ft(Od(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),ft(Bv(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),ft(Bv(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?ft({r:(r=this.rgba).r,g:r.g,b:r.b,a:e}):Je(this.rgba.a,3);var r},t.prototype.hue=function(e){var r=Hi(this.rgba);return typeof e=="number"?ft({h:e,s:r.s,l:r.l,a:r.a}):Je(r.h)},t.prototype.isEqual=function(e){return this.toHex()===ft(e).toHex()},t})(),ft=function(t){return t instanceof jv?t:new jv(t)};var kt=u(G(),1),Vd=u(j(),1),Gv=u(W(),1);var Wr=u(V(),1),{ValidatedInputControl:C1}=Z(kt.privateApis),T1=({color:t,onColorChange:e})=>{let r=t&&ft(t).isValid()?t:"#ffffff";return(0,Wr.jsx)(kt.Dropdown,{className:"dataviews-controls__color-picker-dropdown",popoverProps:{resize:!1},renderToggle:({onToggle:o})=>(0,Wr.jsx)(kt.Button,{onClick:o,"aria-label":(0,Gv.__)("Open color picker"),size:"small",icon:()=>(0,Wr.jsx)(kt.ColorIndicator,{colorValue:r})}),renderContent:()=>(0,Wr.jsx)(kt.__experimentalDropdownContentWrapper,{paddingSize:"none",children:(0,Wr.jsx)(kt.ColorPicker,{color:r,onChange:e,enableAlpha:!0})})})};function qv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:l,description:s,setValue:c,isValid:f}=e,m=e.getValue({item:t})||"",d=(0,Vd.useCallback)(g=>{r(c({item:t,value:g}))},[t,r,c]),p=(0,Vd.useCallback)(g=>{r(c({item:t,value:g||""}))},[t,r,c]);return(0,Wr.jsx)(C1,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:ve(f,i),label:a,placeholder:l,value:m,help:s,onChange:p,hideLabelFromVision:o,type:"text",prefix:(0,Wr.jsx)(kt.__experimentalInputControlPrefixWrapper,{variant:"control",children:(0,Wr.jsx)(T1,{color:m,onColorChange:d})})})}var fl=u(G(),1),pl=u(j(),1),kd=u(W(),1);var ml=u(V(),1);function Uv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let[a,l]=(0,pl.useState)(!1),s=(0,pl.useCallback)(()=>{l(c=>!c)},[]);return(0,ml.jsx)(br,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:a?"text":"password",suffix:(0,ml.jsx)(fl.__experimentalInputControlSuffixWrapper,{variant:"control",children:(0,ml.jsx)(fl.Button,{icon:a?si:$u,onClick:s,size:"small",label:a?(0,kd.__)("Hide password"):(0,kd.__)("Show password")})})})}function gl(t){return Array.isArray(t.elements)&&t.elements.length>0||typeof t.getElements=="function"}var $v=u(V(),1),Yv={adaptiveSelect:av,array:Vv,checkbox:Jh,color:qv,combobox:Us,datetime:rv,date:nv,email:cv,telephone:dv,url:mv,integer:gv,number:vv,password:Uv,radio:_v,select:Qs,text:yv,toggle:Tv,textarea:Iv,toggleGroup:Rv};function E1(t){return t&&typeof t=="object"&&typeof t.control=="string"}function P1(t){let{control:e,...r}=t,o=hl(e);return o===null?null:function(i){return(0,$v.jsx)(o,{...i,config:r})}}function Kv(t,e){return typeof t.Edit=="function"?t.Edit:typeof t.Edit=="string"?hl(t.Edit):E1(t.Edit)?P1(t.Edit):gl(t)&&t.type!=="array"?hl("adaptiveSelect"):e===null?null:hl(e)}function hl(t){return Object.keys(Yv).includes(t)?Yv[t]:null}function A1(t,e,r){if(t.filterBy===!1)return!1;let o=t.filterBy?.operators?.filter(n=>r.includes(n))??e;return o.length===0?!1:{isPrimary:!!t.filterBy?.isPrimary,operators:o}}var Zv=A1;var I1=t=>({item:e})=>{let r=t.split("."),o=e;for(let n of r)o.hasOwnProperty(n)?o=o[n]:o=void 0;return o},Xv=I1;var O1=t=>({value:e})=>{let r=t.split("."),o={},n=o;for(let i of r.slice(0,-1))n[i]={},n=n[i];return n[r.at(-1)]=e,o},Qv=O1;var eb=u(W(),1);function vl({item:t,field:e}){let{elements:r,isLoading:o}=Qe({elements:e.elements,getElements:e.getElements}),n=e.getValue({item:t});return o||r.length===0?n:r?.find(i=>i.value===n)?.label||e.getValue({item:t})}var Jv=u(V(),1);function De({item:t,field:e}){return e.hasElements?(0,Jv.jsx)(vl,{item:t,field:e}):e.getValueFormatted({item:t,field:e})}var _r=(t,e,r)=>r==="asc"?t.localeCompare(e):e.localeCompare(t);function Ne(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)}function xr(t,e){if(typeof e.isValid.minLength?.constraint!="number")return!1;let r=e.getValue({item:t});return[void 0,"",null].includes(r)?!0:String(r).length>=e.isValid.minLength.constraint}function yr(t,e){if(typeof e.isValid.maxLength?.constraint!="number")return!1;let r=e.getValue({item:t});return[void 0,"",null].includes(r)?!0:String(r).length<=e.isValid.maxLength.constraint}function wr(t,e){if(e.isValid.pattern?.constraint===void 0)return!0;try{let r=new RegExp(e.isValid.pattern.constraint),o=e.getValue({item:t});return[void 0,"",null].includes(o)?!0:r.test(String(o))}catch{return!1}}function Se(t,e){let o=(e.elements??[]).map(i=>i.value);if(o.length===0)return!0;let n=e.getValue({item:t});return[].concat(n).every(i=>o.includes(i))}function R1({item:t,field:e}){return e.getValue({item:t})}var St=R1;var V1=/^[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 k1(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&!V1.test(r)?(0,eb.__)("Value must be a valid email address."):null}var tb={type:"email",render:De,Edit:"email",sort:_r,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ee,Pe],validOperators:[Ae,Ie,nr,ir,ar,Ee,Pe,lt,$e],format:{},getValueFormatted:St,validate:{required:Ne,pattern:wr,minLength:xr,maxLength:yr,elements:Se,custom:k1}};var rb=u(W(),1);var kn=(t,e,r)=>r==="asc"?t-e:e-t;function bl(t,e){if(typeof e.isValid.min?.constraint!="number")return!1;let r=e.getValue({item:t});return[void 0,"",null].includes(r)?!0:Number(r)>=e.isValid.min.constraint}function _l(t,e){if(typeof e.isValid.max?.constraint!="number")return!1;let r=e.getValue({item:t});return[void 0,"",null].includes(r)?!0:Number(r)<=e.isValid.max.constraint}var ob={separatorThousand:","};function D1({item:t,field:e}){let r=e.getValue({item:t});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;e.type!=="integer"?o=ob:o=e.format;let{separatorThousand:n}=o,i=Math.trunc(r);return n?String(i).replace(/\B(?=(\d{3})+(?!\d))/g,n):String(i)}function N1(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&!Number.isInteger(r)?(0,rb.__)("Value must be an integer."):null}var nb={type:"integer",render:De,Edit:"integer",sort:kn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ae,Ie,Kr,Zr,Xr,Qr,vt],validOperators:[Ae,Ie,Kr,Zr,Xr,Qr,vt,Ee,Pe,lt,$e],format:ob,getValueFormatted:D1,validate:{required:Ne,min:bl,max:_l,elements:Se,custom:N1}};var ib=u(W(),1);var ab={separatorThousand:",",separatorDecimal:".",decimals:2};function M1({item:t,field:e}){let r=e.getValue({item:t});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;e.type!=="number"?o=ab:o=e.format;let{separatorThousand:n,separatorDecimal:i,decimals:a}=o,l=r.toFixed(a),[s,c]=l.split("."),f=n?s.replace(/\B(?=(\d{3})+(?!\d))/g,n):s;return a===0?f:f+i+c}function L1(t){return t===""||t===void 0||t===null}function F1(t,e){let r=e.getValue({item:t});return!L1(r)&&!Number.isFinite(r)?(0,ib.__)("Value must be a number."):null}var sb={type:"number",render:De,Edit:"number",sort:kn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ae,Ie,Kr,Zr,Xr,Qr,vt],validOperators:[Ae,Ie,Kr,Zr,Xr,Qr,vt,Ee,Pe,lt,$e],format:ab,getValueFormatted:M1,validate:{required:Ne,min:bl,max:_l,elements:Se,custom:F1}};var lb={type:"text",render:De,Edit:"text",sort:_r,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ee,Pe],validOperators:[Ae,Ie,nr,ir,ar,Ee,Pe,lt,$e],format:{},getValueFormatted:St,validate:{required:Ne,pattern:wr,minLength:xr,maxLength:yr,elements:Se}};var Uo=u(Go(),1);var ub={datetime:(0,Uo.getSettings)().formats.datetime,weekStartsOn:(0,Uo.getSettings)().l10n.startOfWeek};function B1({item:t,field:e}){let r=e.getValue({item:t});if(["",void 0,null].includes(r))return"";let o;return e.type!=="datetime"?o=ub:o=e.format,(0,Uo.dateI18n)(o.datetime,(0,Uo.getDate)(r))}var j1=(t,e,r)=>{let o=new Date(t).getTime(),n=new Date(e).getTime();return r==="asc"?o-n:n-o},cb={type:"datetime",render:De,Edit:"datetime",sort:j1,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[oo,no,Jr,eo,to,ro,bt,At],validOperators:[oo,no,Jr,eo,to,ro,bt,At],format:ub,getValueFormatted:B1,validate:{required:Ne,elements:Se}};var Yo=u(Go(),1);var db={date:(0,Yo.getSettings)().formats.date,weekStartsOn:(0,Yo.getSettings)().l10n.startOfWeek};function H1({item:t,field:e}){let r=e.getValue({item:t});if(["",void 0,null].includes(r))return"";let o;return e.type!=="date"?o=db:o=e.format,(0,Yo.dateI18n)(o.date,(0,Yo.getDate)(r))}var z1=(t,e,r)=>{let o=new Date(t).getTime(),n=new Date(e).getTime();return r==="asc"?o-n:n-o},mb={type:"date",render:De,Edit:"date",sort:z1,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[oo,no,Jr,eo,to,ro,bt,At,vt],validOperators:[oo,no,Jr,eo,to,ro,bt,At,vt],format:db,getValueFormatted:H1,validate:{required:Ne,elements:Se}};var xl=u(W(),1);function fb(t,e){return e.getValue({item:t})===!0}function W1({item:t,field:e}){let r=e.getValue({item:t});return r===!0?(0,xl.__)("True"):r===!1?(0,xl.__)("False"):""}function G1(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&![!0,!1].includes(r)?(0,xl.__)("Value must be true, false, or undefined"):null}var q1=(t,e,r)=>{let o=!!t;return o===!!e?0:r==="asc"?o?1:-1:o?-1:1},pb={type:"boolean",render:De,Edit:"checkbox",sort:q1,validate:{required:fb,elements:Se,custom:G1},enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ae,Ie],validOperators:[Ae,Ie],format:{},getValueFormatted:W1};var gb={type:"media",render:()=>null,Edit:null,sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:St,validate:{}};var Dd=u(W(),1);function hb(t,e){let r=e.getValue({item:t});return Array.isArray(r)&&r.length>0&&r.every(o=>![void 0,"",null].includes(o))}function vb({item:t,field:e}){let r=e.getValue({item:t});return(Array.isArray(r)?r:[]).join(", ")}function U1({item:t,field:e}){return vb({item:t,field:e})}function Y1(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&!Array.isArray(r)?(0,Dd.__)("Value must be an array."):r.every(o=>typeof o=="string")?null:(0,Dd.__)("Every value must be a string.")}var $1=(t,e,r)=>{let o=Array.isArray(t)?t:[],n=Array.isArray(e)?e:[];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)},bb={type:"array",render:U1,Edit:"array",sort:$1,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ee,Pe],validOperators:[Ee,Pe,lt,$e],format:{},getValueFormatted:vb,validate:{required:hb,elements:Se,custom:Y1}};function K1({item:t,field:e}){return e.getValue({item:t})?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":""}var _b={type:"password",render:De,Edit:"password",sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:K1,validate:{required:Ne,pattern:wr,minLength:xr,maxLength:yr,elements:Se}};var xb={type:"telephone",render:De,Edit:"telephone",sort:_r,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ee,Pe],validOperators:[Ae,Ie,nr,ir,ar,Ee,Pe,lt,$e],format:{},getValueFormatted:St,validate:{required:Ne,pattern:wr,minLength:xr,maxLength:yr,elements:Se}};var yb=u(W(),1);var Dn=u(V(),1);function Z1({item:t,field:e}){if(e.hasElements)return(0,Dn.jsx)(vl,{item:t,field:e});let r=St({item:t,field:e});return!r||!ft(r).isValid()?r:(0,Dn.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,Dn.jsx)("div",{style:{width:"16px",height:"16px",borderRadius:"50%",backgroundColor:r,border:"1px solid #ddd",flexShrink:0}}),(0,Dn.jsx)("span",{children:r})]})}function X1(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&!ft(r).isValid()?(0,yb.__)("Value must be a valid color."):null}var Q1=(t,e,r)=>{let o=ft(t),n=ft(e);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},wb={type:"color",render:Z1,Edit:"color",sort:Q1,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ee,Pe],validOperators:[Ae,Ie,Ee,Pe],format:{},getValueFormatted:St,validate:{required:Ne,elements:Se,custom:X1}};var Sb={type:"url",render:De,Edit:"url",sort:_r,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ee,Pe],validOperators:[Ae,Ie,nr,ir,ar,Ee,Pe,lt,$e],format:{},getValueFormatted:St,validate:{required:Ne,pattern:wr,minLength:xr,maxLength:yr,elements:Se}};var J1=(t,e,r)=>typeof t=="number"&&typeof e=="number"?kn(t,e,r):_r(t,e,r),Cb={render:De,Edit:null,sort:J1,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ae,Ie],validOperators:_h(),format:{},getValueFormatted:St,validate:{required:Ne,elements:Se}};function Tb(t,e){let r;t.isValid?.required===!0&&e.validate.required!==void 0&&(r={constraint:!0,validate:e.validate.required});let o;(t.isValid?.elements===!0||t.isValid?.elements===void 0&&(t.elements||t.getElements))&&e.validate.elements!==void 0&&(o={constraint:!0,validate:e.validate.elements});let n;typeof t.isValid?.min=="number"&&e.validate.min!==void 0&&(n={constraint:t.isValid.min,validate:e.validate.min});let i;typeof t.isValid?.max=="number"&&e.validate.max!==void 0&&(i={constraint:t.isValid.max,validate:e.validate.max});let a;typeof t.isValid?.minLength=="number"&&e.validate.minLength!==void 0&&(a={constraint:t.isValid.minLength,validate:e.validate.minLength});let l;typeof t.isValid?.maxLength=="number"&&e.validate.maxLength!==void 0&&(l={constraint:t.isValid.maxLength,validate:e.validate.maxLength});let s;t.isValid?.pattern!==void 0&&e.validate.pattern!==void 0&&(s={constraint:t.isValid?.pattern,validate:e.validate.pattern});let c=t.isValid?.custom??e.validate.custom;return{required:r,elements:o,min:n,max:i,minLength:a,maxLength:l,pattern:s,custom:c}}function Eb(t){return t.validOperators.reduce((e,r)=>{let o=qo(r);return o?.filter&&(e[r]=o.filter),e},{})}function e2(t,e){return{...e.format,...t.format}}var Pb=e2;function t2(t){let e=[tb,nb,sb,lb,cb,mb,pb,gb,bb,_b,xb,wb,Sb].find(r=>r?.type===t);return e||Cb}function yl(t){return t.map(e=>{let r=t2(e.type),o=e.getValue||Xv(e.id),n=function(i,a,l){let s=o({item:i}),c=o({item:a});return e.sort?e.sort(s,c,l):r.sort(s,c,l)};return{id:e.id,label:e.label||e.id,header:e.header||e.label||e.id,description:e.description,placeholder:e.placeholder,getValue:o,setValue:e.setValue||Qv(e.id),elements:e.elements,getElements:e.getElements,hasElements:gl(e),isVisible:e.isVisible,enableHiding:e.enableHiding??!0,readOnly:e.readOnly??!1,type:r.type,render:e.render??r.render,Edit:Kv(e,r.Edit),sort:n,enableSorting:e.enableSorting??r.enableSorting,enableGlobalSearch:e.enableGlobalSearch??r.enableGlobalSearch,isValid:Tb(e,r),filterBy:Zv(e,r.defaultOperators,r.validOperators),filter:Eb(r),format:Pb(e,r),getValueFormatted:e.getValueFormatted??r.getValueFormatted}})}var $o=u(j(),1);function Ab(t,e,r){let o=(0,$o.useRef)(t),n=(0,$o.useRef)(r),[i,a]=(0,$o.useState)(!e);return(0,$o.useEffect)(()=>{e||(o.current=t,n.current=r,a(!0))},[t,e,r]),{data:e&&o.current?.length?o.current:t,paginationInfo:e&&o.current?.length?n.current:r,hasInitiallyLoaded:i}}var nt=u(V(),1),r2=t=>t.id,o2=()=>!0,n2=[],i2=co.filter(t=>!t.isPicker);function a2({header:t,search:e=!0,searchLabel:r=void 0}){return(0,nt.jsxs)(nt.Fragment,{children:[(0,nt.jsxs)(F,{direction:"row",align:"top",justify:"space-between",className:"dataviews__view-actions",gap:"xs",children:[(0,nt.jsxs)(F,{direction:"row",justify:"start",gap:"sm",className:"dataviews__search",children:[e&&(0,nt.jsx)(vd,{label:r}),(0,nt.jsx)(Ws,{})]}),(0,nt.jsxs)(F,{direction:"row",gap:"xs",style:{flexShrink:0},children:[(0,nt.jsx)(Kh,{}),t]})]}),(0,nt.jsx)(Gs,{className:"dataviews-filters__container"}),(0,nt.jsx)(gd,{}),(0,nt.jsx)(hd,{})]})}function s2({view:t,onChangeView:e,fields:r,search:o=!0,searchLabel:n=void 0,actions:i=n2,data:a,getItemId:l=r2,getItemLevel:s,isLoading:c=!1,paginationInfo:f,defaultLayouts:m,selection:d,onChangeSelection:p,onClickItem:g,renderItemLink:w,isItemClickable:v=o2,header:b,children:S,config:P={perPageSizes:[10,20,50,100]},empty:R,onReset:I}){let{infiniteScrollHandler:k}=f,D=(0,Ct.useRef)(null),[T,O]=(0,Ct.useState)(0),N=(0,wl.useResizeObserver)(J=>{O(J[0].borderBoxSize[0].inlineSize)},{box:"border-box"}),[_,y]=(0,Ct.useState)([]),E=d===void 0||p===void 0,x=E?_:d,[A,h]=(0,Ct.useState)(null);function C(J){let _e=typeof J=="function"?J(x):J;E&&y(_e),p&&p(_e)}let M=(0,Ct.useMemo)(()=>yl(r),[r]),L=(0,Ct.useMemo)(()=>x.filter(J=>a.some(_e=>l(_e)===J)),[x,a,l]),ne=Ni(M,t),Te=(0,Ct.useMemo)(()=>(ne||[]).some(J=>J.isPrimary||J.isLocked),[ne]),[Me,ze]=(0,Ct.useState)(Te);(0,Ct.useEffect)(()=>{Te&&!Me&&ze(!0)},[Te,Me]),(0,Ct.useEffect)(()=>{if(!t.infiniteScrollEnabled||!D.current)return;let J=(0,wl.throttle)(Cr=>{let Tr=Cr.target,Co=Tr.scrollTop,To=Tr.scrollHeight,Zo=Tr.clientHeight;Co+Zo>=To-100&&k?.()},100),_e=D.current;return _e.addEventListener("scroll",J),()=>{_e.removeEventListener("scroll",J),J.cancel()}},[k,t.infiniteScrollEnabled]);let at=(0,Ct.useMemo)(()=>Object.fromEntries(Object.entries(m).filter(([J])=>i2.some(_e=>_e.type===J))),[m]),{data:or,paginationInfo:Sr,hasInitiallyLoaded:Y}=Ab(a,c,f);return at[t.type]?(0,nt.jsx)(U.Provider,{value:{view:t,onChangeView:e,fields:M,actions:i,data:or,isLoading:c,paginationInfo:Sr,selection:L,onChangeSelection:C,openedFilter:A,setOpenedFilter:h,getItemId:l,getItemLevel:s,isItemClickable:v,onClickItem:g,renderItemLink:w,containerWidth:T,containerRef:D,resizeObserverRef:N,defaultLayouts:at,filters:ne,isShowingFilter:Me,setIsShowingFilter:ze,config:P,empty:R,hasInitiallyLoaded:Y,hasInfiniteScrollHandler:!!k,onReset:I},children:(0,nt.jsx)("div",{className:"dataviews-wrapper",ref:D,children:S??(0,nt.jsx)(a2,{header:b,search:o,searchLabel:n})})}):null}var er=s2;er.BulkActionToolbar=$a;er.Filters=Li;er.FiltersToggled=Gs;er.FiltersToggle=Ws;er.Layout=gd;er.LayoutSwitcher=xd;er.Pagination=hc;er.Search=vd;er.ViewConfig=yd;er.Footer=hd;var zi=er;var Vb=u(od(),1),kb=u(Ob(),1);function Rb(t=""){return(0,Vb.default)(t.trim().toLowerCase())}var l2=[];function Wi(t,e,r){if(!t)return{data:l2,paginationInfo:{totalItems:0,totalPages:0}};let o=yl(r),n=[...t];if(e.search){let c=Rb(e.search);n=n.filter(f=>o.filter(m=>m.enableGlobalSearch).some(m=>{let d=m.getValue({item:f});return(Array.isArray(d)?d:[d]).some(g=>Rb(String(g)).includes(c))}))}e.filters&&e.filters?.length>0&&e.filters.forEach(c=>{let f=o.find(m=>m.id===c.field);if(f){c.operator===$e&&(0,kb.default)("The 'isNotAll' filter operator",{since:"7.0",alternative:"'isNone'"});let m=f.filter[c.operator];m&&(n=n.filter(d=>m(d,f,c.value)))}});let i=e.sort?.field?o.find(c=>c.enableSorting!==!1&&c.id===e.sort?.field):null,a=e.groupBy?.field?o.find(c=>c.enableSorting!==!1&&c.id===e.groupBy?.field):null;(i||a)&&n.sort((c,f)=>{if(a){let m=a.sort(c,f,e.groupBy?.direction??"asc");if(m!==0)return m}return i?i.sort(c,f,e.sort?.direction??"desc"):0});let l=n.length,s=1;if(e.page!==void 0&&e.perPage!==void 0){let c=(e.page-1)*e.perPage;l=n?.length||0,s=Math.ceil(l/e.perPage),n=n?.slice(c,c+e.perPage)}return{data:n,paginationInfo:{totalItems:l,totalPages:s}}}var Db=u(j(),1),Nb=u(V(),1),Mb=(0,Db.forwardRef)(({children:t,className:e,ariaLabel:r,as:o="div",...n},i)=>(0,Nb.jsx)(o,{ref:i,className:z("admin-ui-navigable-region",e),"aria-label":r,role:"region",tabIndex:"-1",...n,children:t}));Mb.displayName="NavigableRegion";var Lb=Mb;var wo=u(G(),1);var Fb=u(G(),1),{Fill:Bb,Slot:jb}=(0,Fb.createSlotFill)("SidebarToggle");var Gr=u(V(),1);function Hb({breadcrumbs:t,badges:e,title:r,subTitle:o,actions:n,showSidebarToggle:i=!0}){return(0,Gr.jsxs)(wo.__experimentalVStack,{className:"admin-ui-page__header",as:"header",children:[(0,Gr.jsxs)(wo.__experimentalHStack,{justify:"space-between",spacing:2,children:[(0,Gr.jsxs)(wo.__experimentalHStack,{spacing:2,justify:"left",children:[i&&(0,Gr.jsx)(jb,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),r&&(0,Gr.jsx)(wo.__experimentalHeading,{as:"h2",level:3,weight:500,truncate:!0,children:r}),t,e]}),(0,Gr.jsx)(wo.__experimentalHStack,{style:{width:"auto",flexShrink:0},spacing:2,className:"admin-ui-page__header-actions",children:n})]}),o&&(0,Gr.jsx)("p",{className:"admin-ui-page__header-subtitle",children:o})]})}var Gi=u(V(),1);function zb({breadcrumbs:t,badges:e,title:r,subTitle:o,children:n,className:i,actions:a,hasPadding:l=!1,showSidebarToggle:s=!0}){let c=z("admin-ui-page",i);return(0,Gi.jsxs)(Lb,{className:c,ariaLabel:r,children:[(r||t||e)&&(0,Gi.jsx)(Hb,{breadcrumbs:t,badges:e,title:r,subTitle:o,actions:a,showSidebarToggle:s}),l?(0,Gi.jsx)("div",{className:"admin-ui-page__content has-padding",children:n}):n]})}zb.SidebarToggleFill=Bb;var qi=zb;var Yd=u(Zt()),kl=u(G()),$d=u(gt()),Ht=u(j()),z0=u(Nd()),Zi=u(W());var qb=u(ec()),{lock:iF,unlock:pt}=(0,qb.__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 Md={type:"grid",perPage:20,sort:{field:"title",direction:"asc"},fields:["author","active","slug"],titleField:"title",descriptionField:"description",mediaField:"preview",filters:[]},Ub={...Md,fields:["author"]},Sl={table:{showMedia:!1},grid:{showMedia:!0},list:{showMedia:!1}};function Yb(t){return t==="user"?{sort:{field:"date",direction:"desc"}}:t==="active"?{}:{filters:[{field:"author",operator:"isAny",value:[t]}]}}function $b(t){return t==="all"?{}:{filters:[{field:"author",operator:"isAny",value:[t]}]}}var Kb=u(W());import{Preview as u2}from"@wordpress/lazy-editor";function c2({item:t}){let e=t.description;return React.createElement(u2,{content:t?.content?.raw,blocks:t?.blocks,description:e})}var Cl={label:(0,Kb.__)("Preview"),id:"preview",render:c2,enableSorting:!1};var Tl=u(G()),Ld=u(W()),El=u(j()),Zb=u(Zt()),Xb=u(gt());function d2(t,e){let{author:r,authorText:o}=(0,Xb.useSelect)(n=>{let{getUser:i,getEditedEntityRecord:a}=n(Zb.store),l=a("postType",t,e);return{author:l?.author?i(l.author):null,authorText:l?.author_text}},[t,e]);return(0,El.useMemo)(()=>o?{text:o,icon:"admin-plugins"}:r?{text:r.name,icon:"admin-users",imageUrl:r.avatar_urls?.[48]}:{text:(0,Ld.__)("Unknown"),icon:"admin-users"},[r,o])}function m2({item:t}){let[e,r]=(0,El.useState)(!1),{text:o,icon:n,imageUrl:i}=d2(t.type,t.id);return React.createElement(Tl.__experimentalHStack,{alignment:"left",spacing:0},i&&React.createElement("div",{className:z("routes-template-list-author-field__avatar",{"is-loaded":e})},React.createElement("img",{onLoad:()=>r(!0),alt:"",src:i})),!i&&React.createElement("div",{className:"routes-template-list-author-field__icon"},React.createElement(Tl.Icon,{icon:n})),React.createElement("span",{className:"routes-template-list-author-field__name"},o))}var Pl={label:(0,Ld.__)("Author"),id:"author",getValue:({item:t})=>t.author_text??t.author,render:m2};var Jb=u(W()),e0=u(Ui()),t0=u(Zt());var{useEntityRecordsWithPermissions:f2}=pt(t0.privateApis);function p2(){let{records:t}=f2("root","registeredTemplate");return t?.filter(e=>!e.is_custom).map(e=>({slug:e.slug,title:e.title.rendered,description:e.description}))}var Al={label:(0,Jb.__)("Description"),id:"description",render:function({item:e}){let o=p2()?.find(n=>n.slug===e.slug);return e.description?(0,e0.decodeEntities)(e.description):o?.description},enableSorting:!1,enableGlobalSearch:!0};var Nn=u(W()),r0=u(G());var{Badge:g2}=pt(r0.privateApis),o0={label:(0,Nn.__)("Status"),id:"active",type:"boolean",getValue:({item:t})=>t._isActive,render:function({item:e}){let r=e._isCustom?(0,Nn._x)("Active when used","template"):(0,Nn._x)("Active","template"),o=e._isCustom?"info":"success",n=e._isActive;return React.createElement(g2,{intent:n?o:"default"},n?r:(0,Nn._x)("Inactive","template"))}};var Il=u(W()),n0=u(Zt());var{useEntityRecordsWithPermissions:h2}=pt(n0.privateApis);function v2(){let{records:t}=h2("root","registeredTemplate");return t?.filter(e=>!e.is_custom).map(e=>({slug:e.slug,title:e.title.rendered,description:e.description}))}var i0={label:(0,Il.__)("Template Type"),id:"slug",getValue:({item:t})=>t.slug,render:function({item:e}){return v2()?.find(n=>n.slug===e.slug)?.title||(0,Il._x)("Custom","template type")}};var Fd=u(j()),s0=u(gt()),Yi=u(Zt());var{useEntityRecordsWithPermissions:a0}=pt(Yi.privateApis);function l0(t="active"){let{activeTemplatesOption:e,activeTheme:r,defaultTemplateTypes:o}=(0,s0.useSelect)(f=>{let{getEntityRecord:m,getCurrentTheme:d}=f(Yi.store);return{activeTemplatesOption:m("root","site")?.active_templates,activeTheme:d(),defaultTemplateTypes:f(Yi.store).getCurrentTheme()?.default_template_types}},[]),{records:n,isResolving:i}=a0("postType","wp_template",{per_page:-1,combinedTemplates:!1}),{records:a,isResolving:l}=a0("root","registeredTemplate",{per_page:-1}),s=(0,Fd.useMemo)(()=>{let f=[...a];if(e)for(let m in e){let d=e[m],p=n.find(g=>g.id===d&&g.theme===r.stylesheet);if(p){let g=f.findIndex(({slug:w})=>w===p.slug);g!==-1?f[g]=p:f.push(p)}}return f},[n,a,e,r]);return{records:(0,Fd.useMemo)(()=>{function f(d){return d.is_custom??(!d.meta?.is_wp_suggestion&&!o.some(p=>p.slug===d.slug))}let m;return t==="active"?m=s.filter(d=>!f(d)):t==="user"?m=n:m=a,m.map(d=>({...d,_isActive:s.some(p=>p.id===d.id),_isCustom:f(d)}))},[s,o,n,a,t]),isLoading:i||l,staticRecords:a,userRecords:n,activeTemplates:s}}var Bd=u(W());var u0=u(j()),$i=u(gt()),Ol=u(Zt());function c0(){let t=(0,$i.useSelect)(n=>n(Ol.store).getCurrentTheme()),{getEntityRecord:e}=(0,$i.useSelect)(Ol.store),{editEntityRecord:r,saveEditedEntityRecord:o}=(0,$i.useDispatch)(Ol.store);return(0,u0.useMemo)(()=>({id:"set-active-template",label(n){return n.some(i=>i._isActive)?(0,Bd.__)("Deactivate"):(0,Bd.__)("Activate")},isPrimary:!0,icon:ii,isEligible(n){return!t||n.theme!==t.stylesheet?!1:typeof n.id!="number"?n._isActive===!1:!0},async callback(n){let i=n.some(l=>l._isActive),a={...(await e("root","site"))?.active_templates??{}};for(let l of n)i?delete a[l.slug]:a[l.slug]=l.id;await r("root","site",void 0,{active_templates:a}),await o("root","site")}}),[r,o,e,t])}var it=u(G()),L0=u(Ui()),tr=u(j()),jn=u(gt()),Rl=u(Zt()),F0=u(ht());var Pt=u(W()),B0=u(m0()),j0=u(jd());import{useNavigate as R2,useInvalidate as V2}from"@wordpress/route";var qr=u(j()),So=u(W()),ae=u(G()),C0=u(Zt()),T0=u(Ui()),E0=u(ht()),P0=u(jd()),A0=u(Hd());var Mn=u(gt()),Ln=u(Zt()),g0=u(Ui()),Tt=u(j()),ce=u(W());var h0=u(Hd()),b2="wp_template",_2={},x2=(t,e)=>{let r=t;return e.split(".").forEach(o=>{r=r?.[o]}),r};function zd(t,e){return`${t}-${(0,h0.safeDecodeURI)(e)}`}function v0(t,e){return(t||[]).map(r=>({...r,name:(0,g0.decodeEntities)(x2(r,e))}))}var Wd=()=>(0,Mn.useSelect)(t=>t(Ln.store).getEntityRecords("postType",b2,{per_page:-1}),[]),Ki=()=>(0,Mn.useSelect)(t=>t(Ln.store).getCurrentTheme()?.default_template_types||[],[]),b0=()=>{let t=(0,Mn.useSelect)(e=>e(Ln.store).getPostTypes({per_page:-1}),[]);return(0,Tt.useMemo)(()=>{let e=["attachment"];return t?.filter(({viewable:r,slug:o})=>r&&!e.includes(o)).sort((r,o)=>r.slug==="post"||o.slug==="post"?0:r.name.localeCompare(o.name))},[t])},y2=()=>{let t=(0,Mn.useSelect)(e=>e(Ln.store).getTaxonomies({per_page:-1}),[]);return(0,Tt.useMemo)(()=>t?.filter(({visibility:e})=>e?.publicly_queryable),[t])};function _0(){let t=b0(),e=(0,Tt.useMemo)(()=>t?.filter(i=>i.has_archive),[t]),r=Wd(),o=(0,Tt.useMemo)(()=>t?.reduce((i,{labels:a})=>{let l=a.singular_name.toLowerCase();return i[l]=(i[l]||0)+1,i},{}),[t]),n=(0,Tt.useCallback)(({labels:i,slug:a})=>{let l=i.singular_name.toLowerCase();return o[l]>1&&l!==a},[o]);return(0,Tt.useMemo)(()=>e?.filter(i=>!(r||[]).some(a=>a.slug==="archive-"+i.slug)).map(i=>{let a;return n(i)?a=(0,ce.sprintf)((0,ce.__)("Archive: %1$s (%2$s)"),i.labels.singular_name,i.slug):a=(0,ce.sprintf)((0,ce.__)("Archive: %s"),i.labels.singular_name),{slug:"archive-"+i.slug,description:(0,ce.sprintf)((0,ce.__)("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):Yn,templatePrefix:"archive"}})||[],[e,r,n])}var x0=t=>{let e=b0(),r=Ki(),o=(0,Tt.useMemo)(()=>e?.reduce((c,{labels:f})=>{let m=(f.template_name||f.singular_name).toLowerCase();return c[m]=(c[m]||0)+1,c},{}),[e]),n=(0,Tt.useCallback)(({labels:c,slug:f})=>{let m=(c.template_name||c.singular_name).toLowerCase();return o[m]>1&&m!==f},[o]),i=(0,Tt.useMemo)(()=>e?.reduce((c,{slug:f})=>{let m=f;return f!=="page"&&(m=`single-${m}`),c[f]=m,c},{}),[e]),a=Gd("postType",i),l=(e||[]).reduce((c,f)=>{let{slug:m,labels:d,icon:p}=f,g=i[m],w=r?.find(({slug:R})=>R===g),v=n(f),b=d.template_name||(0,ce.sprintf)((0,ce.__)("Single item: %s"),d.singular_name);v&&(b=d.template_name?(0,ce.sprintf)((0,ce._x)("%1$s (%2$s)","post type menu label"),d.template_name,m):(0,ce.sprintf)((0,ce._x)("Single item: %1$s (%2$s)","post type menu label"),d.singular_name,m));let S=w?{...w,templatePrefix:i[m]}:{slug:g,title:b,description:(0,ce.sprintf)((0,ce.__)("Displays a single item: %s."),d.singular_name),icon:typeof p=="string"&&p.startsWith("dashicons-")?p.slice(10):ju,templatePrefix:i[m]},P=a?.[m]?.hasEntities;return P&&(S.onClick=R=>{t({type:"postType",slug:m,config:{recordNamePath:"title.rendered",queryArgs:({search:I})=>({_fields:"id,title,slug,link",orderBy:I?"relevance":"modified",exclude:a[m].existingEntitiesIds}),getSpecificTemplate:I=>{let k=zd(i[m],I.slug);return{title:k,slug:k,templatePrefix:i[m]}}},labels:d,template:R})}),P&&c.push(S),c},[]);return(0,Tt.useMemo)(()=>l.reduce((c,f)=>{let{slug:m}=f,d="postTypesMenuItems";return m==="page"&&(d="defaultPostTypesMenuItems"),c[d].push(f),c},{defaultPostTypesMenuItems:[],postTypesMenuItems:[]}),[l])},y0=t=>{let e=y2(),r=Wd(),o=Ki(),n=(0,Tt.useMemo)(()=>e?.reduce((m,{slug:d})=>{let p=d;return["category","post_tag"].includes(d)||(p=`taxonomy-${p}`),d==="post_tag"&&(p="tag"),m[d]=p,m},{}),[e]),i=e?.reduce((m,{labels:d})=>{let p=(d.template_name||d.singular_name).toLowerCase();return m[p]=(m[p]||0)+1,m},{}),a=(m,d)=>{if(["category","post_tag"].includes(d))return!1;let p=(m.template_name||m.singular_name).toLowerCase();return i[p]>1&&p!==d},l=Gd("taxonomy",n),s=(r||[]).map(({slug:m})=>m),c=(e||[]).reduce((m,d)=>{let{slug:p,labels:g}=d,w=n[p],v=o?.find(({slug:k})=>k===w),b=s?.includes(w),S=a(g,p),P=g.template_name||g.singular_name;S&&(P=g.template_name?(0,ce.sprintf)((0,ce._x)("%1$s (%2$s)","taxonomy template menu label"),g.template_name,p):(0,ce.sprintf)((0,ce._x)("%1$s (%2$s)","taxonomy menu label"),g.singular_name,p));let R=v?{...v,templatePrefix:n[p]}:{slug:w,title:P,description:(0,ce.sprintf)((0,ce.__)("Displays taxonomy: %s."),g.singular_name),icon:$n,templatePrefix:n[p]},I=l?.[p]?.hasEntities;return I&&(R.onClick=k=>{t({type:"taxonomy",slug:p,config:{queryArgs:({search:D})=>({_fields:"id,name,slug,link",orderBy:D?"name":"count",exclude:l[p].existingEntitiesIds}),getSpecificTemplate:D=>{let T=zd(n[p],D.slug);return{title:T,slug:T,templatePrefix:n[p]}}},labels:g,hasGeneralTemplate:b,template:k})}),(!b||I)&&m.push(R),m},[]);return(0,Tt.useMemo)(()=>c.reduce((m,d)=>{let{slug:p}=d,g="taxonomiesMenuItems";return["category","tag"].includes(p)&&(g="defaultTaxonomiesMenuItems"),m[g].push(d),m},{defaultTaxonomiesMenuItems:[],taxonomiesMenuItems:[]}),[c])},w2={user:"author"},S2={user:{who:"authors"}};function w0(t){let e=Wd(),r=Ki(),o=Gd("root",w2,S2),n=r?.find(({slug:a})=>a==="author");n||(n={description:(0,ce.__)("Displays latest posts written by a single author."),slug:"author",title:"Author"});let i=!!e?.find(({slug:a})=>a==="author");if(o.user?.hasEntities&&(n={...n,templatePrefix:"author"},n.onClick=a=>{t({type:"root",slug:"user",config:{queryArgs:({search:l})=>({_fields:"id,name,slug,link",orderBy:l?"name":"registered_date",exclude:o.user.existingEntitiesIds,who:"authors"}),getSpecificTemplate:l=>{let s=zd("author",l.slug);return{title:(0,ce.sprintf)((0,ce.__)("Author: %s"),l.name),slug:s,templatePrefix:"author"}}},labels:{singular_name:(0,ce.__)("Author"),search_items:(0,ce.__)("Search Authors"),not_found:(0,ce.__)("No authors found."),all_items:(0,ce.__)("All Authors")},hasGeneralTemplate:i,template:a})}),!i||o.user?.hasEntities)return n}var Gd=(t,e,r=_2)=>{let o=(0,Mn.useSelect)(i=>Object.keys(e||{}).reduce((a,l)=>(a[l]=!!i(Ln.store).getEntityRecords(t,l,{per_page:1,_fields:"id",context:"view",...r[l]})?.length,a),{}),[e,t,r]);return(0,Tt.useMemo)(()=>Object.keys(e||{}).reduce((i,a)=>(i[a]={hasEntities:o[a]},i),{}),[e,o])};var S0=[];function C2({suggestion:t,search:e,onSelect:r,entityForSuggestions:o}){let n="template-list-custom-template-modal__suggestions_list__list-item";return React.createElement(ae.Composite.Item,{render:React.createElement(ae.Button,{__next40pxDefaultSize:!0,role:"option",className:n,onClick:()=>r(o.config.getSpecificTemplate(t))})},React.createElement(ae.__experimentalText,{size:"body",lineHeight:1.53846153846,weight:500,className:`${n}__title`},React.createElement(ae.TextHighlight,{text:(0,T0.decodeEntities)(t.name),highlight:e})),t.link&&React.createElement(ae.__experimentalText,{size:"body",lineHeight:1.53846153846,className:`${n}__info`},(0,A0.safeDecodeURI)(t.link)))}function T2(t,e){let{config:r}=t,o=(0,qr.useMemo)(()=>({order:"asc",context:"view",search:e,per_page:e?20:10,...r.queryArgs({search:e})}),[e,r]),{records:n,hasResolved:i}=(0,C0.useEntityRecords)(t.type,t.slug,o),[a,l]=(0,qr.useState)(S0);return(0,qr.useEffect)(()=>{if(!i)return;let s=S0;n?.length&&(s=n,r.recordNamePath&&(s=v0(s,r.recordNamePath))),l(s)},[n,i,r.recordNamePath]),a}function E2({entityForSuggestions:t,onSelect:e}){let[r,o,n]=(0,E0.useDebouncedInput)(),i=T2(t,n),{labels:a}=t,[l,s]=(0,qr.useState)(!1);return!l&&i?.length>9&&s(!0),React.createElement(React.Fragment,null,l&&React.createElement(ae.SearchControl,{onChange:o,value:r,label:a.search_items,placeholder:a.search_items}),!!i?.length&&React.createElement(ae.Composite,{orientation:"vertical",role:"listbox",className:"template-list-custom-template-modal__suggestions_list","aria-label":(0,So.__)("Suggestions list")},i.map(c=>React.createElement(C2,{key:c.slug,suggestion:c,search:n,onSelect:e,entityForSuggestions:t}))),n&&!i?.length&&React.createElement(ae.__experimentalText,{as:"p",className:"template-list-custom-template-modal__no-results"},a.not_found))}function P2({onSelect:t,entityForSuggestions:e,onBack:r,containerRef:o}){let[n,i]=(0,qr.useState)(!1);return(0,qr.useEffect)(()=>{if(o.current){let[a]=P0.focus.focusable.find(o.current);a?.focus()}},[n,o]),React.createElement(ae.__experimentalVStack,{spacing:4,className:"template-list-custom-template-modal__contents-wrapper",alignment:"left"},!n&&React.createElement(React.Fragment,null,React.createElement(ae.__experimentalText,{as:"p"},(0,So.__)("Select whether to create a single template for all items or a specific one.")),React.createElement(ae.Flex,{className:"template-list-custom-template-modal__contents",gap:"4",align:"initial"},React.createElement(ae.FlexItem,{isBlock:!0,as:ae.Button,onClick:()=>{let{slug:a,title:l,description:s,templatePrefix:c}=e.template;t({slug:a,title:l,description:s,templatePrefix:c})}},React.createElement(ae.__experimentalText,{as:"span",weight:500,lineHeight:1.53846153846},e.labels.all_items),React.createElement(ae.__experimentalText,{as:"span",lineHeight:1.53846153846},(0,So.__)("For all items"))),React.createElement(ae.FlexItem,{isBlock:!0,as:ae.Button,onClick:()=>{i(!0)}},React.createElement(ae.__experimentalText,{as:"span",weight:500,lineHeight:1.53846153846},e.labels.singular_name),React.createElement(ae.__experimentalText,{as:"span",lineHeight:1.53846153846},(0,So.__)("For a specific item")))),React.createElement(ae.Flex,{justify:"right"},React.createElement(ae.Button,{__next40pxDefaultSize:!0,variant:"tertiary",onClick:r},(0,So.__)("Back")))),n&&React.createElement(React.Fragment,null,React.createElement(ae.__experimentalText,{as:"p"},(0,So.__)("This template will be used only for the specific item chosen.")),React.createElement(E2,{entityForSuggestions:e,onSelect:t}),React.createElement(ae.Flex,{justify:"right"},React.createElement(ae.Button,{__next40pxDefaultSize:!0,variant:"tertiary",onClick:()=>{e.hasGeneralTemplate?r():i(!1)}},(0,So.__)("Back")))))}var I0=P2;var Fn=function(){return Fn=Object.assign||function(e){for(var r,o=1,n=arguments.length;o{l.current&&l.current.focus()},[]);async function s(c){if(c.preventDefault(),!i){a(!0);try{await t({slug:D0(r||n)||"wp-custom-template",title:r||n},!1)}finally{a(!1)}}}return React.createElement("form",{onSubmit:s},React.createElement(Ur.__experimentalVStack,{spacing:6},React.createElement(Ur.TextControl,{__next40pxDefaultSize:!0,label:(0,Bn.__)("Name"),value:r,onChange:o,placeholder:n,disabled:i,ref:l,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(Ur.__experimentalHStack,{className:"template-list-custom-generic-template__modal-actions",justify:"right"},React.createElement(Ur.Button,{__next40pxDefaultSize:!0,variant:"tertiary",onClick:e},(0,Bn.__)("Back")),React.createElement(Ur.Button,{__next40pxDefaultSize:!0,variant:"primary",type:"submit",isBusy:i,"aria-disabled":i},(0,Bn.__)("Create")))))}var N0=O2;var H0="wp_template",qd=["front-page","home","single","page","index","archive","author","category","date","tag","search","404"],k2={"front-page":wu,home:Ju,single:Fu,page:Nu,archive:Yn,search:ai,404:Du,index:Pu,category:Qo,author:Xn,taxonomy:$n,date:iu,tag:Zu,attachment:Au};function M0({title:t,direction:e,className:r,description:o,icon:n,onClick:i,children:a}){return React.createElement(it.Button,{__next40pxDefaultSize:!0,className:r,onClick:i,label:o,showTooltip:!!o},React.createElement(it.Flex,{as:"span",align:"center",justify:"center",style:{width:"100%"},direction:e},React.createElement("div",{className:"template-list-add-new-template__template-icon"},React.createElement(it.Icon,{icon:n})),React.createElement(it.__experimentalVStack,{className:"template-list-add-new-template__template-name",alignment:"center",spacing:0},React.createElement(it.__experimentalText,{align:"center",weight:500,lineHeight:1.53846153846},t),a)))}var Et={templatesList:1,customTemplate:2,customGenericTemplate:3};function D2({onClose:t}){let[e,r]=(0,tr.useState)(Et.templatesList),[o,n]=(0,tr.useState)(),[i,a]=(0,tr.useState)(!1),l=M2(n,()=>r(Et.customTemplate)),s=R2(),c=V2(),{saveEntityRecord:f}=(0,jn.useDispatch)(Rl.store),{createErrorNotice:m,createSuccessNotice:d}=(0,jn.useDispatch)(B0.store),p=(0,tr.useRef)(null),g=(0,F0.useViewportMatch)("medium","<"),w=(0,jn.useSelect)(R=>R(Rl.store).getEntityRecord("root","__unstableBase")?.home,[]),v={"front-page":w,date:(0,Pt.sprintf)((0,Pt.__)("E.g. %s"),w+"/"+new Date().getFullYear())};(0,tr.useEffect)(()=>{if(p.current&&e===Et.templatesList){let[R]=j0.focus.focusable.find(p.current);R?.focus()}},[e]);async function b(R,I=!0){if(!i){a(!0);try{let{title:k,description:D,slug:T}=R,O=await f("postType",H0,{description:D,slug:T.toString(),status:"publish",title:k,meta:{is_wp_suggestion:I,is_inactive_by_default:!0}},{throwOnError:!0});s({to:`/types/wp_template/edit/${encodeURIComponent(String(O.id))}`}),c(),d((0,Pt.sprintf)((0,Pt.__)('"%s" successfully created.'),(0,L0.decodeEntities)(O.title?.rendered||k)||(0,Pt.__)("(no title)")),{type:"snackbar"})}catch(k){let D=k.message&&k.code!=="unknown_error"?k.message:(0,Pt.__)("An error occurred while creating the template.");m(D,{type:"snackbar"})}finally{a(!1)}}}let S=()=>{t(),r(Et.templatesList)},P=(0,Pt.__)("Add template");return e===Et.customTemplate&&o?P=(0,Pt.sprintf)((0,Pt.__)("Add template: %s"),o.labels.singular_name):e===Et.customGenericTemplate&&(P=(0,Pt.__)("Create custom template")),React.createElement(it.Modal,{title:P,className:z("template-list-add-new-template__modal",{"template-list-add-new-template__modal_template_list":e===Et.templatesList,"template-list-custom-template-modal":e===Et.customTemplate}),onRequestClose:S,overlayClassName:e===Et.customGenericTemplate?"template-list-custom-generic-template__modal":void 0,ref:p},e===Et.templatesList&&React.createElement(it.__experimentalGrid,{columns:g?2:3,gap:4,align:"flex-start",justify:"center",className:"template-list-add-new-template__template-list__contents"},React.createElement(it.Flex,{className:"template-list-add-new-template__template-list__prompt"},(0,Pt.__)("Select what the new template should apply to:")),l.map(R=>{let{title:I,slug:k,onClick:D}=R;return React.createElement(M0,{key:k,title:I,direction:"column",className:"template-list-add-new-template__template-button",description:v[k],icon:k2[k]||Jn,onClick:()=>D?D(R):b(R)})}),React.createElement(M0,{title:(0,Pt.__)("Custom template"),direction:"row",className:"template-list-add-new-template__custom-template-button",icon:ii,onClick:()=>r(Et.customGenericTemplate)},React.createElement(it.__experimentalText,{lineHeight:1.53846153846},(0,Pt.__)("A custom template can be manually applied to any post or page.")))),e===Et.customTemplate&&o&&React.createElement(I0,{onSelect:b,entityForSuggestions:o,onBack:()=>r(Et.templatesList),containerRef:p}),e===Et.customGenericTemplate&&React.createElement(N0,{createTemplate:b,onBack:()=>r(Et.templatesList)}))}function N2(){let[t,e]=(0,tr.useState)(!1),{postType:r}=(0,jn.useSelect)(o=>{let{getPostType:n}=o(Rl.store);return{postType:n(H0)}},[]);return r?React.createElement(React.Fragment,null,React.createElement(it.Button,{variant:"primary",onClick:()=>e(!0),label:r.labels.add_new_item,size:"compact"},r.labels.add_new_item),t&&React.createElement(D2,{onClose:()=>e(!1)})):null}function M2(t,e){let o=(Ki()||[]).filter(d=>qd.includes(d.slug)),n=d=>{e?.(),t(d)},i=[...o],{defaultTaxonomiesMenuItems:a,taxonomiesMenuItems:l}=y0(n),{defaultPostTypesMenuItems:s,postTypesMenuItems:c}=x0(n),f=w0(n);return[...a,...s,f].forEach(d=>{if(!d)return;let p=i.findIndex(g=>g.slug===d.slug);p>-1?i[p]=d:i.push(d)}),i?.sort((d,p)=>qd.indexOf(d.slug)-qd.indexOf(p.slug)),[...i,..._0(),...c,...l]}var Vl=(0,tr.memo)(N2);if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='bfa9b6f0e8']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","bfa9b6f0e8"),t.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;margin:0;padding:0;width:100%}fieldset.fields__media-edit .components-base-control__label{color:#1e1e1e}fieldset.fields__media-edit{container-type:inline-size}fieldset.fields__media-edit .fields__media-edit-compact-group{border:1px dashed #949494;border-radius:4px;overflow:hidden}fieldset.fields__media-edit .fields__media-edit-compact-group.is-single{border-radius:2px}fieldset.fields__media-edit .fields__media-edit-compact-group .fields__media-edit-picker-button{border:0;border-radius:0}fieldset.fields__media-edit .fields__media-edit-compact-group .fields__media-edit-picker-button:focus-visible{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color)}fieldset.fields__media-edit .fields__media-edit-compact-group .fields__media-edit-compact:not(:last-child){border-bottom:1px solid #f0f0f0}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-compact{min-width:0;position:relative}fieldset.fields__media-edit .fields__media-edit-compact:focus-within .fields__media-edit-compact-movers,fieldset.fields__media-edit .fields__media-edit-compact:hover .fields__media-edit-compact-movers{opacity:1}fieldset.fields__media-edit .fields__media-edit-compact .fields__media-edit-compact-movers{background:#fff;border-radius:2px;opacity:0;pointer-events:none;position:absolute;right:8px;top:50%;transform:translateY(-50%);z-index:1}fieldset.fields__media-edit .fields__media-edit-compact .fields__media-edit-compact-movers *{pointer-events:auto}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:2px;cursor:pointer;display:flex;gap:8px;min-height:40px;min-width:0;padding:4px 8px;position:relative}fieldset.fields__media-edit .fields__media-edit-picker-button:not(.has-attachment){border-color:var(--wp-admin-theme-color);color:var(--wp-admin-theme-color)}fieldset.fields__media-edit .fields__media-edit-picker-button:not(.has-attachment):hover{background-color:color-mix(in srgb,var(--wp-admin-theme-color,#3858e9) 4%,#0000);border-color:var(--wp-admin-theme-color-darker-20);color:var(--wp-admin-theme-color-darker-20)}fieldset.fields__media-edit .fields__media-edit-picker-button:hover{color:var(--wp-admin-theme-color)}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}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-actions{background:#fff;border-radius:2px;position:absolute;right:4px;top:4px}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item{border-radius:4px;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 .fields__media-edit-picker-button{border-radius:4px}fieldset.fields__media-edit .fields__media-edit-expanded.is-empty .fields__media-edit-picker-button{border-radius:2px}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{border:0;margin:0;padding:0}.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(t)}if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='0ccc4ccc5c']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","0ccc4ccc5c"),t.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(t)}var{usePostActions:H2,templateTitleField:z2}=pt(z0.privateApis),{Tabs:Ud}=pt(kl.privateApis);function W2(t){return t.id.toString()}function G2(){let t=j2(),{activeView:e="active"}=L2({from:"/templates/list/$activeView"}),r=F2(),o=B2({from:"/templates/list/$activeView"}),n=(0,$d.useSelect)(h=>h(Yd.store).getPostType("wp_template"),[]),[i,a]=(0,Ht.useState)(null),l=Md,s=(0,Ht.useMemo)(()=>Yb(e),[e]),c=(0,Ht.useCallback)(h=>{r({search:{...o,...h}})},[o,r]),{view:f,isModified:m,updateView:d,resetToDefault:p}=Wn({kind:"postType",name:"wp_template",slug:"default-new",defaultView:l,activeViewOverrides:s,queryParams:o,onChangeQueryParams:c}),g=()=>{p(),t()},w=h=>{d(h),h.type!==f.type&&t()},{records:v,isLoading:b,staticRecords:S}=l0(e),P=(0,$d.useSelect)(h=>{let{getUser:C}=h(Yd.store);return v.reduce((M,L)=>(L.author_text?M[L.author_text]||(M[L.author_text]=L.author_text):L.author&&(M[L.author]||(M[L.author]=C(L.author))),M),{})},[v]),R=(0,Ht.useMemo)(()=>{let h=[];for(let C in P)h.push({value:P[C]?.id??C,label:P[C]?.name??C});return[Cl,z2,Al,o0,i0,{...Pl,elements:h}]},[P]),{data:I,paginationInfo:k}=(0,Ht.useMemo)(()=>Wi(v,f,R),[v,f,R]),D=(0,Ht.useCallback)(h=>{let C=h.map(ne=>ne.id.toString()),M=o.postIds||[],L=M.filter(ne=>!C.includes(ne));L.length!==M.length?r({search:{...o,postIds:L.length>0?L:void 0}}):t()},[t,o,r]),T=(0,Ht.useCallback)((h,C)=>{(h==="move-to-trash"||h==="permanently-delete")&&D(C),h==="duplicate-post"&&r({to:"/templates/list/user"})},[D,r]),O=c0(),N=H2({postType:"wp_template",context:"list",onActionPerformed:T}),_=(0,Ht.useMemo)(()=>[O,...N?.flatMap(h=>h.id==="view-post-revisions"?[]:[h])],[O,N]),y=(0,Ht.useMemo)(()=>{let h=[{slug:"active",label:(0,Zi.__)("Active"),icon:Wu},{slug:"user",label:(0,Zi.__)("Created templates"),icon:Xn}],C=new Map;S.forEach(L=>{L.author_text&&!C.has(L.author_text)&&C.set(L.author_text,{slug:L.author_text,label:L.author_text})});let M=Array.from(C.values());return[...h,...M]},[S]),E=(0,Ht.useCallback)(h=>{r({to:`/templates/list/${h}`})},[r]);if(!n)return null;let x=o.postIds??[];f.type==="list"&&x.length===0&&I?.length>0&&x.push(I[0].id.toString()),f.type==="list"&&x.splice(1);let A=_.find(h=>h.id==="duplicate-post");if(A&&!("RenderModal"in A))throw new Error("Expected duplicate action to have a RenderModal component");return React.createElement(qi,{title:(0,Zi.__)("Templates"),className:"template-page",actions:React.createElement(Vl,null),hasPadding:!1},y.length>1&&React.createElement("div",{className:"routes-template-list__tabs-wrapper"},React.createElement(Ud,{onSelect:E,selectedTabId:e??"active"},React.createElement(Ud.TabList,null,y.map(h=>React.createElement(Ud.Tab,{tabId:h.slug,key:h.slug},h.label))))),React.createElement(zi,{data:I,fields:R,view:f,onChangeView:w,actions:_,isLoading:b,paginationInfo:k,defaultLayouts:Sl,getItemId:W2,selection:x,onReset:m?g:!1,onChangeSelection:h=>{r({search:{...o,postIds:h.length>0?h:void 0,edit:h.length===0?void 0:o.edit}})},isItemClickable:()=>!0,onClickItem:h=>{typeof h.id=="string"?a(h):r({to:`/types/wp_template/edit/${encodeURIComponent(h.id)}`})}}),i&&A&&React.createElement(kl.Modal,{title:(0,Zi.__)("Duplicate"),onRequestClose:()=>a(null),size:"small"},React.createElement(A.RenderModal,{items:[i],closeModal:()=>a(null)})))}var W0=G2;import{useParams as U2,useNavigate as Y2,useSearch as $2,useInvalidate as K2}from"@wordpress/route";var Zd=u(Zt()),Y0=u(G()),Xd=u(gt()),rr=u(j()),$0=u(Nd()),Qd=u(W());var G0=u(j()),q0=u(Zt());var{useEntityRecordsWithPermissions:q2}=pt(q0.privateApis);function U0(t="all"){let{records:e,isResolving:r}=q2("postType","wp_template",{per_page:-1});return{records:(0,G0.useMemo)(()=>e?t==="all"?e:e.filter(n=>n.author_text===t):[],[e,t]),isLoading:r,allRecords:e||[]}}var{usePostActions:Z2,templateTitleField:X2}=pt($0.privateApis),{Tabs:Kd}=pt(Y0.privateApis);function Q2(t){return t.id.toString()}function J2(){let t=K2(),{activeView:e="all"}=U2({from:"/templates/list/$activeView"}),r=Y2(),o=$2({from:"/templates/list/$activeView"}),n=(0,Xd.useSelect)(y=>y(Zd.store).getPostType("wp_template"),[]),i=Ub,a=(0,rr.useMemo)(()=>$b(e),[e]),l=(0,rr.useCallback)(y=>{r({search:{...o,...y}})},[o,r]),{view:s,isModified:c,updateView:f,resetToDefault:m}=Wn({kind:"postType",name:"wp_template",slug:"default-new",defaultView:i,activeViewOverrides:a,queryParams:o,onChangeQueryParams:l}),d=()=>{m(),t()},p=y=>{f(y),y.type!==s.type&&t()},{records:g,isLoading:w,allRecords:v}=U0(e),b=(0,Xd.useSelect)(y=>{let{getUser:E}=y(Zd.store);return g.reduce((x,A)=>(A.author_text?x[A.author_text]||(x[A.author_text]=A.author_text):A.author&&(x[A.author]||(x[A.author]=E(A.author))),x),{})},[g]),S=(0,rr.useMemo)(()=>{let y=[];for(let E in b)y.push({value:b[E]?.id??E,label:b[E]?.name??E});return[Cl,X2,Al,{...Pl,elements:y}]},[b]),{data:P,paginationInfo:R}=(0,rr.useMemo)(()=>Wi(g,s,S),[g,s,S]),I=(0,rr.useCallback)(y=>{let E=y.map(h=>h.id.toString()),x=o.postIds||[],A=x.filter(h=>!E.includes(h));A.length!==x.length?r({search:{...o,postIds:A.length>0?A:void 0}}):t()},[t,o,r]),k=(0,rr.useCallback)((y,E)=>{(y==="move-to-trash"||y==="permanently-delete")&&I(E),y==="duplicate-post"&&r({to:"/templates/list/all"})},[I,r]),D=Z2({postType:"wp_template",context:"list",onActionPerformed:k}),T=(0,rr.useMemo)(()=>D?.flatMap(y=>y.id==="view-post-revisions"?[]:[y]),[D]),O=(0,rr.useMemo)(()=>{let y=[{slug:"all",label:(0,Qd.__)("All templates"),icon:Jn}],E=new Map;v.forEach(A=>{A.author_text&&!E.has(A.author_text)&&E.set(A.author_text,{slug:A.author_text,label:A.author_text})});let x=Array.from(E.values());return[...y,...x]},[v]),N=(0,rr.useCallback)(y=>{r({to:`/templates/list/${y}`})},[r]);if(!n)return null;let _=o.postIds??[];return s.type==="list"&&_.length===0&&P?.length>0&&_.push(P[0].id.toString()),s.type==="list"&&_.splice(1),React.createElement(qi,{title:(0,Qd.__)("Templates"),className:"template-page",actions:React.createElement(Vl,null),hasPadding:!1},O.length>1&&React.createElement("div",{className:"routes-template-list__tabs-wrapper"},React.createElement(Kd,{onSelect:N,selectedTabId:e??"all"},React.createElement(Kd.TabList,null,O.map(y=>React.createElement(Kd.Tab,{tabId:y.slug,key:y.slug},y.label))))),React.createElement(zi,{data:P,fields:S,view:s,onChangeView:p,actions:T,isLoading:w,paginationInfo:R,defaultLayouts:Sl,getItemId:Q2,selection:_,onReset:c?d:!1,onChangeSelection:y=>{r({search:{...o,postIds:y.length>0?y:void 0,edit:y.length===0?void 0:o.edit}})},isItemClickable:()=>!0,onClickItem:y=>{r({to:`/types/wp_template/edit/${encodeURIComponent(y.id)}`})}}))}var K0=J2;function eS(){return typeof window<"u"&&window.__experimentalTemplateActivate?React.createElement(W0,null):React.createElement(K0,null)}var tS=eS;export{tS 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..daa9de0121192 --- /dev/null +++ b/src/wp-includes/build/routes/template-list/route.js @@ -0,0 +1,275 @@ +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 +var SCALAR_VALUES = [ + "titleField", + "mediaField", + "descriptionField", + "showTitle", + "showMedia", + "showDescription", + "showLevels", + "infiniteScrollEnabled" +]; +function mergeActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + for (const key of SCALAR_VALUES) { + if (key in activeViewOverrides) { + result = { ...result, [key]: activeViewOverrides[key] }; + } + } + 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 + }; + } + } + if (activeViewOverrides.layout) { + result = { + ...result, + layout: { + ...result.layout, + ...activeViewOverrides.layout + } + }; + } + if (activeViewOverrides.groupBy) { + result = { + ...result, + groupBy: activeViewOverrides.groupBy + }; + } + 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..285b188e93353 --- /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' => 'ae2d0d6e3f6654a31efa'); \ 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..579336829328c --- /dev/null +++ b/src/wp-includes/build/routes/template-list/route.min.js @@ -0,0 +1 @@ +var C=Object.create;var g=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var K=Object.getOwnPropertyNames;var $=Object.getPrototypeOf,z=Object.prototype.hasOwnProperty;var a=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Q=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of K(e))!z.call(t,i)&&i!==s&&g(t,i,{get:()=>e[i],enumerable:!(r=R(e,i))||r.enumerable});return t};var o=(t,e,s)=>(s=t!=null?C($(t)):{},Q(e||!t||!t.__esModule?g(s,"default",{value:t,enumerable:!0}):s,t));var p=a((H,m)=>{m.exports=window.wp.data});var w=a((J,y)=>{y.exports=window.wp.coreData});var A=a((X,h)=>{h.exports=window.wp.i18n});var S=a((O,x)=>{x.exports=window.wp.element});var l=a((v,T)=>{T.exports=window.wp.preferences});var I=o(p()),E=o(w()),B=o(A());var V=o(S(),1),_=o(p(),1),Y=o(l(),1);function u(t,e,s){return`dataviews-${t}-${e}-${s}`}var W=["titleField","mediaField","descriptionField","showTitle","showMedia","showDescription","showLevels","infiniteScrollEnabled"];function c(t,e,s){if(!e)return t;let r=t;for(let i of W)i in e&&(r={...r,[i]:e[i]});if(e.filters&&e.filters.length>0){let i=new Set(e.filters.map(n=>n.field)),f=(t.filters??[]).filter(n=>!i.has(n.field));r={...r,filters:[...f,...e.filters]}}return e.sort&&s&&t.sort?.field===s.sort?.field&&t.sort?.direction===s.sort?.direction&&(r={...r,sort:e.sort}),e.layout&&(r={...r,layout:{...r.layout,...e.layout}}),e.groupBy&&(r={...r,groupBy:e.groupBy}),r}var L=o(p(),1),F=o(l(),1);async function d(t){let{kind:e,name:s,slug:r,defaultView:i,activeViewOverrides:f,queryParams:n}=t,U=u(e,s,r),j=(0,L.select)(F.store).get("core/views",U)??i,q=n?.page??1,M=n?.search??"";return c({...j,page:q,search:M},f,i)}var P={type:"grid",perPage:20,sort:{field:"title",direction:"asc"},fields:["author","active","slug"],titleField:"title",descriptionField:"description",mediaField:"preview",filters:[]},ye={...P,fields:["author"]};function b(t){return t==="user"?{sort:{field:"date",direction:"desc"}}:t==="active"?{}:{filters:[{field:"author",operator:"isAny",value:[t]}]}}async function k(t,e){return d({kind:"postType",name:"wp_template",slug:"default-new",defaultView:P,activeViewOverrides:b(t??"active"),queryParams:e})}function D(t){let e={};return t.perPage!==void 0&&(e.per_page=t.perPage),t.page!==void 0&&(e.page=t.page),[void 0,""].includes(t.search)||(e.search=t.search),t.sort?.field!==void 0&&(e.orderby=t.sort.field),t.sort?.direction!==void 0&&(e.order=t.sort.direction),e}var Ae={title:()=>(0,B.__)("Templates"),async canvas(t){let{params:e,search:s}=t,r=await k(e.activeView,{page:s.page,search:s.search});if(r.type!=="list")return;if(s.postIds&&s.postIds.length>0){let n=s.postIds[0].toString();return{postType:"wp_template",postId:n,isPreview:!0,editLink:`/types/wp_template/edit/${encodeURIComponent(n)}`}}let i=D(r),f=await(0,I.resolveSelect)(E.store).getEntityRecords("postType","wp_template",{...i,per_page:1});if(f&&f.length>0){let n=f[0].id.toString();return{postType:"wp_template",postId:n,isPreview:!0,editLink:`/types/wp_template/edit/${encodeURIComponent(n)}`}}}};export{Ae 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..f786e7cc94e88 --- /dev/null +++ b/src/wp-includes/build/routes/template-part-list/content.js @@ -0,0 +1,17602 @@ +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 = useState26({ + 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] + ); + useEffect19( + 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, useState26 = React9.useState, useEffect19 = 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 +var SCALAR_VALUES = [ + "titleField", + "mediaField", + "descriptionField", + "showTitle", + "showMedia", + "showDescription", + "showLevels", + "infiniteScrollEnabled" +]; +function mergeActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + for (const key of SCALAR_VALUES) { + if (key in activeViewOverrides) { + result = { ...result, [key]: activeViewOverrides[key] }; + } + } + 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 + }; + } + } + if (activeViewOverrides.layout) { + result = { + ...result, + layout: { + ...result.layout, + ...activeViewOverrides.layout + } + }; + } + if (activeViewOverrides.groupBy) { + result = { + ...result, + groupBy: activeViewOverrides.groupBy + }; + } + return result; +} +function stripActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + for (const key of SCALAR_VALUES) { + if (key in activeViewOverrides) { + const { [key]: _, ...rest } = result; + result = rest; + } + } + 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 + }; + } + if (activeViewOverrides.layout && "layout" in result && result.layout) { + const layout = { ...result.layout }; + for (const key of Object.keys(activeViewOverrides.layout)) { + delete layout[key]; + } + result = { + ...result, + layout: Object.keys(layout).length > 0 ? layout : void 0 + }; + } + if (activeViewOverrides.groupBy && "groupBy" in result) { + const { groupBy: _, ...rest } = result; + result = rest; + } + 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_element56 = __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/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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.Path, { fillRule: "evenodd", clipRule: "evenodd", 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" }) }); + +// 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", clipRule: "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" }) }); + +// 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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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, { 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.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/navigation-overlay.mjs +var import_primitives20 = __toESM(require_primitives(), 1); +var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); +var navigation_overlay_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 10a1.5 1.5 0 0 1 1.5 1.5v7a1.5 1.5 0 0 1-1.5 1.5h-7a1.5 1.5 0 0 1-1.5-1.5v-7a1.5 1.5 0 0 1 1.5-1.5zM16 4a2 2 0 0 1 2 2v2h-1.5V6a.5.5 0 0 0-.5-.5H6a.5.5 0 0 0-.5.5v3H8v1.5H5.5V16a.5.5 0 0 0 .5.5h2V18H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z" }) }); + +// packages/icons/build-module/library/next.mjs +var import_primitives21 = __toESM(require_primitives(), 1); +var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); +var next_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: "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_primitives22 = __toESM(require_primitives(), 1); +var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); +var previous_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, { 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_primitives23 = __toESM(require_primitives(), 1); +var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); +var scheduled_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, { 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_primitives24 = __toESM(require_primitives(), 1); +var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); +var search_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: "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_primitives25 = __toESM(require_primitives(), 1); +var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); +var seen_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: "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_primitives26 = __toESM(require_primitives(), 1); +var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); +var sidebar_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: "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_primitives27 = __toESM(require_primitives(), 1); +var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); +var symbol_filled_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: "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/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, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", 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/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 gapTokens = { + xs: "var(--wpds-dimension-gap-xs, 4px)", + sm: "var(--wpds-dimension-gap-sm, 8px)", + md: "var(--wpds-dimension-gap-md, 12px)", + lg: "var(--wpds-dimension-gap-lg, 16px)", + xl: "var(--wpds-dimension-gap-xl, 24px)", + "2xl": "var(--wpds-dimension-gap-2xl, 32px)", + "3xl": "var(--wpds-dimension-gap-3xl, 40px)" +}; +var Stack = (0, import_element2.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render: render4, ...props }, ref) { + const style = { + gap: gap && gapTokens[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/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: () => { + }, + hasInitiallyLoaded: false, + 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_element11 = __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), + 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)(void 0); + 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 = void 0; + } + 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/hooks/use-delayed-loading.mjs +var import_element10 = __toESM(require_element(), 1); +function useDelayedLoading(isLoading, options = { delay: 400 }) { + const [showLoader, setShowLoader] = (0, import_element10.useState)(false); + (0, import_element10.useEffect)(() => { + if (!isLoading) { + return; + } + const timeout = setTimeout(() => { + setShowLoader(true); + }, options.delay); + return () => { + clearTimeout(timeout); + setShowLoader(false); + }; + }, [isLoading, options.delay]); + return showLoader; +} + +// packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs +var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); +function getEffectiveAlign(explicitAlign, fieldType) { + if (explicitAlign) { + return explicitAlign; + } + if (fieldType === "integer" || fieldType === "number") { + return "end"; + } + return void 0; +} +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_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_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] ?? {}; + const field = fields.find((f2) => f2.id === column); + const effectiveAlign = getEffectiveAlign(align, field?.type); + return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + "td", + { + style: { + width, + maxWidth, + minWidth + }, + children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + TableColumnField, + { + fields, + item, + column, + align: effectiveAlign + } + ) + }, + 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_element11.useContext)(dataviews_context_default); + const isDelayedLoading = useDelayedLoading(isLoading); + const headerMenuRefs = (0, import_element11.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element11.useRef)(void 0); + const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element11.useState)(); + 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 + }); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data); + 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)(); + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + id: tableNoticeId, + children: empty + } + ); + } + 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, + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }), + "aria-busy": isLoading, + "aria-describedby": tableNoticeId, + role: isInfiniteScroll ? "feed" : void 0, + inert: !isInfiniteScroll && isLoading ? "true" : 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 field = fields.find( + (f2) => f2.id === column + ); + const effectiveAlign = getEffectiveAlign( + align, + field?.type + ); + const canInsertOrMove = view.layout?.enableMoving ?? true; + return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)( + "th", + { + style: { + width, + maxWidth, + minWidth, + textAlign: effectiveAlign + }, + "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) + )) }) + ] + } + ), + isInfiniteScroll && isLoading && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "dataviews-loading", id: tableNoticeId, children: /* @__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_element13 = __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_element12 = __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_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_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_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_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, + inert, + 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_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, + inert, + 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 isDelayedLoading = useDelayedLoading(!!isLoading); + 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; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + children: empty + } + ); + } + const gridProps = { + className: clsx_default(className, { + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }), + inert: !isInfiniteScroll && !!isLoading ? "true" : void 0, + 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. + !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)( + CompositeGrid, + { + ...gridProps, + data, + isInfiniteScroll: !!isInfiniteScroll + } + ), + isInfiniteScroll && 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_element14 = __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_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_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_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_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 isDelayedLoading = useDelayedLoading(!!isLoading); + 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; + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = hasData && groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + children: empty + } + ); + } + 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 + ), + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }), + role: view.infiniteScrollEnabled ? "feed" : "grid", + activeId: activeCompositeId, + setActiveId: setActiveCompositeId, + inert: !isInfiniteScroll && !!isLoading ? "true" : void 0, + 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 + ); + }) + } + ), + isInfiniteScroll && 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_element15 = __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_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_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_element16 = __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_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_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_element16.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 isDelayedLoading = useDelayedLoading(!!isLoading); + const hasData = !!data?.length; + const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; + const dataByGroup = hasData && groupField ? getDataByGroup(data, groupField) : null; + const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; + if (!hasData) { + return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)( + "div", + { + className: clsx_default("dataviews-no-results", { + "is-refreshing": isDelayedLoading + }), + children: empty + } + ); + } + const isInert = !isInfiniteScroll && !!isLoading; + const wrapperClassName = clsx_default("dataviews-view-activity", className, { + "is-refreshing": !isInfiniteScroll && isDelayedLoading + }); + 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, + inert: isInert ? "true" : void 0, + 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, + inert: isInert ? "true" : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(ActivityItems, { ...props }) + } + ), + isInfiniteScroll && 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_element20 = __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_element18 = __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_element17 = __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_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_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_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_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_element17.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_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_runtime46 = __toESM(require_jsx_runtime(), 1); +var GridItems = (0, import_element19.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_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_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_element21 = __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_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_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_element21.useRef)(/* @__PURE__ */ new Map()); + const headerMenuToFocusRef = (0, import_element21.useRef)(void 0); + 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_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_element22 = __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_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_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_element23 = __toESM(require_element(), 1); +var import_jsx_runtime50 = __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_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_element31 = __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_element28 = __toESM(require_element(), 1); + +// node_modules/@ariakit/core/esm/__chunks/XMCVU3LR.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 = { ...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/YXGXYGQX.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 = { ...element.props }; + return props.ref || element.ref; +} +function mergeProps2(base, overrides) { + const props = { ...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] ? { ...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/3DNM6L6E.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) { + var _a; + const { activeElement } = getDocument(node); + if (!(activeElement == null ? void 0 : activeElement.nodeName)) { + return null; + } + if (isFrame(activeElement) && ((_a = activeElement.contentDocument) == null ? void 0 : _a.body)) { + 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/SNHYQNEZ.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 = { ...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/KPHZR4MB.js +var React6 = __toESM(require_react(), 1); +var import_react5 = __toESM(require_react(), 1); +var _React = { ...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 { ...props, wrapElement }; +} +function useMetadataProps(props, key, value) { + const parent = props.onLoadedMetadataCapture; + const onLoadedMetadataCapture = (0, import_react5.useMemo)(() => { + return Object.assign(() => { + }, { ...parent, [key]: value }); + }, [parent, key, value]); + return [parent == null ? void 0 : parent[key], { onLoadedMetadataCapture }]; +} +var hasInstalledGlobalEventListeners = false; +function useIsMouseMoving() { + (0, import_react5.useEffect)(() => { + if (hasInstalledGlobalEventListeners) return; + addGlobalEventListener("mousemove", setMouseMoving, true); + addGlobalEventListener("mousedown", resetMouseMoving, true); + addGlobalEventListener("mouseup", resetMouseMoving, true); + addGlobalEventListener("keydown", resetMouseMoving, true); + addGlobalEventListener("scroll", resetMouseMoving, true); + hasInstalledGlobalEventListeners = 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/GWSL6KNJ.js +var React7 = __toESM(require_react(), 1); +var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); +function forwardRef22(render4) { + const Role = React7.forwardRef( + // @ts-ignore Incompatible with React 19 types. Ignore for now. + (props, ref) => render4({ ...props, ref }) + ); + Role.displayName = render4.displayName || render4.name; + return Role; +} +function memo22(Component, propsAreEqual) { + return React7.memo(Component, propsAreEqual); +} +function createElement3(Type, props) { + const { wrapElement, render: render4, ...rest } = props; + const mergedRef = useMergeRefs(props.ref, getRefProperty(render4)); + let element; + if (React7.isValidElement(render4)) { + const renderProps = { + // @ts-ignore Incompatible with React 19 types. Ignore for now. + ...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, { ...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, { ...props, children }), + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(context.Provider, { ...props }) + ); + }; + const ScopedContextProvider = (props) => { + return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ContextProvider, { ...props, children: scopedProviders.reduceRight( + (children, Provider) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Provider, { ...props, children }), + /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(scopedContext.Provider, { ...props }) + ) }); + }; + return { + context, + scopedContext, + useContext: useContext28, + useScopedContext, + useProviderContext, + ContextProvider, + ScopedContextProvider + }; +} + +// node_modules/@ariakit/react-core/esm/__chunks/SMPCIMZM.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/AVVXDJMZ.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/5VQZOHHZ.js +function findFirstEnabledItem(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 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 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/Z2O3VLAQ.js +var import_react7 = __toESM(require_react(), 1); +var TagName = "div"; +var useCollectionItem = createHook( + function useCollectionItem2({ + store, + shouldRegisterItem = true, + getItem = identity, + // @ts-expect-error This prop may come from a collection renderer. + element, + ...props + }) { + const context = useCollectionContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react7.useRef)(element); + (0, import_react7.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 = { + ...props, + ref: useMergeRefs(ref, props.ref) + }; + return removeUndefinedValues(props); + } +); +var CollectionItem = forwardRef22(function CollectionItem2(props) { + const htmlProps = useCollectionItem(props); + return createElement3(TagName, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/SWN3JYXT.js +var import_react8 = __toESM(require_react(), 1); +var FocusableContext = (0, import_react8.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({ block: "nearest", inline: "nearest", ...options }); + } +} + +// node_modules/@ariakit/react-core/esm/__chunks/U6HHPQDW.js +var import_react9 = __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 hasInstalledGlobalEventListeners2 = false; +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({ + focusable = true, + accessibleWhenDisabled, + autoFocus, + onFocusVisible, + ...props + }) { + const ref = (0, import_react9.useRef)(null); + (0, import_react9.useEffect)(() => { + if (!focusable) return; + if (hasInstalledGlobalEventListeners2) return; + addGlobalEventListener("mousedown", onGlobalMouseDown, true); + addGlobalEventListener("keydown", onGlobalKeyDown, true); + hasInstalledGlobalEventListeners2 = true; + }, [focusable]); + if (isSafariBrowser) { + (0, import_react9.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_react9.useState)(false); + (0, import_react9.useEffect)(() => { + if (!focusable) return; + if (trulyDisabled && focusVisible) { + setFocusVisible(false); + } + }, [focusable, trulyDisabled, focusVisible]); + (0, import_react9.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; + event.currentTarget.removeAttribute("data-focus-visible"); + setFocusVisible(false); + }); + const autoFocusOnShow = (0, import_react9.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_react9.useMemo)(() => { + if (trulyDisabled) { + return { pointerEvents: "none", ...styleProp }; + } + return styleProp; + }, [trulyDisabled, styleProp]); + props = { + "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/PZ3OL7I2.js +var import_react10 = __toESM(require_react(), 1); +var TagName3 = "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({ clickOnEnter = true, clickOnSpace = true, ...props }) { + const ref = (0, import_react10.useRef)(null); + const [isNativeButton, setIsNativeButton] = (0, import_react10.useState)(false); + (0, import_react10.useEffect)(() => { + if (!ref.current) return; + setIsNativeButton(isButton(ref.current)); + }, []); + const [active, setActive] = (0, import_react10.useState)(false); + const activeRef = (0, import_react10.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 { view, ...eventInit } = event; + 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 { view, ...eventInit } = event; + queueMicrotask(() => fireClickEvent(element, eventInit)); + } + } + }); + props = { + "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(TagName3, htmlProps); +}); + +// node_modules/@ariakit/core/esm/__chunks/SXKM4CGU.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 = { ...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) { + var _a; + const initialState = {}; + for (const store2 of stores) { + const nextState = (_a = store2 == null ? void 0 : store2.getState) == null ? void 0 : _a.call(store2); + if (nextState) { + Object.assign(initialState, 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/Q5W46E73.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 = { ...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 useState26 = React8.useCallback( + (keyOrSelector) => useStoreState(store, keyOrSelector), + [store] + ); + const memoizedStore = React8.useMemo( + () => ({ ...store, useState: useState26 }), + [store, useState26] + ); + const updateStore = useEvent(() => { + setStore((store2) => createStore2({ ...props, ...store2.getState() })); + }); + return [memoizedStore, updateStore]; +} + +// node_modules/@ariakit/react-core/esm/__chunks/WZWDIE3S.js +var import_react11 = __toESM(require_react(), 1); +var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); +var TagName4 = "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({ + store, + rowId: rowIdProp, + preventScrollOnKeyDown = false, + moveOnKeyPress = true, + tabbable = false, + getItem: getItemProp, + "aria-setsize": ariaSetSizeProp, + "aria-posinset": ariaPosInSetProp, + ...props + }) { + const context = useCompositeContext(); + store = store || context; + const id = useId3(props.id); + const ref = (0, import_react11.useRef)(null); + const row = (0, import_react11.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_react11.useCallback)( + (item) => { + var _a; + const nextItem = { + ...item, + id: id || item.id, + rowId, + disabled: !!trulyDisabled, + children: (_a = item.element) == null ? void 0 : _a.textContent + }; + if (getItemProp) { + return getItemProp(nextItem); + } + return nextItem; + }, + [id, rowId, trulyDisabled, getItemProp] + ); + const onFocusProp = props.onFocus; + const hasFocusedComposite = (0, import_react11.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_react11.useMemo)( + () => ({ id, baseElement }), + [id, baseElement] + ); + props = useWrapElement( + props, + (element) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(CompositeItemContext.Provider, { value: providerValue, children: element }), + [providerValue] + ); + props = { + 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({ + store, + ...props, + getItem, + shouldRegisterItem: id ? props.shouldRegisterItem : false + }); + return removeUndefinedValues({ + ...props, + "aria-setsize": ariaSetSize, + "aria-posinset": ariaPosInSet + }); + } +); +var CompositeItem = memo22( + forwardRef22(function CompositeItem2(props) { + const htmlProps = useCompositeItem(props); + return createElement3(TagName4, htmlProps); + }) +); + +// 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/react-core/esm/__chunks/ZMWF7ASR.js +var import_react12 = __toESM(require_react(), 1); +var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1); +var TagName5 = "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 { view, ...eventInit } = event; + 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 findFirstEnabledItem( + flatten2DArray(reverseArray(groupItemsByRows(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({ + store, + composite = true, + focusOnMove = composite, + moveOnKeyPress = true, + ...props + }) { + 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 _a; + if (!store) return; + if (!moves) return; + if (!composite) return; + if (!focusOnMove) return; + const { activeId: activeId2 } = store.getState(); + const itemElement = (_a = getEnabledItem(store, activeId2)) == null ? void 0 : _a.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 _a; + if (!store) return; + if (!composite) return; + if (!virtualFocus) return; + const previousElement = previousElementRef.current; + previousElementRef.current = null; + if (!previousElement) return; + const activeElement = (_a = getEnabledItem(store, activeId)) == null ? void 0 : _a.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 _a; + 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 = (_a = getEnabledItem(store, activeId2)) == null ? void 0 : _a.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 _a; + onKeyDownProp == null ? void 0 : onKeyDownProp(event); + if (event.nativeEvent.isComposing) return; + if (event.defaultPrevented) return; + if (!store) return; + if (!isSelfTarget(event)) return; + const { orientation, renderedItems, activeId: activeId2 } = store.getState(); + const activeItem = getEnabledItem(store, activeId2); + if ((_a = activeItem == null ? void 0 : activeItem.element) == null ? void 0 : _a.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_runtime53.jsx)(CompositeContextProvider, { value: store, children: element }), + [store] + ); + const activeDescendant = store.useState((state) => { + var _a; + if (!store) return; + if (!composite) return; + if (!state.virtualFocus) return; + return (_a = getEnabledItem(store, state.activeId)) == null ? void 0 : _a.id; + }); + props = { + "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({ focusable, ...props }); + return props; + } +); +var Composite5 = forwardRef22(function Composite22(props) { + const htmlProps = useComposite(props); + return createElement3(TagName5, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/LVDQFHCH.js +var ctx3 = createStoreContext(); +var useDisclosureContext = ctx3.useContext; +var useDisclosureScopedContext = ctx3.useScopedContext; +var useDisclosureProviderContext = ctx3.useProviderContext; +var DisclosureContextProvider = ctx3.ContextProvider; +var DisclosureScopedContextProvider = ctx3.ScopedContextProvider; + +// node_modules/@ariakit/react-core/esm/__chunks/A62MDFCW.js +var import_react13 = __toESM(require_react(), 1); +var ctx4 = createStoreContext( + [DisclosureContextProvider], + [DisclosureScopedContextProvider] +); +var useDialogContext = ctx4.useContext; +var useDialogScopedContext = ctx4.useScopedContext; +var useDialogProviderContext = ctx4.useProviderContext; +var DialogContextProvider = ctx4.ContextProvider; +var DialogScopedContextProvider = ctx4.ScopedContextProvider; +var DialogHeadingContext = (0, import_react13.createContext)(void 0); +var DialogDescriptionContext = (0, import_react13.createContext)(void 0); + +// node_modules/@ariakit/react-core/esm/__chunks/6B3RXHKP.js +var import_react14 = __toESM(require_react(), 1); +var import_react_dom = __toESM(require_react_dom(), 1); +var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1); +var TagName6 = "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({ store, alwaysVisible, ...props }) { + 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_react14.useRef)(null); + const id = useId3(props.id); + const [transition, setTransition] = (0, import_react14.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_runtime54.jsx)(DialogScopedContextProvider, { value: store, children: element }), + [store] + ); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const styleProp = props.style; + const style = (0, import_react14.useMemo)(() => { + if (hidden) { + return { ...styleProp, display: "none" }; + } + return styleProp; + }, [hidden, styleProp]); + props = { + 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(TagName6, htmlProps); +}); +var DisclosureContent = forwardRef22(function DisclosureContent2({ + unmountOnHide, + ...props +}) { + 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_runtime54.jsx)(DisclosureContentImpl, { ...props }); +}); + +// node_modules/@ariakit/core/esm/__chunks/75BJEVSH.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 { + ...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/WLZ6H5FH.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/react-core/esm/__chunks/JMU4N4M5.js +var ctx5 = createStoreContext( + [DialogContextProvider], + [DialogScopedContextProvider] +); +var usePopoverContext = ctx5.useContext; +var usePopoverScopedContext = ctx5.useScopedContext; +var usePopoverProviderContext = ctx5.useProviderContext; +var PopoverContextProvider = ctx5.ContextProvider; +var PopoverScopedContextProvider = ctx5.ScopedContextProvider; + +// node_modules/@ariakit/core/esm/__chunks/N5XGANPW.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 = { ...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 { + ...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/GVAFFF2B.js +function useCollectionStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.store]); + useStoreProps(store, props, "items", "setItems"); + return store; +} + +// node_modules/@ariakit/core/esm/__chunks/RVTIKFRL.js +var NULL_ITEM = { id: null }; +function findFirstEnabledItem2(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 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 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 ? findFirstEnabledItem2(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 = groupItemsByRows2(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({ + ...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 = { + ...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 = findFirstEnabledItem2(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(groupItemsByRows2(renderedItems), activeId2, canShift) + ); + items = canReverse ? reverseArray(items) : items; + items = isVerticalDirection ? verticalizeItems(items) : items; + if (activeId2 == null) { + return (_a2 = findFirstEnabledItem2(items)) == null ? void 0 : _a2.id; + } + const activeItem = items.find((item) => item.id === activeId2); + if (!activeItem) { + return (_b = findFirstEnabledItem2(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 = findFirstEnabledItem2(sortedItems, activeId2); + return nextItem2 == null ? void 0 : nextItem2.id; + } + if (canWrap) { + const nextItem2 = findFirstEnabledItem2( + // 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 = findFirstEnabledItem2(nextItemsInRow, activeId2); + if (!nextItem && hasNullItem) { + return null; + } + return nextItem == null ? void 0 : nextItem.id; + }; + return { + ...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 = findFirstEnabledItem2(composite.getState().renderedItems)) == null ? void 0 : _a2.id; + }, + last: () => { + var _a2; + return (_a2 = findFirstEnabledItem2(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/IQYAUKXT.js +function useCompositeStoreOptions(props) { + const id = useId3(props.id); + return { 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/react-core/esm/__chunks/CVCFNOHX.js +var import_react15 = __toESM(require_react(), 1); +var ComboboxListRoleContext = (0, import_react15.createContext)( + void 0 +); +var ctx6 = createStoreContext( + [PopoverContextProvider, CompositeContextProvider], + [PopoverScopedContextProvider, CompositeScopedContextProvider] +); +var useComboboxContext = ctx6.useContext; +var useComboboxScopedContext = ctx6.useScopedContext; +var useComboboxProviderContext = ctx6.useProviderContext; +var ComboboxContextProvider = ctx6.ContextProvider; +var ComboboxScopedContextProvider = ctx6.ScopedContextProvider; +var ComboboxItemValueContext = (0, import_react15.createContext)( + void 0 +); +var ComboboxItemCheckedContext = (0, import_react15.createContext)(false); + +// node_modules/@ariakit/core/esm/__chunks/KMAUV3TY.js +function createDialogStore(props = {}) { + return createDisclosureStore(props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/4NYSH4UO.js +function useDialogStoreProps(store, update2, props) { + return useDisclosureStoreProps(store, update2, props); +} + +// node_modules/@ariakit/core/esm/__chunks/BFGNM53A.js +function createPopoverStore({ + popover: otherPopover, + ...props +} = {}) { + 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({ ...props, store }); + const placement = defaultValue( + props.placement, + syncState == null ? void 0 : syncState.placement, + "bottom" + ); + const initialState = { + ...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 { + ...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/B6FLPFJM.js +function usePopoverStoreProps(store, update2, props) { + useUpdateEffect(update2, [props.popover]); + useStoreProps(store, props, "placement"); + return useDialogStoreProps(store, update2, props); +} + +// node_modules/@ariakit/react-core/esm/__chunks/4POTBZ2J.js +var TagName7 = "div"; +var usePopoverAnchor = createHook( + function usePopoverAnchor2({ store, ...props }) { + const context = usePopoverProviderContext(); + store = store || context; + props = { + ...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(TagName7, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/X6LNAU2F.js +var import_react16 = __toESM(require_react(), 1); +var TagName8 = "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({ + store, + focusOnHover = true, + blurOnHoverEnd = !!focusOnHover, + ...props + }) { + 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 _a; + 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); + (_a = store == null ? void 0 : store.getState().baseElement) == null ? void 0 : _a.focus(); + }); + const ref = (0, import_react16.useCallback)((element) => { + if (!element) return; + element[symbol2] = true; + }, []); + props = { + ...props, + ref: useMergeRefs(ref, props.ref), + onMouseMove, + onMouseLeave + }; + return removeUndefinedValues(props); + } +); +var CompositeHover = memo22( + forwardRef22(function CompositeHover2(props) { + const htmlProps = useCompositeHover(props); + return createElement3(TagName8, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/combobox/combobox.js +var import_react17 = __toESM(require_react(), 1); +var TagName9 = "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({ + store, + focusable = true, + autoSelect: autoSelectProp = false, + getAutoSelectId, + setValueOnChange, + showMinLength = 0, + showOnChange, + showOnMouseDown, + showOnClick = showOnMouseDown, + showOnKeyDown, + showOnKeyPress = showOnKeyDown, + blurActiveItemOnClick, + setValueOnClick = true, + moveOnKeyPress = true, + autoComplete = "list", + ...props + }) { + 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_react17.useRef)(null); + const [valueUpdated, forceValueUpdate] = useForceUpdate(); + const canAutoSelectRef = (0, import_react17.useRef)(false); + const composingRef = (0, import_react17.useRef)(false); + const autoSelect = store.useState( + (state) => state.virtualFocus && autoSelectProp + ); + const inline = autoComplete === "inline" || autoComplete === "both"; + const [canInline, setCanInline] = (0, import_react17.useState)(inline); + useUpdateLayoutEffect(() => { + if (!inline) return; + setCanInline(true); + }, [inline]); + const storeValue = store.useState("value"); + const prevSelectedValueRef = (0, import_react17.useRef)(void 0); + (0, import_react17.useEffect)(() => { + return sync(store, ["selectedValue", "activeId"], (_, prev) => { + prevSelectedValueRef.current = prev.selectedValue; + }); + }, []); + const inlineActiveValue = store.useState((state) => { + var _a; + if (!inline) return; + if (!canInline) return; + if (state.activeValue && Array.isArray(state.selectedValue)) { + if (state.selectedValue.includes(state.activeValue)) return; + if ((_a = prevSelectedValueRef.current) == null ? void 0 : _a.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_react17.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_react17.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_react17.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_react17.useRef)(null); + const getAutoSelectIdProp = useEvent(getAutoSelectId); + const autoSelectIdRef = (0, import_react17.useRef)(null); + (0, import_react17.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 _a, _b; + 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 : (_a = getDefaultAutoSelectId(items)) != null ? _a : store.first(); + autoSelectIdRef.current = autoSelectId; + store.move(autoSelectId != null ? autoSelectId : null); + } else { + const element = (_b = store.item(activeId || store.first())) == null ? void 0 : _b.element; + if (element && "scrollIntoView" in element) { + element.scrollIntoView({ block: "nearest", inline: "nearest" }); + } + } + return; + }, [ + store, + open, + valueUpdated, + storeValue, + autoSelect, + resetValueOnSelect, + getAutoSelectIdProp, + items + ]); + (0, import_react17.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 = { + 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({ + 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({ store, ...props }); + return { autoComplete: "off", ...props }; + } +); +var Combobox = forwardRef22(function Combobox2(props) { + const htmlProps = useCombobox(props); + return createElement3(TagName9, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/IBXZ2LQC.js +var import_react18 = __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({ + store, + value, + hideOnClick, + setValueOnClick, + selectValueOnClick = true, + resetValueOnSelect, + focusOnHover = false, + moveOnKeyPress = true, + getItem: getItemProp, + ...props + }) { + var _a; + 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_react18.useCallback)( + (item) => { + const nextItem = { ...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( + (_a = resetValueOnSelect != null ? resetValueOnSelect : resetValueOnSelectState) != null ? _a : 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 = { + "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_react18.useContext)(ComboboxListRoleContext); + props = { + role: getItemRole(popupRole), + children: value, + ...props, + onClick, + onKeyDown + }; + const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); + props = useCompositeItem({ + 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({ 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-item-value.js +var import_react19 = __toESM(require_react(), 1); +var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1); +var TagName11 = "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_runtime56.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({ store, value, userValue, ...props }) { + const context = useComboboxScopedContext(); + store = store || context; + const itemContext = (0, import_react19.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_react19.useMemo)(() => { + if (!itemValue) return; + if (!inputValue) return itemValue; + return splitValue(itemValue, inputValue); + }, [itemValue, inputValue]); + props = { + children, + ...props + }; + return removeUndefinedValues(props); +}); +var ComboboxItemValue = forwardRef22(function ComboboxItemValue2(props) { + const htmlProps = useComboboxItemValue(props); + return createElement3(TagName11, htmlProps); +}); + +// node_modules/@ariakit/react-core/esm/combobox/combobox-label.js +var TagName12 = "label"; +var useComboboxLabel = createHook( + function useComboboxLabel2({ store, ...props }) { + 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 _a; + return (_a = state.baseElement) == null ? void 0 : _a.id; + }); + props = { + htmlFor: comboboxId, + ...props + }; + return removeUndefinedValues(props); + } +); +var ComboboxLabel = memo22( + forwardRef22(function ComboboxLabel2(props) { + const htmlProps = useComboboxLabel(props); + return createElement3(TagName12, htmlProps); + }) +); + +// node_modules/@ariakit/react-core/esm/__chunks/2G6YEJT4.js +var import_react20 = __toESM(require_react(), 1); +var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1); +var TagName13 = "div"; +var useComboboxList = createHook( + function useComboboxList2({ store, alwaysVisible, ...props }) { + 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_react20.useRef)(null); + const id = useId3(props.id); + const mounted = store.useState("mounted"); + const hidden = isHidden(mounted, props.hidden, alwaysVisible); + const style = hidden ? { ...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_react20.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 = { + 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 = { + 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); +}); + +// node_modules/@ariakit/react-core/esm/__chunks/XSIEPKGA.js +var import_react21 = __toESM(require_react(), 1); +var TagValueContext = (0, import_react21.createContext)(null); +var TagRemoveIdContext = (0, import_react21.createContext)( + null +); +var ctx7 = createStoreContext( + [CompositeContextProvider], + [CompositeScopedContextProvider] +); +var useTagContext = ctx7.useContext; +var useTagScopedContext = ctx7.useScopedContext; +var useTagProviderContext = ctx7.useProviderContext; +var TagContextProvider = ctx7.ContextProvider; +var TagScopedContextProvider = ctx7.ScopedContextProvider; + +// node_modules/@ariakit/core/esm/combobox/combobox-store.js +var isTouchSafari = isSafari() && isTouchDevice(); +function createComboboxStore({ + tag, + ...props +} = {}) { + 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({ + ...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({ + ...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 = { + ...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 { + ...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/SVN33SY6.js +function useComboboxStoreOptions(props) { + const tag = useTagContext(); + props = { + ...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/combobox/combobox-provider.js +var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1); +function ComboboxProvider(props = {}) { + const store = useComboboxStore(props); + return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(ComboboxContextProvider, { value: store, children: props.children }); +} + +// 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_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_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_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_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_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", + { + className: "dataviews-filters__search-widget-listitem-value", + title: element.label, + 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_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", + { + className: "dataviews-filters__search-widget-listitem-value", + title: element.label, + 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_element26 = __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_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_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_element27 = __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_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_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_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_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_element29 = __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_element29.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_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_runtime65 = __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_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_element31.memo)(Filters); + +// packages/dataviews/build-module/components/dataviews-filters/toggle.mjs +var import_element32 = __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_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] + ); + if (filters.length === 0) { + return null; + } + const hasVisibleFilters = filters.some((filter) => filter.isVisible); + 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 hasPrimaryOrLockedFilters = filters.some( + (filter) => filter.isPrimary || filter.isLocked + ); + const buttonComponent = /* @__PURE__ */ (0, import_jsx_runtime66.jsx)( + import_components24.Button, + { + ref: buttonRef, + className: "dataviews-filters__visibility-toggle", + size: "compact", + icon: funnel_default, + disabled: hasPrimaryOrLockedFilters, + accessibleWhenDisabled: true, + ...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_element32.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_element33 = __toESM(require_element(), 1); +var import_jsx_runtime67 = __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_runtime67.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_runtime68 = __toESM(require_jsx_runtime(), 1); +function DataViewsLayout({ className }) { + const { + actions = [], + data, + fields, + getItemId: getItemId2, + getItemLevel, + hasInitiallyLoaded, + 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_element34.useContext)(dataviews_context_default); + if (!hasInitiallyLoaded) { + return null; + } + 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_element35 = __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, + isLoading, + hasInitiallyLoaded, + hasInfiniteScrollHandler + } = (0, import_element35.useContext)(dataviews_context_default); + const isRefreshing = !!isLoading && hasInitiallyLoaded && !hasInfiniteScrollHandler && !!data?.length; + const isDelayedRefreshing = useDelayedLoading(!!isRefreshing); + const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data) && [LAYOUT_TABLE, LAYOUT_GRID].includes(view.type); + if (!isRefreshing && (!totalItems || !totalPages || totalPages <= 1 && !hasBulkActions)) { + return null; + } + return (!!totalItems || isRefreshing) && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)( + "div", + { + className: "dataviews-footer", + inert: isRefreshing ? "true" : void 0, + children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)( + Stack, + { + direction: "row", + justify: "end", + align: "center", + className: clsx_default("dataviews-footer__content", { + "is-refreshing": isDelayedRefreshing + }), + 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_element36 = __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_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_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_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_components26 = __toESM(require_components(), 1); +var import_i18n30 = __toESM(require_i18n(), 1); +var import_element37 = __toESM(require_element(), 1); +var import_jsx_runtime71 = __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_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_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_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_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_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_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_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_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_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 ResetViewButton() { + const { onReset } = (0, import_element38.useContext)(dataviews_context_default); + if (onReset === void 0) { + return null; + } + const isDisabled = onReset === false; + return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components27.Button, + { + variant: "tertiary", + size: "compact", + disabled: isDisabled, + accessibleWhenDisabled: true, + className: "dataviews-view-config__reset-button", + onClick: () => { + if (typeof onReset === "function") { + onReset(); + } + }, + children: (0, import_i18n31.__)("Reset view") + } + ); +} +function DataviewsViewConfigDropdown() { + const { view, onReset } = (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 + ); + const isModified = typeof onReset === "function"; + 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.jsxs)("div", { className: "dataviews-view-config__toggle-wrapper", children: [ + /* @__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 + } + ), + isModified && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("span", { className: "dataviews-view-config__modified-indicator" }) + ] }); + }, + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components27.__experimentalDropdownContentWrapper, + { + paddingSize: "medium", + className: "dataviews-config__popover-content-wrapper", + children: /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)( + Stack, + { + direction: "column", + className: "dataviews-view-config", + gap: "xl", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)( + Stack, + { + direction: "row", + justify: "space-between", + align: "center", + className: "dataviews-view-config__header", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( + import_components27.__experimentalHeading, + { + level: 2, + className: "dataviews-settings-section__title", + children: (0, import_i18n31.__)("Appearance") + } + ), + /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(ResetViewButton, {}) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(Stack, { direction: "column", gap: "lg", children: [ + /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)( + Stack, + { + direction: "row", + gap: "sm", + className: "dataviews-view-config__sort-controls", + 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_element38.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_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_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_element39.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_element40 = __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_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_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_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_components30 = __toESM(require_components(), 1); +var import_element41 = __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_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_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 = (value) => { + if (!value) { + return ""; + } + return (0, import_date3.dateI18n)("Y-m-d\\TH:i", (0, import_date3.getDate)(value)); +}; +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)(void 0); + 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) { + const wpDate = (0, import_date3.dateI18n)("Y-m-d", newDate); + let wpTime; + if (value) { + wpTime = (0, import_date3.dateI18n)("H:i", (0, import_date3.getDate)(value)); + } else { + wpTime = (0, import_date3.dateI18n)("H:i", newDate); + } + const finalDateTime = (0, import_date3.getDate)(`${wpDate}T${wpTime}`); + 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 = (0, import_date3.getDate)(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: formatDateTime(value), + 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_element43 = __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_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_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_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_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_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_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/select.mjs +var import_components33 = __toESM(require_components(), 1); +var import_element44 = __toESM(require_element(), 1); +var import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1); +var { ValidatedSelectControl } = unlock(import_components33.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_element44.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_runtime78.jsx)(import_components33.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime78.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/adaptive-select.mjs +var import_jsx_runtime79 = __toESM(require_jsx_runtime(), 1); +var ELEMENTS_THRESHOLD = 10; +function AdaptiveSelect(props) { + const { field } = props; + const { elements } = useElements({ + elements: field.elements, + getElements: field.getElements + }); + if (elements.length >= ELEMENTS_THRESHOLD) { + return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(Combobox3, { ...props }); + } + return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(Select, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/email.mjs +var import_components35 = __toESM(require_components(), 1); + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-input.mjs +var import_components34 = __toESM(require_components(), 1); +var import_element45 = __toESM(require_element(), 1); +var import_jsx_runtime80 = __toESM(require_jsx_runtime(), 1); +var { ValidatedInputControl: ValidatedInputControl2 } = unlock(import_components34.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_element45.useCallback)( + (newValue) => onChange( + setValue({ + item: data, + value: newValue + }) + ), + [data, setValue, onChange] + ); + return /* @__PURE__ */ (0, import_jsx_runtime80.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_runtime81 = __toESM(require_jsx_runtime(), 1); +function Email({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "email", + prefix: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components35.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components35.Icon, { icon: envelope_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/telephone.mjs +var import_components36 = __toESM(require_components(), 1); +var import_jsx_runtime82 = __toESM(require_jsx_runtime(), 1); +function Telephone({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "tel", + prefix: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_components36.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_components36.Icon, { icon: mobile_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/url.mjs +var import_components37 = __toESM(require_components(), 1); +var import_jsx_runtime83 = __toESM(require_jsx_runtime(), 1); +function Url({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity +}) { + return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: "url", + prefix: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_components37.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_components37.Icon, { icon: link_default }) }) + } + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/utils/validated-number.mjs +var import_components38 = __toESM(require_components(), 1); +var import_element46 = __toESM(require_element(), 1); +var import_i18n35 = __toESM(require_i18n(), 1); +var import_jsx_runtime84 = __toESM(require_jsx_runtime(), 1); +var { ValidatedNumberControl } = unlock(import_components38.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_element46.useCallback)( + (newValue) => onChange([toNumberOrEmpty(newValue), max]), + [onChange, max] + ); + const onChangeMax = (0, import_element46.useCallback)( + (newValue) => onChange([min, toNumberOrEmpty(newValue)]), + [onChange, min] + ); + return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( + import_components38.BaseControl, + { + help: (0, import_i18n35.__)("The max. value must be greater than the min. value."), + children: /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)(import_components38.Flex, { direction: "row", gap: 4, children: [ + /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( + import_components38.__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_runtime84.jsx)( + import_components38.__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_element46.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_element46.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_runtime84.jsx)( + BetweenControls, + { + value: valueBetween, + onChange: onChangeBetweenControls, + hideLabelFromVision, + step + } + ); + } + return /* @__PURE__ */ (0, import_jsx_runtime84.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_runtime85 = __toESM(require_jsx_runtime(), 1); +function Integer(props) { + return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/number.mjs +var import_jsx_runtime86 = __toESM(require_jsx_runtime(), 1); +function Number2(props) { + return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(ValidatedNumber, { ...props }); +} + +// packages/dataviews/build-module/components/dataform-controls/radio.mjs +var import_components39 = __toESM(require_components(), 1); +var import_element47 = __toESM(require_element(), 1); +var import_jsx_runtime87 = __toESM(require_jsx_runtime(), 1); +var { ValidatedRadioControl } = unlock(import_components39.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_element47.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + if (isLoading) { + return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_components39.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime87.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/text.mjs +var import_element48 = __toESM(require_element(), 1); +var import_jsx_runtime88 = __toESM(require_jsx_runtime(), 1); +function Text({ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + config, + validity +}) { + const { prefix, suffix } = config || {}; + return /* @__PURE__ */ (0, import_jsx_runtime88.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_components40 = __toESM(require_components(), 1); +var import_element49 = __toESM(require_element(), 1); +var import_jsx_runtime89 = __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_element49.useCallback)(() => { + onChange( + setValue({ item: data, value: !getValue({ item: data }) }) + ); + }, [onChange, setValue, data, getValue]); + return /* @__PURE__ */ (0, import_jsx_runtime89.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_element50 = __toESM(require_element(), 1); +var import_jsx_runtime90 = __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_element50.useCallback)( + (newValue) => onChange(setValue({ item: data, value: newValue })), + [data, onChange, setValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime90.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_element51 = __toESM(require_element(), 1); +var import_jsx_runtime91 = __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_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_runtime91.jsx)(import_components42.Spinner, {}); + } + if (elements.length === 0) { + return null; + } + const selectedOption = elements.find((el) => el.value === value); + return /* @__PURE__ */ (0, import_jsx_runtime91.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_runtime91.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_element52 = __toESM(require_element(), 1); +var import_jsx_runtime92 = __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_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_runtime92.jsx)(import_components43.Spinner, {}); + } + return /* @__PURE__ */ (0, import_jsx_runtime92.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_runtime92.jsx)("span", { children: element?.label || item }); + } + return /* @__PURE__ */ (0, import_jsx_runtime92.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_element53 = __toESM(require_element(), 1); +var import_i18n36 = __toESM(require_i18n(), 1); +var import_jsx_runtime93 = __toESM(require_jsx_runtime(), 1); +var { ValidatedInputControl: ValidatedInputControl3 } = unlock(import_components44.privateApis); +var ColorPickerDropdown = ({ + color, + onColorChange +}) => { + const validColor = color && w(color).isValid() ? color : "#ffffff"; + return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( + import_components44.Dropdown, + { + className: "dataviews-controls__color-picker-dropdown", + popoverProps: { resize: false }, + renderToggle: ({ onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( + import_components44.Button, + { + onClick: onToggle, + "aria-label": (0, import_i18n36.__)("Open color picker"), + size: "small", + icon: () => /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_components44.ColorIndicator, { colorValue: validColor }) + } + ), + renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_components44.__experimentalDropdownContentWrapper, { paddingSize: "none", children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( + import_components44.ColorPicker, + { + color: 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)( + (newColor) => { + onChange(setValue({ item: data, value: newColor })); + }, + [data, onChange, setValue] + ); + const handleInputChange = (0, import_element53.useCallback)( + (newValue) => { + onChange(setValue({ item: data, value: newValue || "" })); + }, + [data, onChange, setValue] + ); + return /* @__PURE__ */ (0, import_jsx_runtime93.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_runtime93.jsx)(import_components44.__experimentalInputControlPrefixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( + ColorPickerDropdown, + { + color: value, + onColorChange: handleColorChange + } + ) }) + } + ); +} + +// packages/dataviews/build-module/components/dataform-controls/password.mjs +var import_components45 = __toESM(require_components(), 1); +var import_element54 = __toESM(require_element(), 1); +var import_i18n37 = __toESM(require_i18n(), 1); +var import_jsx_runtime94 = __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_runtime94.jsx)( + ValidatedText, + { + ...{ + data, + field, + onChange, + hideLabelFromVision, + markWhenOptional, + validity, + type: isVisible2 ? "text" : "password", + suffix: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_components45.__experimentalInputControlSuffixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)( + import_components45.Button, + { + icon: isVisible2 ? unseen_default : seen_default, + onClick: toggleVisibility, + size: "small", + label: isVisible2 ? (0, import_i18n37.__)("Hide password") : (0, import_i18n37.__)("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_runtime95 = __toESM(require_jsx_runtime(), 1); +var FORM_CONTROLS = { + adaptiveSelect: AdaptiveSelect, + 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: Text, + 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_runtime95.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("adaptiveSelect"); + } + 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_i18n38 = __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_runtime96 = __toESM(require_jsx_runtime(), 1); +function render({ + item, + field +}) { + if (field.hasElements) { + return /* @__PURE__ */ (0, import_jsx_runtime96.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_i18n38.__)("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_i18n39 = __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_i18n39.__)("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_i18n40 = __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_i18n40.__)("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_i18n41 = __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_i18n41.__)("True"); + } + if (value === false) { + return (0, import_i18n41.__)("False"); + } + return ""; +} +function isValidCustom4(item, field) { + const value = field.getValue({ item }); + if (![void 0, "", null].includes(value) && ![true, false].includes(value)) { + return (0, import_i18n41.__)("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_i18n42 = __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_i18n42.__)("Value must be an array."); + } + if (!value.every((v2) => typeof v2 === "string")) { + return (0, import_i18n42.__)("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_i18n43 = __toESM(require_i18n(), 1); +var import_jsx_runtime97 = __toESM(require_jsx_runtime(), 1); +function render3({ item, field }) { + if (field.hasElements) { + return /* @__PURE__ */ (0, import_jsx_runtime97.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_runtime97.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [ + /* @__PURE__ */ (0, import_jsx_runtime97.jsx)( + "div", + { + style: { + width: "16px", + height: "16px", + borderRadius: "50%", + backgroundColor: value, + border: "1px solid #ddd", + flexShrink: 0 + } + } + ), + /* @__PURE__ */ (0, import_jsx_runtime97.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_i18n43.__)("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/hooks/use-data.mjs +var import_element55 = __toESM(require_element(), 1); +function useData(data, isLoading, paginationInfo) { + const previousDataRef = (0, import_element55.useRef)(data); + const previousPaginationInfoRef = (0, import_element55.useRef)(paginationInfo); + const [hasInitiallyLoaded, setHasInitiallyLoaded] = (0, import_element55.useState)( + !isLoading + ); + (0, import_element55.useEffect)(() => { + if (!isLoading) { + previousDataRef.current = data; + previousPaginationInfoRef.current = paginationInfo; + setHasInitiallyLoaded(true); + } + }, [data, isLoading, paginationInfo]); + return { + data: isLoading && previousDataRef.current?.length ? previousDataRef.current : data, + paginationInfo: isLoading && previousDataRef.current?.length ? previousPaginationInfoRef.current : paginationInfo, + hasInitiallyLoaded + }; +} + +// packages/dataviews/build-module/dataviews/index.mjs +var import_jsx_runtime98 = __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_runtime98.jsxs)(import_jsx_runtime98.Fragment, { children: [ + /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)( + Stack, + { + direction: "row", + align: "top", + justify: "space-between", + className: "dataviews__view-actions", + gap: "xs", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)( + Stack, + { + direction: "row", + justify: "start", + gap: "sm", + className: "dataviews__search", + children: [ + search && /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(dataviews_search_default, { label: searchLabel }), + /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(toggle_default, {}) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(Stack, { direction: "row", gap: "xs", style: { flexShrink: 0 }, children: [ + /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(dataviews_view_config_default, {}), + header + ] }) + ] + } + ), + /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(filters_toggled_default, { className: "dataviews-filters__container" }), + /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(DataViewsLayout, {}), + /* @__PURE__ */ (0, import_jsx_runtime98.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, + onReset +}) { + const { infiniteScrollHandler } = paginationInfo; + const containerRef = (0, import_element56.useRef)(null); + const [containerWidth, setContainerWidth] = (0, import_element56.useState)(0); + const resizeObserverRef = (0, import_compose12.useResizeObserver)( + (resizeObserverEntries) => { + setContainerWidth( + resizeObserverEntries[0].borderBoxSize[0].inlineSize + ); + }, + { box: "border-box" } + ); + const [selectionState, setSelectionState] = (0, import_element56.useState)([]); + const isUncontrolled = selectionProperty === void 0 || onChangeSelection === void 0; + const selection = isUncontrolled ? selectionState : selectionProperty; + const [openedFilter, setOpenedFilter] = (0, import_element56.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_element56.useMemo)(() => normalizeFields(fields), [fields]); + const _selection = (0, import_element56.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_element56.useMemo)( + () => (filters || []).some( + (filter) => filter.isPrimary || filter.isLocked + ), + [filters] + ); + const [isShowingFilter, setIsShowingFilter] = (0, import_element56.useState)( + hasPrimaryOrLockedFilters + ); + (0, import_element56.useEffect)(() => { + if (hasPrimaryOrLockedFilters && !isShowingFilter) { + setIsShowingFilter(true); + } + }, [hasPrimaryOrLockedFilters, isShowingFilter]); + (0, import_element56.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_element56.useMemo)( + () => Object.fromEntries( + Object.entries(defaultLayoutsProperty).filter( + ([layoutType]) => { + return dataViewsLayouts.some( + (viewLayout) => viewLayout.type === layoutType + ); + } + ) + ), + [defaultLayoutsProperty] + ); + const { + data: displayData, + paginationInfo: displayPaginationInfo, + hasInitiallyLoaded + } = useData(data, isLoading, paginationInfo); + if (!defaultLayouts[view.type]) { + return null; + } + return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)( + dataviews_context_default.Provider, + { + value: { + view, + onChangeView, + fields: _fields, + actions, + data: displayData, + isLoading, + paginationInfo: displayPaginationInfo, + selection: _selection, + onChangeSelection: setSelectionWithChange, + openedFilter, + setOpenedFilter, + getItemId: getItemId2, + getItemLevel, + isItemClickable, + onClickItem, + renderItemLink, + containerWidth, + containerRef, + resizeObserverRef, + defaultLayouts, + filters, + isShowingFilter, + setIsShowingFilter, + config, + empty, + hasInitiallyLoaded, + hasInfiniteScrollHandler: !!infiniteScrollHandler, + onReset + }, + children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { className: "dataviews-wrapper", ref: containerRef, children: children ?? /* @__PURE__ */ (0, import_jsx_runtime98.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_element57 = __toESM(require_element(), 1); +var import_jsx_runtime99 = __toESM(require_jsx_runtime(), 1); +var NavigableRegion = (0, import_element57.forwardRef)( + ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { + return /* @__PURE__ */ (0, import_jsx_runtime99.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_runtime100 = __toESM(require_jsx_runtime(), 1); +function Header({ + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle = true +}) { + return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_components47.__experimentalVStack, { className: "admin-ui-page__header", as: "header", children: [ + /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_components47.__experimentalHStack, { justify: "space-between", spacing: 2, children: [ + /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_components47.__experimentalHStack, { spacing: 2, justify: "left", children: [ + showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)( + SidebarToggleSlot, + { + bubblesVirtually: true, + className: "admin-ui-page__sidebar-toggle-slot" + } + ), + title && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_components47.__experimentalHeading, { as: "h2", level: 3, weight: 500, truncate: true, children: title }), + breadcrumbs, + badges + ] }), + /* @__PURE__ */ (0, import_jsx_runtime100.jsx)( + import_components47.__experimentalHStack, + { + style: { width: "auto", flexShrink: 0 }, + spacing: 2, + className: "admin-ui-page__header-actions", + children: actions + } + ) + ] }), + subTitle && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) + ] }); +} + +// packages/admin-ui/build-module/page/index.mjs +var import_jsx_runtime101 = __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_runtime101.jsxs)(navigable_region_default, { className: classes, ariaLabel: title, children: [ + (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( + Header, + { + breadcrumbs, + badges, + title, + subTitle, + actions, + showSidebarToggle + } + ), + hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime101.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_element59 = __toESM(require_element()); +var import_editor = __toESM(require_editor()); + +// 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_element58 = __toESM(require_element(), 1); +var import_i18n44 = __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_runtime102 = __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_runtime102.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_runtime102.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 ("navigation-overlay" === areaOrIconName) { + return navigation_overlay_default; + } + return symbol_filled_default; +}; +function CreateTemplatePartModalContents({ + defaultArea = "uncategorized", + blocks = [], + confirmLabel = (0, import_i18n44.__)("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_element58.useState)(defaultTitle); + const [area, setArea] = (0, import_element58.useState)(defaultArea); + const [isSubmitting, setIsSubmitting] = (0, import_element58.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_i18n44.__)( + "An error occurred while creating the template part." + ); + createErrorNotice(errorMessage, { type: "snackbar" }); + onError?.(); + } finally { + setIsSubmitting(false); + } + } + return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)( + "form", + { + onSubmit: async (event) => { + event.preventDefault(); + await createTemplatePart(); + }, + children: /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(import_components48.__experimentalVStack, { spacing: "4", children: [ + /* @__PURE__ */ (0, import_jsx_runtime102.jsx)( + import_components48.TextControl, + { + __next40pxDefaultSize: true, + label: (0, import_i18n44.__)("Name"), + value: title, + onChange: setTitle, + required: true + } + ), + /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)("fieldset", { className: "fields-create-template-part-modal__area-fieldset", children: [ + /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(import_components48.BaseControl.VisualLabel, { as: "legend", children: (0, import_i18n44.__)("Area") }), + /* @__PURE__ */ (0, import_jsx_runtime102.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_runtime102.jsxs)( + "div", + { + className: "fields-create-template-part-modal__area-radio-wrapper", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime102.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_runtime102.jsx)( + import_components48.Icon, + { + icon, + className: "fields-create-template-part-modal__area-radio-icon" + } + ), + /* @__PURE__ */ (0, import_jsx_runtime102.jsx)( + "label", + { + htmlFor: getAreaRadioId( + item.area, + instanceId + ), + className: "fields-create-template-part-modal__area-radio-label", + children: item.label + } + ), + /* @__PURE__ */ (0, import_jsx_runtime102.jsx)( + import_components48.Icon, + { + icon: check_default, + className: "fields-create-template-part-modal__area-radio-checkmark" + } + ), + /* @__PURE__ */ (0, import_jsx_runtime102.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_runtime102.jsxs)(import_components48.__experimentalHStack, { justify: "right", children: [ + /* @__PURE__ */ (0, import_jsx_runtime102.jsx)( + import_components48.Button, + { + __next40pxDefaultSize: true, + variant: "tertiary", + onClick: () => { + closeModal(); + }, + children: (0, import_i18n44.__)("Cancel") + } + ), + /* @__PURE__ */ (0, import_jsx_runtime102.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_i18n45 = __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_i18n45.__)("Preview"), + id: "preview", + render: PreviewField, + enableSorting: false +}; + +// routes/template-part-list/style.scss +if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='c58d328215']")) { + const style = document.createElement("style"); + style.setAttribute("data-wp-hash", "c58d328215"); + 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;margin:0;padding:0;width:100%}fieldset.fields__media-edit .components-base-control__label{color:#1e1e1e}fieldset.fields__media-edit{container-type:inline-size}fieldset.fields__media-edit .fields__media-edit-compact-group{border:1px dashed #949494;border-radius:4px;overflow:hidden}fieldset.fields__media-edit .fields__media-edit-compact-group.is-single{border-radius:2px}fieldset.fields__media-edit .fields__media-edit-compact-group .fields__media-edit-picker-button{border:0;border-radius:0}fieldset.fields__media-edit .fields__media-edit-compact-group .fields__media-edit-picker-button:focus-visible{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color)}fieldset.fields__media-edit .fields__media-edit-compact-group .fields__media-edit-compact:not(:last-child){border-bottom:1px solid #f0f0f0}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-compact{min-width:0;position:relative}fieldset.fields__media-edit .fields__media-edit-compact:focus-within .fields__media-edit-compact-movers,fieldset.fields__media-edit .fields__media-edit-compact:hover .fields__media-edit-compact-movers{opacity:1}fieldset.fields__media-edit .fields__media-edit-compact .fields__media-edit-compact-movers{background:#fff;border-radius:2px;opacity:0;pointer-events:none;position:absolute;right:8px;top:50%;transform:translateY(-50%);z-index:1}fieldset.fields__media-edit .fields__media-edit-compact .fields__media-edit-compact-movers *{pointer-events:auto}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:2px;cursor:pointer;display:flex;gap:8px;min-height:40px;min-width:0;padding:4px 8px;position:relative}fieldset.fields__media-edit .fields__media-edit-picker-button:not(.has-attachment){border-color:var(--wp-admin-theme-color);color:var(--wp-admin-theme-color)}fieldset.fields__media-edit .fields__media-edit-picker-button:not(.has-attachment):hover{background-color:color-mix(in srgb,var(--wp-admin-theme-color,#3858e9) 4%,#0000);border-color:var(--wp-admin-theme-color-darker-20);color:var(--wp-admin-theme-color-darker-20)}fieldset.fields__media-edit .fields__media-edit-picker-button:hover{color:var(--wp-admin-theme-color)}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}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-actions{background:#fff;border-radius:2px;position:absolute;right:4px;top:4px}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item{border-radius:4px;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 .fields__media-edit-picker-button{border-radius:4px}fieldset.fields__media-edit .fields__media-edit-expanded.is-empty .fields__media-edit-picker-button{border-radius:2px}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{border:0;margin:0;padding:0}.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_element59.useState)(false); + const defaultView = DEFAULT_VIEW; + const activeViewOverrides = (0, import_element59.useMemo)( + () => getActiveViewOverridesForTab(area), + [area] + ); + const handleQueryParamsChange = (0, import_element59.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_element59.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_element59.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_element59.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_element59.useMemo)(() => { + return [ + ...postTypeActions?.flatMap( + (action) => { + if (action.id === "view-post-revisions") { + return []; + } + return [action]; + } + ) + ]; + }, [postTypeActions]); + const handleTabChange = (0, import_element59.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: 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, + onReset: isModified ? onReset : false, + 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..cfa41d70c78eb --- /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-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' => '3bad6904d103ece172b4'); \ 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..de5b7d76bf425 --- /dev/null +++ b/src/wp-includes/build/routes/template-part-list/content.min.js @@ -0,0 +1,14 @@ +var eb=Object.create;var kc=Object.defineProperty;var tb=Object.getOwnPropertyDescriptor;var rb=Object.getOwnPropertyNames;var ob=Object.getPrototypeOf,nb=Object.prototype.hasOwnProperty;var Ae=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var ib=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of rb(e))!nb.call(t,n)&&n!==r&&kc(t,n,{get:()=>e[n],enumerable:!(o=tb(e,n))||o.enumerable});return t};var c=(t,e,r)=>(r=t!=null?eb(ob(t)):{},ib(e||!t||!t.__esModule?kc(r,"default",{value:t,enumerable:!0}):r,t));var H=Ae((Ty,Mc)=>{Mc.exports=window.wp.element});var Wt=Ae((Ay,Fc)=>{Fc.exports=window.wp.data});var Hs=Ae((Oy,Lc)=>{Lc.exports=window.wp.preferences});var _t=Ae((zy,jc)=>{jc.exports=window.wp.compose});var le=Ae((Wy,Hc)=>{Hc.exports=window.React});var R=Ae((qy,Gc)=>{Gc.exports=window.ReactJSXRuntime});var nd=Ae((h1,od)=>{od.exports=window.ReactDOM});var ad=Ae(id=>{"use strict";var jo=le();function yb(t,e){return t===e&&(t!==0||1/t===1/e)||t!==t&&e!==e}var Sb=typeof Object.is=="function"?Object.is:yb,Cb=jo.useState,Eb=jo.useEffect,Pb=jo.useLayoutEffect,Tb=jo.useDebugValue;function Ab(t,e){var r=e(),o=Cb({inst:{value:r,getSnapshot:e}}),n=o[0].inst,i=o[1];return Pb(function(){n.value=r,n.getSnapshot=e,Js(n)&&i({inst:n})},[t,r,e]),Eb(function(){return Js(n)&&i({inst:n}),t(function(){Js(n)&&i({inst:n})})},[t]),Tb(r),r}function Js(t){var e=t.getSnapshot;t=t.value;try{var r=e();return!Sb(t,r)}catch{return!0}}function Ob(t,e){return e()}var Ib=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?Ob:Ab;id.useSyncExternalStore=jo.useSyncExternalStore!==void 0?jo.useSyncExternalStore:Ib});var ld=Ae((x1,sd)=>{"use strict";sd.exports=ad()});var U=Ae((S1,dd)=>{dd.exports=window.wp.i18n});var ue=Ae((C1,fd)=>{fd.exports=window.wp.primitives});var Ul=Ae((AS,md)=>{md.exports=window.wp.privateApis});var q=Ae((FS,yd)=>{yd.exports=window.wp.components});var Kl=Ae((LS,Sd)=>{Sd.exports=window.wp.keycodes});var ap=Ae((aI,Ha)=>{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("|"),Dx=new RegExp(np,"g"),Nx=new RegExp(np,"");function Mx(t){return op[t]}var ip=function(t){return t.replace(Dx,Mx)},Fx=function(t){return!!t.match(Nx)};Ha.exports=ip;Ha.exports.has=Fx;Ha.exports.remove=ip});var hp=Ae((pI,gp)=>{"use strict";gp.exports=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var o,n,i;if(Array.isArray(e)){if(o=e.length,o!=r.length)return!1;for(n=o;n--!==0;)if(!t(e[n],r[n]))return!1;return!0}if(e instanceof Map&&r instanceof Map){if(e.size!==r.size)return!1;for(n of e.entries())if(!r.has(n[0]))return!1;for(n of e.entries())if(!t(n[1],r.get(n[0])))return!1;return!0}if(e instanceof Set&&r instanceof Set){if(e.size!==r.size)return!1;for(n of e.entries())if(!r.has(n[0]))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(r)){if(o=e.length,o!=r.length)return!1;for(n=o;n--!==0;)if(e[n]!==r[n])return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(i=Object.keys(e),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(!t(e[a],r[a]))return!1}return!0}return e!==e&&r!==r}});var Do=Ae((DV,Zp)=>{Zp.exports=window.wp.date});var yv=Ae((Ok,_v)=>{_v.exports=window.wp.warning});var Ds=Ae((JM,xh)=>{xh.exports=window.wp.coreData});var _h=Ae((eF,wh)=>{wh.exports=window.wp.editor});var Sh=Ae((tF,yh)=>{yh.exports=window.wp.notices});var Eh=Ae((rF,Ch)=>{Ch.exports=window.wp.blocks});import{useParams as py,useNavigate as vy,useSearch as gy,Link as hy,useInvalidate as by}from"@wordpress/route";var Dc=Object.prototype.hasOwnProperty;function Nc(t,e,r){for(r of t.keys())if(Fr(r,e))return r}function Fr(t,e){var r,o,n;if(t===e)return!0;if(t&&e&&(r=t.constructor)===e.constructor){if(r===Date)return t.getTime()===e.getTime();if(r===RegExp)return t.toString()===e.toString();if(r===Array){if((o=t.length)===e.length)for(;o--&&Fr(t[o],e[o]););return o===-1}if(r===Set){if(t.size!==e.size)return!1;for(o of t)if(n=o,n&&typeof n=="object"&&(n=Nc(e,n),!n)||!e.has(n))return!1;return!0}if(r===Map){if(t.size!==e.size)return!1;for(o of t)if(n=o[0],n&&typeof n=="object"&&(n=Nc(e,n),!n)||!Fr(o[1],e.get(n)))return!1;return!0}if(r===ArrayBuffer)t=new Uint8Array(t),e=new Uint8Array(e);else if(r===DataView){if((o=t.byteLength)===e.byteLength)for(;o--&&t.getInt8(o)===e.getInt8(o););return o===-1}if(ArrayBuffer.isView(t)){if((o=t.byteLength)===e.byteLength)for(;o--&&t[o]===e[o];);return o===-1}if(!r||typeof t=="object"){o=0;for(r in t)if(Dc.call(t,r)&&++o&&!Dc.call(e,r)||!(r in e)||!Fr(t[r],e[r]))return!1;return Object.keys(e).length===o}}return t!==t&&e!==e}var Tn=c(H(),1),bi=c(Wt(),1),Gs=c(Hs(),1);function zs(t,e,r){return`dataviews-${t}-${e}-${r}`}var Bc=["titleField","mediaField","descriptionField","showTitle","showMedia","showDescription","showLevels","infiniteScrollEnabled"];function Ws(t,e,r){if(!e)return t;let o=t;for(let n of Bc)n in e&&(o={...o,[n]:e[n]});if(e.filters&&e.filters.length>0){let n=new Set(e.filters.map(a=>a.field)),i=(t.filters??[]).filter(a=>!n.has(a.field));o={...o,filters:[...i,...e.filters]}}return e.sort&&r&&t.sort?.field===r.sort?.field&&t.sort?.direction===r.sort?.direction&&(o={...o,sort:e.sort}),e.layout&&(o={...o,layout:{...o.layout,...e.layout}}),e.groupBy&&(o={...o,groupBy:e.groupBy}),o}function hi(t,e,r){if(!e)return t;let o=t;for(let n of Bc)if(n in e){let{[n]:i,...a}=o;o=a}if(e.filters&&e.filters.length>0){let n=new Set(e.filters.map(i=>i.field));o={...o,filters:(t.filters??[]).filter(i=>!n.has(i.field))}}if(e.sort&&t.sort?.field===e.sort.field&&t.sort?.direction===e.sort.direction&&(o={...o,sort:r?.sort}),e.layout&&"layout"in o&&o.layout){let n={...o.layout};for(let i of Object.keys(e.layout))delete n[i];o={...o,layout:Object.keys(n).length>0?n:void 0}}if(e.groupBy&&"groupBy"in o){let{groupBy:n,...i}=o;o=i}return o}function ab(t,e){let r={...t};for(let o of e)delete r[o];return r}function qs(t){let{kind:e,name:r,slug:o,defaultView:n,activeViewOverrides:i,queryParams:a,onChangeQueryParams:l}=t,s=zs(e,r,o),u=(0,bi.useSelect)(y=>y(Gs.store).get("core/views",s),[s]),{set:d}=(0,bi.useDispatch)(Gs.store),p=u??n,f=Number(a?.page??p.page??1),m=a?.search??p.search??"",v=(0,Tn.useMemo)(()=>Ws({...p,page:f,search:m},i,n),[p,f,m,i,n]),_=!!u,h=(0,Tn.useCallback)(y=>{let S={page:y?.page,search:y?.search},V=hi(ab(y,["page","search"]),i,n);l&&!Fr(S,{page:f,search:m})&&l(S);let O=hi(p,i,n),N=hi(n,i,n);Fr(O,V)||(Fr(V,N)?d("core/views",s,void 0):d("core/views",s,V))},[l,f,m,p,n,i,d,s]),x=(0,Tn.useCallback)(()=>{d("core/views",s,void 0)},[s,d]);return{view:v,isModified:_,updateView:h,resetToDefault:x}}var sb=c(Wt(),1),lb=c(Hs(),1);var wt=c(H(),1),ks=c(_t(),1);var Wc=c(le(),1),zc={};function Ys(t,e){let r=Wc.useRef(zc);return r.current===zc&&(r.current=t(e)),r}function Us(t,...e){let r=new URL(`https://base-ui.com/production-error/${t}`);return e.forEach(o=>r.searchParams.append("args[]",o)),`Base UI error #${t}; visit ${r} for the full message.`}var wi=c(le(),1);function $s(t,e,r,o){let n=Ys(Yc).current;return cb(n,t,e,r,o)&&Uc(n,[t,e,r,o]),n.callback}function qc(t){let e=Ys(Yc).current;return db(e,t)&&Uc(e,t),e.callback}function Yc(){return{callback:null,cleanup:null,refs:[]}}function cb(t,e,r,o,n){return t.refs[0]!==e||t.refs[1]!==r||t.refs[2]!==o||t.refs[3]!==n}function db(t,e){return t.refs.length!==e.length||t.refs.some((r,o)=>r!==e[o])}function Uc(t,e){if(t.refs=e,e.every(r=>r==null)){t.callback=null;return}t.callback=r=>{if(t.cleanup&&(t.cleanup(),t.cleanup=null),r!=null){let o=Array(e.length).fill(null);for(let n=0;n{for(let n=0;n=t}function Ks(t){if(!Zc.isValidElement(t))return null;let e=t,r=e.props;return(Kc(19)?r?.ref:e.ref)??null}function An(t,e){if(t&&!e)return t;if(!t&&e)return e;if(t||e)return{...t,...e}}function Xc(t,e){let r={};for(let o in t){let n=t[o];if(e?.hasOwnProperty(o)){let i=e[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 Qc(t,e){return typeof t=="function"?t(e):t}function Jc(t,e){return typeof t=="function"?t(e):t}var In={};function xi(t,e,r,o,n){let i={...Zs(t,In)};return e&&(i=On(i,e)),r&&(i=On(i,r)),o&&(i=On(i,o)),n&&(i=On(i,n)),i}function ed(t){if(t.length===0)return In;if(t.length===1)return Zs(t[0],In);let e={...Zs(t[0],In)};for(let r=1;r=65&&n<=90&&(typeof e=="function"||typeof e>"u")}function td(t){return typeof t=="function"}function Zs(t,e){return td(t)?t(e):t??In}function vb(t,e){return e?t?r=>{if(hb(r)){let n=r;gb(n);let i=e(n);return n.baseUIHandlerPrevented||t?.(n),i}let o=e(r);return t?.(r),o}:e:t}function gb(t){return t.preventBaseUIHandler=()=>{t.baseUIHandlerPrevented=!0},t}function Xs(t,e){return e?t?e+" "+t:e:t}function hb(t){return t!=null&&typeof t=="object"&&"nativeEvent"in t}var bb=Object.freeze([]),Lr=Object.freeze({});var Qs=c(le(),1);function rd(t,e,r={}){let o=e.render,n=xb(e,r);if(r.enabled===!1)return null;let i=r.state??Lr;return wb(t,o,n,i)}function xb(t,e={}){let{className:r,style:o,render:n}=t,{state:i=Lr,ref:a,props:l,stateAttributesMapping:s,enabled:u=!0}=e,d=u?Qc(r,i):void 0,p=u?Jc(o,i):void 0,f=u?Xc(i,s):Lr,m=u?An(f,Array.isArray(l)?ed(l):l)??Lr:Lr;return typeof document<"u"&&(u?Array.isArray(a)?m.ref=qc([m.ref,Ks(n),...a]):m.ref=$s(m.ref,Ks(n),a):$s(null,null)),u?(d!==void 0&&(m.className=Xs(m.className,d)),p!==void 0&&(m.style=An(m.style,p)),m):Lr}function wb(t,e,r,o){if(e){if(typeof e=="function")return e(r,o);let n=xi(r,e.props);return n.ref=r.ref,wi.cloneElement(e,n)}if(t&&typeof t=="string")return _b(t,r);throw new Error(Us(8))}function _b(t,e){return t==="button"?(0,Qs.createElement)("button",{type:"button",...e,key:e.key}):t==="img"?(0,Qs.createElement)("img",{alt:"",...e,key:e.key}):wi.createElement(t,e)}function ud(t){return rd(t.defaultTagName??"div",t,t)}function cd(t){var e,r,o="";if(typeof t=="string"||typeof t=="number")o+=t;else if(typeof t=="object")if(Array.isArray(t)){var n=t.length;for(e=0;e{},fields:[],data:[],paginationInfo:{totalItems:0,totalPages:0},selection:[],onChangeSelection:()=>{},setOpenedFilter:()=>{},openedFilter:null,getItemId:t=>t.id,isItemClickable:()=>!0,renderItemLink:void 0,containerWidth:0,containerRef:(0,oa.createRef)(),resizeObserverRef:()=>{},defaultLayouts:{list:{},grid:{},table:{}},filters:[],isShowingFilter:!1,setIsShowingFilter:()=>{},hasInitiallyLoaded:!1,hasInfiniteScrollHandler:!1,config:{perPageSizes:[]}});_d.displayName="DataViewsContext";var G=_d;var yr=c(U(),1);var xo=c(U(),1),da=c(q(),1),St=c(H(),1),tu=c(Kl(),1);var Cd=c(q(),1),Ed=c(U(),1),Pd=c(R(),1);function Kr({selection:t,onChangeSelection:e,item:r,getItemId:o,titleField:n,disabled:i,...a}){let l=o(r),s=!i&&t.includes(l),u=n?.getValue?.({item:r})||(0,Ed.__)("(no title)");return(0,Pd.jsx)(Cd.CheckboxControl,{className:"dataviews-selection-checkbox","aria-label":u,"aria-disabled":i,checked:s,onChange:()=>{i||e(t.includes(l)?t.filter(d=>l!==d):[...t,l])},...a})}var ho=c(q(),1),Od=c(U(),1),Wo=c(H(),1);var Id=c(Wt(),1),Zl=c(_t(),1);var Td=c(Ul(),1),{lock:jS,unlock:K}=(0,Td.__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=c(R(),1),{Menu:zo,kebabCase:Db}=K(ho.privateApis);function Nb({action:t,onClick:e,items:r,variant:o}){let n=typeof t.label=="string"?t.label:t.label(r);return(0,be.jsx)(ho.Button,{disabled:!!t.disabled,accessibleWhenDisabled:!0,size:"compact",variant:o,onClick:e,children:n})}function Mb({action:t,onClick:e,items:r}){let o=typeof t.label=="string"?t.label:t.label(r);return(0,be.jsx)(zo.Item,{disabled:t.disabled,onClick:e,children:(0,be.jsx)(zo.ItemLabel,{children:o})})}function bo({action:t,items:e,closeModal:r}){let o=typeof t.label=="string"?t.label:t.label(e),n=typeof t.modalHeader=="function"?t.modalHeader(e):t.modalHeader;return(0,be.jsx)(ho.Modal,{title:n||o,__experimentalHideHeader:!!t.hideModalHeader,onRequestClose:r,focusOnMount:t.modalFocusOnMount??!0,size:t.modalSize||"medium",overlayClassName:`dataviews-action-modal dataviews-action-modal__${Db(t.id)}`,children:(0,be.jsx)(t.RenderModal,{items:e,closeModal:r})})}function Xl({actions:t,item:e,registry:r,setActiveModalAction:o}){let{primaryActions:n,regularActions:i}=(0,Wo.useMemo)(()=>t.reduce((l,s)=>((s.isPrimary?l.primaryActions:l.regularActions).push(s),l),{primaryActions:[],regularActions:[]}),[t]),a=l=>l.map(s=>(0,be.jsx)(Mb,{action:s,onClick:()=>{if("RenderModal"in s){o(s);return}s.callback([e],{registry:r})},items:[e]},s.id));return(0,be.jsxs)(zo.Group,{children:[a(n),a(i)]})}function Go({item:t,actions:e,isCompact:r}){let o=(0,Id.useRegistry)(),{primaryActions:n,eligibleActions:i}=(0,Wo.useMemo)(()=>{let l=e.filter(u=>!u.isEligible||u.isEligible(t));return{primaryActions:l.filter(u=>u.isPrimary),eligibleActions:l}},[e,t]),a=(0,Zl.useViewportMatch)("medium","<");return r?(0,be.jsx)(Ad,{item:t,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)(Ql,{item:t,actions:n,registry:o}),(n.lengthi(null)})]})}function Ql({item:t,actions:e,registry:r,buttonVariant:o}){let[n,i]=(0,Wo.useState)(null);return(0,Zl.useViewportMatch)("medium","<")||!Array.isArray(e)||e.length===0?null:(0,be.jsxs)(be.Fragment,{children:[e.map(l=>(0,be.jsx)(Nb,{action:l,onClick:()=>{if("RenderModal"in l){i(l);return}l.callback([t],{registry:r})},items:[t],variant:o},l.id)),!!n&&(0,be.jsx)(bo,{action:n,items:[t],closeModal:()=>i(null)})]})}var qo=c(q(),1),na=c(U(),1),st=c(H(),1),Dd=c(Wt(),1);var Jl=c(_t(),1);var Zr=c(U(),1);function Rd(t,e,r){return t>0?(0,Zr.sprintf)((0,Zr._n)("%d Item selected","%d Items selected",t),t):r>e?(0,Zr.sprintf)((0,Zr._n)("%1$d of %2$d Item","%1$d of %2$d Items",r),e,r):(0,Zr.sprintf)((0,Zr._n)("%d Item","%d Items",e),e)}var We=c(R(),1);function Fb({action:t,items:e,ActionTriggerComponent:r}){let[o,n]=(0,st.useState)(!1);return(0,We.jsxs)(We.Fragment,{children:[(0,We.jsx)(r,{...{action:t,onClick:()=>{n(!0)},items:e}}),o&&(0,We.jsx)(bo,{action:t,items:e,closeModal:()=>n(!1)})]})}function ia(t,e){return(0,st.useMemo)(()=>t.some(r=>r.supportsBulk&&(!r.isEligible||r.isEligible(e))),[t,e])}function Yo(t,e){return(0,st.useMemo)(()=>e.some(r=>t.some(o=>o.supportsBulk&&(!o.isEligible||o.isEligible(r)))),[t,e])}function Nn({selection:t,onChangeSelection:e,data:r,actions:o,getItemId:n}){let i=(0,st.useMemo)(()=>r.filter(s=>o.some(u=>u.supportsBulk&&(!u.isEligible||u.isEligible(s)))),[r,o]),a=r.filter(s=>t.includes(n(s))&&i.includes(s)),l=a.length===i.length;return(0,We.jsx)(qo.CheckboxControl,{className:"dataviews-view-table-selection-checkbox",checked:l,indeterminate:!l&&!!a.length,onChange:()=>{e(l?[]:i.map(s=>n(s)))},"aria-label":l?(0,na.__)("Deselect all"):(0,na.__)("Select all")})}function Vd({action:t,onClick:e,isBusy:r,items:o}){let n=typeof t.label=="string"?t.label:t.label(o);return(0,Jl.useViewportMatch)("medium","<")?(0,We.jsx)(qo.Button,{disabled:r,accessibleWhenDisabled:!0,label:n,icon:t.icon,size:"compact",onClick:e,isBusy:r}):(0,We.jsx)(qo.Button,{disabled:r,accessibleWhenDisabled:!0,size:"compact",onClick:e,isBusy:r,children:n})}var Nd=[];function Lb({action:t,selectedItems:e,actionInProgress:r,setActionInProgress:o}){let n=(0,Dd.useRegistry)(),i=(0,st.useMemo)(()=>e.filter(a=>!t.isEligible||t.isEligible(a)),[t,e]);return"RenderModal"in t?(0,We.jsx)(Fb,{action:t,items:i,ActionTriggerComponent:Vd},t.id):(0,We.jsx)(Vd,{action:t,onClick:async()=>{o(t.id),await t.callback(e,{registry:n}),o(null)},items:i,isBusy:r===t.id},t.id)}function kd(t,e,r,o,n,i,a,l,s,u){let d=Rd(o.length,t.length,u.totalItems);return(0,We.jsxs)(F,{direction:"row",className:"dataviews-bulk-actions-footer__container",gap:"md",align:"center",children:[(0,We.jsx)(Nn,{selection:o,onChangeSelection:s,data:t,actions:e,getItemId:r}),(0,We.jsx)("span",{className:"dataviews-bulk-actions-footer__item-count",children:d}),(0,We.jsxs)(F,{direction:"row",className:"dataviews-bulk-actions-footer__action-buttons",gap:"xs",children:[n.map(p=>(0,We.jsx)(Lb,{action:p,selectedItems:i,actionInProgress:a,setActionInProgress:l},p.id)),i.length>0&&(0,We.jsx)(qo.Button,{icon:Rn,showTooltip:!0,tooltipPosition:"top",size:"compact",label:(0,na.__)("Cancel"),disabled:!!a,accessibleWhenDisabled:!1,onClick:()=>{s(Nd)}})]})]})}function Bb({selection:t,actions:e,onChangeSelection:r,data:o,getItemId:n,paginationInfo:i}){let[a,l]=(0,st.useState)(null),s=(0,st.useRef)(void 0),u=(0,Jl.useViewportMatch)("medium","<"),d=(0,st.useMemo)(()=>e.filter(v=>v.supportsBulk),[e]),p=(0,st.useMemo)(()=>o.filter(v=>d.some(_=>!_.isEligible||_.isEligible(v))),[o,d]),f=(0,st.useMemo)(()=>o.filter(v=>t.includes(n(v))&&p.includes(v)),[t,o,n,p]),m=(0,st.useMemo)(()=>e.filter(v=>v.supportsBulk&&(!u||v.icon)&&f.some(_=>!v.isEligible||v.isEligible(_))),[e,f,u]);if(a)s.current||(s.current=kd(o,e,n,t,m,f,a,l,r,i));else return s.current&&(s.current=void 0),kd(o,e,n,t,m,f,a,l,r,i);return s.current}function aa(){let{data:t,selection:e,actions:r=Nd,onChangeSelection:o,getItemId:n,paginationInfo:i}=(0,st.useContext)(G);return(0,We.jsx)(Bb,{selection:e,onChangeSelection:o,data:t,actions:r,getItemId:n,paginationInfo:i})}var xr=c(U(),1);var wr=c(q(),1),Xr=c(H(),1);function sa(t,e){let r=[t?.titleField,t?.mediaField,t?.descriptionField].filter(Boolean);return e.filter(o=>!r.includes(o.id)&&o.type!=="media"&&o.enableHiding!==!1)}var X=c(R(),1),{Menu:ce}=K(wr.privateApis);function jb({children:t}){return Xr.Children.toArray(t).filter(Boolean).map((e,r)=>(0,X.jsxs)(Xr.Fragment,{children:[r>0&&(0,X.jsx)(ce.Separator,{}),e]},r))}var Hb=(0,Xr.forwardRef)(function({fieldId:e,view:r,fields:o,onChangeView:n,onHide:i,setOpenedFilter:a,canMove:l=!0,canInsertLeft:s=!0,canInsertRight:u=!0},d){let p=r.fields??[],f=p?.indexOf(e),m=r.sort?.field===e,v=!1,_=!1,h=!1,x=[],y=o.find(E=>E.id===e),{setIsShowingFilter:S}=(0,Xr.useContext)(G);if(!y)return null;v=y.enableHiding!==!1,_=y.enableSorting!==!1;let V=y.header;if(x=!!y.filterBy&&y.filterBy?.operators||[],h=!r.filters?.some(E=>e===E.field)&&!!(y.hasElements||y.Edit)&&y.filterBy!==!1&&!y.filterBy?.isPrimary,!_&&!l&&!v&&!h)return V;let O=sa(r,o).filter(E=>!p.includes(E.id)),N=(s||u)&&!!O.length,D=(0,xr.isRTL)();return(0,X.jsxs)(ce,{children:[(0,X.jsxs)(ce.TriggerButton,{render:(0,X.jsx)(wr.Button,{size:"compact",className:"dataviews-view-table-header-button",ref:d,variant:"tertiary"}),children:[V,r.sort&&m&&(0,X.jsx)("span",{"aria-hidden":"true",children:vd[r.sort.direction]})]}),(0,X.jsx)(ce.Popover,{style:{minWidth:"240px"},children:(0,X.jsxs)(jb,{children:[_&&(0,X.jsx)(ce.Group,{children:Ji.map(E=>{let A=r.sort&&m&&r.sort.direction===E,k=`${e}-${E}`;return(0,X.jsx)(ce.RadioItem,{name:"view-table-sorting",value:k,checked:A,onChange:()=>{n({...r,sort:{field:e,direction:E},showLevels:!1})},children:(0,X.jsx)(ce.ItemLabel,{children:ta[E]})},k)})}),h&&(0,X.jsx)(ce.Group,{children:(0,X.jsx)(ce.Item,{prefix:(0,X.jsx)(wr.Icon,{icon:Vn}),onClick:()=>{a(e),S(!0),n({...r,page:1,filters:[...r.filters||[],{field:e,value:void 0,operator:x[0]}]})},children:(0,X.jsx)(ce.ItemLabel,{children:(0,xr.__)("Add filter")})})}),(l||v||N)&&y&&(0,X.jsxs)(ce.Group,{children:[l&&(0,X.jsx)(ce.Item,{prefix:(0,X.jsx)(wr.Icon,{icon:ol}),disabled:D?f>=p.length-1:f<1,onClick:()=>{let E=D?f+1:f-1,A=[...p];A.splice(f,1),A.splice(E,0,e),n({...r,fields:A})},children:(0,X.jsx)(ce.ItemLabel,{children:(0,xr.__)("Move left")})}),l&&(0,X.jsx)(ce.Item,{prefix:(0,X.jsx)(wr.Icon,{icon:il}),disabled:D?f<1:f>=p.length-1,onClick:()=>{let E=D?f-1:f+1,A=[...p];A.splice(f,1),A.splice(E,0,e),n({...r,fields:A})},children:(0,X.jsx)(ce.ItemLabel,{children:(0,xr.__)("Move right")})}),s&&!!O.length&&(0,X.jsxs)(ce,{children:[(0,X.jsx)(ce.SubmenuTriggerItem,{children:(0,X.jsx)(ce.ItemLabel,{children:(0,xr.__)("Insert left")})}),(0,X.jsx)(ce.Popover,{children:O.map(E=>{let A=D?f+1:f;return(0,X.jsx)(ce.Item,{onClick:()=>{n({...r,fields:[...p.slice(0,A),E.id,...p.slice(A)]})},children:(0,X.jsx)(ce.ItemLabel,{children:E.label})},E.id)})})]}),u&&!!O.length&&(0,X.jsxs)(ce,{children:[(0,X.jsx)(ce.SubmenuTriggerItem,{children:(0,X.jsx)(ce.ItemLabel,{children:(0,xr.__)("Insert right")})}),(0,X.jsx)(ce.Popover,{children:O.map(E=>{let A=D?f:f+1;return(0,X.jsx)(ce.Item,{onClick:()=>{n({...r,fields:[...p.slice(0,A),E.id,...p.slice(A)]})},children:(0,X.jsx)(ce.ItemLabel,{children:E.label})},E.id)})})]}),v&&y&&(0,X.jsx)(ce.Item,{prefix:(0,X.jsx)(wr.Icon,{icon:Dn}),onClick:()=>{i(y),n({...r,fields:p.filter(E=>E!==e)})},children:(0,X.jsx)(ce.ItemLabel,{children:(0,xr.__)("Hide column")})})]})]})})]})}),zb=Hb,Uo=zb;var Md=c(H(),1),eu=c(R(),1);function Wb({item:t,isItemClickable:e,onClickItem:r,className:o}){return!e(t)||!r?{className:o}:{className:o?`${o} ${o}--clickable`:void 0,role:"button",tabIndex:0,onClick:n=>{n.stopPropagation(),r(t)},onKeyDown:n=>{(n.key==="Enter"||n.key===""||n.key===" ")&&(n.stopPropagation(),r(t))}}}function Qr({item:t,isItemClickable:e,onClickItem:r,renderItemLink:o,className:n,children:i,...a}){if(!e(t))return(0,eu.jsx)("div",{className:n,...a,children:i});if(o){let s=o({item:t,className:`${n} ${n}--clickable`,...a,children:i});return(0,Md.cloneElement)(s,{onClick:u=>{u.stopPropagation(),s.props.onClick&&s.props.onClick(u)},onKeyDown:u=>{(u.key==="Enter"||u.key===""||u.key===" ")&&(u.stopPropagation(),s.props.onKeyDown&&s.props.onKeyDown(u))}})}let l=Wb({item:t,isItemClickable:e,onClickItem:r,className:n});return(0,eu.jsx)("div",{...l,...a,children:i})}var Jt=c(R(),1);function Gb({item:t,level:e,titleField:r,mediaField:o,descriptionField:n,onClickItem:i,renderItemLink:a,isItemClickable:l}){return(0,Jt.jsxs)(F,{direction:"row",gap:"md",align:"flex-start",justify:"flex-start",children:[o&&(0,Jt.jsx)(Qr,{item:t,isItemClickable:l,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-column-primary__media","aria-label":l(t)&&(i||a)&&r?r.getValue?.({item:t}):void 0,children:(0,Jt.jsx)(o.render,{item:t,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)(Qr,{item:t,isItemClickable:l,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-title-field",children:[e!==void 0&&e>0&&(0,Jt.jsxs)("span",{className:"dataviews-view-table__level",children:[Array(e).fill("\u2014").join(" "),"\xA0"]}),(0,Jt.jsx)(r.render,{item:t,field:r})]}),n&&(0,Jt.jsx)(n.render,{item:t,field:n})]})]})}var la=Gb;var Fd=c(_t(),1),$o=c(H(),1),Ld=c(U(),1),qb=t=>(0,Ld.isRTL)()?Math.abs(t.scrollLeft)<=1:t.scrollLeft+t.clientWidth>=t.scrollWidth-1;function Bd({scrollContainerRef:t,enabled:e=!1}){let[r,o]=(0,$o.useState)(!1),n=(0,Fd.useDebounce)((0,$o.useCallback)(()=>{let i=t.current;i&&o(qb(i))},[t,o]),200);return(0,$o.useEffect)(()=>typeof window>"u"||!e||!t.current?()=>{}:(n(),t.current.addEventListener("scroll",n),window.addEventListener("resize",n),()=>{t.current?.removeEventListener("scroll",n),window.removeEventListener("resize",n)}),[t,e]),r}function Mt(t,e){return t.reduce((r,o)=>{let n=e.getValue({item:o});return r.has(n)||r.set(n,[]),r.get(n)?.push(o),r},new Map)}var Jr=c(q(),1),Hd=c(U(),1),zd=c(H(),1);var At=c(R(),1);function jd({field:t,isVisible:e,onToggleVisibility:r}){return(0,At.jsx)(Jr.__experimentalItem,{onClick:t.enableHiding?r:void 0,children:(0,At.jsxs)(F,{direction:"row",gap:"sm",justify:"flex-start",align:"center",children:[(0,At.jsx)("div",{style:{height:24,width:24},children:e&&(0,At.jsx)(Jr.Icon,{icon:go})}),(0,At.jsx)("span",{className:"dataviews-view-config__label",children:t.label})]})})}function Yb(t){return!!t}function ua({showLabel:t=!0}){let{view:e,fields:r,onChangeView:o}=(0,zd.useContext)(G),n=sa(e,r);if(!n?.length)return null;let i=r.find(v=>v.id===e.titleField),a=r.find(v=>v.id===e.mediaField),l=r.find(v=>v.id===e.descriptionField),s=[{field:i,isVisibleFlag:"showTitle"},{field:a,isVisibleFlag:"showMedia"},{field:l,isVisibleFlag:"showDescription"}].filter(({field:v})=>Yb(v)),u=e.fields??[],d=n.filter(v=>u.includes(v.id)).length,p=s.filter(({isVisibleFlag:v})=>e[v]??!0),f=p.length+d,m=f===1&&p.length===1;return(0,At.jsxs)(F,{direction:"column",className:"dataviews-field-control",children:[t&&(0,At.jsx)(Jr.BaseControl.VisualLabel,{children:(0,Hd.__)("Properties")}),(0,At.jsx)(F,{direction:"column",className:"dataviews-view-config__properties",children:(0,At.jsxs)(Jr.__experimentalItemGroup,{isBordered:!0,isSeparated:!0,size:"medium",children:[s.map(({field:v,isVisibleFlag:_})=>{let h=e[_]??!0,x=m&&h?{...v,enableHiding:!1}:v;return(0,At.jsx)(jd,{field:x,isVisible:h,onToggleVisibility:()=>{o({...e,[_]:!h})}},v.id)}),n.map(v=>{let _=u.includes(v.id),h=f===1&&_?{...v,enableHiding:!1}:v;return(0,At.jsx)(jd,{field:h,isVisible:_,onToggleVisibility:()=>{o({...e,fields:_?u.filter(x=>x!==v.id):[...u,v.id]})}},v.id)})]})})]})}var ca=c(H(),1);function er(t,e={delay:400}){let[r,o]=(0,ca.useState)(!1);return(0,ca.useEffect)(()=>{if(!t)return;let n=setTimeout(()=>{o(!0)},e.delay);return()=>{clearTimeout(n),o(!1)}},[t,e.delay]),r}var $=c(R(),1);function Gd(t,e){if(t)return t;if(e==="integer"||e==="number")return"end"}function Ub({item:t,fields:e,column:r,align:o}){let n=e.find(a=>a.id===r);if(!n)return null;let i=z("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,$.jsx)("div",{className:i,children:(0,$.jsx)(n.render,{item:t,field:n})})}function Wd({hasBulkActions:t,item:e,level:r,actions:o,fields:n,id:i,view:a,titleField:l,mediaField:s,descriptionField:u,selection:d,getItemId:p,isItemClickable:f,onClickItem:m,renderItemLink:v,onChangeSelection:_,isActionsColumnSticky:h,posinset:x}){let{paginationInfo:y}=(0,St.useContext)(G),S=ia(o,e),V=S&&d.includes(i),{showTitle:O=!0,showMedia:N=!0,showDescription:D=!0,infiniteScrollEnabled:E}=a,A=(0,St.useRef)(!1),k=a.fields??[],b=l&&O||s&&N||u&&D;return(0,$.jsxs)("tr",{className:z("dataviews-view-table__row",{"is-selected":S&&V,"has-bulk-actions":S}),onTouchStart:()=>{A.current=!0},"aria-setsize":E?y.totalItems:void 0,"aria-posinset":x,role:E?"article":void 0,onMouseDown:P=>{let T=(0,tu.isAppleOS)()?P.metaKey:P.ctrlKey;P.button===0&&T&&window.navigator.userAgent.toLowerCase().includes("firefox")&&P?.preventDefault()},onClick:P=>{if(!S)return;((0,tu.isAppleOS)()?P.metaKey:P.ctrlKey)&&!A.current&&document.getSelection()?.type!=="Range"&&_(d.includes(i)?d.filter(g=>i!==g):[...d,i])},children:[t&&(0,$.jsx)("td",{className:"dataviews-view-table__checkbox-column",children:(0,$.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,$.jsx)(Kr,{item:e,selection:d,onChangeSelection:_,getItemId:p,titleField:l,disabled:!S})})}),b&&(0,$.jsx)("td",{children:(0,$.jsx)(la,{item:e,level:r,titleField:O?l:void 0,mediaField:N?s:void 0,descriptionField:D?u:void 0,isItemClickable:f,onClickItem:m,renderItemLink:v})}),k.map(P=>{let{width:T,maxWidth:g,minWidth:I,align:w}=a.layout?.styles?.[P]??{},C=n.find(j=>j.id===P),M=Gd(w,C?.type);return(0,$.jsx)("td",{style:{width:T,maxWidth:g,minWidth:I},children:(0,$.jsx)(Ub,{fields:n,item:e,column:P,align:M})},P)}),!!o?.length&&(0,$.jsx)("td",{className:z("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":h}),onClick:P=>P.stopPropagation(),children:(0,$.jsx)(Go,{item:e,actions:o})})]})}function $b({actions:t,data:e,fields:r,getItemId:o,getItemLevel:n,isLoading:i=!1,onChangeView:a,onChangeSelection:l,selection:s,setOpenedFilter:u,onClickItem:d,isItemClickable:p,renderItemLink:f,view:m,className:v,empty:_}){let{containerRef:h}=(0,St.useContext)(G),x=er(i),y=(0,St.useRef)(new Map),S=(0,St.useRef)(void 0),[V,O]=(0,St.useState)(),[N,D]=(0,St.useState)(null);(0,St.useEffect)(()=>{S.current&&(S.current.focus(),S.current=void 0)});let E=(0,St.useId)(),A=Bd({scrollContainerRef:h,enabled:!!t?.length}),k=Yo(t,e);if(V){S.current=V,O(void 0);return}let b=Y=>{let Q=y.current.get(Y.id),he=Q?y.current.get(Q.fallback):void 0;O(he?.node)},P=Y=>{Y.preventDefault(),Y.stopPropagation();let Q={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(Q)})},T=!!e?.length,g=r.find(Y=>Y.id===m.titleField),I=r.find(Y=>Y.id===m.mediaField),w=r.find(Y=>Y.id===m.descriptionField),C=m.groupBy?.field?r.find(Y=>Y.id===m.groupBy?.field):null,M=C?Mt(e,C):null,{showTitle:j=!0,showMedia:ae=!0,showDescription:ye=!0}=m,De=g&&j||I&&ae||w&&ye,je=m.fields??[],ot=(Y,Q)=>he=>{he?y.current.set(Y,{node:he,fallback:je[Q>0?Q-1:1]}):y.current.delete(Y)},Kt=m.infiniteScrollEnabled&&!M,vr=(0,xo.isRTL)();return T?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)("table",{className:z("dataviews-view-table",v,{[`has-${m.layout?.density}-density`]:m.layout?.density&&["compact","comfortable"].includes(m.layout.density),"has-bulk-actions":k,"is-refreshing":!Kt&&x}),"aria-busy":i,"aria-describedby":E,role:Kt?"feed":void 0,inert:!Kt&&i?"true":void 0,children:[(0,$.jsxs)("colgroup",{children:[k&&(0,$.jsx)("col",{className:"dataviews-view-table__col-checkbox"}),De&&(0,$.jsx)("col",{className:"dataviews-view-table__col-first-data"}),je.map((Y,Q)=>(0,$.jsx)("col",{className:z(`dataviews-view-table__col-${Y}`,{"dataviews-view-table__col-first-data":!De&&Q===0})},`col-${Y}`)),!!t?.length&&(0,$.jsx)("col",{className:"dataviews-view-table__col-actions"})]}),N&&(0,$.jsx)(da.Popover,{anchor:N,onClose:()=>D(null),placement:"bottom-start",children:(0,$.jsx)(ua,{showLabel:!1})}),(0,$.jsx)("thead",{onContextMenu:P,children:(0,$.jsxs)("tr",{className:"dataviews-view-table__row",children:[k&&(0,$.jsx)("th",{className:"dataviews-view-table__checkbox-column",scope:"col",onContextMenu:P,children:(0,$.jsx)(Nn,{selection:s,onChangeSelection:l,data:e,actions:t,getItemId:o})}),De&&(0,$.jsx)("th",{scope:"col",children:g&&(0,$.jsx)(Uo,{ref:ot(g.id,0),fieldId:g.id,view:m,fields:r,onChangeView:a,onHide:b,setOpenedFilter:u,canMove:!1,canInsertLeft:vr?m.layout?.enableMoving??!0:!1,canInsertRight:vr?!1:m.layout?.enableMoving??!0})}),je.map((Y,Q)=>{let{width:he,maxWidth:gr,minWidth:hr,align:mo}=m.layout?.styles?.[Y]??{},po=r.find(js=>js.id===Y),Bo=Gd(mo,po?.type),Pn=m.layout?.enableMoving??!0;return(0,$.jsx)("th",{style:{width:he,maxWidth:gr,minWidth:hr,textAlign:Bo},"aria-sort":m.sort?.direction&&m.sort?.field===Y?ea[m.sort.direction]:void 0,scope:"col",children:(0,$.jsx)(Uo,{ref:ot(Y,Q),fieldId:Y,view:m,fields:r,onChangeView:a,onHide:b,setOpenedFilter:u,canMove:Pn,canInsertLeft:Pn,canInsertRight:Pn})},Y)}),!!t?.length&&(0,$.jsx)("th",{className:z("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":!A}),children:(0,$.jsx)("span",{className:"dataviews-view-table-header",children:(0,xo.__)("Actions")})})]})}),T&&C&&M?Array.from(M.entries()).map(([Y,Q])=>(0,$.jsxs)("tbody",{children:[(0,$.jsx)("tr",{className:"dataviews-view-table__group-header-row",children:(0,$.jsx)("td",{colSpan:je.length+(De?1:0)+(k?1:0)+(t?.length?1:0),className:"dataviews-view-table__group-header-cell",children:m.groupBy?.showLabel===!1?Y:(0,xo.sprintf)((0,xo.__)("%1$s: %2$s"),C.label,Y)})}),Q.map((he,gr)=>(0,$.jsx)(Wd,{item:he,level:m.showLevels&&typeof n=="function"?n(he):void 0,hasBulkActions:k,actions:t,fields:r,id:o(he)||gr.toString(),view:m,titleField:g,mediaField:I,descriptionField:w,selection:s,getItemId:o,onChangeSelection:l,onClickItem:d,renderItemLink:f,isItemClickable:p,isActionsColumnSticky:!A},o(he)))]},`group-${Y}`)):(0,$.jsx)("tbody",{children:T&&e.map((Y,Q)=>(0,$.jsx)(Wd,{item:Y,level:m.showLevels&&typeof n=="function"?n(Y):void 0,hasBulkActions:k,actions:t,fields:r,id:o(Y)||Q.toString(),view:m,titleField:g,mediaField:I,descriptionField:w,selection:s,getItemId:o,onChangeSelection:l,onClickItem:d,renderItemLink:f,isItemClickable:p,isActionsColumnSticky:!A,posinset:Kt?Q+1:void 0},o(Y)))})]}),Kt&&i&&(0,$.jsx)("div",{className:"dataviews-loading",id:E,children:(0,$.jsx)("p",{className:"dataviews-loading-more",children:(0,$.jsx)(da.Spinner,{})})})]}):(0,$.jsx)("div",{className:z("dataviews-no-results",{"is-refreshing":x}),id:E,children:_})}var qd=$b;var Kd=c(q(),1),pa=c(U(),1);var Ot=c(q(),1);var Mn=c(U(),1),Ud=c(_t(),1),$d=c(Kl(),1),ma=c(H(),1);var Kb=c(q(),1),Zb=c(U(),1),fa=c(H(),1);var Xb=c(R(),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 Yd(){let t=(0,fa.useContext)(G),e=t.view;return(0,fa.useMemo)(()=>{let r=t.containerWidth,o=32,n=e.layout?.previewSize??Jb,i=Math.floor((r+o)/(n+o));return Math.max(1,i)},[t.containerWidth,e.layout?.previewSize])}var ne=c(R(),1),{Badge:e0}=K(Ot.privateApis);function t0(t,e){let r=[];for(let o=0,n=t.length;o{if(x.onClickCapture?.(w),(0,$d.isAppleOS)()?w.metaKey:w.ctrlKey){if(w.stopPropagation(),w.preventDefault(),!N)return;o(r.includes(D)?r.filter(C=>D!==C):[...r,D])}},children:[(0,ne.jsx)(Qr,{item:s,isItemClickable:i,onClickItem:n,renderItemLink:a,className:z("dataviews-view-grid__media",{"dataviews-view-grid__media--placeholder":!b}),...g,children:P}),_&&(0,ne.jsx)(Kr,{item:s,selection:r,onChangeSelection:o,getItemId:l,titleField:p,disabled:!N}),!!u?.length&&(0,ne.jsx)("div",{className:"dataviews-view-grid__media-actions",children:(0,ne.jsx)(Go,{item:s,actions:u,isCompact:!0})}),S&&(0,ne.jsx)("div",{className:"dataviews-view-grid__title",children:(0,ne.jsx)(Qr,{item:s,isItemClickable:i,onClickItem:n,renderItemLink:a,className:"dataviews-view-grid__title-field dataviews-title-field",...I,title:p?.getValueFormatted({item:s,field:p})||void 0,children:T})}),(0,ne.jsxs)(F,{direction:"column",gap:"xs",children:[O&&f?.render&&(0,ne.jsx)(f.render,{item:s,field:f}),!!v?.length&&(0,ne.jsx)(F,{direction:"row",className:"dataviews-view-grid__badge-fields",gap:"sm",wrap:"wrap",align:"top",justify:"flex-start",children:v.map(w=>(0,ne.jsx)(e0,{className:"dataviews-view-grid__field-value",children:(0,ne.jsx)(w.render,{item:s,field:w})},w.id))}),!!m?.length&&(0,ne.jsx)(F,{direction:"column",className:"dataviews-view-grid__fields",gap:"xs",children:m.map(w=>(0,ne.jsx)(Ot.Flex,{className:"dataviews-view-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,ne.jsxs)(ne.Fragment,{children:[(0,ne.jsx)(Ot.Tooltip,{text:w.label,children:(0,ne.jsx)(Ot.FlexItem,{className:"dataviews-view-grid__field-name",children:w.header})}),(0,ne.jsx)(Ot.FlexItem,{className:"dataviews-view-grid__field-value",style:{maxHeight:"none"},children:(0,ne.jsx)(w.render,{item:s,field:w})})]})},w.id))})]})]})});function ru({data:t,isInfiniteScroll:e,className:r,inert:o,isLoading:n,view:i,fields:a,selection:l,onChangeSelection:s,onClickItem:u,isItemClickable:d,renderItemLink:p,getItemId:f,actions:m}){let{paginationInfo:v,resizeObserverRef:_}=(0,ma.useContext)(G),h=Yd(),x=Yo(m,t),y=a.find(k=>k.id===i?.titleField),S=a.find(k=>k.id===i?.mediaField),V=a.find(k=>k.id===i?.descriptionField),O=i.fields??[],{regularFields:N,badgeFields:D}=O.reduce((k,b)=>{let P=a.find(g=>g.id===b);if(!P)return k;let T=i.layout?.badgeFields?.includes(b)?"badgeFields":"regularFields";return k[T].push(P),k},{regularFields:[],badgeFields:[]}),E="900px",A=Math.ceil(t.length/h);return(0,ne.jsx)(Ot.Composite,{role:e?"feed":"grid",className:z("dataviews-view-grid",r),focusWrap:!0,"aria-busy":n,"aria-rowcount":e?void 0:A,ref:_,inert:o,children:t0(t,h).map((k,b)=>(0,ne.jsx)(Ot.Composite.Row,{render:(0,ne.jsx)("div",{role:"row","aria-rowindex":b+1,"aria-label":(0,Mn.sprintf)((0,Mn.__)("Row %d"),b+1),className:"dataviews-view-grid__row",style:{gridTemplateColumns:`repeat( ${h}, minmax(0, 1fr) )`}}),children:k.map((P,T)=>{let g=b*h+T;return(0,ne.jsx)(Ot.Composite.Item,{render:I=>(0,ne.jsx)(r0,{...I,role:e?"article":"gridcell","aria-setsize":e?v.totalItems:void 0,"aria-posinset":e?g+1:void 0,view:i,selection:l,onChangeSelection:s,onClickItem:u,isItemClickable:d,renderItemLink:p,getItemId:f,item:P,actions:m,mediaField:S,titleField:y,descriptionField:V,regularFields:N,badgeFields:D,hasBulkActions:x,config:{sizes:E}})},f(P))})},b))})}var It=c(R(),1);function o0({actions:t,data:e,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,onClickItem:a,isItemClickable:l,renderItemLink:s,selection:u,view:d,className:p,empty:f}){let m=er(!!n),v=!!e?.length,_=d.groupBy?.field?r.find(S=>S.id===d.groupBy?.field):null,h=_?Mt(e,_):null,x=d.infiniteScrollEnabled&&!h;if(!v)return(0,It.jsx)("div",{className:z("dataviews-no-results",{"is-refreshing":m}),children:f});let y={className:z(p,{"is-refreshing":!x&&m}),inert:!x&&n?"true":void 0,isLoading:n,view:d,fields:r,selection:u,onChangeSelection:i,onClickItem:a,isItemClickable:l,renderItemLink:s,getItemId:o,actions:t};return(0,It.jsxs)(It.Fragment,{children:[v&&_&&h&&(0,It.jsx)(F,{direction:"column",gap:"lg",children:Array.from(h.entries()).map(([S,V])=>(0,It.jsxs)(F,{direction:"column",gap:"sm",children:[(0,It.jsx)("h3",{className:"dataviews-view-grid__group-header",children:d.groupBy?.showLabel===!1?S:(0,pa.sprintf)((0,pa.__)("%1$s: %2$s"),_.label,S)}),(0,It.jsx)(ru,{...y,data:V,isInfiniteScroll:!1})]},S))}),!h&&(0,It.jsx)(ru,{...y,data:e,isInfiniteScroll:!!x}),x&&n&&(0,It.jsx)("p",{className:"dataviews-loading-more",children:(0,It.jsx)(Kd.Spinner,{})})]})}var Zd=o0;var va=c(_t(),1),Ue=c(q(),1),Be=c(H(),1),Fn=c(U(),1);var au=c(Wt(),1);var W=c(R(),1),{Menu:ou}=K(Ue.privateApis);function nu(t){return`${t}-item-wrapper`}function n0(t,e){return`${t}-primary-action-${e}`}function iu(t){return`${t}-dropdown`}function i0({idPrefix:t,primaryAction:e,item:r}){let o=(0,au.useRegistry)(),[n,i]=(0,Be.useState)(!1),a=n0(t,e.id),l=typeof e.label=="string"?e.label:e.label([r]);return"RenderModal"in e?(0,W.jsx)("div",{role:"gridcell",children:(0,W.jsx)(Ue.Composite.Item,{id:a,render:(0,W.jsx)(Ue.Button,{disabled:!!e.disabled,accessibleWhenDisabled:!0,text:l,size:"small",onClick:()=>i(!0)}),children:n&&(0,W.jsx)(bo,{action:e,items:[r],closeModal:()=>i(!1)})})},e.id):(0,W.jsx)("div",{role:"gridcell",children:(0,W.jsx)(Ue.Composite.Item,{id:a,render:(0,W.jsx)(Ue.Button,{disabled:!!e.disabled,accessibleWhenDisabled:!0,size:"small",onClick:()=>{e.callback([r],{registry:o})},children:l})})},e.id)}function Xd({view:t,actions:e,idPrefix:r,isSelected:o,item:n,titleField:i,mediaField:a,descriptionField:l,onSelect:s,otherFields:u,onDropdownTriggerKeyDown:d,posinset:p}){let{showTitle:f=!0,showMedia:m=!0,showDescription:v=!0,infiniteScrollEnabled:_}=t,h=(0,Be.useRef)(null),x=`${r}-label`,y=`${r}-description`,S=(0,au.useRegistry)(),[V,O]=(0,Be.useState)(!1),[N,D]=(0,Be.useState)(null),E=({type:w})=>{O(w==="mouseenter")},{paginationInfo:A}=(0,Be.useContext)(G);(0,Be.useEffect)(()=>{o&&h.current?.scrollIntoView({behavior:"auto",block:"nearest",inline:"nearest"})},[o]);let{primaryAction:k,eligibleActions:b}=(0,Be.useMemo)(()=>{let w=e.filter(M=>!M.isEligible||M.isEligible(n));return{primaryAction:w.filter(M=>M.isPrimary)[0],eligibleActions:w}},[e,n]),P=k&&e.length===1,T=m&&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=f&&i?.render?(0,W.jsx)(i.render,{item:n,field:i}):null,I=b?.length>0&&(0,W.jsxs)(F,{direction:"row",gap:"md",className:"dataviews-view-list__item-actions",children:[k&&(0,W.jsx)(i0,{idPrefix:r,primaryAction:k,item:n}),!P&&(0,W.jsxs)("div",{role:"gridcell",children:[(0,W.jsxs)(ou,{placement:"bottom-end",children:[(0,W.jsx)(ou.TriggerButton,{render:(0,W.jsx)(Ue.Composite.Item,{id:iu(r),render:(0,W.jsx)(Ue.Button,{size:"small",icon:kn,label:(0,Fn.__)("Actions"),accessibleWhenDisabled:!0,disabled:!e.length,onKeyDown:d})})}),(0,W.jsx)(ou.Popover,{children:(0,W.jsx)(Xl,{actions:b,item:n,registry:S,setActiveModalAction:D})})]}),!!N&&(0,W.jsx)(bo,{action:N,items:[n],closeModal:()=>D(null)})]})]});return(0,W.jsx)(Ue.Composite.Row,{ref:h,render:(0,W.jsx)("div",{"aria-posinset":p,"aria-setsize":_?A.totalItems:void 0}),role:_?"article":"row",className:z({"is-selected":o,"is-hovered":V}),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)(Ue.Composite.Item,{id:nu(r),"aria-pressed":o,"aria-labelledby":x,"aria-describedby":y,className:"dataviews-view-list__item",onClick:()=>s(n)})}),(0,W.jsxs)(F,{direction:"row",gap:"md",justify:"start",align:"flex-start",style:{flex:1,minWidth:0},children:[T,(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:x,children:g}),I]}),v&&l?.render&&(0,W.jsx)("div",{className:"dataviews-view-list__field",children:(0,W.jsx)(l.render,{item:n,field:l})}),(0,W.jsx)("div",{className:"dataviews-view-list__fields",id:y,children:u.map(w=>(0,W.jsxs)("div",{className:"dataviews-view-list__field",children:[(0,W.jsx)(Ue.VisuallyHidden,{as:"span",className:"dataviews-view-list__field-label",children:w.label}),(0,W.jsx)("span",{className:"dataviews-view-list__field-value",children:(0,W.jsx)(w.render,{item:n,field:w})})]},w.id))})]})]})]})})}function a0(t){return!!t}function su(t){let{actions:e,data:r,fields:o,getItemId:n,isLoading:i,onChangeSelection:a,selection:l,view:s,className:u,empty:d}=t,p=(0,va.useInstanceId)(su,"view-list"),f=er(!!i),m=r?.findLast(w=>l.includes(n(w))),v=o.find(w=>w.id===s.titleField),_=o.find(w=>w.id===s.mediaField),h=o.find(w=>w.id===s.descriptionField),x=(s?.fields??[]).map(w=>o.find(C=>w===C.id)).filter(a0),y=w=>a([n(w)]),S=(0,Be.useCallback)(w=>`${p}-${n(w)}`,[p,n]),V=(0,Be.useCallback)((w,C)=>C.startsWith(S(w)),[S]),[O,N]=(0,Be.useState)(void 0);(0,Be.useEffect)(()=>{m&&N(nu(S(m)))},[m,S]);let D=r.findIndex(w=>V(w,O??"")),E=(0,va.usePrevious)(D),A=D!==-1,k=(0,Be.useCallback)((w,C)=>{let M=Math.min(r.length-1,Math.max(0,w));if(!r[M])return;let j=S(r[M]),ae=C(j);N(ae),document.getElementById(ae)?.focus()},[r,S]);(0,Be.useEffect)(()=>{!A&&(E!==void 0&&E!==-1)&&k(E,nu)},[A,k,E]);let b=(0,Be.useCallback)(w=>{w.key==="ArrowDown"&&(w.preventDefault(),k(D+1,iu)),w.key==="ArrowUp"&&(w.preventDefault(),k(D-1,iu))},[k,D]),P=!!r?.length,T=s.groupBy?.field?o.find(w=>w.id===s.groupBy?.field):null,g=P&&T?Mt(r,T):null,I=s.infiniteScrollEnabled&&!g;return P?P&&T&&g?(0,W.jsx)(Ue.Composite,{id:`${p}`,render:(0,W.jsx)("div",{}),className:"dataviews-view-list__group",role:"grid",activeId:O,setActiveId:N,children:(0,W.jsx)(F,{direction:"column",gap:"lg",className:z("dataviews-view-list",u),children:Array.from(g.entries()).map(([w,C])=>(0,W.jsxs)(F,{direction:"column",gap:"sm",children:[(0,W.jsx)("h3",{className:"dataviews-view-list__group-header",children:s.groupBy?.showLabel===!1?w:(0,Fn.sprintf)((0,Fn.__)("%1$s: %2$s"),T.label,w)}),C.map(M=>{let j=S(M);return(0,W.jsx)(Xd,{view:s,idPrefix:j,actions:e,item:M,isSelected:M===m,onSelect:y,mediaField:_,titleField:v,descriptionField:h,otherFields:x,onDropdownTriggerKeyDown:b},j)})]},w))})}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Ue.Composite,{id:p,render:(0,W.jsx)("div",{}),className:z("dataviews-view-list",u,{[`has-${s.layout?.density}-density`]:s.layout?.density&&["compact","comfortable"].includes(s.layout.density),"is-refreshing":!I&&f}),role:s.infiniteScrollEnabled?"feed":"grid",activeId:O,setActiveId:N,inert:!I&&i?"true":void 0,children:r.map((w,C)=>{let M=S(w);return(0,W.jsx)(Xd,{view:s,idPrefix:M,actions:e,item:w,isSelected:w===m,onSelect:y,mediaField:_,titleField:v,descriptionField:h,otherFields:x,onDropdownTriggerKeyDown:b,posinset:s.infiniteScrollEnabled?C+1:void 0},M)})}),I&&i&&(0,W.jsx)("p",{className:"dataviews-loading-more",children:(0,W.jsx)(Ue.Spinner,{})})]}):(0,W.jsx)("div",{className:z("dataviews-no-results",{"is-refreshing":f}),children:d})}var af=c(q(),1);var ga=c(U(),1),Qd=c(H(),1);var Ko=c(R(),1);function Jd({groupName:t,groupData:e,groupField:r,showLabel:o=!0,children:n}){let i=o?(0,Qd.createInterpolateElement)((0,ga.sprintf)((0,ga.__)("%s: "),r.label).trim(),{groupName:(0,Ko.jsx)(r.render,{item:e[0],field:r})}):(0,Ko.jsx)(r.render,{item:e[0],field:r});return(0,Ko.jsxs)(F,{direction:"column",className:"dataviews-view-activity__group",children:[(0,Ko.jsx)("h3",{className:"dataviews-view-activity__group-header",children:i}),n]},t)}var ef=c(q(),1),wo=c(H(),1),tf=c(Wt(),1),rf=c(_t(),1);var Ne=c(R(),1);function s0(t){let{view:e,actions:r,item:o,titleField:n,mediaField:i,descriptionField:a,otherFields:l,posinset:s,onClickItem:u,renderItemLink:d,isItemClickable:p}=t,{showTitle:f=!0,showMedia:m=!0,showDescription:v=!0,infiniteScrollEnabled:_}=e,h=(0,wo.useRef)(null),x=(0,tf.useRegistry)(),{paginationInfo:y}=(0,wo.useContext)(G),{primaryActions:S,eligibleActions:V}=(0,wo.useMemo)(()=>{let b=r.filter(T=>!T.isEligible||T.isEligible(o));return{primaryActions:b.filter(T=>T.isPrimary),eligibleActions:b}},[r,o]),O=(0,rf.useViewportMatch)("medium","<"),N=e.layout?.density??"balanced",D=m&&N!=="compact"&&i?.render?(0,Ne.jsx)(i.render,{item:o,field:i,config:{sizes:N==="comfortable"?"32px":"24px"}}):null,E=(0,Ne.jsx)("div",{className:"dataviews-view-activity__item-type-icon",children:D||(0,Ne.jsx)("span",{className:"dataviews-view-activity__item-bullet","aria-hidden":"true"})}),A=f&&n?.render?(0,Ne.jsx)(n.render,{item:o,field:n}):null,k=(0,wo.useMemo)(()=>N==="comfortable"?"md":"sm",[N]);return(0,Ne.jsx)("div",{ref:h,role:_?"article":void 0,"aria-posinset":s,"aria-setsize":_?y.totalItems:void 0,className:z("dataviews-view-activity__item",N==="compact"&&"is-compact",N==="balanced"&&"is-balanced",N==="comfortable"&&"is-comfortable"),children:(0,Ne.jsxs)(F,{direction:"row",gap:"lg",justify:"start",align:"flex-start",children:[(0,Ne.jsx)(F,{direction:"column",gap:"xs",align:"center",className:"dataviews-view-activity__item-type",children:E}),(0,Ne.jsxs)(F,{direction:"column",gap:k,align:"flex-start",className:"dataviews-view-activity__item-content",children:[A&&(0,Ne.jsx)(Qr,{item:o,isItemClickable:p,onClickItem:u,renderItemLink:d,className:"dataviews-view-activity__item-title",children:A}),v&&a&&(0,Ne.jsx)("div",{className:"dataviews-view-activity__item-description",children:(0,Ne.jsx)(a.render,{item:o,field:a})}),(0,Ne.jsx)("div",{className:"dataviews-view-activity__item-fields",children:l.map(b=>(0,Ne.jsxs)("div",{className:"dataviews-view-activity__item-field",children:[(0,Ne.jsx)(ef.VisuallyHidden,{as:"span",className:"dataviews-view-activity__item-field-label",children:b.label}),(0,Ne.jsx)("span",{className:"dataviews-view-activity__item-field-value",children:(0,Ne.jsx)(b.render,{item:o,field:b})})]},b.id))}),!!S?.length&&(0,Ne.jsx)(Ql,{item:o,actions:S,registry:x,buttonVariant:"secondary"})]}),(S.length0)&&(0,Ne.jsx)("div",{className:"dataviews-view-activity__item-actions",children:(0,Ne.jsx)(Go,{item:o,actions:V,isCompact:!0})})]})})}var of=s0;var nf=c(le(),1);function l0(t){return!!t}function lu(t){let{data:e,fields:r,getItemId:o,view:n}=t,i=r.find(u=>u.id===n.titleField),a=r.find(u=>u.id===n.mediaField),l=r.find(u=>u.id===n.descriptionField),s=(n?.fields??[]).map(u=>r.find(d=>u===d.id)).filter(l0);return e.map((u,d)=>(0,nf.createElement)(of,{...t,key:o(u),item:u,mediaField:a,titleField:i,descriptionField:l,otherFields:s,posinset:n.infiniteScrollEnabled?d+1:void 0}))}var Rt=c(R(),1);function sf(t){let{empty:e,data:r,fields:o,isLoading:n,view:i,className:a}=t,l=er(!!n),s=!!r?.length,u=i.groupBy?.field?o.find(_=>_.id===i.groupBy?.field):null,d=s&&u?Mt(r,u):null,p=i.infiniteScrollEnabled&&!d;if(!s)return(0,Rt.jsx)("div",{className:z("dataviews-no-results",{"is-refreshing":l}),children:e});let f=!p&&!!n,m=z("dataviews-view-activity",a,{"is-refreshing":!p&&l}),v=d?Array.from(d.entries()):[];return s&&u&&d?(0,Rt.jsx)(F,{direction:"column",gap:"sm",className:m,inert:f?"true":void 0,children:v.map(([_,h])=>(0,Rt.jsx)(Jd,{groupName:_,groupData:h,groupField:u,showLabel:i.groupBy?.showLabel!==!1,children:(0,Rt.jsx)(lu,{...t,data:h})},_))}):(0,Rt.jsxs)(Rt.Fragment,{children:[(0,Rt.jsx)("div",{className:m,role:i.infiniteScrollEnabled?"feed":void 0,inert:f?"true":void 0,children:(0,Rt.jsx)(lu,{...t})}),p&&n&&(0,Rt.jsx)("p",{className:"dataviews-loading-more",children:(0,Rt.jsx)(af.Spinner,{})})]})}var Ct=c(q(),1),Bn=c(U(),1),pf=c(_t(),1),vf=c(H(),1);var uf=c(q(),1),u0=c(Wt(),1),ha=c(H(),1);var c0=c(U(),1);var Ln=c(q(),1),Zo=c(H(),1),Vt=c(U(),1);var _r=c(R(),1);function uu(){let{view:t,onChangeView:e,paginationInfo:{totalItems:r=0,totalPages:o}}=(0,Zo.useContext)(G);if(!r||!o||t.infiniteScrollEnabled)return null;let n=t.page??1,i=Array.from(Array(o)).map((a,l)=>{let s=l+1;return{value:s.toString(),label:s.toString(),"aria-label":n===s?(0,Vt.sprintf)((0,Vt.__)("Page %1$d of %2$d"),n,o):s.toString()}});return!!r&&o!==1&&(0,_r.jsxs)(F,{direction:"row",className:"dataviews-pagination",justify:"end",align:"center",gap:"xl",children:[(0,_r.jsx)(F,{direction:"row",justify:"flex-start",align:"center",gap:"xs",className:"dataviews-pagination__page-select",children:(0,Zo.createInterpolateElement)((0,Vt.sprintf)((0,Vt._x)("
Page
%1$s
of %2$d
","paging"),"",o),{div:(0,_r.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,_r.jsx)(Ln.SelectControl,{"aria-label":(0,Vt.__)("Current page"),value:n.toString(),options:i,onChange:a=>{e({...t,page:+a})},size:"small",variant:"minimal"})})}),(0,_r.jsxs)(F,{direction:"row",gap:"xs",align:"center",children:[(0,_r.jsx)(Ln.Button,{onClick:()=>e({...t,page:n-1}),disabled:n===1,accessibleWhenDisabled:!0,label:(0,Vt.__)("Previous page"),icon:(0,Vt.isRTL)()?Gi:Yi,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,_r.jsx)(Ln.Button,{onClick:()=>e({...t,page:n+1}),disabled:n>=o,accessibleWhenDisabled:!0,label:(0,Vt.__)("Next page"),icon:(0,Vt.isRTL)()?Yi:Gi,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})}var lf=(0,Zo.memo)(uu);var cf=c(R(),1);function ba(t){return(0,ha.useMemo)(()=>t?.every(e=>e.supportsBulk),[t])}var df=c(H(),1);var ff=c(R(),1),cu=(0,df.forwardRef)(({className:t,previewSize:e,...r},o)=>(0,ff.jsx)("div",{ref:o,className:z("dataviews-view-grid-items",t),style:{gridTemplateColumns:e&&`repeat(auto-fill, minmax(${e}px, 1fr))`},...r}));var Z=c(R(),1),{Badge:d0}=K(Ct.privateApis);function mf({view:t,multiselect:e,selection:r,onChangeSelection:o,getItemId:n,item:i,mediaField:a,titleField:l,descriptionField:s,regularFields:u,badgeFields:d,config:p,posinset:f,setsize:m}){let{showTitle:v=!0,showMedia:_=!0,showDescription:h=!0}=t,x=n(i),y=r.includes(x),S=a?.render?(0,Z.jsx)(a.render,{item:i,field:a,config:p}):null,V=v&&l?.render?(0,Z.jsx)(l.render,{item:i,field:l}):null;return(0,Z.jsxs)(Ct.Composite.Item,{"aria-label":l?l.getValue({item:i})||(0,Bn.__)("(no title)"):void 0,render:({children:O,...N})=>(0,Z.jsx)(F,{direction:"column",children:O,...N}),role:"option","aria-posinset":f,"aria-setsize":m,className:z("dataviews-view-picker-grid__card",{"is-selected":y}),"aria-selected":y,onClick:()=>{if(y)o(r.filter(O=>x!==O));else{let O=e?[...r,x]:[x];o(O)}},children:[_&&S&&(0,Z.jsx)("div",{className:"dataviews-view-picker-grid__media",children:S}),_&&S&&(0,Z.jsx)(Kr,{item:i,selection:r,onChangeSelection:o,getItemId:n,titleField:l,disabled:!1,"aria-hidden":!0,tabIndex:-1}),v&&(0,Z.jsx)(F,{direction:"row",justify:"space-between",className:"dataviews-view-picker-grid__title-actions",children:(0,Z.jsx)("div",{className:"dataviews-view-picker-grid__title-field dataviews-title-field",children:V})}),(0,Z.jsxs)(F,{direction:"column",gap:"xs",children:[h&&s?.render&&(0,Z.jsx)(s.render,{item:i,field:s}),!!d?.length&&(0,Z.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,Z.jsx)(d0,{className:"dataviews-view-picker-grid__field-value",children:(0,Z.jsx)(O.render,{item:i,field:O})},O.id))}),!!u?.length&&(0,Z.jsx)(F,{direction:"column",className:"dataviews-view-picker-grid__fields",gap:"xs",children:u.map(O=>(0,Z.jsx)(Ct.Flex,{className:"dataviews-view-picker-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(Ct.FlexItem,{className:"dataviews-view-picker-grid__field-name",children:O.header}),(0,Z.jsx)(Ct.FlexItem,{className:"dataviews-view-picker-grid__field-value",style:{maxHeight:"none"},children:(0,Z.jsx)(O.render,{item:i,field:O})})]})},O.id))})]})]},x)}function gf({groupName:t,groupField:e,showLabel:r=!0,children:o}){let n=(0,pf.useInstanceId)(gf,"dataviews-view-picker-grid-group__header");return(0,Z.jsxs)(F,{direction:"column",gap:"sm",role:"group","aria-labelledby":n,children:[(0,Z.jsx)("h3",{className:"dataviews-view-picker-grid-group__header",id:n,children:r?(0,Bn.sprintf)((0,Bn.__)("%1$s: %2$s"),e.label,t):t}),o]},t)}function f0({actions:t,data:e,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,selection:a,view:l,className:s,empty:u}){let{resizeObserverRef:d,paginationInfo:p,itemListLabel:f}=(0,vf.useContext)(G),m=r.find(T=>T.id===l?.titleField),v=r.find(T=>T.id===l?.mediaField),_=r.find(T=>T.id===l?.descriptionField),h=l.fields??[],{regularFields:x,badgeFields:y}=h.reduce((T,g)=>{let I=r.find(C=>C.id===g);if(!I)return T;let w=l.layout?.badgeFields?.includes(g)?"badgeFields":"regularFields";return T[w].push(I),T},{regularFields:[],badgeFields:[]}),S=!!e?.length,V=l.layout?.previewSize,O=ba(t),N="900px",D=l.groupBy?.field?r.find(T=>T.id===l.groupBy?.field):null,E=D?Mt(e,D):null,A=l.infiniteScrollEnabled&&!E,k=l?.page??1,b=l?.perPage??0,P=A?p?.totalItems:void 0;return(0,Z.jsxs)(Z.Fragment,{children:[S&&D&&E&&(0,Z.jsx)(Ct.Composite,{virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":O,className:z("dataviews-view-picker-grid",s),"aria-label":f,render:({children:T,...g})=>(0,Z.jsx)(F,{direction:"column",gap:"lg",children:T,...g}),children:Array.from(E.entries()).map(([T,g])=>(0,Z.jsx)(gf,{groupName:T,groupField:D,showLabel:l.groupBy?.showLabel!==!1,children:(0,Z.jsx)(cu,{previewSize:V,style:{gridTemplateColumns:V&&`repeat(auto-fill, minmax(${V}px, 1fr))`},"aria-busy":n,ref:d,children:g.map(I=>{let w=(k-1)*b+e.indexOf(I)+1;return(0,Z.jsx)(mf,{view:l,multiselect:O,selection:a,onChangeSelection:i,getItemId:o,item:I,mediaField:v,titleField:m,descriptionField:_,regularFields:x,badgeFields:y,config:{sizes:N},posinset:w,setsize:P},o(I))})})},T))}),S&&!E&&(0,Z.jsx)(Ct.Composite,{render:(0,Z.jsx)(cu,{className:z("dataviews-view-picker-grid",s),previewSize:V,"aria-busy":n,ref:d}),virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":O,"aria-label":f,children:e.map((T,g)=>{let I=A?g+1:void 0;return A||(I=(k-1)*b+g+1),(0,Z.jsx)(mf,{view:l,multiselect:O,selection:a,onChangeSelection:i,getItemId:o,item:T,mediaField:v,titleField:m,descriptionField:_,regularFields:x,badgeFields:y,config:{sizes:N},posinset:I,setsize:P},o(T))})}),!S&&(0,Z.jsx)("div",{className:z({"dataviews-loading":n,"dataviews-no-results":!n}),children:n?(0,Z.jsx)("p",{children:(0,Z.jsx)(Ct.Spinner,{})}):u}),S&&n&&(0,Z.jsx)("p",{className:"dataviews-loading-more",children:(0,Z.jsx)(Ct.Spinner,{})})]})}var hf=f0;var xa=c(U(),1),_o=c(q(),1),Ft=c(H(),1);var J=c(R(),1);function m0({item:t,fields:e,column:r,align:o}){let n=e.find(a=>a.id===r);if(!n)return null;let i=z("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,J.jsx)("div",{className:i,children:(0,J.jsx)(n.render,{item:t,field:n})})}function bf({item:t,fields:e,id:r,view:o,titleField:n,mediaField:i,descriptionField:a,selection:l,getItemId:s,onChangeSelection:u,multiselect:d,posinset:p}){let{paginationInfo:f}=(0,Ft.useContext)(G),m=l.includes(r),[v,_]=(0,Ft.useState)(!1),{showTitle:h=!0,showMedia:x=!0,showDescription:y=!0,infiniteScrollEnabled:S}=o,V=()=>{_(!0)},O=()=>{_(!1)},N=o.fields??[],D=n&&h||i&&x||a&&y;return(0,J.jsxs)(_o.Composite.Item,{render:({children:E,...A})=>(0,J.jsx)("tr",{className:z("dataviews-view-table__row",{"is-selected":m,"is-hovered":v}),onMouseEnter:V,onMouseLeave:O,children:E,...A}),"aria-selected":m,"aria-setsize":f.totalItems||void 0,"aria-posinset":p,role:S?"article":"option",onClick:()=>{if(m)u(l.filter(E=>r!==E));else{let E=d?[...l,r]:[r];u(E)}},children:[(0,J.jsx)("td",{className:"dataviews-view-table__checkbox-column",role:"presentation",children:(0,J.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,J.jsx)(Kr,{item:t,selection:l,onChangeSelection:u,getItemId:s,titleField:n,disabled:!1,"aria-hidden":!0,tabIndex:-1})})}),D&&(0,J.jsx)("td",{role:"presentation",children:(0,J.jsx)(la,{item:t,titleField:h?n:void 0,mediaField:x?i:void 0,descriptionField:y?a:void 0,isItemClickable:()=>!1})}),N.map(E=>{let{width:A,maxWidth:k,minWidth:b,align:P}=o.layout?.styles?.[E]??{};return(0,J.jsx)("td",{style:{width:A,maxWidth:k,minWidth:b},role:"presentation",children:(0,J.jsx)(m0,{fields:e,item:t,column:E,align:P})},E)})]},r)}function p0({actions:t,data:e,fields:r,getItemId:o,isLoading:n=!1,onChangeView:i,onChangeSelection:a,selection:l,setOpenedFilter:s,view:u,className:d,empty:p}){let f=(0,Ft.useRef)(new Map),m=(0,Ft.useRef)(void 0),[v,_]=(0,Ft.useState)(),h=ba(t)??!1;(0,Ft.useEffect)(()=>{m.current&&(m.current.focus(),m.current=void 0)});let x=(0,Ft.useId)();if(v){m.current=v,_(void 0);return}let y=w=>{let C=f.current.get(w.id),M=C?f.current.get(C.fallback):void 0;_(M?.node)},S=!!e?.length,V=r.find(w=>w.id===u.titleField),O=r.find(w=>w.id===u.mediaField),N=r.find(w=>w.id===u.descriptionField),D=u.groupBy?.field?r.find(w=>w.id===u.groupBy?.field):null,E=D?Mt(e,D):null,{showTitle:A=!0,showMedia:k=!0,showDescription:b=!0}=u,P=V&&A||O&&k||N&&b,T=u.fields??[],g=(w,C)=>M=>{M?f.current.set(w,{node:M,fallback:T[C>0?C-1:1]}):f.current.delete(w)},I=u.infiniteScrollEnabled&&!E;return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)("table",{className:z("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":x,role:I?"feed":"listbox",children:[(0,J.jsx)("thead",{role:"presentation",children:(0,J.jsxs)("tr",{className:"dataviews-view-table__row",role:"presentation",children:[(0,J.jsx)("th",{className:"dataviews-view-table__checkbox-column",children:h&&(0,J.jsx)(Nn,{selection:l,onChangeSelection:a,data:e,actions:t,getItemId:o})}),P&&(0,J.jsx)("th",{children:V&&(0,J.jsx)(Uo,{ref:g(V.id,0),fieldId:V.id,view:u,fields:r,onChangeView:i,onHide:y,setOpenedFilter:s,canMove:!1})}),T.map((w,C)=>{let{width:M,maxWidth:j,minWidth:ae,align:ye}=u.layout?.styles?.[w]??{};return(0,J.jsx)("th",{style:{width:M,maxWidth:j,minWidth:ae,textAlign:ye},"aria-sort":u.sort?.direction&&u.sort?.field===w?ea[u.sort.direction]:void 0,scope:"col",children:(0,J.jsx)(Uo,{ref:g(w,C),fieldId:w,view:u,fields:r,onChangeView:i,onHide:y,setOpenedFilter:s,canMove:u.layout?.enableMoving??!0})},w)})]})}),S&&D&&E?Array.from(E.entries()).map(([w,C])=>(0,J.jsxs)(_o.Composite,{virtualFocus:!0,orientation:"vertical",render:(0,J.jsx)("tbody",{role:"group"}),children:[(0,J.jsx)("tr",{className:"dataviews-view-table__group-header-row",role:"presentation",children:(0,J.jsx)("td",{colSpan:T.length+(P?1:0)+1,className:"dataviews-view-table__group-header-cell",role:"presentation",children:u.groupBy?.showLabel===!1?w:(0,xa.sprintf)((0,xa.__)("%1$s: %2$s"),D.label,w)})}),C.map((M,j)=>(0,J.jsx)(bf,{item:M,fields:r,id:o(M)||j.toString(),view:u,titleField:V,mediaField:O,descriptionField:N,selection:l,getItemId:o,onChangeSelection:a,multiselect:h},o(M)))]},`group-${w}`)):(0,J.jsx)(_o.Composite,{render:(0,J.jsx)("tbody",{role:"presentation"}),virtualFocus:!0,orientation:"vertical",children:S&&e.map((w,C)=>(0,J.jsx)(bf,{item:w,fields:r,id:o(w)||C.toString(),view:u,titleField:V,mediaField:O,descriptionField:N,selection:l,getItemId:o,onChangeSelection:a,multiselect:h,posinset:C+1},o(w)))})]}),(0,J.jsxs)("div",{className:z({"dataviews-loading":n,"dataviews-no-results":!S&&!n}),id:x,children:[!S&&(n?(0,J.jsx)("p",{children:(0,J.jsx)(_o.Spinner,{})}):p),S&&n&&(0,J.jsx)("p",{className:"dataviews-loading-more",children:(0,J.jsx)(_o.Spinner,{})})]})]})}var xf=p0;var wf=c(q(),1),_f=c(U(),1),yf=c(H(),1);var Sf=c(R(),1),v0=[{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 du(){let t=(0,yf.useContext)(G),e=t.view,r=v0.filter(a=>t.containerWidth>=a.breakpoint),o=e.layout?.previewSize??230,n=r.map((a,l)=>({...a,index:l})).filter(a=>a.value<=o).sort((a,l)=>l.value-a.value)[0]?.index??0,i=r.map((a,l)=>({value:l}));return(0,Sf.jsx)(wf.RangeControl,{__next40pxDefaultSize:!0,showTooltip:!1,label:(0,_f.__)("Preview size"),value:n,min:0,max:r.length-1,withInputField:!1,onChange:(a=0)=>{t.onChangeView({...e,layout:{...e.layout,previewSize:r[a].value}})},step:1,marks:i})}var Xo=c(q(),1),Qo=c(U(),1),Cf=c(H(),1);var Jo=c(R(),1);function jn(){let t=(0,Cf.useContext)(G),e=t.view;return(0,Jo.jsxs)(Xo.__experimentalToggleGroupControl,{size:"__unstable-large",label:(0,Qo.__)("Density"),value:e.layout?.density||"balanced",onChange:r=>{t.onChangeView({...e,layout:{...e.layout,density:r}})},isBlock:!0,children:[(0,Jo.jsx)(Xo.__experimentalToggleGroupControlOption,{value:"comfortable",label:(0,Qo._x)("Comfortable","Density option for DataView layout")},"comfortable"),(0,Jo.jsx)(Xo.__experimentalToggleGroupControlOption,{value:"balanced",label:(0,Qo._x)("Balanced","Density option for DataView layout")},"balanced"),(0,Jo.jsx)(Xo.__experimentalToggleGroupControlOption,{value:"compact",label:(0,Qo._x)("Compact","Density option for DataView layout")},"compact")]})}var eo=[{type:Ho,label:(0,yr.__)("Table"),component:qd,icon:Pi,viewConfigOptions:jn},{type:ra,label:(0,yr.__)("Grid"),component:Zd,icon:Ai,viewConfigOptions:du},{type:hd,label:(0,yr.__)("List"),component:su,icon:(0,yr.isRTL)()?_l:Sl,viewConfigOptions:jn},{type:bd,label:(0,yr.__)("Activity"),component:sf,icon:Fl,viewConfigOptions:jn},{type:xd,label:(0,yr.__)("Grid"),component:hf,icon:Ai,viewConfigOptions:du,isPicker:!0},{type:wd,label:(0,yr.__)("Table"),component:xf,icon:Pi,viewConfigOptions:jn,isPicker:!0}];var vn=c(H(),1);var Gt=c(q(),1),Ir=c(U(),1),Qa=c(H(),1);function Hn(...t){}function fu(t,e){if(g0(t)){let r=h0(e)?e():e;return t(r)}return t}function g0(t){return typeof t=="function"}function h0(t){return typeof t=="function"}function Et(t,e){return typeof Object.hasOwn=="function"?Object.hasOwn(t,e):Object.prototype.hasOwnProperty.call(t,e)}function to(...t){return(...e)=>{for(let r of t)typeof r=="function"&&r(...e)}}function zn(t){return t.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}function mu(t,e){let r={...t};for(let o of e)Et(r,o)&&delete r[o];return r}function pu(t,e){let r={};for(let o of e)Et(t,o)&&(r[o]=t[o]);return r}function Wn(t){return t}function Qe(t,e){if(!t)throw typeof e!="string"?new Error("Invariant failed"):new Error(e)}function vu(t){return Object.keys(t)}function gu(t,...e){let r=typeof t=="function"?t(...e):t;return r==null?!1:!r}function yo(t){return t.disabled||t["aria-disabled"]===!0||t["aria-disabled"]==="true"}function Je(t){let e={};for(let r in t)t[r]!==void 0&&(e[r]=t[r]);return e}function ee(...t){for(let e of t)if(e!==void 0)return e}var Ef=c(le(),1);function Pf(t,e){typeof t=="function"?t(e):t&&(t.current=e)}function b0(t){return!t||!(0,Ef.isValidElement)(t)?!1:"ref"in t.props||"ref"in t}function Tf(t){return b0(t)?{...t.props}.ref||t.ref:null}function Af(t,e){let r={...t};for(let o in e){if(!Et(e,o))continue;if(o==="className"){let i="className";r[i]=t[i]?`${t[i]} ${e[i]}`:e[i];continue}if(o==="style"){let i="style";r[i]=t[i]?{...t[i],...e[i]}:e[i];continue}let n=e[o];if(typeof n=="function"&&o.startsWith("on")){let i=t[o];if(typeof i=="function"){r[o]=(...a)=>{n(...a),i(...a)};continue}}r[o]=n}return r}var ro=x0();function x0(){var t;return typeof window<"u"&&!!((t=window.document)!=null&&t.createElement)}function Sr(t){return t?"self"in t?t.document:t.ownerDocument||document:document}function So(t,e=!1){var r;let{activeElement:o}=Sr(t);if(!o?.nodeName)return null;if(hu(o)&&((r=o.contentDocument)!=null&&r.body))return So(o.contentDocument.body,e);if(e){let n=o.getAttribute("aria-activedescendant");if(n){let i=Sr(o).getElementById(n);if(i)return i}}return o}function tr(t,e){return t===e||t.contains(e)}function hu(t){return t.tagName==="IFRAME"}function Cr(t){let e=t.tagName.toLowerCase();return e==="button"?!0:e==="input"&&t.type?w0.indexOf(t.type)!==-1:!1}var w0=["button","color","file","image","reset","submit"];function bu(t){if(typeof t.checkVisibility=="function")return t.checkVisibility();let e=t;return e.offsetWidth>0||e.offsetHeight>0||t.getClientRects().length>0}function vt(t){try{let e=t instanceof HTMLInputElement&&t.selectionStart!==null,r=t.tagName==="TEXTAREA";return e||r||!1}catch{return!1}}function Gn(t){return t.isContentEditable||vt(t)}function xu(t){if(vt(t))return t.value;if(t.isContentEditable){let e=Sr(t).createRange();return e.selectNodeContents(t),e.toString()}return""}function en(t){let e=0,r=0;if(vt(t))e=t.selectionStart||0,r=t.selectionEnd||0;else if(t.isContentEditable){let o=Sr(t).getSelection();if(o?.rangeCount&&o.anchorNode&&tr(t,o.anchorNode)&&o.focusNode&&tr(t,o.focusNode)){let n=o.getRangeAt(0),i=n.cloneRange();i.selectNodeContents(t),i.setEnd(n.startContainer,n.startOffset),e=i.toString().length,i.setEnd(n.endContainer,n.endOffset),r=i.toString().length}}return{start:e,end:r}}function wu(t,e){let r=["dialog","menu","listbox","tree","grid"],o=t?.getAttribute("role");return o&&r.indexOf(o)!==-1?o:e}function tn(t){if(!t)return null;let e=r=>r==="auto"||r==="scroll";if(t.clientHeight&&t.scrollHeight>t.clientHeight){let{overflowY:r}=getComputedStyle(t);if(e(r))return t}else if(t.clientWidth&&t.scrollWidth>t.clientWidth){let{overflowX:r}=getComputedStyle(t);if(e(r))return t}return tn(t.parentElement)||document.scrollingElement||document.body}function qn(t,...e){/text|search|password|tel|url/i.test(t.type)&&t.setSelectionRange(...e)}function _u(t,e){let r=t.map((n,i)=>[i,n]),o=!1;return r.sort(([n,i],[a,l])=>{let s=e(i),u=e(l);return s===u||!s||!u?0:_0(s,u)?(n>a&&(o=!0),-1):(ni):t}function _0(t,e){return!!(e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_PRECEDING)}function yu(){return ro&&!!navigator.maxTouchPoints}function wa(){return ro?/mac|iphone|ipad|ipod/i.test(navigator.platform):!1}function Co(){return ro&&wa()&&/apple/i.test(navigator.vendor)}function Su(){return ro&&/firefox\//i.test(navigator.userAgent)}function _a(t){return!!(t.currentTarget&&!tr(t.currentTarget,t.target))}function lt(t){return t.target===t.currentTarget}function Of(t){let e=t.currentTarget;if(!e)return!1;let r=wa();if(r&&!t.metaKey||!r&&!t.ctrlKey)return!1;let o=e.tagName.toLowerCase();return o==="a"||o==="button"&&e.type==="submit"||o==="input"&&e.type==="submit"}function If(t){let e=t.currentTarget;if(!e)return!1;let r=e.tagName.toLowerCase();return t.altKey?r==="a"||r==="button"&&e.type==="submit"||r==="input"&&e.type==="submit":!1}function Eo(t,e){let r=new FocusEvent("blur",e),o=t.dispatchEvent(r),n={...e,bubbles:!0};return t.dispatchEvent(new FocusEvent("focusout",n)),o}function Rf(t,e,r){let o=new KeyboardEvent(e,r);return t.dispatchEvent(o)}function Cu(t,e){let r=new MouseEvent("click",e);return t.dispatchEvent(r)}function ya(t,e){let r=e||t.currentTarget,o=t.relatedTarget;return!o||!tr(r,o)}function oo(t,e,r,o){let i=(l=>{if(o){let u=setTimeout(l,o);return()=>clearTimeout(u)}let s=requestAnimationFrame(l);return()=>cancelAnimationFrame(s)})(()=>{t.removeEventListener(e,a,!0),r()}),a=()=>{i(),r()};return t.addEventListener(e,a,{once:!0,capture:!0}),i}function rr(t,e,r,o=window){let n=[];try{o.document.addEventListener(t,e,r);for(let a of Array.from(o.frames))n.push(rr(t,e,r,a))}catch{}return()=>{try{o.document.removeEventListener(t,e,r)}catch{}for(let a of n)a()}}var y0=c(le(),1),me=c(le(),1),Eu={...y0},Vf=Eu.useId,NE=Eu.useDeferredValue,kf=Eu.useInsertionEffect,Te=ro?me.useLayoutEffect:me.useEffect;function S0(t){let[e]=(0,me.useState)(t);return e}function Ff(t){let e=(0,me.useRef)(t);return Te(()=>{e.current=t}),e}function te(t){let e=(0,me.useRef)(()=>{throw new Error("Cannot call an event handler while rendering.")});return kf?kf(()=>{e.current=t}):e.current=t,(0,me.useCallback)((...r)=>{var o;return(o=e.current)==null?void 0:o.call(e,...r)},[])}function Lf(t){let[e,r]=(0,me.useState)(null);return Te(()=>{if(e==null||!t)return;let o=null;return t(n=>(o=n,e)),()=>{t(o)}},[e,t]),[e,r]}function Oe(...t){return(0,me.useMemo)(()=>{if(t.some(Boolean))return e=>{for(let r of t)Pf(r,e)}},t)}function Lt(t){if(Vf){let o=Vf();return t||o}let[e,r]=(0,me.useState)(t);return Te(()=>{if(t||e)return;let o=Math.random().toString(36).slice(2,8);r(`id-${o}`)},[t,e]),t||e}function Bf(t,e){let r=i=>{if(typeof i=="string")return i},[o,n]=(0,me.useState)(()=>r(e));return Te(()=>{let i=t&&"current"in t?t.current:t;n(i?.tagName.toLowerCase()||r(e))},[t,e]),o}function jf(t,e,r){let o=S0(r),[n,i]=(0,me.useState)(o);return(0,me.useEffect)(()=>{let a=t&&"current"in t?t.current:t;if(!a)return;let l=()=>{let u=a.getAttribute(e);i(u??o)},s=new MutationObserver(l);return s.observe(a,{attributeFilter:[e]}),l(),()=>s.disconnect()},[t,e,o]),n}function or(t,e){let r=(0,me.useRef)(!1);(0,me.useEffect)(()=>{if(r.current)return t();r.current=!0},e),(0,me.useEffect)(()=>()=>{r.current=!1},[])}function Hf(t,e){let r=(0,me.useRef)(!1);Te(()=>{if(r.current)return t();r.current=!0},e),Te(()=>()=>{r.current=!1},[])}function zf(){return(0,me.useReducer)(()=>[],[])}function Me(t){return te(typeof t=="function"?t:()=>t)}function nr(t,e,r=[]){let o=(0,me.useCallback)(n=>(t.wrapElement&&(n=t.wrapElement(n)),e(n)),[...r,t.wrapElement]);return{...t,wrapElement:o}}function Wf(t,e,r){let o=t.onLoadedMetadataCapture,n=(0,me.useMemo)(()=>Object.assign(()=>{},{...o,[e]:r}),[o,e,r]);return[o?.[e],{onLoadedMetadataCapture:n}]}var Df=!1;function Gf(){return(0,me.useEffect)(()=>{Df||(rr("mousemove",E0,!0),rr("mousedown",Sa,!0),rr("mouseup",Sa,!0),rr("keydown",Sa,!0),rr("scroll",Sa,!0),Df=!0)},[]),te(()=>Pu)}var Pu=!1,Nf=0,Mf=0;function C0(t){let e=t.movementX||t.screenX-Nf,r=t.movementY||t.screenY-Mf;return Nf=t.screenX,Mf=t.screenY,e||r||!1}function E0(t){C0(t)&&(Pu=!0)}function Sa(){Pu=!1}var gt=c(le(),1),Po=c(R(),1);function pe(t){let e=gt.forwardRef((r,o)=>t({...r,ref:o}));return e.displayName=t.displayName||t.name,e}function no(t,e){return gt.memo(t,e)}function xe(t,e){let{wrapElement:r,render:o,...n}=e,i=Oe(e.ref,Tf(o)),a;if(gt.isValidElement(o)){let l={...o.props,ref:i};a=gt.cloneElement(o,Af(n,l))}else o?a=o(n):a=(0,Po.jsx)(t,{...n});return r?r(a):a}function we(t){let e=(r={})=>t(r);return e.displayName=t.name,e}function Pt(t=[],e=[]){let r=gt.createContext(void 0),o=gt.createContext(void 0),n=()=>gt.useContext(r),i=(u=!1)=>{let d=gt.useContext(o),p=n();return u?d:d||p},a=()=>{let u=gt.useContext(o),d=n();if(!(u&&u===d))return d},l=u=>t.reduceRight((d,p)=>(0,Po.jsx)(p,{...u,children:d}),(0,Po.jsx)(r.Provider,{...u}));return{context:r,scopedContext:o,useContext:n,useScopedContext:i,useProviderContext:a,ContextProvider:l,ScopedContextProvider:u=>(0,Po.jsx)(l,{...u,children:e.reduceRight((d,p)=>(0,Po.jsx)(p,{...u,children:d}),(0,Po.jsx)(o.Provider,{...u}))})}}var Yn=Pt(),qf=Yn.useContext,HE=Yn.useScopedContext,zE=Yn.useProviderContext,Yf=Yn.ContextProvider,Uf=Yn.ScopedContextProvider;var Tu=c(le(),1),Un=Pt([Yf],[Uf]),Ca=Un.useContext,YE=Un.useScopedContext,$f=Un.useProviderContext,rn=Un.ContextProvider,Ea=Un.ScopedContextProvider,Kf=(0,Tu.createContext)(void 0),Zf=(0,Tu.createContext)(void 0);function Xf(t,e){return t.find(r=>e?!r.disabled&&r.id!==e:!r.disabled)}function ir(t,e){return e&&t.item(e)||null}function Qf(t){let e=[];for(let r of t){let o=e.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):e.push([r])}return e}function Jf(t,e=!1){if(vt(t))t.setSelectionRange(e?t.value.length:0,t.value.length);else if(t.isContentEditable){let r=Sr(t).getSelection();r?.selectAllChildren(t),e&&r?.collapseToEnd()}}var Au=Symbol("FOCUS_SILENTLY");function em(t){t[Au]=!0,t.focus({preventScroll:!0})}function tm(t){let e=t[Au];return delete t[Au],e}function To(t,e,r){if(!e||e===r)return!1;let o=t.item(e.id);return!(!o||r&&o.element===r)}var Pa=c(le(),1),P0="div",Ou=we(function({store:e,shouldRegisterItem:r=!0,getItem:o=Wn,element:n,...i}){let a=qf();e=e||a;let l=Lt(i.id),s=(0,Pa.useRef)(n);return(0,Pa.useEffect)(()=>{let u=s.current;if(!l||!u||!r)return;let d=o({id:l,element:u});return e?.renderItem(d)},[l,r,o,e]),i={...i,ref:Oe(s,i.ref)},Je(i)}),eP=pe(function(e){let r=Ou(e);return xe(P0,r)});var rm=c(le(),1),om=(0,rm.createContext)(!0);var nm="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 $n(t){return!(!t.matches(nm)||!bu(t)||t.closest("[inert]"))}function im(t){for(;t&&!$n(t);)t=t.closest(nm);return t||null}function Bt(t){let e=So(t);if(!e)return!1;if(e===t)return!0;let r=e.getAttribute("aria-activedescendant");return r?r===t.id:!1}function Iu(t){let e=So(t);if(!e)return!1;if(tr(t,e))return!0;let r=e.getAttribute("aria-activedescendant");return!r||!("id"in t)?!1:r===t.id?!0:!!t.querySelector(`#${CSS.escape(r)}`)}function am(t){!Iu(t)&&$n(t)&&t.focus()}function sm(t,e){"scrollIntoView"in t?(t.focus({preventScroll:!0}),t.scrollIntoView({block:"nearest",inline:"nearest",...e})):t.focus()}var kt=c(le(),1),T0="div",lm=Co(),A0=["text","search","url","tel","email","password","number","date","month","week","time","datetime","datetime-local"],O0=Symbol("safariFocusAncestor");function um(t,e){t&&(t[O0]=e)}function I0(t){let{tagName:e,readOnly:r,type:o}=t;return e==="TEXTAREA"&&!r||e==="SELECT"&&!r?!0:e==="INPUT"&&!r?A0.includes(o):!!(t.isContentEditable||t.getAttribute("role")==="combobox"&&t.dataset.name)}function R0(t){return"labels"in t?t.labels:null}function cm(t){return t.tagName.toLowerCase()==="input"&&t.type?t.type==="radio"||t.type==="checkbox":!1}function V0(t){return t?t==="button"||t==="summary"||t==="input"||t==="select"||t==="textarea"||t==="a":!0}function k0(t){return t?t==="button"||t==="input"||t==="select"||t==="textarea":!0}function D0(t,e,r,o,n){return t?e?r&&!o?-1:void 0:r?n:n||0:n}function Ru(t,e){return te(r=>{t?.(r),!r.defaultPrevented&&e&&(r.stopPropagation(),r.preventDefault())})}var dm=!1,Vu=!0;function N0(t){let e=t.target;e&&"hasAttribute"in e&&(e.hasAttribute("data-focus-visible")||(Vu=!1))}function M0(t){t.metaKey||t.ctrlKey||t.altKey||(Vu=!0)}var Kn=we(function({focusable:e=!0,accessibleWhenDisabled:r,autoFocus:o,onFocusVisible:n,...i}){let a=(0,kt.useRef)(null);(0,kt.useEffect)(()=>{e&&(dm||(rr("mousedown",N0,!0),rr("keydown",M0,!0),dm=!0))},[e]),lm&&(0,kt.useEffect)(()=>{if(!e)return;let g=a.current;if(!g||!cm(g))return;let I=R0(g);if(!I)return;let w=()=>queueMicrotask(()=>g.focus());for(let C of I)C.addEventListener("mouseup",w);return()=>{for(let C of I)C.removeEventListener("mouseup",w)}},[e]);let l=e&&yo(i),s=!!l&&!r,[u,d]=(0,kt.useState)(!1);(0,kt.useEffect)(()=>{e&&s&&u&&d(!1)},[e,s,u]),(0,kt.useEffect)(()=>{if(!e||!u)return;let g=a.current;if(!g||typeof IntersectionObserver>"u")return;let I=new IntersectionObserver(()=>{$n(g)||d(!1)});return I.observe(g),()=>I.disconnect()},[e,u]);let p=Ru(i.onKeyPressCapture,l),f=Ru(i.onMouseDownCapture,l),m=Ru(i.onClickCapture,l),v=i.onMouseDown,_=te(g=>{if(v?.(g),g.defaultPrevented||!e)return;let I=g.currentTarget;if(!lm||_a(g)||!Cr(I)&&!cm(I))return;let w=!1,C=()=>{w=!0},M={capture:!0,once:!0};I.addEventListener("focusin",C,M);let j=im(I.parentElement);um(j,!0),oo(I,"mouseup",()=>{I.removeEventListener("focusin",C,!0),um(j,!1),!w&&am(I)})}),h=(g,I)=>{if(I&&(g.currentTarget=I),!e)return;let w=g.currentTarget;w&&Bt(w)&&(n?.(g),!g.defaultPrevented&&(w.dataset.focusVisible="true",d(!0)))},x=i.onKeyDownCapture,y=te(g=>{if(x?.(g),g.defaultPrevented||!e||u||g.metaKey||g.altKey||g.ctrlKey||!lt(g))return;let I=g.currentTarget;oo(I,"focusout",()=>h(g,I))}),S=i.onFocusCapture,V=te(g=>{if(S?.(g),g.defaultPrevented||!e)return;if(!lt(g)){d(!1);return}let I=g.currentTarget,w=()=>h(g,I);Vu||I0(g.target)?oo(g.target,"focusout",w):d(!1)}),O=i.onBlur,N=te(g=>{O?.(g),e&&ya(g)&&(g.currentTarget.removeAttribute("data-focus-visible"),d(!1))}),D=(0,kt.useContext)(om),E=te(g=>{e&&o&&g&&D&&queueMicrotask(()=>{Bt(g)||$n(g)&&g.focus()})}),A=Bf(a),k=e&&V0(A),b=e&&k0(A),P=i.style,T=(0,kt.useMemo)(()=>s?{pointerEvents:"none",...P}:P,[s,P]);return i={"data-focus-visible":e&&u||void 0,"data-autofocus":o||void 0,"aria-disabled":l||void 0,...i,ref:Oe(a,E,i.ref),style:T,tabIndex:D0(e,s,k,b,i.tabIndex),disabled:b&&s?!0:void 0,contentEditable:l?void 0:i.contentEditable,onKeyPressCapture:p,onClickCapture:m,onMouseDownCapture:f,onMouseDown:_,onKeyDownCapture:y,onFocusCapture:V,onBlur:N},Je(i)}),gP=pe(function(e){let r=Kn(e);return xe(T0,r)});var io=c(le(),1),F0="button";function fm(t){if(!t.isTrusted)return!1;let e=t.currentTarget;return t.key==="Enter"?Cr(e)||e.tagName==="SUMMARY"||e.tagName==="A":t.key===" "?Cr(e)||e.tagName==="SUMMARY"||e.tagName==="INPUT"||e.tagName==="SELECT":!1}var L0=Symbol("command"),ku=we(function({clickOnEnter:e=!0,clickOnSpace:r=!0,...o}){let n=(0,io.useRef)(null),[i,a]=(0,io.useState)(!1);(0,io.useEffect)(()=>{n.current&&a(Cr(n.current))},[]);let[l,s]=(0,io.useState)(!1),u=(0,io.useRef)(!1),d=yo(o),[p,f]=Wf(o,L0,!0),m=o.onKeyDown,v=te(x=>{m?.(x);let y=x.currentTarget;if(x.defaultPrevented||p||d||!lt(x)||vt(y)||y.isContentEditable)return;let S=e&&x.key==="Enter",V=r&&x.key===" ",O=x.key==="Enter"&&!e,N=x.key===" "&&!r;if(O||N){x.preventDefault();return}if(S||V){let D=fm(x);if(S){if(!D){x.preventDefault();let{view:E,...A}=x,k=()=>Cu(y,A);Su()?oo(y,"keyup",k):queueMicrotask(k)}}else V&&(u.current=!0,D||(x.preventDefault(),s(!0)))}}),_=o.onKeyUp,h=te(x=>{if(_?.(x),x.defaultPrevented||p||d||x.metaKey)return;let y=r&&x.key===" ";if(u.current&&y&&(u.current=!1,!fm(x))){x.preventDefault(),s(!1);let S=x.currentTarget,{view:V,...O}=x;queueMicrotask(()=>Cu(S,O))}});return o={"data-active":l||void 0,type:i?"button":void 0,...f,...o,ref:Oe(n,o.ref),onKeyDown:v,onKeyUp:h},o=Kn(o),o}),EP=pe(function(e){let r=ku(e);return xe(F0,r)});function Ao(t,e){let r=t.__unstableInternals;return Qe(r,"Invalid store"),r[e]}function ht(t,...e){let r=t,o=r,n=Symbol(),i=Hn,a=new Set,l=new Set,s=new Set,u=new Set,d=new Set,p=new WeakMap,f=new WeakMap,m=E=>(s.add(E),()=>s.delete(E)),v=()=>{let E=a.size,A=Symbol();a.add(A);let k=()=>{a.delete(A),!a.size&&i()};if(E)return k;let b=vu(r).map(g=>to(...e.map(I=>{var w;let C=(w=I?.getState)==null?void 0:w.call(I);if(C&&Et(C,g))return Ke(I,[g],M=>{N(g,M[g],!0)})}))),P=[];for(let g of s)P.push(g());let T=e.map(on);return i=to(...b,...P,...T),k},_=(E,A,k=u)=>(k.add(A),f.set(A,E),()=>{var b;(b=p.get(A))==null||b(),p.delete(A),f.delete(A),k.delete(A)}),h=(E,A)=>_(E,A),x=(E,A)=>(p.set(A,A(r,r)),_(E,A)),y=(E,A)=>(p.set(A,A(r,o)),_(E,A,d)),S=E=>ht(pu(r,E),D),V=E=>ht(mu(r,E),D),O=()=>r,N=(E,A,k=!1)=>{var b;if(!Et(r,E))return;let P=fu(A,r[E]);if(P===r[E])return;if(!k)for(let w of e)(b=w?.setState)==null||b.call(w,E,P);let T=r;r={...r,[E]:P};let g=Symbol();n=g,l.add(E);let I=(w,C,M)=>{var j;let ae=f.get(w),ye=De=>M?M.has(De):De===E;(!ae||ae.some(ye))&&((j=p.get(w))==null||j(),p.set(w,w(r,C)))};for(let w of u)I(w,T);queueMicrotask(()=>{if(n!==g)return;let w=r;for(let C of d)I(C,o,l);o=w,l.clear()})},D={getState:O,setState:N,__unstableInternals:{setup:m,init:v,subscribe:h,sync:x,batch:y,pick:S,omit:V}};return D}function $e(t,...e){if(t)return Ao(t,"setup")(...e)}function on(t,...e){if(t)return Ao(t,"init")(...e)}function nn(t,...e){if(t)return Ao(t,"subscribe")(...e)}function Ke(t,...e){if(t)return Ao(t,"sync")(...e)}function ao(t,...e){if(t)return Ao(t,"batch")(...e)}function Zn(t,...e){if(t)return Ao(t,"omit")(...e)}function Du(t,...e){if(t)return Ao(t,"pick")(...e)}function Oo(...t){var e;let r={};for(let n of t){let i=(e=n?.getState)==null?void 0:e.call(n);i&&Object.assign(r,i)}let o=ht(r,...t);return Object.assign({},...t,o)}var ar=c(le(),1),mm=c(ld(),1),{useSyncExternalStore:pm}=mm.default,vm=()=>()=>{};function an(t,e=Wn){let r=ar.useCallback(n=>t?nn(t,null,n):vm(),[t]),o=()=>{let n=typeof e=="string"?e:null,i=typeof e=="function"?e:null,a=t?.getState();if(i)return i(a);if(a&&n&&Et(a,n))return a[n]};return pm(r,o,o)}function Aa(t,e){let r=ar.useRef({}),o=ar.useCallback(i=>t?nn(t,null,i):vm(),[t]),n=()=>{let i=t?.getState(),a=!1,l=r.current;for(let s in e){let u=e[s];if(typeof u=="function"){let d=u(i);d!==l[s]&&(l[s]=d,a=!0)}if(typeof u=="string"){if(!i||!Et(i,u))continue;let d=i[u];d!==l[s]&&(l[s]=d,a=!0)}}return a&&(r.current={...l}),r.current};return pm(o,n,n)}function Ie(t,e,r,o){let n=Et(e,r)?e[r]:void 0,i=o?e[o]:void 0,a=Ff({value:n,setValue:i});Te(()=>Ke(t,[r],(l,s)=>{let{value:u,setValue:d}=a.current;d&&l[r]!==s[r]&&l[r]!==u&&d(l[r])}),[t,r]),Te(()=>{if(n!==void 0)return t.setState(r,n),ao(t,[r],()=>{n!==void 0&&t.setState(r,n)})})}function sn(t,e){let[r,o]=ar.useState(()=>t(e));Te(()=>on(r),[r]);let n=ar.useCallback(l=>an(r,l),[r]),i=ar.useMemo(()=>({...r,useState:n}),[r,n]),a=te(()=>{o(l=>t({...e,...l.getState()}))});return[i,a]}var Er=c(le(),1),hm=c(R(),1),B0="button";function j0(t){return Gn(t)?!0:t.tagName==="INPUT"&&!Cr(t)}function H0(t,e=!1){let r=t.clientHeight,{top:o}=t.getBoundingClientRect(),n=Math.max(r*.875,r-40)*1.5,i=e?r-n+o:n+o;return t.tagName==="HTML"?i+t.scrollTop:i}function z0(t,e=!1){let{top:r}=t.getBoundingClientRect();return e?r+t.clientHeight:r}function gm(t,e,r,o=!1){var n;if(!e||!r)return;let{renderedItems:i}=e.getState(),a=tn(t);if(!a)return;let l=H0(a,o),s,u;for(let d=0;d=0){u!==void 0&&u<_&&(s=p);break}u=_}return s}function W0(t,e){return lt(t)?!1:To(e,t.target)}var Nu=we(function({store:e,rowId:r,preventScrollOnKeyDown:o=!1,moveOnKeyPress:n=!0,tabbable:i=!1,getItem:a,"aria-setsize":l,"aria-posinset":s,...u}){let d=Ca();e=e||d;let p=Lt(u.id),f=(0,Er.useRef)(null),m=(0,Er.useContext)(Zf),_=yo(u)&&!u.accessibleWhenDisabled,{rowId:h,baseElement:x,isActiveItem:y,ariaSetSize:S,ariaPosInSet:V,isTabbable:O}=Aa(e,{rowId(C){if(r)return r;if(C&&m?.baseElement&&m.baseElement===C.baseElement)return m.id},baseElement(C){return C?.baseElement||void 0},isActiveItem(C){return!!C&&C.activeId===p},ariaSetSize(C){if(l!=null)return l;if(C&&m?.ariaSetSize&&m.baseElement===C.baseElement)return m.ariaSetSize},ariaPosInSet(C){if(s!=null)return s;if(!C||!m?.ariaPosInSet||m.baseElement!==C.baseElement)return;let M=C.renderedItems.filter(j=>j.rowId===h);return m.ariaPosInSet+M.findIndex(j=>j.id===p)},isTabbable(C){if(!C?.renderedItems.length)return!0;if(C.virtualFocus)return!1;if(i)return!0;if(C.activeId===null)return!1;let M=e?.item(C.activeId);return M?.disabled||!M?.element?!0:C.activeId===p}}),N=(0,Er.useCallback)(C=>{var M;let j={...C,id:p||C.id,rowId:h,disabled:!!_,children:(M=C.element)==null?void 0:M.textContent};return a?a(j):j},[p,h,_,a]),D=u.onFocus,E=(0,Er.useRef)(!1),A=te(C=>{if(D?.(C),C.defaultPrevented||_a(C)||!p||!e||W0(C,e))return;let{virtualFocus:M,baseElement:j}=e.getState();if(e.setActiveId(p),Gn(C.currentTarget)&&Jf(C.currentTarget),!M||!lt(C)||j0(C.currentTarget)||!j?.isConnected)return;Co()&&C.currentTarget.hasAttribute("data-autofocus")&&C.currentTarget.scrollIntoView({block:"nearest",inline:"nearest"}),E.current=!0,C.relatedTarget===j||To(e,C.relatedTarget)?em(j):j.focus()}),k=u.onBlurCapture,b=te(C=>{if(k?.(C),C.defaultPrevented)return;let M=e?.getState();M?.virtualFocus&&E.current&&(E.current=!1,C.preventDefault(),C.stopPropagation())}),P=u.onKeyDown,T=Me(o),g=Me(n),I=te(C=>{if(P?.(C),C.defaultPrevented||!lt(C)||!e)return;let{currentTarget:M}=C,j=e.getState(),ae=e.item(p),ye=!!ae?.rowId,De=j.orientation!=="horizontal",je=j.orientation!=="vertical",ot=()=>!!(ye||je||!j.baseElement||!vt(j.baseElement)),vr={ArrowUp:(ye||De)&&e.up,ArrowRight:(ye||je)&&e.next,ArrowDown:(ye||De)&&e.down,ArrowLeft:(ye||je)&&e.previous,Home:()=>{if(ot())return!ye||C.ctrlKey?e?.first():e?.previous(-1)},End:()=>{if(ot())return!ye||C.ctrlKey?e?.last():e?.next(-1)},PageUp:()=>gm(M,e,e?.up,!0),PageDown:()=>gm(M,e,e?.down)}[C.key];if(vr){if(Gn(M)){let Q=en(M),he=je&&C.key==="ArrowLeft",gr=je&&C.key==="ArrowRight",hr=De&&C.key==="ArrowUp",mo=De&&C.key==="ArrowDown";if(gr||mo){let{length:po}=xu(M);if(Q.end!==po)return}else if((he||hr)&&Q.start!==0)return}let Y=vr();if(T(C)||Y!==void 0){if(!g(C))return;C.preventDefault(),e.move(Y)}}}),w=(0,Er.useMemo)(()=>({id:p,baseElement:x}),[p,x]);return u=nr(u,C=>(0,hm.jsx)(Kf.Provider,{value:w,children:C}),[w]),u={id:p,"data-active-item":y||void 0,...u,ref:Oe(f,u.ref),tabIndex:O?u.tabIndex:-1,onFocus:A,onBlurCapture:b,onKeyDown:I},u=ku(u),u=Ou({store:e,...u,getItem:N,shouldRegisterItem:p?u.shouldRegisterItem:!1}),Je({...u,"aria-setsize":S,"aria-posinset":V})}),YP=no(pe(function(e){let r=Nu(e);return xe(B0,r)}));function Mu(t){return Array.isArray(t)?t:typeof t<"u"?[t]:[]}function Xn(t){let e=[];for(let r of t)e.push(...r);return e}function ln(t){return t.slice().reverse()}var sr=c(le(),1),xm=c(R(),1),G0="div";function q0(t){return t.some(e=>!!e.rowId)}function Y0(t){let e=t.target;return e&&!vt(e)?!1:t.key.length===1&&!t.ctrlKey&&!t.metaKey}function U0(t){return t.key==="Shift"||t.key==="Control"||t.key==="Alt"||t.key==="Meta"}function bm(t,e,r){return te(o=>{var n;if(e?.(o),o.defaultPrevented||o.isPropagationStopped()||!lt(o)||U0(o)||Y0(o))return;let i=t.getState(),a=(n=ir(t,i.activeId))==null?void 0:n.element;if(!a)return;let{view:l,...s}=o,u=r?.current;a!==u&&a.focus(),Rf(a,o.type,s)||o.preventDefault(),o.currentTarget.contains(a)&&o.stopPropagation()})}function $0(t){return Xf(Xn(ln(Qf(t))))}function K0(t){let[e,r]=(0,sr.useState)(!1),o=(0,sr.useCallback)(()=>r(!0),[]),n=t.useState(i=>ir(t,i.activeId));return(0,sr.useEffect)(()=>{let i=n?.element;e&&i&&(r(!1),i.focus({preventScroll:!0}))},[n,e]),o}var Fu=we(function({store:e,composite:r=!0,focusOnMove:o=r,moveOnKeyPress:n=!0,...i}){let a=$f();e=e||a,Qe(e,!1);let l=(0,sr.useRef)(null),s=(0,sr.useRef)(null),u=K0(e),d=e.useState("moves"),[,p]=Lf(r?e.setBaseElement:null);(0,sr.useEffect)(()=>{var b;if(!e||!d||!r||!o)return;let{activeId:P}=e.getState(),T=(b=ir(e,P))==null?void 0:b.element;T&&sm(T)},[e,d,r,o]),Te(()=>{if(!e||!d||!r)return;let{baseElement:b,activeId:P}=e.getState();if(!(P===null)||!b)return;let g=s.current;s.current=null,g&&Eo(g,{relatedTarget:b}),Bt(b)||b.focus()},[e,d,r]);let f=e.useState("activeId"),m=e.useState("virtualFocus");Te(()=>{var b;if(!e||!r||!m)return;let P=s.current;if(s.current=null,!P)return;let g=((b=ir(e,f))==null?void 0:b.element)||So(P);g!==P&&Eo(P,{relatedTarget:g})},[e,f,m,r]);let v=bm(e,i.onKeyDownCapture,s),_=bm(e,i.onKeyUpCapture,s),h=i.onFocusCapture,x=te(b=>{if(h?.(b),b.defaultPrevented||!e)return;let{virtualFocus:P}=e.getState();if(!P)return;let T=b.relatedTarget,g=tm(b.currentTarget);lt(b)&&g&&(b.stopPropagation(),s.current=T)}),y=i.onFocus,S=te(b=>{if(y?.(b),b.defaultPrevented||!r||!e)return;let{relatedTarget:P}=b,{virtualFocus:T}=e.getState();T?lt(b)&&!To(e,P)&&queueMicrotask(u):lt(b)&&e.setActiveId(null)}),V=i.onBlurCapture,O=te(b=>{var P;if(V?.(b),b.defaultPrevented||!e)return;let{virtualFocus:T,activeId:g}=e.getState();if(!T)return;let I=(P=ir(e,g))==null?void 0:P.element,w=b.relatedTarget,C=To(e,w),M=s.current;s.current=null,lt(b)&&C?(w===I?M&&M!==w&&Eo(M,b):I?Eo(I,b):M&&Eo(M,b),b.stopPropagation()):!To(e,b.target)&&I&&Eo(I,b)}),N=i.onKeyDown,D=Me(n),E=te(b=>{var P;if(N?.(b),b.nativeEvent.isComposing||b.defaultPrevented||!e||!lt(b))return;let{orientation:T,renderedItems:g,activeId:I}=e.getState(),w=ir(e,I);if((P=w?.element)!=null&&P.isConnected)return;let C=T!=="horizontal",M=T!=="vertical",j=q0(g);if((b.key==="ArrowLeft"||b.key==="ArrowRight"||b.key==="Home"||b.key==="End")&&vt(b.currentTarget))return;let je={ArrowUp:(j||C)&&(()=>{if(j){let ot=$0(g);return ot?.id}return e?.last()}),ArrowRight:(j||M)&&e.first,ArrowDown:(j||C)&&e.first,ArrowLeft:(j||M)&&e.last,Home:e.first,End:e.last,PageUp:e.first,PageDown:e.last}[b.key];if(je){let ot=je();if(ot!==void 0){if(!D(b))return;b.preventDefault(),e.move(ot)}}});i=nr(i,b=>(0,xm.jsx)(rn,{value:e,children:b}),[e]),i={"aria-activedescendant":e.useState(b=>{var P;if(e&&r&&b.virtualFocus)return(P=ir(e,b.activeId))==null?void 0:P.id}),...i,ref:Oe(l,p,i.ref),onKeyDownCapture:v,onKeyUpCapture:_,onFocusCapture:x,onFocus:S,onBlurCapture:O,onKeyDown:E};let k=e.useState(b=>r&&(b.virtualFocus||b.activeId===null));return i=Kn({focusable:k,...i}),i}),lT=pe(function(e){let r=Fu(e);return xe(G0,r)});var Qn=Pt(),dT=Qn.useContext,fT=Qn.useScopedContext,Lu=Qn.useProviderContext,wm=Qn.ContextProvider,_m=Qn.ScopedContextProvider;var Bu=c(le(),1),Jn=Pt([wm],[_m]),gT=Jn.useContext,hT=Jn.useScopedContext,bT=Jn.useProviderContext,ym=Jn.ContextProvider,Oa=Jn.ScopedContextProvider,xT=(0,Bu.createContext)(void 0),wT=(0,Bu.createContext)(void 0);var un=c(le(),1),Em=c(nd(),1),ju=c(R(),1),Z0="div";function Sm(t,e){let r=setTimeout(e,t);return()=>clearTimeout(r)}function X0(t){let e=requestAnimationFrame(()=>{e=requestAnimationFrame(t)});return()=>cancelAnimationFrame(e)}function Cm(...t){return t.join(", ").split(", ").reduce((e,r)=>{let o=r.endsWith("ms")?1:1e3,n=Number.parseFloat(r||"0s")*o;return n>e?n:e},0)}function Hu(t,e,r){return!r&&e!==!1&&(!t||!!e)}var Q0=we(function({store:e,alwaysVisible:r,...o}){let n=Lu();e=e||n,Qe(e,!1);let i=(0,un.useRef)(null),a=Lt(o.id),[l,s]=(0,un.useState)(null),u=e.useState("open"),d=e.useState("mounted"),p=e.useState("animated"),f=e.useState("contentElement"),m=an(e.disclosure,"contentElement");Te(()=>{i.current&&e?.setContentElement(i.current)},[e]),Te(()=>{let x;return e?.setState("animated",y=>(x=y,!0)),()=>{x!==void 0&&e?.setState("animated",x)}},[e]),Te(()=>{if(p){if(!f?.isConnected){s(null);return}return X0(()=>{s(u?"enter":d?"leave":null)})}},[p,f,u,d]),Te(()=>{if(!e||!p||!l||!f)return;let x=()=>e?.setState("animating",!1),y=()=>(0,Em.flushSync)(x);if(l==="leave"&&u||l==="enter"&&!u)return;if(typeof p=="number")return Sm(p,y);let{transitionDuration:S,animationDuration:V,transitionDelay:O,animationDelay:N}=getComputedStyle(f),{transitionDuration:D="0",animationDuration:E="0",transitionDelay:A="0",animationDelay:k="0"}=m?getComputedStyle(m):{},b=Cm(O,N,A,k),P=Cm(S,V,D,E),T=b+P;if(!T){l==="enter"&&e.setState("animated",!1),x();return}let g=1e3/60,I=Math.max(T-g,0);return Sm(I,y)},[e,p,f,m,u,l]),o=nr(o,x=>(0,ju.jsx)(Oa,{value:e,children:x}),[e]);let v=Hu(d,o.hidden,r),_=o.style,h=(0,un.useMemo)(()=>v?{..._,display:"none"}:_,[v,_]);return o={id:a,"data-open":u||void 0,"data-enter":l==="enter"||void 0,"data-leave":l==="leave"||void 0,hidden:v,...o,ref:Oe(a?e.setContentElement:null,i,o.ref),style:h},Je(o)}),J0=pe(function(e){let r=Q0(e);return xe(Z0,r)}),AT=pe(function({unmountOnHide:e,...r}){let o=Lu(),n=r.store||o;return an(n,a=>!e||a?.mounted)===!1?null:(0,ju.jsx)(J0,{...r})});function Pm(t={}){let e=Oo(t.store,Zn(t.disclosure,["contentElement","disclosureElement"]));let r=e?.getState(),o=ee(t.open,r?.open,t.defaultOpen,!1),n=ee(t.animated,r?.animated,!1),i={open:o,animated:n,animating:!!n&&o,mounted:o,contentElement:ee(r?.contentElement,null),disclosureElement:ee(r?.disclosureElement,null)},a=ht(i,e);return $e(a,()=>Ke(a,["animated","animating"],l=>{l.animated||a.setState("animating",!1)})),$e(a,()=>nn(a,["open"],()=>{a.getState().animated&&a.setState("animating",!0)})),$e(a,()=>Ke(a,["open","animating"],l=>{a.setState("mounted",l.open||l.animating)})),{...a,disclosure:t.disclosure,setOpen:l=>a.setState("open",l),show:()=>a.setState("open",!0),hide:()=>a.setState("open",!1),toggle:()=>a.setState("open",l=>!l),stopAnimation:()=>a.setState("animating",!1),setContentElement:l=>a.setState("contentElement",l),setDisclosureElement:l=>a.setState("disclosureElement",l)}}function Tm(t,e,r){return or(e,[r.store,r.disclosure]),Ie(t,r,"open","setOpen"),Ie(t,r,"mounted","setMounted"),Ie(t,r,"animated"),Object.assign(t,{disclosure:r.disclosure})}var ei=Pt([ym],[Oa]),LT=ei.useContext,BT=ei.useScopedContext,Am=ei.useProviderContext,Om=ei.ContextProvider,Im=ei.ScopedContextProvider;function ex(t){var e;let r=t.find(i=>!!i.element),o=[...t].reverse().find(i=>!!i.element),n=(e=r?.element)==null?void 0:e.parentElement;for(;n&&o?.element;){if(o&&n.contains(o.element))return n;n=n.parentElement}return Sr(n).body}function tx(t){return t?.__unstablePrivateStore}function Rm(t={}){var e;t.store;let r=(e=t.store)==null?void 0:e.getState(),o=ee(t.items,r?.items,t.defaultItems,[]),n=new Map(o.map(f=>[f.id,f])),i={items:o,renderedItems:ee(r?.renderedItems,[])},a=tx(t.store),l=ht({items:o,renderedItems:i.renderedItems},a),s=ht(i,t.store),u=f=>{let m=_u(f,v=>v.element);l.setState("renderedItems",m),s.setState("renderedItems",m)};$e(s,()=>on(l)),$e(l,()=>ao(l,["items"],f=>{s.setState("items",f.items)})),$e(l,()=>ao(l,["renderedItems"],f=>{let m=!0,v=requestAnimationFrame(()=>{let{renderedItems:y}=s.getState();f.renderedItems!==y&&u(f.renderedItems)});if(typeof IntersectionObserver!="function")return()=>cancelAnimationFrame(v);let _=()=>{if(m){m=!1;return}cancelAnimationFrame(v),v=requestAnimationFrame(()=>u(f.renderedItems))},h=ex(f.renderedItems),x=new IntersectionObserver(_,{root:h});for(let y of f.renderedItems)y.element&&x.observe(y.element);return()=>{cancelAnimationFrame(v),x.disconnect()}}));let d=(f,m,v=!1)=>{let _;return m(x=>{let y=x.findIndex(({id:V})=>V===f.id),S=x.slice();if(y!==-1){_=x[y];let V={..._,...f};S[y]=V,n.set(f.id,V)}else S.push(f),n.set(f.id,f);return S}),()=>{m(x=>{if(!_)return v&&n.delete(f.id),x.filter(({id:V})=>V!==f.id);let y=x.findIndex(({id:V})=>V===f.id);if(y===-1)return x;let S=x.slice();return S[y]=_,n.set(f.id,_),S})}},p=f=>d(f,m=>l.setState("items",m),!0);return{...s,registerItem:p,renderItem:f=>to(p(f),d(f,m=>l.setState("renderedItems",m))),item:f=>{if(!f)return null;let m=n.get(f);if(!m){let{items:v}=l.getState();m=v.find(_=>_.id===f),m&&n.set(f,m)}return m||null},__unstablePrivateStore:l}}function Vm(t,e,r){return or(e,[r.store]),Ie(t,r,"items","setItems"),t}var rx={id:null};function Pr(t,e){return t.find(r=>e?!r.disabled&&r.id!==e:!r.disabled)}function ox(t,e){return t.filter(r=>e?!r.disabled&&r.id!==e:!r.disabled)}function km(t,e){return t.filter(r=>r.rowId===e)}function nx(t,e,r=!1){let o=t.findIndex(n=>n.id===e);return[...t.slice(o+1),...r?[rx]:[],...t.slice(0,o)]}function Dm(t){let e=[];for(let r of t){let o=e.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):e.push([r])}return e}function Nm(t){let e=0;for(let{length:r}of t)r>e&&(e=r);return e}function ix(t){return{id:"__EMPTY_ITEM__",disabled:!0,rowId:t}}function ax(t,e,r){let o=Nm(t);for(let n of t)for(let i=0;iKe(a,["renderedItems","activeId"],s=>{a.setState("activeId",u=>{var d;return u!==void 0?u:(d=Pr(s.renderedItems))==null?void 0:d.id})}));let l=(s="next",u={})=>{var d,p;let f=a.getState(),{skip:m=0,activeId:v=f.activeId,focusShift:_=f.focusShift,focusLoop:h=f.focusLoop,focusWrap:x=f.focusWrap,includesBaseElement:y=f.includesBaseElement,renderedItems:S=f.renderedItems,rtl:V=f.rtl}=u,O=s==="up"||s==="down",N=s==="next"||s==="down",D=N?V&&!O:!V||O,E=_&&!m,A=O?Xn(ax(Dm(S),v,E)):S;if(A=D?ln(A):A,A=O?sx(A):A,v==null)return(d=Pr(A))==null?void 0:d.id;let k=A.find(j=>j.id===v);if(!k)return(p=Pr(A))==null?void 0:p.id;let b=A.some(j=>j.rowId),P=A.indexOf(k),T=A.slice(P+1),g=km(T,k.rowId);if(m){let j=ox(g,v),ae=j.slice(m)[0]||j[j.length-1];return ae?.id}let I=h&&(O?h!=="horizontal":h!=="vertical"),w=b&&x&&(O?x!=="horizontal":x!=="vertical"),C=N?(!b||O)&&I&&y:O?y:!1;if(I){let j=w&&!C?A:km(A,k.rowId),ae=nx(j,v,C),ye=Pr(ae,v);return ye?.id}if(w){let j=Pr(C?g:T,v);return C?j?.id||null:j?.id}let M=Pr(g,v);return!M&&C?null:M?.id};return{...o,...a,setBaseElement:s=>a.setState("baseElement",s),setActiveId:s=>a.setState("activeId",s),move:s=>{s!==void 0&&(a.setState("activeId",s),a.setState("moves",u=>u+1))},first:()=>{var s;return(s=Pr(a.getState().renderedItems))==null?void 0:s.id},last:()=>{var s;return(s=Pr(ln(a.getState().renderedItems)))==null?void 0:s.id},next:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("next",s)),previous:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("previous",s)),down:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("down",s)),up:s=>(s!==void 0&&typeof s=="number"&&(s={skip:s}),l("up",s))}}function Fm(t){return{id:Lt(t.id),...t}}function Lm(t,e,r){return t=Vm(t,e,r),Ie(t,r,"activeId","setActiveId"),Ie(t,r,"includesBaseElement"),Ie(t,r,"virtualFocus"),Ie(t,r,"orientation"),Ie(t,r,"rtl"),Ie(t,r,"focusLoop"),Ie(t,r,"focusWrap"),Ie(t,r,"focusShift"),t}var Ia=c(le(),1),Ra=(0,Ia.createContext)(void 0),ti=Pt([Om,rn],[Im,Ea]),zu=ti.useContext,cn=ti.useScopedContext,Va=ti.useProviderContext,Bm=ti.ContextProvider,jm=ti.ScopedContextProvider,ka=(0,Ia.createContext)(void 0),Hm=(0,Ia.createContext)(!1);function zm(t={}){return Pm(t)}function Wm(t,e,r){return Tm(t,e,r)}function Gm({popover:t,...e}={}){let r=Oo(e.store,Zn(t,["arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));let o=r?.getState(),n=zm({...e,store:r}),i=ee(e.placement,o?.placement,"bottom"),a={...n.getState(),placement:i,currentPlacement:i,anchorElement:ee(o?.anchorElement,null),popoverElement:ee(o?.popoverElement,null),arrowElement:ee(o?.arrowElement,null),rendered:Symbol("rendered")},l=ht(a,n,r);return{...n,...l,setAnchorElement:s=>l.setState("anchorElement",s),setPopoverElement:s=>l.setState("popoverElement",s),setArrowElement:s=>l.setState("arrowElement",s),render:()=>l.setState("rendered",Symbol("rendered"))}}function qm(t,e,r){return or(e,[r.popover]),Ie(t,r,"placement"),Wm(t,e,r)}var lx="div",Wu=we(function({store:e,...r}){let o=Am();return e=e||o,r={...r,ref:Oe(e?.setAnchorElement,r.ref)},r}),yA=pe(function(e){let r=Wu(e);return xe(lx,r)});var Ym=c(le(),1),ux="div";function Um(t){let e=t.relatedTarget;return e?.nodeType===Node.ELEMENT_NODE?e:null}function cx(t){let e=Um(t);return e?tr(t.currentTarget,e):!1}var Gu=Symbol("composite-hover");function dx(t){let e=Um(t);if(!e)return!1;do{if(Et(e,Gu)&&e[Gu])return!0;e=e.parentElement}while(e);return!1}var qu=we(function({store:e,focusOnHover:r=!0,blurOnHoverEnd:o=!!r,...n}){let i=Ca();e=e||i,Qe(e,!1);let a=Gf(),l=n.onMouseMove,s=Me(r),u=te(v=>{if(l?.(v),!v.defaultPrevented&&a()&&s(v)){if(!Iu(v.currentTarget)){let _=e?.getState().baseElement;_&&!Bt(_)&&_.focus()}e?.setActiveId(v.currentTarget.id)}}),d=n.onMouseLeave,p=Me(o),f=te(v=>{var _;d?.(v),!v.defaultPrevented&&a()&&(cx(v)||dx(v)||s(v)&&p(v)&&(e?.setActiveId(null),(_=e?.getState().baseElement)==null||_.focus()))}),m=(0,Ym.useCallback)(v=>{v&&(v[Gu]=!0)},[]);return n={...n,ref:Oe(m,n.ref),onMouseMove:u,onMouseLeave:f},Je(n)}),IA=no(pe(function(e){let r=qu(e);return xe(ux,r)}));var et=c(le(),1),fx="input";function $m(t,e,r){if(!r)return!1;let o=t.find(n=>!n.disabled&&n.value);return o?.value===e}function Km(t,e){return!e||t==null?!1:(t=zn(t),e.length>t.length&&e.toLowerCase().indexOf(t.toLowerCase())===0)}function mx(t){return t.type==="input"}function px(t){return t==="inline"||t==="list"||t==="both"||t==="none"}function vx(t){let e=t.find(r=>{var o;return r.disabled?!1:((o=r.element)==null?void 0:o.getAttribute("role"))!=="tab"});return e?.id}var gx=we(function({store:e,focusable:r=!0,autoSelect:o=!1,getAutoSelectId:n,setValueOnChange:i,showMinLength:a=0,showOnChange:l,showOnMouseDown:s,showOnClick:u=s,showOnKeyDown:d,showOnKeyPress:p=d,blurActiveItemOnClick:f,setValueOnClick:m=!0,moveOnKeyPress:v=!0,autoComplete:_="list",...h}){let x=Va();e=e||x,Qe(e,!1);let y=(0,et.useRef)(null),[S,V]=zf(),O=(0,et.useRef)(!1),N=(0,et.useRef)(!1),D=e.useState(L=>L.virtualFocus&&o),E=_==="inline"||_==="both",[A,k]=(0,et.useState)(E);Hf(()=>{E&&k(!0)},[E]);let b=e.useState("value"),P=(0,et.useRef)(void 0);(0,et.useEffect)(()=>Ke(e,["selectedValue","activeId"],(L,se)=>{P.current=se.selectedValue}),[]);let T=e.useState(L=>{var se;if(E&&A&&!(L.activeValue&&Array.isArray(L.selectedValue)&&(L.selectedValue.includes(L.activeValue)||(se=P.current)!=null&&se.includes(L.activeValue))))return L.activeValue}),g=e.useState("renderedItems"),I=e.useState("open"),w=e.useState("contentElement"),C=(0,et.useMemo)(()=>{if(!E||!A)return b;if($m(g,T,D)){if(Km(b,T)){let se=T?.slice(b.length)||"";return b+se}return b}return T||b},[E,A,g,T,D,b]);(0,et.useEffect)(()=>{let L=y.current;if(!L)return;let se=()=>k(!0);return L.addEventListener("combobox-item-move",se),()=>{L.removeEventListener("combobox-item-move",se)}},[]),(0,et.useEffect)(()=>{if(!E||!A||!T||!$m(g,T,D)||!Km(b,T))return;let se=Hn;return queueMicrotask(()=>{let He=y.current;if(!He)return;let{start:ze,end:Nt}=en(He),br=b.length,nt=T.length;qn(He,br,nt),se=()=>{if(!Bt(He))return;let{start:vo,end:Jh}=en(He);vo===br&&Jh===nt&&qn(He,ze,Nt)}}),()=>se()},[S,E,A,T,g,D,b]);let M=(0,et.useRef)(null),j=te(n),ae=(0,et.useRef)(null);(0,et.useEffect)(()=>{if(!I||!w)return;let L=tn(w);if(!L)return;M.current=L;let se=()=>{O.current=!1},He=()=>{if(!e||!O.current)return;let{activeId:Nt}=e.getState();Nt!==null&&Nt!==ae.current&&(O.current=!1)},ze={passive:!0,capture:!0};return L.addEventListener("wheel",se,ze),L.addEventListener("touchmove",se,ze),L.addEventListener("scroll",He,ze),()=>{L.removeEventListener("wheel",se,!0),L.removeEventListener("touchmove",se,!0),L.removeEventListener("scroll",He,!0)}},[I,w,e]),Te(()=>{b&&(N.current||(O.current=!0))},[b]),Te(()=>{D!=="always"&&I||(O.current=I)},[D,I]);let ye=e.useState("resetValueOnSelect");or(()=>{var L,se;let He=O.current;if(!e||!I||!He&&!ye)return;let{baseElement:ze,contentElement:Nt,activeId:br}=e.getState();if(!(ze&&!Bt(ze))){if(Nt?.hasAttribute("data-placing")){let nt=new MutationObserver(V);return nt.observe(Nt,{attributeFilter:["data-placing"]}),()=>nt.disconnect()}if(D&&He){let nt=j(g),vo=nt!==void 0?nt:(L=vx(g))!=null?L:e.first();ae.current=vo,e.move(vo??null)}else{let nt=(se=e.item(br||e.first()))==null?void 0:se.element;nt&&"scrollIntoView"in nt&&nt.scrollIntoView({block:"nearest",inline:"nearest"})}}},[e,I,S,b,D,ye,j,g]),(0,et.useEffect)(()=>{if(!E)return;let L=y.current;if(!L)return;let se=[L,w].filter(ze=>!!ze),He=ze=>{se.every(Nt=>ya(ze,Nt))&&e?.setValue(C)};for(let ze of se)ze.addEventListener("focusout",He);return()=>{for(let ze of se)ze.removeEventListener("focusout",He)}},[E,w,e,C]);let De=L=>L.currentTarget.value.length>=a,je=h.onChange,ot=Me(l??De),Kt=Me(i??!e.tag),vr=te(L=>{if(je?.(L),L.defaultPrevented||!e)return;let se=L.currentTarget,{value:He,selectionStart:ze,selectionEnd:Nt}=se,br=L.nativeEvent;if(O.current=!0,mx(br)&&(br.isComposing&&(O.current=!1,N.current=!0),E)){let nt=br.inputType==="insertText"||br.inputType==="insertCompositionText",vo=ze===He.length;k(nt&&vo)}if(Kt(L)){let nt=He===e.getState().value;e.setValue(He),queueMicrotask(()=>{qn(se,ze,Nt)}),E&&D&&nt&&V()}ot(L)&&e.show(),(!D||!O.current)&&e.setActiveId(null)}),Y=h.onCompositionEnd,Q=te(L=>{O.current=!0,N.current=!1,Y?.(L),!L.defaultPrevented&&D&&V()}),he=h.onMouseDown,gr=Me(f??(()=>!!e?.getState().includesBaseElement)),hr=Me(m),mo=Me(u??De),po=te(L=>{he?.(L),!L.defaultPrevented&&(L.button||L.ctrlKey||e&&(gr(L)&&e.setActiveId(null),hr(L)&&e.setValue(C),mo(L)&&oo(L.currentTarget,"mouseup",e.show)))}),Bo=h.onKeyDown,Pn=Me(p??De),js=te(L=>{if(Bo?.(L),L.repeat||(O.current=!1),L.defaultPrevented||L.ctrlKey||L.altKey||L.shiftKey||L.metaKey||!e)return;let{open:se}=e.getState();se||(L.key==="ArrowUp"||L.key==="ArrowDown")&&Pn(L)&&(L.preventDefault(),e.show())}),Vc=h.onBlur,Kh=te(L=>{O.current=!1,Vc?.(L),L.defaultPrevented}),Zh=Lt(h.id),Xh=px(_)?_:void 0,Qh=e.useState(L=>L.activeId===null);return h={id:Zh,role:"combobox","aria-autocomplete":Xh,"aria-haspopup":wu(w,"listbox"),"aria-expanded":I,"aria-controls":w?.id,"data-active-item":Qh||void 0,value:C,...h,ref:Oe(y,h.ref),onChange:vr,onCompositionEnd:Q,onMouseDown:po,onKeyDown:js,onBlur:Kh},h=Fu({store:e,focusable:r,...h,moveOnKeyPress:L=>gu(v,L)?!1:(E&&k(!0),!0)}),h=Wu({store:e,...h}),{autoComplete:"off",...h}}),Da=pe(function(e){let r=gx(e);return xe(fx,r)});var Na=c(le(),1),Yu=c(R(),1),hx="div";function bx(t,e){if(e!=null)return t==null?!1:Array.isArray(t)?t.includes(e):t===e}function xx(t){var e;return(e={menu:"menuitem",listbox:"option",tree:"treeitem"}[t])!=null?e:"option"}var Zm=we(function({store:e,value:r,hideOnClick:o,setValueOnClick:n,selectValueOnClick:i=!0,resetValueOnSelect:a,focusOnHover:l=!1,moveOnKeyPress:s=!0,getItem:u,...d}){var p;let f=cn();e=e||f,Qe(e,!1);let{resetValueOnSelectState:m,multiSelectable:v,selected:_}=Aa(e,{resetValueOnSelectState:"resetValueOnSelect",multiSelectable(b){return Array.isArray(b.selectedValue)},selected(b){return bx(b.selectedValue,r)}}),h=(0,Na.useCallback)(b=>{let P={...b,value:r};return u?u(P):P},[r,u]);n=n??!v,o=o??(r!=null&&!v);let x=d.onClick,y=Me(n),S=Me(i),V=Me((p=a??m)!=null?p:v),O=Me(o),N=te(b=>{x?.(b),!b.defaultPrevented&&(If(b)||Of(b)||(r!=null&&(S(b)&&(V(b)&&e?.resetValue(),e?.setSelectedValue(P=>Array.isArray(P)?P.includes(r)?P.filter(T=>T!==r):[...P,r]:r)),y(b)&&e?.setValue(r)),O(b)&&e?.hide()))}),D=d.onKeyDown,E=te(b=>{if(D?.(b),b.defaultPrevented)return;let P=e?.getState().baseElement;if(!P||Bt(P))return;(b.key.length===1||b.key==="Backspace"||b.key==="Delete")&&(queueMicrotask(()=>P.focus()),vt(P)&&e?.setValue(P.value))});v&&_!=null&&(d={"aria-selected":_,...d}),d=nr(d,b=>(0,Yu.jsx)(ka.Provider,{value:r,children:(0,Yu.jsx)(Hm.Provider,{value:_??!1,children:b})}),[r,_]);let A=(0,Na.useContext)(Ra);d={role:xx(A),children:r,...d,onClick:N,onKeyDown:E};let k=Me(s);return d=Nu({store:e,...d,getItem:h,moveOnKeyPress:b=>{if(!k(b))return!1;let P=new Event("combobox-item-move"),T=e?.getState().baseElement;return T?.dispatchEvent(P),!0}}),d=qu({store:e,focusOnHover:l,...d}),d}),ri=no(pe(function(e){let r=Zm(e);return xe(hx,r)}));var Ma=c(le(),1),Qm=c(R(),1),wx="span";function Xm(t){return zn(t).toLowerCase()}function _x(t,e){let r=[];for(let o of e){let n=0,i=o.length;for(;t.indexOf(o,n)!==-1;){let a=t.indexOf(o,n);a!==-1&&r.push([a,i]),n=a+1}}return r}function yx(t){return t.filter(([e,r],o,n)=>!n.some(([i,a],l)=>l!==o&&i<=e&&i+a>=e+r))}function Sx(t){return t.sort(([e],[r])=>e-r)}function Cx(t,e){if(!t||!e)return t;let r=Mu(e).filter(Boolean).map(Xm),o=[],n=(s,u=!1)=>(0,Qm.jsx)("span",{"data-autocomplete-value":u?"":void 0,"data-user-value":u?void 0:"",children:s},o.length),i=Sx(yx(_x(Xm(t),new Set(r))));if(!i.length)return o.push(n(t,!0)),o;let[a]=i[0];return[t.slice(0,a),...i.flatMap(([s,u],d)=>{var p;let f=t.slice(s,s+u),m=(p=i[d+1])==null?void 0:p[0],v=t.slice(s+u,m);return[f,v]})].forEach((s,u)=>{s&&o.push(n(s,u%2===0))}),o}var Ex=we(function({store:e,value:r,userValue:o,...n}){let i=cn();e=e||i;let a=(0,Ma.useContext)(ka),l=r??a,s=an(e,d=>o??d?.value);return n={children:(0,Ma.useMemo)(()=>{if(l)return s?Cx(l,s):l},[l,s]),...n},Je(n)}),Fa=pe(function(e){let r=Ex(e);return xe(wx,r)});var Px="label",Tx=we(function({store:e,...r}){let o=Va();return e=e||o,Qe(e,!1),r={htmlFor:e.useState(i=>{var a;return(a=i.baseElement)==null?void 0:a.id}),...r},Je(r)}),La=no(pe(function(e){let r=Tx(e);return xe(Px,r)}));var Ba=c(le(),1),Uu=c(R(),1),Ax="div",Jm=we(function({store:e,alwaysVisible:r,...o}){let n=cn(!0),i=zu();e=e||i;let a=!!e&&e===n;Qe(e,!1);let l=(0,Ba.useRef)(null),s=Lt(o.id),u=e.useState("mounted"),d=Hu(u,o.hidden,r),p=d?{...o.style,display:"none"}:o.style,f=e.useState(V=>Array.isArray(V.selectedValue)),m=jf(l,"role",o.role),_=(m==="listbox"||m==="tree"||m==="grid")&&f||void 0,[h,x]=(0,Ba.useState)(!1),y=e.useState("contentElement");Te(()=>{if(!u)return;let V=l.current;if(!V||y!==V)return;let O=()=>{x(!!V.querySelector("[role='listbox']"))},N=new MutationObserver(O);return N.observe(V,{subtree:!0,childList:!0,attributeFilter:["role"]}),O(),()=>N.disconnect()},[u,y]),h||(o={role:"listbox","aria-multiselectable":_,...o}),o=nr(o,V=>(0,Uu.jsx)(jm,{value:e,children:(0,Uu.jsx)(Ra.Provider,{value:m,children:V})}),[e,m]);let S=s&&(!n||!a)?e.setContentElement:null;return o={id:s,hidden:d,...o,ref:Oe(S,l,o.ref),style:p},Je(o)}),oi=pe(function(e){let r=Jm(e);return xe(Ax,r)});var $u=c(le(),1),yO=(0,$u.createContext)(null),SO=(0,$u.createContext)(null),ni=Pt([rn],[Ea]),ep=ni.useContext,CO=ni.useScopedContext,EO=ni.useProviderContext,PO=ni.ContextProvider,TO=ni.ScopedContextProvider;var Ox=Co()&&yu();function tp({tag:t,...e}={}){let r=Oo(e.store,Du(t,["value","rtl"]));let o=t?.getState(),n=r?.getState(),i=ee(e.activeId,n?.activeId,e.defaultActiveId,null),a=Mm({...e,activeId:i,includesBaseElement:ee(e.includesBaseElement,n?.includesBaseElement,!0),orientation:ee(e.orientation,n?.orientation,"vertical"),focusLoop:ee(e.focusLoop,n?.focusLoop,!0),focusWrap:ee(e.focusWrap,n?.focusWrap,!0),virtualFocus:ee(e.virtualFocus,n?.virtualFocus,!0)}),l=Gm({...e,placement:ee(e.placement,n?.placement,"bottom-start")}),s=ee(e.value,n?.value,e.defaultValue,""),u=ee(e.selectedValue,n?.selectedValue,o?.values,e.defaultSelectedValue,""),d=Array.isArray(u),p={...a.getState(),...l.getState(),value:s,selectedValue:u,resetValueOnSelect:ee(e.resetValueOnSelect,n?.resetValueOnSelect,d),resetValueOnHide:ee(e.resetValueOnHide,n?.resetValueOnHide,d&&!t),activeValue:n?.activeValue},f=ht(p,a,l,r);return Ox&&$e(f,()=>Ke(f,["virtualFocus"],()=>{f.setState("virtualFocus",!1)})),$e(f,()=>{if(t)return to(Ke(f,["selectedValue"],m=>{Array.isArray(m.selectedValue)&&t.setValues(m.selectedValue)}),Ke(t,["values"],m=>{f.setState("selectedValue",m.values)}))}),$e(f,()=>Ke(f,["resetValueOnHide","mounted"],m=>{m.resetValueOnHide&&(m.mounted||f.setState("value",s))})),$e(f,()=>Ke(f,["open"],m=>{m.open||(f.setState("activeId",i),f.setState("moves",0))})),$e(f,()=>Ke(f,["moves","activeId"],(m,v)=>{m.moves===v.moves&&f.setState("activeValue",void 0)})),$e(f,()=>ao(f,["moves","renderedItems"],(m,v)=>{if(m.moves===v.moves)return;let{activeId:_}=f.getState(),h=a.item(_);f.setState("activeValue",h?.value)})),{...l,...a,...f,tag:t,setValue:m=>f.setState("value",m),resetValue:()=>f.setState("value",p.value),setSelectedValue:m=>f.setState("selectedValue",m)}}function Rx(t){let e=ep();return t={...t,tag:t.tag!==void 0?t.tag:e},Fm(t)}function Vx(t,e,r){return or(e,[r.tag]),Ie(t,r,"value","setValue"),Ie(t,r,"selectedValue","setSelectedValue"),Ie(t,r,"resetValueOnHide"),Ie(t,r,"resetValueOnSelect"),Object.assign(Lm(qm(t,e,r),e,r),{tag:r.tag})}function Ku(t={}){t=Rx(t);let[e,r]=sn(tp,t);return Vx(e,r,t)}var rp=c(R(),1);function ja(t={}){let e=Ku(t);return(0,rp.jsx)(Bm,{value:e,children:t.children})}var cp=c(ap(),1);var dp=c(_t(),1),Tr=c(U(),1),Io=c(H(),1),jt=c(q(),1);var Lx=[],ii=(t,e)=>t.singleSelection?e?.value:Array.isArray(e?.value)?e.value:!Array.isArray(e?.value)&&e?.value?[e.value]:Lx;var ai=c(H(),1),Bx=[];function Ze({elements:t,getElements:e}){let r=Array.isArray(t)&&t.length>0?t:Bx,[o,n]=(0,ai.useState)(r),[i,a]=(0,ai.useState)(!1);return(0,ai.useEffect)(()=>{if(!e){n(r);return}let l=!1;return a(!0),e().then(s=>{if(!l){let u=Array.isArray(s)&&s.length>0?s:r;n(u)}}).catch(()=>{l||n(r)}).finally(()=>{l||a(!1)}),()=>{l=!0}},[e,r]),{elements:o,isLoading:i}}var oe=c(R(),1);function sp(t=""){return(0,cp.default)(t.trim().toLowerCase())}var lp=(t,e,r)=>t.singleSelection?r:Array.isArray(e?.value)?e.value.includes(r)?e.value.filter(o=>o!==r):[...e.value,r]:[r];function up(t,e){return`${t}-${e}`}var fp=({selected:t})=>(0,oe.jsx)("span",{className:z("dataviews-filters__search-widget-listitem-multi-selection",{"is-selected":t}),children:t&&(0,oe.jsx)(jt.Icon,{icon:go})}),mp=({selected:t})=>(0,oe.jsx)("span",{className:z("dataviews-filters__search-widget-listitem-single-selection",{"is-selected":t})});function pp({view:t,filter:e,onChangeView:r}){let o=(0,dp.useInstanceId)(pp,"dataviews-filter-list-box"),[n,i]=(0,Io.useState)(e.operators?.length===1?void 0:null),a=t.filters?.find(s=>s.field===e.field),l=ii(e,a);return(0,oe.jsx)(jt.Composite,{virtualFocus:!0,focusLoop:!0,activeId:n,setActiveId:i,role:"listbox",className:"dataviews-filters__search-widget-listbox","aria-label":(0,Tr.sprintf)((0,Tr.__)("List of: %1$s"),e.name),onFocusVisible:()=>{!n&&e.elements.length&&i(up(o,e.elements[0].value))},render:(0,oe.jsx)(jt.Composite.Typeahead,{}),children:e.elements.map(s=>(0,oe.jsxs)(jt.Composite.Hover,{render:(0,oe.jsx)(jt.Composite.Item,{id:up(o,s.value),render:(0,oe.jsx)("div",{"aria-label":s.label,role:"option",className:"dataviews-filters__search-widget-listitem"}),onClick:()=>{let u=a?[...(t.filters??[]).map(d=>d.field===e.field?{...d,operator:a.operator||e.operators[0],value:lp(e,a,s.value)}:d)]:[...t.filters??[],{field:e.field,operator:e.operators[0],value:lp(e,a,s.value)}];r({...t,page:1,filters:u})}}),children:[e.singleSelection&&(0,oe.jsx)(mp,{selected:l===s.value}),!e.singleSelection&&(0,oe.jsx)(fp,{selected:l.includes(s.value)}),(0,oe.jsx)("span",{className:"dataviews-filters__search-widget-listitem-value",title:s.label,children:s.label})]},s.value))})}function jx({view:t,filter:e,onChangeView:r}){let[o,n]=(0,Io.useState)(""),i=(0,Io.useDeferredValue)(o),a=t.filters?.find(u=>u.field===e.field),l=ii(e,a),s=(0,Io.useMemo)(()=>{let u=sp(i);return e.elements.filter(d=>sp(d.label).includes(u))},[e.elements,i]);return(0,oe.jsxs)(ja,{selectedValue:l,setSelectedValue:u=>{let d=a?[...(t.filters??[]).map(p=>p.field===e.field?{...p,operator:a.operator||e.operators[0],value:u}:p)]:[...t.filters??[],{field:e.field,operator:e.operators[0],value:u}];r({...t,page:1,filters:d})},setValue:n,children:[(0,oe.jsxs)("div",{className:"dataviews-filters__search-widget-filter-combobox__wrapper",children:[(0,oe.jsx)(La,{render:(0,oe.jsx)(jt.VisuallyHidden,{children:(0,Tr.__)("Search items")}),children:(0,Tr.__)("Search items")}),(0,oe.jsx)(Da,{autoSelect:"always",placeholder:(0,Tr.__)("Search"),className:"dataviews-filters__search-widget-filter-combobox__input"}),(0,oe.jsx)("div",{className:"dataviews-filters__search-widget-filter-combobox__icon",children:(0,oe.jsx)(jt.Icon,{icon:Bl})})]}),(0,oe.jsxs)(oi,{className:"dataviews-filters__search-widget-filter-combobox-list",alwaysVisible:!0,children:[s.map(u=>(0,oe.jsxs)(ri,{resetValueOnSelect:!1,value:u.value,className:"dataviews-filters__search-widget-listitem",hideOnClick:!1,setValueOnClick:!1,focusOnHover:!0,children:[e.singleSelection&&(0,oe.jsx)(mp,{selected:l===u.value}),!e.singleSelection&&(0,oe.jsx)(fp,{selected:l.includes(u.value)}),(0,oe.jsxs)("span",{className:"dataviews-filters__search-widget-listitem-value",title:u.label,children:[(0,oe.jsx)(Fa,{className:"dataviews-filters__search-widget-filter-combobox-item-value",value:u.label}),!!u.description&&(0,oe.jsx)("span",{className:"dataviews-filters__search-widget-listitem-description",children:u.description})]})]},u.value)),!s.length&&(0,oe.jsx)("p",{children:(0,Tr.__)("No results found")})]})]})}function vp(t){let{elements:e,isLoading:r}=Ze({elements:t.filter.elements,getElements:t.filter.getElements});if(r)return(0,oe.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,oe.jsx)(jt.Spinner,{})});if(e.length===0)return(0,oe.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,Tr.__)("No elements found")});let o=e.length>10?jx:pp;return(0,oe.jsx)(o,{...t,filter:{...t.filter,elements:e}})}var bp=c(hp(),1),xp=c(_t(),1),Zu=c(H(),1),wp=c(q(),1);var Xu=c(R(),1);function _p({filter:t,view:e,onChangeView:r,fields:o}){let n=e.filters?.find(u=>u.field===t.field),i=ii(t,n),a=(0,Zu.useMemo)(()=>{let u=o.find(d=>d.id===t.field);return u&&{...u,isValid:{},getValue:({item:d})=>d[u.id],setValue:({value:d})=>({[u.id]:d})}},[o,t.field]),l=(0,Zu.useMemo)(()=>(e.filters??[]).reduce((u,d)=>(u[d.field]=d.value,u),{}),[e.filters]),s=(0,xp.useEvent)(u=>{if(!a||!n)return;let d=a.getValue({item:u});(0,bp.default)(d,i)||r({...e,filters:(e.filters??[]).map(p=>p.field===t.field?{...p,operator:n.operator||t.operators[0],value:d===""?void 0:d}:p)})});return!a||!a.Edit||!n?null:(0,Xu.jsx)(wp.Flex,{className:"dataviews-filters__user-input-widget",gap:2.5,direction:"column",children:(0,Xu.jsx)(a.Edit,{hideLabelFromVision:!0,data:l,field:a,operator:n.operator,onChange:s})})}var Hx=Math.pow(10,8)*24*60*60*1e3,hI=-Hx,za=6048e5,yp=864e5;var zx=3600;var Sp=zx*24,bI=Sp*7,Wx=Sp*365.2425,Gx=Wx/12,xI=Gx*3,Qu=Symbol.for("constructDateFrom");function Ge(t,e){return typeof t=="function"?t(e):t&&typeof t=="object"&&Qu in t?t[Qu](e):t instanceof Date?new t.constructor(e):new Date(e)}function fe(t,e){return Ge(e||t,t)}function Wa(t,e,r){let o=fe(t,r?.in);return isNaN(e)?Ge(r?.in||t,NaN):(e&&o.setDate(o.getDate()+e),o)}function Ga(t,e,r){let o=fe(t,r?.in);if(isNaN(e))return Ge(r?.in||t,NaN);if(!e)return o;let n=o.getDate(),i=Ge(r?.in||t,o.getTime());i.setMonth(o.getMonth()+e+1,0);let a=i.getDate();return n>=a?i:(o.setFullYear(i.getFullYear(),i.getMonth(),n),o)}var qx={};function so(){return qx}function Ar(t,e){let r=so(),o=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,n=fe(t,e?.in),i=n.getDay(),a=(i=i.getTime()?o+1:r.getTime()>=l.getTime()?o:o-1}function Ju(t){let e=fe(t),r=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return r.setUTCFullYear(e.getFullYear()),+t-+r}function Cp(t,...e){let r=Ge.bind(null,t||e.find(o=>typeof o=="object"));return e.map(r)}function ec(t,e){let r=fe(t,e?.in);return r.setHours(0,0,0,0),r}function Ep(t,e,r){let[o,n]=Cp(r?.in,t,e),i=ec(o),a=ec(n),l=+i-Ju(i),s=+a-Ju(a);return Math.round((l-s)/yp)}function Pp(t,e){let r=qa(t,e),o=Ge(e?.in||t,0);return o.setFullYear(r,0,4),o.setHours(0,0,0,0),Ro(o)}function Tp(t,e,r){return Wa(t,e*7,r)}function Ap(t,e,r){return Ga(t,e*12,r)}function Op(t){return t instanceof Date||typeof t=="object"&&Object.prototype.toString.call(t)==="[object Date]"}function dn(t){return!(!Op(t)&&typeof t!="number"||isNaN(+fe(t)))}function Ip(t,e){let r=fe(t,e?.in);return r.setDate(1),r.setHours(0,0,0,0),r}function Ya(t,e){let r=fe(t,e?.in);return r.setFullYear(r.getFullYear(),0,1),r.setHours(0,0,0,0),r}var Yx={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"}},Rp=(t,e,r)=>{let o,n=Yx[t];return typeof n=="string"?o=n:e===1?o=n.one:o=n.other.replace("{{count}}",e.toString()),r?.addSuffix?r.comparison&&r.comparison>0?"in "+o:o+" ago":o};function Ua(t){return(e={})=>{let r=e.width?String(e.width):t.defaultWidth;return t.formats[r]||t.formats[t.defaultWidth]}}var Ux={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},$x={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},Kx={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Vp={date:Ua({formats:Ux,defaultWidth:"full"}),time:Ua({formats:$x,defaultWidth:"full"}),dateTime:Ua({formats:Kx,defaultWidth:"full"})};var Zx={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},kp=(t,e,r,o)=>Zx[t];function fn(t){return(e,r)=>{let o=r?.context?String(r.context):"standalone",n;if(o==="formatting"&&t.formattingValues){let a=t.defaultFormattingWidth||t.defaultWidth,l=r?.width?String(r.width):a;n=t.formattingValues[l]||t.formattingValues[a]}else{let a=t.defaultWidth,l=r?.width?String(r.width):t.defaultWidth;n=t.values[l]||t.values[a]}let i=t.argumentCallback?t.argumentCallback(e):e;return n[i]}}var Xx={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},Qx={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},Jx={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"]},ew={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"}},ow=(t,e)=>{let r=Number(t),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"},Dp={ordinalNumber:ow,era:fn({values:Xx,defaultWidth:"wide"}),quarter:fn({values:Qx,defaultWidth:"wide",argumentCallback:t=>t-1}),month:fn({values:Jx,defaultWidth:"wide"}),day:fn({values:ew,defaultWidth:"wide"}),dayPeriod:fn({values:tw,defaultWidth:"wide",formattingValues:rw,defaultFormattingWidth:"wide"})};function mn(t){return(e,r={})=>{let o=r.width,n=o&&t.matchPatterns[o]||t.matchPatterns[t.defaultMatchWidth],i=e.match(n);if(!i)return null;let a=i[0],l=o&&t.parsePatterns[o]||t.parsePatterns[t.defaultParseWidth],s=Array.isArray(l)?iw(l,p=>p.test(a)):nw(l,p=>p.test(a)),u;u=t.valueCallback?t.valueCallback(s):s,u=r.valueCallback?r.valueCallback(u):u;let d=e.slice(a.length);return{value:u,rest:d}}}function nw(t,e){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&e(t[r]))return r}function iw(t,e){for(let r=0;r{let o=e.match(t.matchPattern);if(!o)return null;let n=o[0],i=e.match(t.parsePattern);if(!i)return null;let a=t.valueCallback?t.valueCallback(i[0]):i[0];a=r.valueCallback?r.valueCallback(a):a;let l=e.slice(n.length);return{value:a,rest:l}}}var aw=/^(\d+)(th|st|nd|rd)?/i,sw=/\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},uw={any:[/^b/i,/^(a|c)/i]},cw={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},dw={any:[/1/i,/2/i,/3/i,/4/i]},fw={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},mw={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]},pw={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},vw={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]},gw={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},hw={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}},Mp={ordinalNumber:Np({matchPattern:aw,parsePattern:sw,valueCallback:t=>parseInt(t,10)}),era:mn({matchPatterns:lw,defaultMatchWidth:"wide",parsePatterns:uw,defaultParseWidth:"any"}),quarter:mn({matchPatterns:cw,defaultMatchWidth:"wide",parsePatterns:dw,defaultParseWidth:"any",valueCallback:t=>t+1}),month:mn({matchPatterns:fw,defaultMatchWidth:"wide",parsePatterns:mw,defaultParseWidth:"any"}),day:mn({matchPatterns:pw,defaultMatchWidth:"wide",parsePatterns:vw,defaultParseWidth:"any"}),dayPeriod:mn({matchPatterns:gw,defaultMatchWidth:"any",parsePatterns:hw,defaultParseWidth:"any"})};var tc={code:"en-US",formatDistance:Rp,formatLong:Vp,formatRelative:kp,localize:Dp,match:Mp,options:{weekStartsOn:0,firstWeekContainsDate:1}};function Fp(t,e){let r=fe(t,e?.in);return Ep(r,Ya(r))+1}function Lp(t,e){let r=fe(t,e?.in),o=+Ro(r)-+Pp(r);return Math.round(o/za)+1}function $a(t,e){let r=fe(t,e?.in),o=r.getFullYear(),n=so(),i=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,a=Ge(e?.in||t,0);a.setFullYear(o+1,0,i),a.setHours(0,0,0,0);let l=Ar(a,e),s=Ge(e?.in||t,0);s.setFullYear(o,0,i),s.setHours(0,0,0,0);let u=Ar(s,e);return+r>=+l?o+1:+r>=+u?o:o-1}function Bp(t,e){let r=so(),o=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,n=$a(t,e),i=Ge(e?.in||t,0);return i.setFullYear(n,0,o),i.setHours(0,0,0,0),Ar(i,e)}function jp(t,e){let r=fe(t,e?.in),o=+Ar(r,e)-+Bp(r,e);return Math.round(o/za)+1}function ie(t,e){let r=t<0?"-":"",o=Math.abs(t).toString().padStart(e,"0");return r+o}var Or={y(t,e){let r=t.getFullYear(),o=r>0?r:1-r;return ie(e==="yy"?o%100:o,e.length)},M(t,e){let r=t.getMonth();return e==="M"?String(r+1):ie(r+1,2)},d(t,e){return ie(t.getDate(),e.length)},a(t,e){let r=t.getHours()/12>=1?"pm":"am";switch(e){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(t,e){return ie(t.getHours()%12||12,e.length)},H(t,e){return ie(t.getHours(),e.length)},m(t,e){return ie(t.getMinutes(),e.length)},s(t,e){return ie(t.getSeconds(),e.length)},S(t,e){let r=e.length,o=t.getMilliseconds(),n=Math.trunc(o*Math.pow(10,r-3));return ie(n,e.length)}};var pn={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},rc={G:function(t,e,r){let o=t.getFullYear()>0?1:0;switch(e){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(t,e,r){if(e==="yo"){let o=t.getFullYear(),n=o>0?o:1-o;return r.ordinalNumber(n,{unit:"year"})}return Or.y(t,e)},Y:function(t,e,r,o){let n=$a(t,o),i=n>0?n:1-n;if(e==="YY"){let a=i%100;return ie(a,2)}return e==="Yo"?r.ordinalNumber(i,{unit:"year"}):ie(i,e.length)},R:function(t,e){let r=qa(t);return ie(r,e.length)},u:function(t,e){let r=t.getFullYear();return ie(r,e.length)},Q:function(t,e,r){let o=Math.ceil((t.getMonth()+1)/3);switch(e){case"Q":return String(o);case"QQ":return ie(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(t,e,r){let o=Math.ceil((t.getMonth()+1)/3);switch(e){case"q":return String(o);case"qq":return ie(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(t,e,r){let o=t.getMonth();switch(e){case"M":case"MM":return Or.M(t,e);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(t,e,r){let o=t.getMonth();switch(e){case"L":return String(o+1);case"LL":return ie(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(t,e,r,o){let n=jp(t,o);return e==="wo"?r.ordinalNumber(n,{unit:"week"}):ie(n,e.length)},I:function(t,e,r){let o=Lp(t);return e==="Io"?r.ordinalNumber(o,{unit:"week"}):ie(o,e.length)},d:function(t,e,r){return e==="do"?r.ordinalNumber(t.getDate(),{unit:"date"}):Or.d(t,e)},D:function(t,e,r){let o=Fp(t);return e==="Do"?r.ordinalNumber(o,{unit:"dayOfYear"}):ie(o,e.length)},E:function(t,e,r){let o=t.getDay();switch(e){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(t,e,r,o){let n=t.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(e){case"e":return String(i);case"ee":return ie(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(t,e,r,o){let n=t.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(e){case"c":return String(i);case"cc":return ie(i,e.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(t,e,r){let o=t.getDay(),n=o===0?7:o;switch(e){case"i":return String(n);case"ii":return ie(n,e.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(t,e,r){let n=t.getHours()/12>=1?"pm":"am";switch(e){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(t,e,r){let o=t.getHours(),n;switch(o===12?n=pn.noon:o===0?n=pn.midnight:n=o/12>=1?"pm":"am",e){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(t,e,r){let o=t.getHours(),n;switch(o>=17?n=pn.evening:o>=12?n=pn.afternoon:o>=4?n=pn.morning:n=pn.night,e){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(t,e,r){if(e==="ho"){let o=t.getHours()%12;return o===0&&(o=12),r.ordinalNumber(o,{unit:"hour"})}return Or.h(t,e)},H:function(t,e,r){return e==="Ho"?r.ordinalNumber(t.getHours(),{unit:"hour"}):Or.H(t,e)},K:function(t,e,r){let o=t.getHours()%12;return e==="Ko"?r.ordinalNumber(o,{unit:"hour"}):ie(o,e.length)},k:function(t,e,r){let o=t.getHours();return o===0&&(o=24),e==="ko"?r.ordinalNumber(o,{unit:"hour"}):ie(o,e.length)},m:function(t,e,r){return e==="mo"?r.ordinalNumber(t.getMinutes(),{unit:"minute"}):Or.m(t,e)},s:function(t,e,r){return e==="so"?r.ordinalNumber(t.getSeconds(),{unit:"second"}):Or.s(t,e)},S:function(t,e){return Or.S(t,e)},X:function(t,e,r){let o=t.getTimezoneOffset();if(o===0)return"Z";switch(e){case"X":return zp(o);case"XXXX":case"XX":return Vo(o);default:return Vo(o,":")}},x:function(t,e,r){let o=t.getTimezoneOffset();switch(e){case"x":return zp(o);case"xxxx":case"xx":return Vo(o);default:return Vo(o,":")}},O:function(t,e,r){let o=t.getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+Hp(o,":");default:return"GMT"+Vo(o,":")}},z:function(t,e,r){let o=t.getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+Hp(o,":");default:return"GMT"+Vo(o,":")}},t:function(t,e,r){let o=Math.trunc(+t/1e3);return ie(o,e.length)},T:function(t,e,r){return ie(+t,e.length)}};function Hp(t,e=""){let r=t>0?"-":"+",o=Math.abs(t),n=Math.trunc(o/60),i=o%60;return i===0?r+String(n):r+String(n)+e+ie(i,2)}function zp(t,e){return t%60===0?(t>0?"-":"+")+ie(Math.abs(t)/60,2):Vo(t,e)}function Vo(t,e=""){let r=t>0?"-":"+",o=Math.abs(t),n=ie(Math.trunc(o/60),2),i=ie(o%60,2);return r+n+e+i}var Wp=(t,e)=>{switch(t){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});default:return e.date({width:"full"})}},Gp=(t,e)=>{switch(t){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});default:return e.time({width:"full"})}},bw=(t,e)=>{let r=t.match(/(P+)(p+)?/)||[],o=r[1],n=r[2];if(!n)return Wp(t,e);let i;switch(o){case"P":i=e.dateTime({width:"short"});break;case"PP":i=e.dateTime({width:"medium"});break;case"PPP":i=e.dateTime({width:"long"});break;default:i=e.dateTime({width:"full"});break}return i.replace("{{date}}",Wp(o,e)).replace("{{time}}",Gp(n,e))},qp={p:Gp,P:bw};var xw=/^D+$/,ww=/^Y+$/,_w=["D","DD","YY","YYYY"];function Yp(t){return xw.test(t)}function Up(t){return ww.test(t)}function $p(t,e,r){let o=yw(t,e,r);if(console.warn(o),_w.includes(t))throw new RangeError(o)}function yw(t,e,r){let o=t[0]==="Y"?"years":"days of the month";return`Use \`${t.toLowerCase()}\` instead of \`${t}\` (in \`${e}\`) for formatting ${o} to the input \`${r}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var Sw=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Cw=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Ew=/^'([^]*?)'?$/,Pw=/''/g,Tw=/[a-zA-Z]/;function oc(t,e,r){let o=so(),n=r?.locale??o.locale??tc,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,l=fe(t,r?.in);if(!dn(l))throw new RangeError("Invalid time value");let s=e.match(Cw).map(d=>{let p=d[0];if(p==="p"||p==="P"){let f=qp[p];return f(d,n.formatLong)}return d}).join("").match(Sw).map(d=>{if(d==="''")return{isToken:!1,value:"'"};let p=d[0];if(p==="'")return{isToken:!1,value:Aw(d)};if(rc[p])return{isToken:!0,value:d};if(p.match(Tw))throw new RangeError("Format string contains an unescaped latin alphabet character `"+p+"`");return{isToken:!1,value:d}});n.localize.preprocessor&&(s=n.localize.preprocessor(l,s));let u={firstWeekContainsDate:i,weekStartsOn:a,locale:n};return s.map(d=>{if(!d.isToken)return d.value;let p=d.value;(!r?.useAdditionalWeekYearTokens&&Up(p)||!r?.useAdditionalDayOfYearTokens&&Yp(p))&&$p(p,e,String(t));let f=rc[p[0]];return f(l,p,n.localize,u)}).join("")}function Aw(t){let e=t.match(Ew);return e?e[1].replace(Pw,"'"):t}function ko(t,e,r){return Wa(t,-e,r)}function Ka(t,e,r){return Ga(t,-e,r)}function Kp(t,e,r){return Tp(t,-e,r)}function Za(t,e,r){return Ap(t,-e,r)}var B=c(U(),1),Re=c(H(),1),bt=c(Do(),1);var nc=c(R(),1),Fe={Name:(0,nc.jsx)("span",{className:"dataviews-filters__summary-filter-text-name"}),Value:(0,nc.jsx)("span",{className:"dataviews-filters__summary-filter-text-value"})};function Xp(t,e){switch(e){case"days":return ko(new Date,t);case"weeks":return Kp(new Date,t);case"months":return Ka(new Date,t);case"years":return Za(new Date,t);default:return new Date}}var Qp={label:(0,B.__)("Is none of"),filterText:(t,e)=>(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is none of: %2$s"),t.name,e.map(r=>r.label).join(", ")),Fe),filter:((t,e,r)=>{if(!r?.length)return!0;let o=e.getValue({item:t});return Array.isArray(o)?!r.some(n=>o.includes(n)):typeof o=="string"?!r.includes(o):!1}),selection:"multi"},Xa=[{name:Se,label:(0,B.__)("Includes"),filterText:(t,e)=>(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s includes: %2$s"),t.name,e.map(r=>r.label).join(", ")),Fe),filter(t,e,r){if(!r?.length)return!0;let o=e.getValue({item:t});return Array.isArray(o)?r.some(n=>o.includes(n)):typeof o=="string"?r.includes(o):!1},selection:"multi"},{name:Ce,...Qp},{name:it,label:(0,B.__)("Includes all"),filterText:(t,e)=>(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s includes all: %2$s"),t.name,e.map(r=>r.label).join(", ")),Fe),filter(t,e,r){return r?.length?r.every(o=>e.getValue({item:t})?.includes(o)):!0},selection:"multi"},{name:at,...Qp},{name:mt,label:(0,B.__)("Between (inc)"),filterText:(t,e)=>(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s between (inc): %2$s and %3$s"),t.name,e[0].label[0],e[0].label[1]),Fe),filter(t,e,r){if(!Array.isArray(r)||r.length!==2||r[0]===void 0||r[1]===void 0)return!0;let o=e.getValue({item:t});return typeof o=="number"||o instanceof Date||typeof o=="string"?o>=r[0]&&o<=r[1]:!1},selection:"custom"},{name:pt,label:(0,B.__)("In the past"),filterText:(t,e)=>(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is in the past: %2$s"),t.name,`${e[0].value.value} ${e[0].value.unit}`),Fe),filter(t,e,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=Xp(r.value,r.unit),n=(0,bt.getDate)(e.getValue({item:t}));return n>=o&&n<=new Date},selection:"custom"},{name:yt,label:(0,B.__)("Over"),filterText:(t,e)=>(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is over: %2$s"),t.name,`${e[0].value.value} ${e[0].value.unit}`),Fe),filter(t,e,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=Xp(r.value,r.unit);return(0,bt.getDate)(e.getValue({item:t}))(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){return r===e.getValue({item:t})||r===void 0},selection:"single"},{name:Pe,label:(0,B.__)("Is not"),filterText:(t,e)=>(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is not: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){return r!==e.getValue({item:t})},selection:"single"},{name:Br,label:(0,B.__)("Less than"),filterText:(t,e)=>(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is less than: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){return r===void 0?!0:e.getValue({item:t})(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is greater than: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){return r===void 0?!0:e.getValue({item:t})>r},selection:"single"},{name:Hr,label:(0,B.__)("Less than or equal"),filterText:(t,e)=>(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is less than or equal to: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){return r===void 0?!0:e.getValue({item:t})<=r},selection:"single"},{name:zr,label:(0,B.__)("Greater than or equal"),filterText:(t,e)=>(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is greater than or equal to: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){return r===void 0?!0:e.getValue({item:t})>=r},selection:"single"},{name:Wr,label:(0,B.__)("Before"),filterText:(t,e)=>(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is before: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){if(r===void 0)return!0;let o=(0,bt.getDate)(r);return(0,bt.getDate)(e.getValue({item:t}))(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is after: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){if(r===void 0)return!0;let o=(0,bt.getDate)(r);return(0,bt.getDate)(e.getValue({item:t}))>o},selection:"single"},{name:qr,label:(0,B.__)("Before (inc)"),filterText:(t,e)=>(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is on or before: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){if(r===void 0)return!0;let o=(0,bt.getDate)(r);return(0,bt.getDate)(e.getValue({item:t}))<=o},selection:"single"},{name:Yr,label:(0,B.__)("After (inc)"),filterText:(t,e)=>(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is on or after: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){if(r===void 0)return!0;let o=(0,bt.getDate)(r);return(0,bt.getDate)(e.getValue({item:t}))>=o},selection:"single"},{name:Zt,label:(0,B.__)("Contains"),filterText:(t,e)=>(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s contains: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){if(r===void 0)return!0;let o=e.getValue({item:t});return typeof o=="string"&&r&&o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:Xt,label:(0,B.__)("Doesn't contain"),filterText:(t,e)=>(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s doesn't contain: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){if(r===void 0)return!0;let o=e.getValue({item:t});return typeof o=="string"&&r&&!o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:Qt,label:(0,B.__)("Starts with"),filterText:(t,e)=>(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s starts with: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){if(r===void 0)return!0;let o=e.getValue({item:t});return typeof o=="string"&&r&&o.toLowerCase().startsWith(String(r).toLowerCase())},selection:"single"},{name:Ur,label:(0,B.__)("On"),filterText:(t,e)=>(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){if(r===void 0)return!0;let o=(0,bt.getDate)(r),n=(0,bt.getDate)(e.getValue({item:t}));return o.getTime()===n.getTime()},selection:"single"},{name:$r,label:(0,B.__)("Not on"),filterText:(t,e)=>(0,Re.createInterpolateElement)((0,B.sprintf)((0,B.__)("%1$s is not: %2$s"),t.name,e[0].label),Fe),filter(t,e,r){if(r===void 0)return!0;let o=(0,bt.getDate)(r),n=(0,bt.getDate)(e.getValue({item:t}));return o.getTime()!==n.getTime()},selection:"single"}],No=t=>Xa.find(e=>e.name===t),Jp=()=>Xa.map(t=>t.name),ev=t=>Xa.filter(e=>e.selection==="single").some(e=>e.name===t),tv=t=>Xa.some(e=>e.name===t);var tt=c(R(),1),Ow="Enter",Iw=" ",Rw=({activeElements:t,filterInView:e,filter:r})=>{if(t===void 0||t.length===0)return r.name;let o=No(e?.operator);return o!==void 0?o.filterText(r,t):(0,Ir.sprintf)((0,Ir.__)("Unknown status for %1$s"),r.name)};function Vw({filter:t,view:e,onChangeView:r}){let o=t.operators?.map(a=>({value:a,label:No(a)?.label||a})),n=e.filters?.find(a=>a.field===t.field),i=n?.operator||t.operators[0];return o.length>1&&(0,tt.jsxs)(F,{direction:"row",gap:"sm",justify:"flex-start",className:"dataviews-filters__summary-operators-container",align:"center",children:[(0,tt.jsx)(Gt.FlexItem,{className:"dataviews-filters__summary-operators-filter-name",children:t.name}),(0,tt.jsx)(Gt.SelectControl,{className:"dataviews-filters__summary-operators-filter-select",label:(0,Ir.__)("Conditions"),value:i,options:o,onChange:a=>{let l=a,s=n?.operator,u=n?[...(e.filters??[]).map(d=>{if(d.field===t.field){let p=No(s)?.selection,f=No(l)?.selection,m=p!==f||[p,f].includes("custom");return{...d,value:m?void 0:d.value,operator:l}}return d})]:[...e.filters??[],{field:t.field,operator:l,value:void 0}];r({...e,page:1,filters:u})},size:"small",variant:"minimal",hideLabelFromVision:!0})]})}function rv({addFilterRef:t,openedFilter:e,fields:r,...o}){let n=(0,Qa.useRef)(null),{filter:i,view:a,onChangeView:l}=o,s=a.filters?.find(h=>h.field===i.field),u=[],d=(0,Qa.useMemo)(()=>{let h=r.find(x=>x.id===i.field);return h&&{...h,getValue:({item:x})=>x[h.id]}},[r,i.field]),{elements:p}=Ze({elements:i.elements,getElements:i.getElements});if(p.length>0)u=p.filter(h=>i.singleSelection?h.value===s?.value:s?.value?.includes(h.value));else if(Array.isArray(s?.value)){let h=s.value.map(x=>d?.getValueFormatted({item:{[d.id]:x},field:d})||String(x));u=[{value:s.value,label:h}]}else if(typeof s?.value=="object")u=[{value:s.value,label:s.value}];else if(s?.value!==void 0){let h=d!==void 0?d.getValueFormatted({item:{[d.id]:s.value},field:d}):String(s.value);u=[{value:s.value,label:h}]}let f=i.isPrimary,m=s?.isLocked,v=!m&&s?.value!==void 0,_=!m&&(!f||v);return(0,tt.jsx)(Gt.Dropdown,{defaultOpen:e===i.field,contentClassName:"dataviews-filters__summary-popover",popoverProps:{placement:"bottom-start",role:"dialog"},onClose:()=>{n.current?.focus()},renderToggle:({isOpen:h,onToggle:x})=>(0,tt.jsxs)("div",{className:"dataviews-filters__summary-chip-container",children:[(0,tt.jsx)(Gt.Tooltip,{text:(0,Ir.sprintf)((0,Ir.__)("Filter by: %1$s"),i.name.toLowerCase()),placement:"top",children:(0,tt.jsx)("div",{className:z("dataviews-filters__summary-chip",{"has-reset":_,"has-values":v,"is-not-clickable":m}),role:"button",tabIndex:m?-1:0,onClick:()=>{m||x()},onKeyDown:y=>{!m&&[Ow,Iw].includes(y.key)&&(x(),y.preventDefault())},"aria-disabled":m,"aria-pressed":h,"aria-expanded":h,ref:n,children:(0,tt.jsx)(Rw,{activeElements:u,filterInView:s,filter:i})})}),_&&(0,tt.jsx)(Gt.Tooltip,{text:f?(0,Ir.__)("Reset"):(0,Ir.__)("Remove"),placement:"top",children:(0,tt.jsx)("button",{className:z("dataviews-filters__summary-chip-remove",{"has-values":v}),onClick:()=>{l({...a,page:1,filters:a.filters?.filter(y=>y.field!==i.field)}),f?n.current?.focus():t.current?.focus()},children:(0,tt.jsx)(Gt.Icon,{icon:Rn})})})]}),renderContent:()=>(0,tt.jsxs)(F,{direction:"column",justify:"flex-start",children:[(0,tt.jsx)(Vw,{...o}),o.filter.hasElements?(0,tt.jsx)(vp,{...o,filter:{...o.filter,elements:p}}):(0,tt.jsx)(_p,{...o,fields:r})]})})}var Ja=c(q(),1),ov=c(U(),1),nv=c(H(),1);var Rr=c(R(),1),{Menu:si}=K(Ja.privateApis);function ic({filters:t,view:e,onChangeView:r,setOpenedFilter:o,triggerProps:n}){let i=t.filter(a=>!a.isVisible);return(0,Rr.jsxs)(si,{children:[(0,Rr.jsx)(si.TriggerButton,{...n}),(0,Rr.jsx)(si.Popover,{children:i.map(a=>(0,Rr.jsx)(si.Item,{onClick:()=>{o(a.field),r({...e,page:1,filters:[...e.filters||[],{field:a.field,value:void 0,operator:a.operators[0]}]})},children:(0,Rr.jsx)(si.ItemLabel,{children:a.name})},a.field))})]})}function kw({filters:t,view:e,onChangeView:r,setOpenedFilter:o},n){if(!t.length||t.every(({isPrimary:a})=>a))return null;let i=t.filter(a=>!a.isVisible);return(0,Rr.jsx)(ic,{triggerProps:{render:(0,Rr.jsx)(Ja.Button,{accessibleWhenDisabled:!0,size:"compact",className:"dataviews-filters-button",variant:"tertiary",disabled:!i.length,ref:n}),children:(0,ov.__)("Add filter")},filters:t,view:e,onChangeView:r,setOpenedFilter:o})}var iv=(0,nv.forwardRef)(kw);var av=c(q(),1),sv=c(U(),1),lv=c(R(),1);function uv({filters:t,view:e,onChangeView:r}){let o=i=>t.some(a=>a.field===i&&a.isPrimary),n=!e.search&&!e.filters?.some(i=>!i.isLocked&&(i.value!==void 0||!o(i.field)));return(0,lv.jsx)(av.Button,{disabled:n,accessibleWhenDisabled:!0,size:"compact",variant:"tertiary",className:"dataviews-filters__reset-button",onClick:()=>{r({...e,page:1,search:"",filters:e.filters?.filter(i=>!!i.isLocked)||[]})},children:(0,sv.__)("Reset")})}var cv=c(H(),1);function Dw(t,e){return(0,cv.useMemo)(()=>{let r=[];return t.forEach(o=>{if(o.filterBy===!1||!o.hasElements&&!o.Edit)return;let n=o.filterBy.operators,i=!!o.filterBy?.isPrimary,a=e.filters?.some(l=>l.field===o.id&&!!l.isLocked)??!1;r.push({field:o.id,name:o.label,elements:o.elements,getElements:o.getElements,hasElements:o.hasElements,singleSelection:n.some(l=>ev(l)),operators:n,isVisible:a||i||!!e.filters?.some(l=>l.field===o.id&&tv(l.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},[t,e])}var li=Dw;var ui=c(R(),1);function Nw({className:t}){let{fields:e,view:r,onChangeView:o,openedFilter:n,setOpenedFilter:i}=(0,vn.useContext)(G),a=(0,vn.useRef)(null),l=li(e,r),s=(0,ui.jsx)(iv,{filters:l,view:r,onChangeView:o,ref:a,setOpenedFilter:i},"add-filter"),u=l.filter(p=>p.isVisible);if(u.length===0)return null;let d=[...u.map(p=>(0,ui.jsx)(rv,{filter:p,view:r,fields:e,onChangeView:o,addFilterRef:a,openedFilter:n},p.field)),s];return d.push((0,ui.jsx)(uv,{filters:l,view:r,onChangeView:o},"reset-filters")),(0,ui.jsx)(F,{direction:"row",justify:"flex-start",gap:"sm",style:{width:"fit-content"},wrap:"wrap",className:t,children:d})}var ci=(0,vn.memo)(Nw);var lo=c(H(),1),dv=c(q(),1);var es=c(U(),1);var lr=c(R(),1);function Mw(){let{filters:t,view:e,onChangeView:r,setOpenedFilter:o,isShowingFilter:n,setIsShowingFilter:i}=(0,lo.useContext)(G),a=(0,lo.useRef)(null),l=(0,lo.useCallback)(m=>{r(m),i(!0)},[r,i]);if(t.length===0)return null;let s=t.some(m=>m.isVisible),u={label:(0,es.__)("Add filter"),"aria-expanded":!1,isPressed:!1},d={label:(0,es._x)("Filter","verb"),"aria-expanded":n,isPressed:n,onClick:()=>{n||o(null),i(!n)}},p=t.some(m=>m.isPrimary||m.isLocked),f=(0,lr.jsx)(dv.Button,{ref:a,className:"dataviews-filters__visibility-toggle",size:"compact",icon:Vn,disabled:p,accessibleWhenDisabled:!0,...s?d:u});return(0,lr.jsx)("div",{className:"dataviews-filters__container-visibility-toggle",children:s?(0,lr.jsx)(Fw,{buttonRef:a,filtersCount:e.filters?.length,children:f}):(0,lr.jsx)(ic,{filters:t,view:e,onChangeView:l,setOpenedFilter:o,triggerProps:{render:f}})})}function Fw({buttonRef:t,filtersCount:e,children:r}){return(0,lo.useEffect)(()=>()=>{t.current?.focus()},[t]),(0,lr.jsxs)(lr.Fragment,{children:[r,!!e&&(0,lr.jsx)("span",{className:"dataviews-filters-toggle__count",children:e})]})}var ts=Mw;var fv=c(H(),1);var mv=c(R(),1);function Lw(t){let{isShowingFilter:e}=(0,fv.useContext)(G);return e?(0,mv.jsx)(ci,{...t}):null}var rs=Lw;var pv=c(H(),1),vv=c(U(),1);var ac=c(R(),1);function sc({className:t}){let{actions:e=[],data:r,fields:o,getItemId:n,getItemLevel:i,hasInitiallyLoaded:a,isLoading:l,view:s,onChangeView:u,selection:d,onChangeSelection:p,setOpenedFilter:f,onClickItem:m,isItemClickable:v,renderItemLink:_,defaultLayouts:h,empty:x=(0,ac.jsx)("p",{children:(0,vv.__)("No results")})}=(0,pv.useContext)(G);if(!a)return null;let y=eo.find(S=>S.type===s.type&&h[S.type])?.component;return(0,ac.jsx)(y,{className:t,actions:e,data:r,fields:o,getItemId:n,getItemLevel:i,isLoading:l,onChangeView:u,onChangeSelection:p,selection:d,setOpenedFilter:f,onClickItem:m,renderItemLink:_,isItemClickable:v,view:s,empty:x})}var gv=c(H(),1);var gn=c(R(),1),Bw=[];function lc(){let{view:t,paginationInfo:{totalItems:e=0,totalPages:r},data:o,actions:n=Bw,isLoading:i,hasInitiallyLoaded:a,hasInfiniteScrollHandler:l}=(0,gv.useContext)(G),s=!!i&&a&&!l&&!!o?.length,u=er(!!s),d=Yo(n,o)&&[Ho,ra].includes(t.type);return!s&&(!e||!r||r<=1&&!d)?null:(!!e||s)&&(0,gn.jsx)("div",{className:"dataviews-footer",inert:s?"true":void 0,children:(0,gn.jsxs)(F,{direction:"row",justify:"end",align:"center",className:z("dataviews-footer__content",{"is-refreshing":u}),gap:"sm",children:[d&&(0,gn.jsx)(aa,{}),(0,gn.jsx)(lf,{})]})})}var hv=c(U(),1),qt=c(H(),1),bv=c(q(),1),xv=c(_t(),1);var wv=c(R(),1),jw=(0,qt.memo)(function({label:e}){let{view:r,onChangeView:o}=(0,qt.useContext)(G),[n,i,a]=(0,xv.useDebouncedInput)(r.search);(0,qt.useEffect)(()=>{i(r.search??"")},[r.search,i]);let l=(0,qt.useRef)(o),s=(0,qt.useRef)(r);(0,qt.useEffect)(()=>{l.current=o,s.current=r},[o,r]),(0,qt.useEffect)(()=>{a!==s.current?.search&&l.current({...s.current,page:1,search:a})},[a]);let u=e||(0,hv.__)("Search");return(0,wv.jsx)(bv.SearchControl,{className:"dataviews-search",onChange:i,value:n,label:u,placeholder:u,size:"compact"})}),uc=jw;var Le=c(q(),1),Vr=c(U(),1),Yt=c(H(),1);var dc=c(yv(),1),Tv=c(_t(),1);var Sv=c(q(),1),cc=c(U(),1),Cv=c(H(),1);var Ev=c(R(),1);function Pv(){let t=(0,Cv.useContext)(G),{view:e,onChangeView:r}=t,o=e.infiniteScrollEnabled??!1;return t.hasInfiniteScrollHandler?(0,Ev.jsx)(Sv.ToggleControl,{label:(0,cc.__)("Enable infinite scroll"),help:(0,cc.__)("Automatically load more content as you scroll, instead of showing pagination links."),checked:o,onChange:n=>{r({...e,infiniteScrollEnabled:n})}}):null}var re=c(R(),1),{Menu:di}=K(Le.privateApis),Hw={className:"dataviews-config__popover",placement:"bottom-end",offset:9};function fc(){let{view:t,onChangeView:e,defaultLayouts:r}=(0,Yt.useContext)(G),o=Object.keys(r);if(o.length<=1)return null;let n=eo.find(i=>t.type===i.type);return(0,re.jsxs)(di,{children:[(0,re.jsx)(di.TriggerButton,{render:(0,re.jsx)(Le.Button,{size:"compact",icon:n?.icon,label:(0,Vr.__)("Layout")})}),(0,re.jsx)(di.Popover,{children:o.map(i=>{let a=eo.find(l=>l.type===i);return a?(0,re.jsx)(di.RadioItem,{value:i,name:"view-actions-available-view",checked:i===t.type,hideOnClick:!0,onChange:l=>{switch(l.target.value){case"list":case"grid":case"table":case"pickerGrid":case"pickerTable":case"activity":let s={...t};return"layout"in s&&delete s.layout,e({...s,type:l.target.value,...r[l.target.value]})}(0,dc.default)("Invalid dataview")},children:(0,re.jsx)(di.ItemLabel,{children:a.label})},i):null})})]})}function zw(){let{view:t,fields:e,onChangeView:r}=(0,Yt.useContext)(G),o=(0,Yt.useMemo)(()=>e.filter(i=>i.enableSorting!==!1).map(i=>({label:i.label,value:i.id})),[e]);return(0,re.jsx)(Le.SelectControl,{__next40pxDefaultSize:!0,label:(0,Vr.__)("Sort by"),value:t.sort?.field,options:o,onChange:n=>{r({...t,sort:{direction:t?.sort?.direction||"desc",field:n},showLevels:!1})}})}function Ww(){let{view:t,fields:e,onChangeView:r}=(0,Yt.useContext)(G);if(e.filter(i=>i.enableSorting!==!1).length===0)return null;let n=t.sort?.direction;return!n&&t.sort?.field&&(n="desc"),(0,re.jsx)(Le.__experimentalToggleGroupControl,{className:"dataviews-view-config__sort-direction",__next40pxDefaultSize:!0,isBlock:!0,label:(0,Vr.__)("Order"),value:n,onChange:i=>{if(i==="asc"||i==="desc"){r({...t,sort:{direction:i,field:t.sort?.field||e.find(a=>a.enableSorting!==!1)?.id||""},showLevels:!1});return}(0,dc.default)("Invalid direction")},children:Ji.map(i=>(0,re.jsx)(Le.__experimentalToggleGroupControlOptionIcon,{value:i,icon:gd[i],label:ta[i]},i))})}function Gw(){let{view:t,config:e,onChangeView:r}=(0,Yt.useContext)(G),{infiniteScrollEnabled:o}=t;return!e||!e.perPageSizes||e.perPageSizes.length<2||e.perPageSizes.length>6||o?null:(0,re.jsx)(Le.__experimentalToggleGroupControl,{__next40pxDefaultSize:!0,isBlock:!0,label:(0,Vr.__)("Items per page"),value:t.perPage||10,disabled:!t?.sort?.field,onChange:n=>{let i=typeof n=="number"||n===void 0?n:parseInt(n,10);r({...t,perPage:i,page:1})},children:e.perPageSizes.map(n=>(0,re.jsx)(Le.__experimentalToggleGroupControlOption,{value:n,label:n.toString()},n))})}function qw(){let{onReset:t}=(0,Yt.useContext)(G);return t===void 0?null:(0,re.jsx)(Le.Button,{variant:"tertiary",size:"compact",disabled:t===!1,accessibleWhenDisabled:!0,className:"dataviews-view-config__reset-button",onClick:()=>{typeof t=="function"&&t()},children:(0,Vr.__)("Reset view")})}function mc(){let{view:t,onReset:e}=(0,Yt.useContext)(G),r=(0,Tv.useInstanceId)(Av,"dataviews-view-config-dropdown"),o=eo.find(i=>i.type===t.type),n=typeof e=="function";return(0,re.jsx)(Le.Dropdown,{expandOnMobile:!0,popoverProps:{...Hw,id:r},renderToggle:({onToggle:i,isOpen:a})=>(0,re.jsxs)("div",{className:"dataviews-view-config__toggle-wrapper",children:[(0,re.jsx)(Le.Button,{size:"compact",icon:ml,label:(0,Vr._x)("View options","View is used as a noun"),onClick:i,"aria-expanded":a?"true":"false","aria-controls":r}),n&&(0,re.jsx)("span",{className:"dataviews-view-config__modified-indicator"})]}),renderContent:()=>(0,re.jsx)(Le.__experimentalDropdownContentWrapper,{paddingSize:"medium",className:"dataviews-config__popover-content-wrapper",children:(0,re.jsxs)(F,{direction:"column",className:"dataviews-view-config",gap:"xl",children:[(0,re.jsxs)(F,{direction:"row",justify:"space-between",align:"center",className:"dataviews-view-config__header",children:[(0,re.jsx)(Le.__experimentalHeading,{level:2,className:"dataviews-settings-section__title",children:(0,Vr.__)("Appearance")}),(0,re.jsx)(qw,{})]}),(0,re.jsxs)(F,{direction:"column",gap:"lg",children:[(0,re.jsxs)(F,{direction:"row",gap:"sm",className:"dataviews-view-config__sort-controls",children:[(0,re.jsx)(zw,{}),(0,re.jsx)(Ww,{})]}),!!o?.viewConfigOptions&&(0,re.jsx)(o.viewConfigOptions,{}),(0,re.jsx)(Pv,{}),(0,re.jsx)(Gw,{}),(0,re.jsx)(ua,{})]})]})})})}function Av(){return(0,re.jsxs)(re.Fragment,{children:[(0,re.jsx)(fc,{}),(0,re.jsx)(mc,{})]})}var Yw=(0,Yt.memo)(Av),Ov=Yw;var Iv=c(q(),1),Rv=c(H(),1);function ve(t,e){let r;return t?.required&&e?.required?r=e?.required?.message?e.required:void 0:t?.pattern&&e?.pattern?r=e.pattern:t?.min&&e?.min?r=e.min:t?.max&&e?.max?r=e.max:t?.minLength&&e?.minLength?r=e.minLength:t?.maxLength&&e?.maxLength?r=e.maxLength:t?.elements&&e?.elements?r=e.elements:e?.custom&&(r=e.custom),r}var Vv=c(R(),1),{ValidatedCheckboxControl:Uw}=K(Iv.privateApis);function kv({field:t,onChange:e,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:l,label:s,description:u,isValid:d}=t,p=(0,Rv.useCallback)(()=>{e(l({item:r,value:!a({item:r})}))},[r,a,e,l]);return(0,Vv.jsx)(Uw,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:ve(d,i),hidden:o,label:s,help:u,checked:a({item:r}),onChange:p})}var os=c(q(),1),Dv=c(H(),1);var pc=c(R(),1),{ValidatedComboboxControl:$w}=K(os.privateApis);function ns({data:t,field:e,onChange:r,hideLabelFromVision:o,validity:n}){let{label:i,description:a,placeholder:l,getValue:s,setValue:u,isValid:d}=e,p=s({item:t})??"",f=(0,Dv.useCallback)(_=>r(u({item:t,value:_??""})),[t,r,u]),{elements:m,isLoading:v}=Ze({elements:e.elements,getElements:e.getElements});return v?(0,pc.jsx)(os.Spinner,{}):(0,pc.jsx)($w,{required:!!e.isValid?.required,customValidity:ve(d,n),label:i,value:p,help:a,placeholder:l,options:m,onChange:f,hideLabelFromVision:o,allowReset:!0,expandOnFocus:!0})}var ls=c(q(),1),Ht=c(H(),1),ss=c(U(),1),Dt=c(Do(),1);var bn=c(q(),1),vc=c(H(),1),ur=c(U(),1);var hn=c(R(),1),Kw={[pt]:[{value:"days",label:(0,ur.__)("Days")},{value:"weeks",label:(0,ur.__)("Weeks")},{value:"months",label:(0,ur.__)("Months")},{value:"years",label:(0,ur.__)("Years")}],[yt]:[{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 is({className:t,data:e,field:r,onChange:o,hideLabelFromVision:n,operator:i}){let a=Kw[i===pt?"inThePast":"over"],{id:l,label:s,getValue:u,setValue:d}=r,p=u({item:e}),{value:f="",unit:m=a[0].value}=p&&typeof p=="object"?p:{},v=(0,vc.useCallback)(h=>o(d({item:e,value:{value:Number(h),unit:m}})),[o,d,e,m]),_=(0,vc.useCallback)(h=>o(d({item:e,value:{value:f,unit:h}})),[o,d,e,f]);return(0,hn.jsx)(bn.BaseControl,{id:l,className:z(t,"dataviews-controls__relative-date"),label:s,hideLabelFromVision:n,children:(0,hn.jsxs)(F,{direction:"row",gap:"sm",children:[(0,hn.jsx)(bn.__experimentalNumberControl,{__next40pxDefaultSize:!0,className:"dataviews-controls__relative-date-number",spinControls:"none",min:1,step:1,value:f,onChange:v}),(0,hn.jsx)(bn.SelectControl,{className:"dataviews-controls__relative-date-unit",__next40pxDefaultSize:!0,label:(0,ur.__)("Unit"),value:m,options:a,onChange:_,hideLabelFromVision:!0})]})})}var Nv=c(Do(),1);function as(t){if(!t)return null;let e=(0,Nv.getDate)(t);return e&&dn(e)?e:null}var uo=c(R(),1),{DateCalendar:Zw,ValidatedInputControl:Xw}=K(ls.privateApis),Qw=t=>t?(0,Dt.dateI18n)("Y-m-d\\TH:i",(0,Dt.getDate)(t)):"";function Jw({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:l,description:s,setValue:u,getValue:d,isValid:p}=e,f=d({item:t}),m=typeof f=="string"?f:void 0,[v,_]=(0,Ht.useState)(()=>as(m)||new Date),h=(0,Ht.useRef)(null),x=(0,Ht.useRef)(void 0),y=(0,Ht.useRef)(null),S=(0,Ht.useCallback)(k=>r(u({item:t,value:k})),[t,r,u]);(0,Ht.useEffect)(()=>()=>{x.current&&clearTimeout(x.current)},[]);let V=(0,Ht.useCallback)(k=>{let b;if(k){let P=(0,Dt.dateI18n)("Y-m-d",k),T;m?T=(0,Dt.dateI18n)("H:i",(0,Dt.getDate)(m)):T=(0,Dt.dateI18n)("H:i",k),b=(0,Dt.getDate)(`${P}T${T}`).toISOString(),S(b),x.current&&clearTimeout(x.current)}else S(void 0);y.current=h.current&&h.current.ownerDocument.activeElement,x.current=setTimeout(()=>{h.current&&(h.current.focus(),h.current.blur(),S(b),y.current&&y.current instanceof HTMLElement&&y.current.focus())},0)},[S,m]),O=(0,Ht.useCallback)(k=>{if(k){let b=(0,Dt.getDate)(k);S(b.toISOString());let P=as(b.toISOString());P&&_(P)}else S(void 0)},[S]),{format:N}=e,D=N.weekStartsOn??(0,Dt.getSettings)().l10n.startOfWeek,{timezone:{string:E}}=(0,Dt.getSettings)(),A=l;return p?.required&&!n&&!o?A=`${l} (${(0,ss.__)("Required")})`:!p?.required&&n&&!o&&(A=`${l} (${(0,ss.__)("Optional")})`),(0,uo.jsx)(ls.BaseControl,{id:a,label:A,help:s,hideLabelFromVision:o,children:(0,uo.jsxs)(F,{direction:"column",gap:"lg",children:[(0,uo.jsx)(Zw,{style:{width:"100%"},selected:m&&as(m)||void 0,onSelect:V,month:v,onMonthChange:_,timeZone:E||void 0,weekStartsOn:D}),(0,uo.jsx)(Xw,{ref:h,__next40pxDefaultSize:!0,required:!!p?.required,customValidity:ve(p,i),type:"datetime-local",label:(0,ss.__)("Date time"),hideLabelFromVision:!0,value:Qw(m),onChange:O})]})})}function Mv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===pt||i===yt?(0,uo.jsx)(is,{className:"dataviews-controls__datetime",data:t,field:e,onChange:r,hideLabelFromVision:o,operator:i}):(0,uo.jsx)(Jw,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var ct=c(q(),1),de=c(H(),1),qe=c(U(),1),ut=c(Do(),1);var ge=c(R(),1),{DateCalendar:e_,DateRangeCalendar:t_}=K(ct.privateApis),r_=[{id:"today",label:(0,qe.__)("Today"),getValue:()=>(0,ut.getDate)(null)},{id:"yesterday",label:(0,qe.__)("Yesterday"),getValue:()=>{let t=(0,ut.getDate)(null);return ko(t,1)}},{id:"past-week",label:(0,qe.__)("Past week"),getValue:()=>{let t=(0,ut.getDate)(null);return ko(t,7)}},{id:"past-month",label:(0,qe.__)("Past month"),getValue:()=>{let t=(0,ut.getDate)(null);return Ka(t,1)}}],o_=[{id:"last-7-days",label:(0,qe.__)("Last 7 days"),getValue:()=>{let t=(0,ut.getDate)(null);return[ko(t,7),t]}},{id:"last-30-days",label:(0,qe.__)("Last 30 days"),getValue:()=>{let t=(0,ut.getDate)(null);return[ko(t,30),t]}},{id:"month-to-date",label:(0,qe.__)("Month to date"),getValue:()=>{let t=(0,ut.getDate)(null);return[Ip(t),t]}},{id:"last-year",label:(0,qe.__)("Last year"),getValue:()=>{let t=(0,ut.getDate)(null);return[Za(t,1),t]}},{id:"year-to-date",label:(0,qe.__)("Year to date"),getValue:()=>{let t=(0,ut.getDate)(null);return[Ya(t),t]}}],xn=t=>{if(!t)return null;let e=(0,ut.getDate)(t);return e&&dn(e)?e:null},gc=t=>t?typeof t=="string"?t:oc(t,"yyyy-MM-dd"):"";function Fv({field:t,validity:e,inputRefs:r,isTouched:o,setIsTouched:n,children:i}){let{isValid:a}=t,[l,s]=(0,de.useState)(void 0),u=(0,de.useCallback)(()=>{let p=Array.isArray(r)?r:[r];for(let f of p){let m=f.current;if(m&&!m.validity.valid){s({type:"invalid",message:m.validationMessage});return}}s(void 0)},[r]);return(0,de.useEffect)(()=>{let p=Array.isArray(r)?r:[r],f=e?ve(a,e):void 0;for(let m of p){let v=m.current;v&&v.setCustomValidity(f?.type==="invalid"&&f.message?f.message:"")}},[r,a,e]),(0,de.useEffect)(()=>{let p=Array.isArray(r)?r:[r],f=m=>{m.preventDefault(),n(!0)};for(let m of p)m.current?.addEventListener("invalid",f);return()=>{for(let m of p)m.current?.removeEventListener("invalid",f)}},[r,n]),(0,de.useEffect)(()=>{if(!o)return;let p=e?ve(a,e):void 0;p?s(p):u()},[o,a,e,u]),(0,ge.jsxs)("div",{onBlur:p=>{o||(!p.relatedTarget||!p.currentTarget.contains(p.relatedTarget))&&n(!0)},children:[i,(0,ge.jsx)("div",{"aria-live":"polite",children:l&&(0,ge.jsxs)("p",{className:z("components-validated-control__indicator",l.type==="invalid"?"is-invalid":void 0),children:[(0,ge.jsx)(ct.Icon,{className:"components-validated-control__indicator-icon",icon:hl,size:16,fill:"currentColor"}),l.message]})})]})}function n_({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:l,setValue:s,getValue:u,isValid:d,format:p}=e,[f,m]=(0,de.useState)(null),v=p.weekStartsOn??(0,ut.getSettings)().l10n.startOfWeek,_=u({item:t}),h=typeof _=="string"?_:void 0,[x,y]=(0,de.useState)(()=>xn(h)||new Date),[S,V]=(0,de.useState)(!1),O=(0,de.useRef)(null),N=(0,de.useCallback)(P=>r(s({item:t,value:P})),[t,r,s]),D=(0,de.useCallback)(P=>{let T=P?oc(P,"yyyy-MM-dd"):void 0;N(T),m(null),V(!0)},[N]),E=(0,de.useCallback)(P=>{let T=P.getValue(),g=gc(T);y(T),N(g),m(P.id),V(!0)},[N]),A=(0,de.useCallback)(P=>{if(N(P),P){let T=xn(P);T&&y(T)}m(null),V(!0)},[N]),{timezone:{string:k}}=(0,ut.getSettings)(),b=l;return d?.required&&!n?b=`${l} (${(0,qe.__)("Required")})`:!d?.required&&n&&(b=`${l} (${(0,qe.__)("Optional")})`),(0,ge.jsx)(Fv,{field:e,validity:i,inputRefs:O,isTouched:S,setIsTouched:V,children:(0,ge.jsx)(ct.BaseControl,{id:a,className:"dataviews-controls__date",label:b,hideLabelFromVision:o,children:(0,ge.jsxs)(F,{direction:"column",gap:"lg",children:[(0,ge.jsxs)(F,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[r_.map(P=>{let T=f===P.id;return(0,ge.jsx)(ct.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:T,size:"small",onClick:()=>E(P),children:P.label},P.id)}),(0,ge.jsx)(ct.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!f,size:"small",disabled:!!f,accessibleWhenDisabled:!1,children:(0,qe.__)("Custom")})]}),(0,ge.jsx)(ct.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:O,type:"date",label:(0,qe.__)("Date"),hideLabelFromVision:!0,value:h,onChange:A,required:!!e.isValid?.required}),(0,ge.jsx)(e_,{style:{width:"100%"},selected:h&&xn(h)||void 0,onSelect:D,month:x,onMonthChange:y,timeZone:k||void 0,weekStartsOn:v})]})})})}function i_({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:l,getValue:s,setValue:u,format:d}=e,p,f=s({item:t});Array.isArray(f)&&f.length===2&&f.every(g=>typeof g=="string")&&(p=f);let m=d.weekStartsOn??(0,ut.getSettings)().l10n.startOfWeek,v=(0,de.useCallback)(g=>{r(u({item:t,value:g}))},[t,r,u]),[_,h]=(0,de.useState)(null),x=(0,de.useMemo)(()=>{if(!p)return{from:void 0,to:void 0};let[g,I]=p;return{from:xn(g)||void 0,to:xn(I)||void 0}},[p]),[y,S]=(0,de.useState)(()=>x.from||new Date),[V,O]=(0,de.useState)(!1),N=(0,de.useRef)(null),D=(0,de.useRef)(null),E=(0,de.useCallback)((g,I)=>{g&&I?v([gc(g),gc(I)]):!g&&!I&&v(void 0)},[v]),A=(0,de.useCallback)(g=>{E(g?.from,g?.to),h(null),O(!0)},[E]),k=(0,de.useCallback)(g=>{let[I,w]=g.getValue();S(I),E(I,w),h(g.id),O(!0)},[E]),b=(0,de.useCallback)((g,I)=>{let[w,C]=p||[void 0,void 0];if(E(g==="from"?I:w,g==="to"?I:C),I){let ae=xn(I);ae&&S(ae)}h(null),O(!0)},[p,E]),{timezone:P}=(0,ut.getSettings)(),T=l;return e.isValid?.required&&!n?T=`${l} (${(0,qe.__)("Required")})`:!e.isValid?.required&&n&&(T=`${l} (${(0,qe.__)("Optional")})`),(0,ge.jsx)(Fv,{field:e,validity:i,inputRefs:[N,D],isTouched:V,setIsTouched:O,children:(0,ge.jsx)(ct.BaseControl,{id:a,className:"dataviews-controls__date",label:T,hideLabelFromVision:o,children:(0,ge.jsxs)(F,{direction:"column",gap:"lg",children:[(0,ge.jsxs)(F,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[o_.map(g=>{let I=_===g.id;return(0,ge.jsx)(ct.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:I,size:"small",onClick:()=>k(g),children:g.label},g.id)}),(0,ge.jsx)(ct.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!_,size:"small",accessibleWhenDisabled:!1,disabled:!!_,children:(0,qe.__)("Custom")})]}),(0,ge.jsxs)(F,{direction:"row",gap:"sm",justify:"space-between",className:"dataviews-controls__date-range-inputs",children:[(0,ge.jsx)(ct.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:N,type:"date",label:(0,qe.__)("From"),hideLabelFromVision:!0,value:p?.[0],onChange:g=>b("from",g),required:!!e.isValid?.required}),(0,ge.jsx)(ct.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:D,type:"date",label:(0,qe.__)("To"),hideLabelFromVision:!0,value:p?.[1],onChange:g=>b("to",g),required:!!e.isValid?.required})]}),(0,ge.jsx)(t_,{style:{width:"100%"},selected:x,onSelect:A,month:y,onMonthChange:S,timeZone:P.string||void 0,weekStartsOn:m})]})})})}function Lv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===pt||i===yt?(0,ge.jsx)(is,{className:"dataviews-controls__date",data:t,field:e,onChange:r,hideLabelFromVision:o,operator:i}):i===mt?(0,ge.jsx)(i_,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a}):(0,ge.jsx)(n_,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var us=c(q(),1),Bv=c(H(),1);var hc=c(R(),1),{ValidatedSelectControl:a_}=K(us.privateApis);function cs({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{type:a,label:l,description:s,getValue:u,setValue:d,isValid:p}=e,f=a==="array",m=u({item:t})??(f?[]:""),v=(0,Bv.useCallback)(x=>r(d({item:t,value:x})),[t,r,d]),{elements:_,isLoading:h}=Ze({elements:e.elements,getElements:e.getElements});return h?(0,hc.jsx)(us.Spinner,{}):(0,hc.jsx)(a_,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:ve(p,i),label:l,value:m,help:s,options:_,onChange:v,__next40pxDefaultSize:!0,hideLabelFromVision:o,multiple:f})}var bc=c(R(),1),s_=10;function jv(t){let{field:e}=t,{elements:r}=Ze({elements:e.elements,getElements:e.getElements});return r.length>=s_?(0,bc.jsx)(ns,{...t}):(0,bc.jsx)(cs,{...t})}var fs=c(q(),1);var Hv=c(q(),1),zv=c(H(),1);var Wv=c(R(),1),{ValidatedInputControl:l_}=K(Hv.privateApis);function cr({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,type:i,prefix:a,suffix:l,validity:s}){let{label:u,placeholder:d,description:p,getValue:f,setValue:m,isValid:v}=e,_=f({item:t}),h=(0,zv.useCallback)(x=>r(m({item:t,value:x})),[t,m,r]);return(0,Wv.jsx)(l_,{required:!!v.required,markWhenOptional:n,customValidity:ve(v,s),label:u,placeholder:d,value:_??"",help:p,onChange:h,hideLabelFromVision:o,type:i,prefix:a,suffix:l,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 ds=c(R(),1);function Gv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,ds.jsx)(cr,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"email",prefix:(0,ds.jsx)(fs.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,ds.jsx)(fs.Icon,{icon:vl})})})}var ps=c(q(),1);var ms=c(R(),1);function qv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,ms.jsx)(cr,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"tel",prefix:(0,ms.jsx)(ps.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,ms.jsx)(ps.Icon,{icon:Il})})})}var gs=c(q(),1);var vs=c(R(),1);function Yv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,vs.jsx)(cr,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"url",prefix:(0,vs.jsx)(gs.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,vs.jsx)(gs.Icon,{icon:Al})})})}var kr=c(q(),1),fi=c(H(),1),hs=c(U(),1);var co=c(R(),1),{ValidatedNumberControl:u_}=K(kr.privateApis);function Uv(t){if(t===""||t===void 0)return"";let e=Number(t);return Number.isFinite(e)?e:""}function c_({value:t,onChange:e,hideLabelFromVision:r,step:o}){let[n="",i=""]=t,a=(0,fi.useCallback)(s=>e([Uv(s),i]),[e,i]),l=(0,fi.useCallback)(s=>e([n,Uv(s)]),[e,n]);return(0,co.jsx)(kr.BaseControl,{help:(0,hs.__)("The max. value must be greater than the min. value."),children:(0,co.jsxs)(kr.Flex,{direction:"row",gap:4,children:[(0,co.jsx)(kr.__experimentalNumberControl,{label:(0,hs.__)("Min."),value:n,max:i?Number(i)-o:void 0,onChange:a,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o}),(0,co.jsx)(kr.__experimentalNumberControl,{label:(0,hs.__)("Max."),value:i,min:n?Number(n)+o:void 0,onChange:l,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o})]})})}function bs({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){let l=e.format?.decimals??0,s=Math.pow(10,Math.abs(l)*-1),{label:u,description:d,getValue:p,setValue:f,isValid:m}=e,v=p({item:t})??"",_=(0,fi.useCallback)(x=>{r(f({item:t,value:["",void 0].includes(x)?void 0:Number(x)}))},[t,r,f]),h=(0,fi.useCallback)(x=>{r(f({item:t,value:x}))},[t,r,f]);if(i===mt){let x=["",""];return Array.isArray(v)&&v.length===2&&v.every(y=>typeof y=="number"||y==="")&&(x=v),(0,co.jsx)(c_,{value:x,onChange:h,hideLabelFromVision:o,step:s})}return(0,co.jsx)(u_,{required:!!m.required,markWhenOptional:n,customValidity:ve(m,a),label:u,help:d,value:v,onChange:_,__next40pxDefaultSize:!0,hideLabelFromVision:o,step:s,min:m.min?m.min.constraint:void 0,max:m.max?m.max.constraint:void 0})}var $v=c(R(),1);function Kv(t){return(0,$v.jsx)(bs,{...t})}var Zv=c(R(),1);function Xv(t){return(0,Zv.jsx)(bs,{...t})}var xs=c(q(),1),Qv=c(H(),1);var xc=c(R(),1),{ValidatedRadioControl:d_}=K(xs.privateApis);function Jv({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:l,getValue:s,setValue:u,isValid:d}=e,{elements:p,isLoading:f}=Ze({elements:e.elements,getElements:e.getElements}),m=s({item:t}),v=(0,Qv.useCallback)(_=>r(u({item:t,value:_})),[t,r,u]);return f?(0,xc.jsx)(xs.Spinner,{}):(0,xc.jsx)(d_,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:ve(d,i),label:a,help:l,onChange:v,options:p,selected:m,hideLabelFromVision:o})}var wc=c(H(),1);var eg=c(R(),1);function tg({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{prefix:l,suffix:s}=i||{};return(0,eg.jsx)(cr,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a,prefix:l?(0,wc.createElement)(l):void 0,suffix:s?(0,wc.createElement)(s):void 0})}var rg=c(q(),1),og=c(H(),1);var ng=c(R(),1),{ValidatedToggleControl:f_}=K(rg.privateApis);function ig({field:t,onChange:e,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:l,getValue:s,setValue:u,isValid:d}=t,p=(0,og.useCallback)(()=>{e(u({item:r,value:!s({item:r})}))},[e,u,r,s]);return(0,ng.jsx)(f_,{required:!!d.required,markWhenOptional:n,customValidity:ve(d,i),hidden:o,label:a,help:l,checked:s({item:r}),onChange:p})}var ag=c(q(),1),sg=c(H(),1);var lg=c(R(),1),{ValidatedTextareaControl:m_}=K(ag.privateApis);function ug({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{rows:l=4}=i||{},{label:s,placeholder:u,description:d,setValue:p,isValid:f}=e,m=e.getValue({item:t}),v=(0,sg.useCallback)(_=>r(p({item:t,value:_})),[t,r,p]);return(0,lg.jsx)(m_,{required:!!f.required,markWhenOptional:n,customValidity:ve(f,a),label:s,placeholder:u,value:m??"",help:d,onChange:v,rows:l,minLength:f.minLength?f.minLength.constraint:void 0,maxLength:f.maxLength?f.maxLength.constraint:void 0,__next40pxDefaultSize:!0,hideLabelFromVision:o})}var wn=c(q(),1),cg=c(H(),1);var ws=c(R(),1),{ValidatedToggleGroupControl:p_}=K(wn.privateApis);function dg({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:l,isValid:s}=e,u=a({item:t}),d=(0,cg.useCallback)(v=>r(l({item:t,value:v})),[t,r,l]),{elements:p,isLoading:f}=Ze({elements:e.elements,getElements:e.getElements});if(f)return(0,ws.jsx)(wn.Spinner,{});if(p.length===0)return null;let m=p.find(v=>v.value===u);return(0,ws.jsx)(p_,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:ve(s,i),__next40pxDefaultSize:!0,isBlock:!0,label:e.label,help:m?.description||e.description,onChange:d,value:u,hideLabelFromVision:o,children:p.map(v=>(0,ws.jsx)(wn.__experimentalToggleGroupControlOption,{label:v.label,value:v.value},v.value))})}var _s=c(q(),1),ys=c(H(),1);var mi=c(R(),1),{ValidatedFormTokenField:v_}=K(_s.privateApis);function fg({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:l,getValue:s,setValue:u,isValid:d}=e,p=s({item:t}),{elements:f,isLoading:m}=Ze({elements:e.elements,getElements:e.getElements}),v=(0,ys.useMemo)(()=>Array.isArray(p)?p.map(h=>f?.find(y=>y.value===h)||{value:h,label:h}):[],[p,f]),_=(0,ys.useCallback)(h=>{let x=h.map(y=>typeof y=="object"&&"value"in y?y.value:y);r(u({item:t,value:x}))},[r,u,t]);return m?(0,mi.jsx)(_s.Spinner,{}):(0,mi.jsx)(v_,{required:!!d?.required,markWhenOptional:n,customValidity:ve(d,i),label:o?void 0:a,value:v,onChange:_,placeholder:l,suggestions:f?.map(h=>h.value),__experimentalValidateInput:h=>e.isValid?.elements&&f?f.some(x=>x.value===h||x.label===h):!0,__experimentalExpandOnFocus:f&&f.length>0,__experimentalShowHowTo:!e.isValid?.elements,displayTransform:h=>typeof h=="object"&&"label"in h?h.label:typeof h=="string"&&f&&f.find(y=>y.value===h)?.label||h,__experimentalRenderItem:({item:h})=>{if(typeof h=="string"&&f){let x=f.find(y=>y.value===h);return(0,mi.jsx)("span",{children:x?.label||h})}return(0,mi.jsx)("span",{children:h})}})}var g_={grad:.9,turn:360,rad:360/(2*Math.PI)},Dr=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},Xe=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=Math.pow(10,e)),Math.round(r*t)/r+0},zt=function(t,e,r){return e===void 0&&(e=0),r===void 0&&(r=1),t>r?r:t>e?t:e},_g=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},mg=function(t){return{r:zt(t.r,0,255),g:zt(t.g,0,255),b:zt(t.b,0,255),a:zt(t.a)}},_c=function(t){return{r:Xe(t.r),g:Xe(t.g),b:Xe(t.b),a:Xe(t.a,3)}},h_=/^#([0-9a-f]{3,8})$/i,Ss=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},yg=function(t){var e=t.r,r=t.g,o=t.b,n=t.a,i=Math.max(e,r,o),a=i-Math.min(e,r,o),l=a?i===e?(r-o)/a:i===r?2+(o-e)/a:4+(e-r)/a:0;return{h:60*(l<0?l+6:l),s:i?a/i*100:0,v:i/255*100,a:n}},Sg=function(t){var e=t.h,r=t.s,o=t.v,n=t.a;e=e/360*6,r/=100,o/=100;var i=Math.floor(e),a=o*(1-r),l=o*(1-(e-i)*r),s=o*(1-(1-e+i)*r),u=i%6;return{r:255*[o,l,a,a,s,o][u],g:255*[s,o,o,l,a,a][u],b:255*[a,a,s,o,o,l][u],a:n}},pg=function(t){return{h:_g(t.h),s:zt(t.s,0,100),l:zt(t.l,0,100),a:zt(t.a)}},vg=function(t){return{h:Xe(t.h),s:Xe(t.s),l:Xe(t.l),a:Xe(t.a,3)}},gg=function(t){return Sg((r=(e=t).s,{h:e.h,s:(r*=((o=e.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:e.a}));var e,r,o},pi=function(t){return{h:(e=yg(t)).h,s:(n=(200-(r=e.s))*(o=e.v)/100)>0&&n<200?r*o/100/(n<=100?n:200-n)*100:0,l:n/2,a:e.a};var e,r,o,n},b_=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,x_=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,w_=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,__=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,hg={string:[[function(t){var e=h_.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?Xe(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?Xe(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=w_.exec(t)||__.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:mg({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=b_.exec(t)||x_.exec(t);if(!e)return null;var r,o,n=pg({h:(r=e[1],o=e[2],o===void 0&&(o="deg"),Number(r)*(g_[o]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return gg(n)},"hsl"]],object:[[function(t){var e=t.r,r=t.g,o=t.b,n=t.a,i=n===void 0?1:n;return Dr(e)&&Dr(r)&&Dr(o)?mg({r:Number(e),g:Number(r),b:Number(o),a:Number(i)}):null},"rgb"],[function(t){var e=t.h,r=t.s,o=t.l,n=t.a,i=n===void 0?1:n;if(!Dr(e)||!Dr(r)||!Dr(o))return null;var a=pg({h:Number(e),s:Number(r),l:Number(o),a:Number(i)});return gg(a)},"hsl"],[function(t){var e=t.h,r=t.s,o=t.v,n=t.a,i=n===void 0?1:n;if(!Dr(e)||!Dr(r)||!Dr(o))return null;var a=(function(l){return{h:_g(l.h),s:zt(l.s,0,100),v:zt(l.v,0,100),a:zt(l.a)}})({h:Number(e),s:Number(r),v:Number(o),a:Number(i)});return Sg(a)},"hsv"]]},bg=function(t,e){for(var r=0;r=.5},t.prototype.toHex=function(){return e=_c(this.rgba),r=e.r,o=e.g,n=e.b,a=(i=e.a)<1?Ss(Xe(255*i)):"","#"+Ss(r)+Ss(o)+Ss(n)+a;var e,r,o,n,i,a},t.prototype.toRgb=function(){return _c(this.rgba)},t.prototype.toRgbString=function(){return e=_c(this.rgba),r=e.r,o=e.g,n=e.b,(i=e.a)<1?"rgba("+r+", "+o+", "+n+", "+i+")":"rgb("+r+", "+o+", "+n+")";var e,r,o,n,i},t.prototype.toHsl=function(){return vg(pi(this.rgba))},t.prototype.toHslString=function(){return e=vg(pi(this.rgba)),r=e.h,o=e.s,n=e.l,(i=e.a)<1?"hsla("+r+", "+o+"%, "+n+"%, "+i+")":"hsl("+r+", "+o+"%, "+n+"%)";var e,r,o,n,i},t.prototype.toHsv=function(){return e=yg(this.rgba),{h:Xe(e.h),s:Xe(e.s),v:Xe(e.v),a:Xe(e.a,3)};var e},t.prototype.invert=function(){return dt({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),dt(yc(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),dt(yc(this.rgba,-e))},t.prototype.grayscale=function(){return dt(yc(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),dt(xg(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),dt(xg(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?dt({r:(r=this.rgba).r,g:r.g,b:r.b,a:e}):Xe(this.rgba.a,3);var r},t.prototype.hue=function(e){var r=pi(this.rgba);return typeof e=="number"?dt({h:e,s:r.s,l:r.l,a:r.a}):Xe(r.h)},t.prototype.isEqual=function(e){return this.toHex()===dt(e).toHex()},t})(),dt=function(t){return t instanceof wg?t:new wg(t)};var Tt=c(q(),1),Cc=c(H(),1),Cg=c(U(),1);var Nr=c(R(),1),{ValidatedInputControl:S_}=K(Tt.privateApis),C_=({color:t,onColorChange:e})=>{let r=t&&dt(t).isValid()?t:"#ffffff";return(0,Nr.jsx)(Tt.Dropdown,{className:"dataviews-controls__color-picker-dropdown",popoverProps:{resize:!1},renderToggle:({onToggle:o})=>(0,Nr.jsx)(Tt.Button,{onClick:o,"aria-label":(0,Cg.__)("Open color picker"),size:"small",icon:()=>(0,Nr.jsx)(Tt.ColorIndicator,{colorValue:r})}),renderContent:()=>(0,Nr.jsx)(Tt.__experimentalDropdownContentWrapper,{paddingSize:"none",children:(0,Nr.jsx)(Tt.ColorPicker,{color:r,onChange:e,enableAlpha:!0})})})};function Eg({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:l,description:s,setValue:u,isValid:d}=e,p=e.getValue({item:t})||"",f=(0,Cc.useCallback)(v=>{r(u({item:t,value:v}))},[t,r,u]),m=(0,Cc.useCallback)(v=>{r(u({item:t,value:v||""}))},[t,r,u]);return(0,Nr.jsx)(S_,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:ve(d,i),label:a,placeholder:l,value:p,help:s,onChange:m,hideLabelFromVision:o,type:"text",prefix:(0,Nr.jsx)(Tt.__experimentalInputControlPrefixWrapper,{variant:"control",children:(0,Nr.jsx)(C_,{color:p,onColorChange:f})})})}var Es=c(q(),1),Ps=c(H(),1),Ec=c(U(),1);var Cs=c(R(),1);function Pg({data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let[a,l]=(0,Ps.useState)(!1),s=(0,Ps.useCallback)(()=>{l(u=>!u)},[]);return(0,Cs.jsx)(cr,{data:t,field:e,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:a?"text":"password",suffix:(0,Cs.jsx)(Es.__experimentalInputControlSuffixWrapper,{variant:"control",children:(0,Cs.jsx)(Es.Button,{icon:a?Dn:Hl,onClick:s,size:"small",label:a?(0,Ec.__)("Hide password"):(0,Ec.__)("Show password")})})})}function Ts(t){return Array.isArray(t.elements)&&t.elements.length>0||typeof t.getElements=="function"}var Ag=c(R(),1),Tg={adaptiveSelect:jv,array:fg,checkbox:kv,color:Eg,combobox:ns,datetime:Mv,date:Lv,email:Gv,telephone:qv,url:Yv,integer:Kv,number:Xv,password:Pg,radio:Jv,select:cs,text:tg,toggle:ig,textarea:ug,toggleGroup:dg};function E_(t){return t&&typeof t=="object"&&typeof t.control=="string"}function P_(t){let{control:e,...r}=t,o=As(e);return o===null?null:function(i){return(0,Ag.jsx)(o,{...i,config:r})}}function Og(t,e){return typeof t.Edit=="function"?t.Edit:typeof t.Edit=="string"?As(t.Edit):E_(t.Edit)?P_(t.Edit):Ts(t)&&t.type!=="array"?As("adaptiveSelect"):e===null?null:As(e)}function As(t){return Object.keys(Tg).includes(t)?Tg[t]:null}function T_(t,e,r){if(t.filterBy===!1)return!1;let o=t.filterBy?.operators?.filter(n=>r.includes(n))??e;return o.length===0?!1:{isPrimary:!!t.filterBy?.isPrimary,operators:o}}var Ig=T_;var A_=t=>({item:e})=>{let r=t.split("."),o=e;for(let n of r)o.hasOwnProperty(n)?o=o[n]:o=void 0;return o},Rg=A_;var O_=t=>({value:e})=>{let r=t.split("."),o={},n=o;for(let i of r.slice(0,-1))n[i]={},n=n[i];return n[r.at(-1)]=e,o},Vg=O_;var Dg=c(U(),1);function Os({item:t,field:e}){let{elements:r,isLoading:o}=Ze({elements:e.elements,getElements:e.getElements}),n=e.getValue({item:t});return o||r.length===0?n:r?.find(i=>i.value===n)?.label||e.getValue({item:t})}var kg=c(R(),1);function Ve({item:t,field:e}){return e.hasElements?(0,kg.jsx)(Os,{item:t,field:e}):e.getValueFormatted({item:t,field:e})}var dr=(t,e,r)=>r==="asc"?t.localeCompare(e):e.localeCompare(t);function ke(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)}function fr(t,e){if(typeof e.isValid.minLength?.constraint!="number")return!1;let r=e.getValue({item:t});return[void 0,"",null].includes(r)?!0:String(r).length>=e.isValid.minLength.constraint}function mr(t,e){if(typeof e.isValid.maxLength?.constraint!="number")return!1;let r=e.getValue({item:t});return[void 0,"",null].includes(r)?!0:String(r).length<=e.isValid.maxLength.constraint}function pr(t,e){if(e.isValid.pattern?.constraint===void 0)return!0;try{let r=new RegExp(e.isValid.pattern.constraint),o=e.getValue({item:t});return[void 0,"",null].includes(o)?!0:r.test(String(o))}catch{return!1}}function _e(t,e){let o=(e.elements??[]).map(i=>i.value);if(o.length===0)return!0;let n=e.getValue({item:t});return[].concat(n).every(i=>o.includes(i))}function I_({item:t,field:e}){return e.getValue({item:t})}var xt=I_;var R_=/^[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 V_(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&!R_.test(r)?(0,Dg.__)("Value must be a valid email address."):null}var Ng={type:"email",render:Ve,Edit:"email",sort:dr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Se,Ce],validOperators:[Ee,Pe,Zt,Xt,Qt,Se,Ce,it,at],format:{},getValueFormatted:xt,validate:{required:ke,pattern:pr,minLength:fr,maxLength:mr,elements:_e,custom:V_}};var Mg=c(U(),1);var _n=(t,e,r)=>r==="asc"?t-e:e-t;function Is(t,e){if(typeof e.isValid.min?.constraint!="number")return!1;let r=e.getValue({item:t});return[void 0,"",null].includes(r)?!0:Number(r)>=e.isValid.min.constraint}function Rs(t,e){if(typeof e.isValid.max?.constraint!="number")return!1;let r=e.getValue({item:t});return[void 0,"",null].includes(r)?!0:Number(r)<=e.isValid.max.constraint}var Fg={separatorThousand:","};function k_({item:t,field:e}){let r=e.getValue({item:t});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;e.type!=="integer"?o=Fg:o=e.format;let{separatorThousand:n}=o,i=Math.trunc(r);return n?String(i).replace(/\B(?=(\d{3})+(?!\d))/g,n):String(i)}function D_(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&!Number.isInteger(r)?(0,Mg.__)("Value must be an integer."):null}var Lg={type:"integer",render:Ve,Edit:"integer",sort:_n,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ee,Pe,Br,jr,Hr,zr,mt],validOperators:[Ee,Pe,Br,jr,Hr,zr,mt,Se,Ce,it,at],format:Fg,getValueFormatted:k_,validate:{required:ke,min:Is,max:Rs,elements:_e,custom:D_}};var Bg=c(U(),1);var jg={separatorThousand:",",separatorDecimal:".",decimals:2};function N_({item:t,field:e}){let r=e.getValue({item:t});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;e.type!=="number"?o=jg:o=e.format;let{separatorThousand:n,separatorDecimal:i,decimals:a}=o,l=r.toFixed(a),[s,u]=l.split("."),d=n?s.replace(/\B(?=(\d{3})+(?!\d))/g,n):s;return a===0?d:d+i+u}function M_(t){return t===""||t===void 0||t===null}function F_(t,e){let r=e.getValue({item:t});return!M_(r)&&!Number.isFinite(r)?(0,Bg.__)("Value must be a number."):null}var Hg={type:"number",render:Ve,Edit:"number",sort:_n,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ee,Pe,Br,jr,Hr,zr,mt],validOperators:[Ee,Pe,Br,jr,Hr,zr,mt,Se,Ce,it,at],format:jg,getValueFormatted:N_,validate:{required:ke,min:Is,max:Rs,elements:_e,custom:F_}};var zg={type:"text",render:Ve,Edit:"text",sort:dr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Se,Ce],validOperators:[Ee,Pe,Zt,Xt,Qt,Se,Ce,it,at],format:{},getValueFormatted:xt,validate:{required:ke,pattern:pr,minLength:fr,maxLength:mr,elements:_e}};var Mo=c(Do(),1);var Wg={datetime:(0,Mo.getSettings)().formats.datetime,weekStartsOn:(0,Mo.getSettings)().l10n.startOfWeek};function L_({item:t,field:e}){let r=e.getValue({item:t});if(["",void 0,null].includes(r))return"";let o;return e.type!=="datetime"?o=Wg:o=e.format,(0,Mo.dateI18n)(o.datetime,(0,Mo.getDate)(r))}var B_=(t,e,r)=>{let o=new Date(t).getTime(),n=new Date(e).getTime();return r==="asc"?o-n:n-o},Gg={type:"datetime",render:Ve,Edit:"datetime",sort:B_,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ur,$r,Wr,Gr,qr,Yr,pt,yt],validOperators:[Ur,$r,Wr,Gr,qr,Yr,pt,yt],format:Wg,getValueFormatted:L_,validate:{required:ke,elements:_e}};var Fo=c(Do(),1);var qg={date:(0,Fo.getSettings)().formats.date,weekStartsOn:(0,Fo.getSettings)().l10n.startOfWeek};function j_({item:t,field:e}){let r=e.getValue({item:t});if(["",void 0,null].includes(r))return"";let o;return e.type!=="date"?o=qg:o=e.format,(0,Fo.dateI18n)(o.date,(0,Fo.getDate)(r))}var H_=(t,e,r)=>{let o=new Date(t).getTime(),n=new Date(e).getTime();return r==="asc"?o-n:n-o},Yg={type:"date",render:Ve,Edit:"date",sort:H_,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ur,$r,Wr,Gr,qr,Yr,pt,yt,mt],validOperators:[Ur,$r,Wr,Gr,qr,Yr,pt,yt,mt],format:qg,getValueFormatted:j_,validate:{required:ke,elements:_e}};var Vs=c(U(),1);function Ug(t,e){return e.getValue({item:t})===!0}function z_({item:t,field:e}){let r=e.getValue({item:t});return r===!0?(0,Vs.__)("True"):r===!1?(0,Vs.__)("False"):""}function W_(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&![!0,!1].includes(r)?(0,Vs.__)("Value must be true, false, or undefined"):null}var G_=(t,e,r)=>{let o=!!t;return o===!!e?0:r==="asc"?o?1:-1:o?-1:1},$g={type:"boolean",render:Ve,Edit:"checkbox",sort:G_,validate:{required:Ug,elements:_e,custom:W_},enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ee,Pe],validOperators:[Ee,Pe],format:{},getValueFormatted:z_};var Kg={type:"media",render:()=>null,Edit:null,sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:xt,validate:{}};var Pc=c(U(),1);function Zg(t,e){let r=e.getValue({item:t});return Array.isArray(r)&&r.length>0&&r.every(o=>![void 0,"",null].includes(o))}function Xg({item:t,field:e}){let r=e.getValue({item:t});return(Array.isArray(r)?r:[]).join(", ")}function q_({item:t,field:e}){return Xg({item:t,field:e})}function Y_(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&!Array.isArray(r)?(0,Pc.__)("Value must be an array."):r.every(o=>typeof o=="string")?null:(0,Pc.__)("Every value must be a string.")}var U_=(t,e,r)=>{let o=Array.isArray(t)?t:[],n=Array.isArray(e)?e:[];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)},Qg={type:"array",render:q_,Edit:"array",sort:U_,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Se,Ce],validOperators:[Se,Ce,it,at],format:{},getValueFormatted:Xg,validate:{required:Zg,elements:_e,custom:Y_}};function $_({item:t,field:e}){return e.getValue({item:t})?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":""}var Jg={type:"password",render:Ve,Edit:"password",sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:$_,validate:{required:ke,pattern:pr,minLength:fr,maxLength:mr,elements:_e}};var eh={type:"telephone",render:Ve,Edit:"telephone",sort:dr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Se,Ce],validOperators:[Ee,Pe,Zt,Xt,Qt,Se,Ce,it,at],format:{},getValueFormatted:xt,validate:{required:ke,pattern:pr,minLength:fr,maxLength:mr,elements:_e}};var th=c(U(),1);var yn=c(R(),1);function K_({item:t,field:e}){if(e.hasElements)return(0,yn.jsx)(Os,{item:t,field:e});let r=xt({item:t,field:e});return!r||!dt(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 Z_(t,e){let r=e.getValue({item:t});return![void 0,"",null].includes(r)&&!dt(r).isValid()?(0,th.__)("Value must be a valid color."):null}var X_=(t,e,r)=>{let o=dt(t),n=dt(e);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},rh={type:"color",render:K_,Edit:"color",sort:X_,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Se,Ce],validOperators:[Ee,Pe,Se,Ce],format:{},getValueFormatted:xt,validate:{required:ke,elements:_e,custom:Z_}};var oh={type:"url",render:Ve,Edit:"url",sort:dr,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Se,Ce],validOperators:[Ee,Pe,Zt,Xt,Qt,Se,Ce,it,at],format:{},getValueFormatted:xt,validate:{required:ke,pattern:pr,minLength:fr,maxLength:mr,elements:_e}};var Q_=(t,e,r)=>typeof t=="number"&&typeof e=="number"?_n(t,e,r):dr(t,e,r),nh={render:Ve,Edit:null,sort:Q_,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ee,Pe],validOperators:Jp(),format:{},getValueFormatted:xt,validate:{required:ke,elements:_e}};function ih(t,e){let r;t.isValid?.required===!0&&e.validate.required!==void 0&&(r={constraint:!0,validate:e.validate.required});let o;(t.isValid?.elements===!0||t.isValid?.elements===void 0&&(t.elements||t.getElements))&&e.validate.elements!==void 0&&(o={constraint:!0,validate:e.validate.elements});let n;typeof t.isValid?.min=="number"&&e.validate.min!==void 0&&(n={constraint:t.isValid.min,validate:e.validate.min});let i;typeof t.isValid?.max=="number"&&e.validate.max!==void 0&&(i={constraint:t.isValid.max,validate:e.validate.max});let a;typeof t.isValid?.minLength=="number"&&e.validate.minLength!==void 0&&(a={constraint:t.isValid.minLength,validate:e.validate.minLength});let l;typeof t.isValid?.maxLength=="number"&&e.validate.maxLength!==void 0&&(l={constraint:t.isValid.maxLength,validate:e.validate.maxLength});let s;t.isValid?.pattern!==void 0&&e.validate.pattern!==void 0&&(s={constraint:t.isValid?.pattern,validate:e.validate.pattern});let u=t.isValid?.custom??e.validate.custom;return{required:r,elements:o,min:n,max:i,minLength:a,maxLength:l,pattern:s,custom:u}}function ah(t){return t.validOperators.reduce((e,r)=>{let o=No(r);return o?.filter&&(e[r]=o.filter),e},{})}function J_(t,e){return{...e.format,...t.format}}var sh=J_;function ey(t){let e=[Ng,Lg,Hg,zg,Gg,Yg,$g,Kg,Qg,Jg,eh,rh,oh].find(r=>r?.type===t);return e||nh}function lh(t){return t.map(e=>{let r=ey(e.type),o=e.getValue||Rg(e.id),n=function(i,a,l){let s=o({item:i}),u=o({item:a});return e.sort?e.sort(s,u,l):r.sort(s,u,l)};return{id:e.id,label:e.label||e.id,header:e.header||e.label||e.id,description:e.description,placeholder:e.placeholder,getValue:o,setValue:e.setValue||Vg(e.id),elements:e.elements,getElements:e.getElements,hasElements:Ts(e),isVisible:e.isVisible,enableHiding:e.enableHiding??!0,readOnly:e.readOnly??!1,type:r.type,render:e.render??r.render,Edit:Og(e,r.Edit),sort:n,enableSorting:e.enableSorting??r.enableSorting,enableGlobalSearch:e.enableGlobalSearch??r.enableGlobalSearch,isValid:ih(e,r),filterBy:Ig(e,r.defaultOperators,r.validOperators),filter:ah(r),format:sh(e,r),getValueFormatted:e.getValueFormatted??r.getValueFormatted}})}var Lo=c(H(),1);function uh(t,e,r){let o=(0,Lo.useRef)(t),n=(0,Lo.useRef)(r),[i,a]=(0,Lo.useState)(!e);return(0,Lo.useEffect)(()=>{e||(o.current=t,n.current=r,a(!0))},[t,e,r]),{data:e&&o.current?.length?o.current:t,paginationInfo:e&&o.current?.length?n.current:r,hasInitiallyLoaded:i}}var rt=c(R(),1),ty=t=>t.id,ry=()=>!0,oy=[],ny=eo.filter(t=>!t.isPicker);function iy({header:t,search:e=!0,searchLabel:r=void 0}){return(0,rt.jsxs)(rt.Fragment,{children:[(0,rt.jsxs)(F,{direction:"row",align:"top",justify:"space-between",className:"dataviews__view-actions",gap:"xs",children:[(0,rt.jsxs)(F,{direction:"row",justify:"start",gap:"sm",className:"dataviews__search",children:[e&&(0,rt.jsx)(uc,{label:r}),(0,rt.jsx)(ts,{})]}),(0,rt.jsxs)(F,{direction:"row",gap:"xs",style:{flexShrink:0},children:[(0,rt.jsx)(Ov,{}),t]})]}),(0,rt.jsx)(rs,{className:"dataviews-filters__container"}),(0,rt.jsx)(sc,{}),(0,rt.jsx)(lc,{})]})}function ay({view:t,onChangeView:e,fields:r,search:o=!0,searchLabel:n=void 0,actions:i=oy,data:a,getItemId:l=ty,getItemLevel:s,isLoading:u=!1,paginationInfo:d,defaultLayouts:p,selection:f,onChangeSelection:m,onClickItem:v,renderItemLink:_,isItemClickable:h=ry,header:x,children:y,config:S={perPageSizes:[10,20,50,100]},empty:V,onReset:O}){let{infiniteScrollHandler:N}=d,D=(0,wt.useRef)(null),[E,A]=(0,wt.useState)(0),k=(0,ks.useResizeObserver)(Q=>{A(Q[0].borderBoxSize[0].inlineSize)},{box:"border-box"}),[b,P]=(0,wt.useState)([]),T=f===void 0||m===void 0,g=T?b:f,[I,w]=(0,wt.useState)(null);function C(Q){let he=typeof Q=="function"?Q(g):Q;T&&P(he),m&&m(he)}let M=(0,wt.useMemo)(()=>lh(r),[r]),j=(0,wt.useMemo)(()=>g.filter(Q=>a.some(he=>l(he)===Q)),[g,a,l]),ae=li(M,t),ye=(0,wt.useMemo)(()=>(ae||[]).some(Q=>Q.isPrimary||Q.isLocked),[ae]),[De,je]=(0,wt.useState)(ye);(0,wt.useEffect)(()=>{ye&&!De&&je(!0)},[ye,De]),(0,wt.useEffect)(()=>{if(!t.infiniteScrollEnabled||!D.current)return;let Q=(0,ks.throttle)(gr=>{let hr=gr.target,mo=hr.scrollTop,po=hr.scrollHeight,Bo=hr.clientHeight;mo+Bo>=po-100&&N?.()},100),he=D.current;return he.addEventListener("scroll",Q),()=>{he.removeEventListener("scroll",Q),Q.cancel()}},[N,t.infiniteScrollEnabled]);let ot=(0,wt.useMemo)(()=>Object.fromEntries(Object.entries(p).filter(([Q])=>ny.some(he=>he.type===Q))),[p]),{data:Kt,paginationInfo:vr,hasInitiallyLoaded:Y}=uh(a,u,d);return ot[t.type]?(0,rt.jsx)(G.Provider,{value:{view:t,onChangeView:e,fields:M,actions:i,data:Kt,isLoading:u,paginationInfo:vr,selection:j,onChangeSelection:C,openedFilter:I,setOpenedFilter:w,getItemId:l,getItemLevel:s,isItemClickable:h,onClickItem:v,renderItemLink:_,containerWidth:E,containerRef:D,resizeObserverRef:k,defaultLayouts:ot,filters:ae,isShowingFilter:De,setIsShowingFilter:je,config:S,empty:V,hasInitiallyLoaded:Y,hasInfiniteScrollHandler:!!N,onReset:O},children:(0,rt.jsx)("div",{className:"dataviews-wrapper",ref:D,children:y??(0,rt.jsx)(iy,{header:x,search:o,searchLabel:n})})}):null}var Ut=ay;Ut.BulkActionToolbar=aa;Ut.Filters=ci;Ut.FiltersToggled=rs;Ut.FiltersToggle=ts;Ut.Layout=sc;Ut.LayoutSwitcher=fc;Ut.Pagination=uu;Ut.Search=uc;Ut.ViewConfig=mc;Ut.Footer=lc;var Tc=Ut;var ch=c(H(),1),dh=c(R(),1),fh=(0,ch.forwardRef)(({children:t,className:e,ariaLabel:r,as:o="div",...n},i)=>(0,dh.jsx)(o,{ref:i,className:z("admin-ui-navigable-region",e),"aria-label":r,role:"region",tabIndex:"-1",...n,children:t}));fh.displayName="NavigableRegion";var mh=fh;var fo=c(q(),1);var ph=c(q(),1),{Fill:vh,Slot:gh}=(0,ph.createSlotFill)("SidebarToggle");var Mr=c(R(),1);function hh({breadcrumbs:t,badges:e,title:r,subTitle:o,actions:n,showSidebarToggle:i=!0}){return(0,Mr.jsxs)(fo.__experimentalVStack,{className:"admin-ui-page__header",as:"header",children:[(0,Mr.jsxs)(fo.__experimentalHStack,{justify:"space-between",spacing:2,children:[(0,Mr.jsxs)(fo.__experimentalHStack,{spacing:2,justify:"left",children:[i&&(0,Mr.jsx)(gh,{bubblesVirtually:!0,className:"admin-ui-page__sidebar-toggle-slot"}),r&&(0,Mr.jsx)(fo.__experimentalHeading,{as:"h2",level:3,weight:500,truncate:!0,children:r}),t,e]}),(0,Mr.jsx)(fo.__experimentalHStack,{style:{width:"auto",flexShrink:0},spacing:2,className:"admin-ui-page__header-actions",children:n})]}),o&&(0,Mr.jsx)("p",{className:"admin-ui-page__header-subtitle",children:o})]})}var vi=c(R(),1);function bh({breadcrumbs:t,badges:e,title:r,subTitle:o,children:n,className:i,actions:a,hasPadding:l=!1,showSidebarToggle:s=!0}){let u=z("admin-ui-page",i);return(0,vi.jsxs)(mh,{className:u,ariaLabel:r,children:[(r||t||e)&&(0,vi.jsx)(hh,{breadcrumbs:t,badges:e,title:r,subTitle:o,actions:a,showSidebarToggle:s}),l?(0,vi.jsx)("div",{className:"admin-ui-page__content has-padding",children:n}):n]})}bh.SidebarToggleFill=vh;var Ac=bh;var gi=c(Ds()),Bs=c(q()),Rc=c(Wt()),$t=c(H()),$h=c(_h());var Sn=function(){return Sn=Object.assign||function(e){for(var r,o=1,n=arguments.length;o(0,Rh.useSelect)(t=>t(Vh.store).getEntityRecords("postType","wp_template_part",{per_page:-1}),[])??[],Dh=(t,e)=>{let r=t.toLowerCase(),o=e.map(i=>i.title.rendered.toLowerCase());if(!o.includes(r))return t;let n=2;for(;o.includes(`${r} ${n}`);)n++;return`${t} ${n}`},Nh=t=>Ih(t).replace(/[^\w-]+/g,"")||"wp-custom-part";var Ye=c(R(),1);function Mh(t,e){return`fields-create-template-part-modal__area-option-${t}-${e}`}function Fh(t,e){return`fields-create-template-part-modal__area-option-description-${t}-${e}`}function Fs({modalTitle:t,...e}){let r=(0,En.useSelect)(o=>o(Ms.store).getPostType("wp_template_part")?.labels?.add_new_item,[]);return(0,Ye.jsx)(ft.Modal,{title:t||r,onRequestClose:e.closeModal,overlayClassName:"fields-create-template-part-modal",focusOnMount:"firstContentElement",size:"medium",children:(0,Ye.jsx)(cy,{...e})})}var uy=t=>t==="header"?Pl:t==="footer"?xl:t==="sidebar"?Wl:t==="navigation-overlay"?kl:ql;function cy({defaultArea:t="uncategorized",blocks:e=[],confirmLabel:r=(0,Cn.__)("Add"),closeModal:o,onCreate:n,onError:i,defaultTitle:a=""}){let{createErrorNotice:l}=(0,En.useDispatch)(Bh.store),{saveEntityRecord:s}=(0,En.useDispatch)(Ms.store),u=kh(),[d,p]=(0,Ns.useState)(a),[f,m]=(0,Ns.useState)(t),[v,_]=(0,Ns.useState)(!1),h=(0,Lh.useInstanceId)(Fs),x=(0,En.useSelect)(S=>S(Ms.store).getCurrentTheme()?.default_template_part_areas,[]);async function y(){if(!(!d||v))try{_(!0);let S=Dh(d,u),V=Nh(S),O=await s("postType","wp_template_part",{slug:V,title:S,content:(0,jh.serialize)(e),area:f},{throwOnError:!0});await n(O)}catch(S){let V=S instanceof Error&&"code"in S&&S.message&&S.code!=="unknown_error"?S.message:(0,Cn.__)("An error occurred while creating the template part.");l(V,{type:"snackbar"}),i?.()}finally{_(!1)}}return(0,Ye.jsx)("form",{onSubmit:async S=>{S.preventDefault(),await y()},children:(0,Ye.jsxs)(ft.__experimentalVStack,{spacing:"4",children:[(0,Ye.jsx)(ft.TextControl,{__next40pxDefaultSize:!0,label:(0,Cn.__)("Name"),value:d,onChange:p,required:!0}),(0,Ye.jsxs)("fieldset",{className:"fields-create-template-part-modal__area-fieldset",children:[(0,Ye.jsx)(ft.BaseControl.VisualLabel,{as:"legend",children:(0,Cn.__)("Area")}),(0,Ye.jsx)("div",{className:"fields-create-template-part-modal__area-radio-group",children:(x??[]).map(S=>{let V=uy(S.icon);return(0,Ye.jsxs)("div",{className:"fields-create-template-part-modal__area-radio-wrapper",children:[(0,Ye.jsx)("input",{type:"radio",id:Mh(S.area,h),name:`fields-create-template-part-modal__area-${h}`,value:S.area,checked:f===S.area,onChange:()=>{m(S.area)},"aria-describedby":Fh(S.area,h)}),(0,Ye.jsx)(ft.Icon,{icon:V,className:"fields-create-template-part-modal__area-radio-icon"}),(0,Ye.jsx)("label",{htmlFor:Mh(S.area,h),className:"fields-create-template-part-modal__area-radio-label",children:S.label}),(0,Ye.jsx)(ft.Icon,{icon:go,className:"fields-create-template-part-modal__area-radio-checkmark"}),(0,Ye.jsx)("p",{className:"fields-create-template-part-modal__area-radio-description",id:Fh(S.area,h),children:S.description})]},S.area)})})]}),(0,Ye.jsxs)(ft.__experimentalHStack,{justify:"right",children:[(0,Ye.jsx)(ft.Button,{__next40pxDefaultSize:!0,variant:"tertiary",onClick:()=>{o()},children:(0,Cn.__)("Cancel")}),(0,Ye.jsx)(ft.Button,{__next40pxDefaultSize:!0,variant:"primary",type:"submit","aria-disabled":!d||v,isBusy:v,children:r})]})]})})}var Hh=c(Ul()),{lock:yF,unlock:Ls}=(0,Hh.__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 dy="navigation-overlay",zh={type:"grid",sort:{field:"date",direction:"desc"},fields:[],titleField:"title",mediaField:"preview"},Wh={table:{},grid:{},list:{}},Oc=[{slug:"all",label:"All Template Parts"},{slug:"header",label:"Headers"},{slug:"footer",label:"Footers"},{slug:"sidebar",label:"Sidebars"},{slug:dy,label:"Overlays"},{slug:"uncategorized",label:"General"}];function Gh(t){return t==="all"?{}:{filters:[{field:"area",operator:"is",value:t}]}}function qh(t){let e={};t.perPage!==void 0&&(e.per_page=t.perPage),t.page!==void 0&&(e.page=t.page),[void 0,""].includes(t.search)||(e.search=t.search),t.sort?.field!==void 0&&(e.orderby=t.sort.field),t.sort?.direction!==void 0&&(e.order=t.sort.direction);let r=t.filters?.find(o=>o.field==="area");return r&&(e.area=r.value),e}var Yh=c(U());import{Preview as fy}from"@wordpress/lazy-editor";function my({item:t}){let e=t.description;return React.createElement(fy,{content:t?.content?.raw,blocks:t?.blocks,description:e})}var Uh={label:(0,Yh.__)("Preview"),id:"preview",render:my,enableSorting:!1};if(typeof document<"u"&&!document.head.querySelector("style[data-wp-hash='c58d328215']")){let t=document.createElement("style");t.setAttribute("data-wp-hash","c58d328215"),t.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;margin:0;padding:0;width:100%}fieldset.fields__media-edit .components-base-control__label{color:#1e1e1e}fieldset.fields__media-edit{container-type:inline-size}fieldset.fields__media-edit .fields__media-edit-compact-group{border:1px dashed #949494;border-radius:4px;overflow:hidden}fieldset.fields__media-edit .fields__media-edit-compact-group.is-single{border-radius:2px}fieldset.fields__media-edit .fields__media-edit-compact-group .fields__media-edit-picker-button{border:0;border-radius:0}fieldset.fields__media-edit .fields__media-edit-compact-group .fields__media-edit-picker-button:focus-visible{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color)}fieldset.fields__media-edit .fields__media-edit-compact-group .fields__media-edit-compact:not(:last-child){border-bottom:1px solid #f0f0f0}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-compact{min-width:0;position:relative}fieldset.fields__media-edit .fields__media-edit-compact:focus-within .fields__media-edit-compact-movers,fieldset.fields__media-edit .fields__media-edit-compact:hover .fields__media-edit-compact-movers{opacity:1}fieldset.fields__media-edit .fields__media-edit-compact .fields__media-edit-compact-movers{background:#fff;border-radius:2px;opacity:0;pointer-events:none;position:absolute;right:8px;top:50%;transform:translateY(-50%);z-index:1}fieldset.fields__media-edit .fields__media-edit-compact .fields__media-edit-compact-movers *{pointer-events:auto}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:2px;cursor:pointer;display:flex;gap:8px;min-height:40px;min-width:0;padding:4px 8px;position:relative}fieldset.fields__media-edit .fields__media-edit-picker-button:not(.has-attachment){border-color:var(--wp-admin-theme-color);color:var(--wp-admin-theme-color)}fieldset.fields__media-edit .fields__media-edit-picker-button:not(.has-attachment):hover{background-color:color-mix(in srgb,var(--wp-admin-theme-color,#3858e9) 4%,#0000);border-color:var(--wp-admin-theme-color-darker-20);color:var(--wp-admin-theme-color-darker-20)}fieldset.fields__media-edit .fields__media-edit-picker-button:hover{color:var(--wp-admin-theme-color)}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}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-actions{background:#fff;border-radius:2px;position:absolute;right:4px;top:4px}fieldset.fields__media-edit .fields__media-edit-expanded .fields__media-edit-expanded-item{border-radius:4px;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 .fields__media-edit-picker-button{border-radius:4px}fieldset.fields__media-edit .fields__media-edit-expanded.is-empty .fields__media-edit-picker-button{border-radius:2px}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{border:0;margin:0;padding:0}.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(t)}var{useEntityRecordsWithPermissions:xy}=Ls(gi.privateApis),{usePostActions:wy,usePostFields:_y}=Ls($h.privateApis),{Tabs:Ic}=Ls(Bs.privateApis);function yy(t){return t.id.toString()}function Sy(){let t=by(),{area:e="all"}=py({from:"/template-parts/list/$area"}),r=vy(),o=gy({from:"/template-parts/list/$area"}),n=(0,Rc.useSelect)(g=>g(gi.store).getPostType("wp_template_part"),[]),i=n?.labels,a=(0,Rc.useSelect)(g=>g(gi.store).canUser("create",{kind:"postType",name:"wp_template_part"}),[]),[l,s]=(0,$t.useState)(!1),u=zh,d=(0,$t.useMemo)(()=>Gh(e),[e]),p=(0,$t.useCallback)(g=>{r({search:{...o,...g}})},[o,r]),{view:f,isModified:m,updateView:v,resetToDefault:_}=qs({kind:"postType",name:"wp_template_part",slug:"default-new",defaultView:u,activeViewOverrides:d,queryParams:o,onChangeQueryParams:p}),h=()=>{_(),t()},x=g=>{v(g),g.type!==f.type&&t()},y=(0,$t.useMemo)(()=>qh(f),[f]),{records:S,totalItems:V,totalPages:O,isResolving:N}=xy("postType","wp_template_part",y),D=_y({postType:"wp_template_part"}),E=(0,$t.useMemo)(()=>[Uh].concat(D.filter(g=>!(g.id==="area"&&e!=="all"||g.id==="status")).map(g=>g.id==="area"?{...g,filterBy:!1}:g)),[D,e]),A=(0,$t.useCallback)(g=>{let I=g.map(M=>M.id.toString()),w=o.postIds||[],C=w.filter(M=>!I.includes(M));C.length!==w.length?r({search:{...o,postIds:C.length>0?C:void 0}}):t()},[t,o,r]),k=wy({postType:"wp_template_part",context:"list",onActionPerformed:(g,I)=>{(g==="move-to-trash"||g==="permanently-delete")&&A(I)}}),b=(0,$t.useMemo)(()=>[...k?.flatMap(g=>g.id==="view-post-revisions"?[]:[g])],[k]),P=(0,$t.useCallback)(g=>{r({to:`/template-parts/list/${g}`})},[r]);if(!n)return null;let T=o.postIds??[];return f.type==="list"&&T.length===0&&S?.length>0&&T.push(S[0].id.toString()),f.type==="list"&&T.splice(1),React.createElement(Ac,{title:n.labels?.name,subTitle:n.labels?.description,className:"template-part-page",actions:i?.add_new_item&&a&&React.createElement(Bs.Button,{variant:"primary",onClick:()=>s(!0),size:"compact"},i.add_new_item),hasPadding:!1},Oc.length>1&&React.createElement("div",{className:"routes-template-part-list__tabs-wrapper"},React.createElement(Ic,{onSelect:P,selectedTabId:e??"all"},React.createElement(Ic.TabList,null,Oc.map(g=>React.createElement(Ic.Tab,{tabId:g.slug,key:g.slug},g.label))))),React.createElement(Tc,{data:S,fields:E,view:f,onChangeView:x,actions:b,isLoading:N,paginationInfo:{totalItems:V,totalPages:O},defaultLayouts:Wh,getItemId:yy,selection:T,onReset:m?h:!1,onChangeSelection:g=>{r({search:{...o,postIds:g.length>0?g:void 0,edit:g.length===0?void 0:o.edit}})},renderItemLink:({item:g,...I})=>React.createElement(hy,{to:`/types/wp_template_part/edit/${encodeURIComponent(g.id)}`,...I,onClick:w=>{w.stopPropagation()}})}),l&&React.createElement(Fs,{closeModal:()=>s(!1),blocks:[],onCreate:g=>{s(!1),r({to:`/types/wp_template_part/edit/${encodeURIComponent(g.id)}`})},onError:()=>s(!1),defaultArea:e!=="all"?e:"uncategorized"}))}var Cy=Sy;export{Cy 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..d5e39401ba722 --- /dev/null +++ b/src/wp-includes/build/routes/template-part-list/route.js @@ -0,0 +1,267 @@ +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 +var SCALAR_VALUES = [ + "titleField", + "mediaField", + "descriptionField", + "showTitle", + "showMedia", + "showDescription", + "showLevels", + "infiniteScrollEnabled" +]; +function mergeActiveViewOverrides(view, activeViewOverrides, defaultView) { + if (!activeViewOverrides) { + return view; + } + let result = view; + for (const key of SCALAR_VALUES) { + if (key in activeViewOverrides) { + result = { ...result, [key]: activeViewOverrides[key] }; + } + } + 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 + }; + } + } + if (activeViewOverrides.layout) { + result = { + ...result, + layout: { + ...result.layout, + ...activeViewOverrides.layout + } + }; + } + if (activeViewOverrides.groupBy) { + result = { + ...result, + groupBy: activeViewOverrides.groupBy + }; + } + 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..7746bfef374c1 --- /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' => '39f2323c7086498e4456'); \ 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..dca4ee059b301 --- /dev/null +++ b/src/wp-includes/build/routes/template-part-list/route.min.js @@ -0,0 +1 @@ +var j=Object.create;var g=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var a=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var M=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of z(e))!K.call(t,n)&&n!==r&&g(t,n,{get:()=>e[n],enumerable:!(s=q(e,n))||s.enumerable});return t};var o=(t,e,r)=>(r=t!=null?j(C(t)):{},M(e||!t||!t.__esModule?g(r,"default",{value:t,enumerable:!0}):r,t));var p=a((H,m)=>{m.exports=window.wp.data});var h=a((J,y)=>{y.exports=window.wp.coreData});var A=a((X,w)=>{w.exports=window.wp.i18n});var T=a((O,_)=>{_.exports=window.wp.element});var f=a((v,S)=>{S.exports=window.wp.preferences});var E=o(p()),k=o(h()),D=o(A());var x=o(T(),1),P=o(p(),1),N=o(f(),1);function u(t,e,r){return`dataviews-${t}-${e}-${r}`}var $=["titleField","mediaField","descriptionField","showTitle","showMedia","showDescription","showLevels","infiniteScrollEnabled"];function c(t,e,r){if(!e)return t;let s=t;for(let n of $)n in e&&(s={...s,[n]:e[n]});if(e.filters&&e.filters.length>0){let n=new Set(e.filters.map(i=>i.field)),l=(t.filters??[]).filter(i=>!n.has(i.field));s={...s,filters:[...l,...e.filters]}}return e.sort&&r&&t.sort?.field===r.sort?.field&&t.sort?.direction===r.sort?.direction&&(s={...s,sort:e.sort}),e.layout&&(s={...s,layout:{...s.layout,...e.layout}}),e.groupBy&&(s={...s,groupBy:e.groupBy}),s}var F=o(p(),1),L=o(f(),1);async function d(t){let{kind:e,name:r,slug:s,defaultView:n,activeViewOverrides:l,queryParams:i}=t,B=u(e,r,s),R=(0,F.select)(L.store).get("core/views",B)??n,U=i?.page??1,b=i?.search??"";return c({...R,page:U,search:b},l,n)}var Q={type:"grid",sort:{field:"date",direction:"desc"},fields:[],titleField:"title",mediaField:"preview"};function G(t){return t==="all"?{}:{filters:[{field:"area",operator:"is",value:t}]}}async function V(t,e){return d({kind:"postType",name:"wp_template_part",slug:"default-new",defaultView:Q,activeViewOverrides:G(t??"all"),queryParams:e})}function I(t){let e={};t.perPage!==void 0&&(e.per_page=t.perPage),t.page!==void 0&&(e.page=t.page),[void 0,""].includes(t.search)||(e.search=t.search),t.sort?.field!==void 0&&(e.orderby=t.sort.field),t.sort?.direction!==void 0&&(e.order=t.sort.direction);let r=t.filters?.find(s=>s.field==="area");return r&&(e.area=r.value),e}var we={title:()=>(0,D.__)("Template Parts"),async canvas(t){let{params:e,search:r}=t,s=await V(e.area,{page:r.page,search:r.search});if(s.type!=="list")return;if(r.postIds&&r.postIds.length>0){let i=r.postIds[0].toString();return{postType:"wp_template_part",postId:i,isPreview:!0,editLink:`/types/wp_template_part/edit/${encodeURIComponent(i)}`}}let n=I(s),l=await(0,E.resolveSelect)(k.store).getEntityRecords("postType","wp_template_part",{...n,per_page:1});if(l&&l.length>0){let i=l[0].id.toString();return{postType:"wp_template_part",postId:i,isPreview:!0,editLink:`/types/wp_template_part/edit/${encodeURIComponent(i)}`}}}};export{we 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}; diff --git a/src/wp-includes/icons/library/accordion-heading.svg b/src/wp-includes/icons/library/accordion-heading.svg new file mode 100644 index 0000000000000..490a55584a8f6 --- /dev/null +++ b/src/wp-includes/icons/library/accordion-heading.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/wp-includes/icons/library/accordion-item.svg b/src/wp-includes/icons/library/accordion-item.svg new file mode 100644 index 0000000000000..7bb8649f9b15b --- /dev/null +++ b/src/wp-includes/icons/library/accordion-item.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/wp-includes/icons/library/accordion.svg b/src/wp-includes/icons/library/accordion.svg new file mode 100644 index 0000000000000..909d9150cfa79 --- /dev/null +++ b/src/wp-includes/icons/library/accordion.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/wp-includes/icons/library/add-card.svg b/src/wp-includes/icons/library/add-card.svg new file mode 100644 index 0000000000000..91a4565df6934 --- /dev/null +++ b/src/wp-includes/icons/library/add-card.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/add-submenu.svg b/src/wp-includes/icons/library/add-submenu.svg new file mode 100644 index 0000000000000..19f9b28f6366d --- /dev/null +++ b/src/wp-includes/icons/library/add-submenu.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/add-template.svg b/src/wp-includes/icons/library/add-template.svg new file mode 100644 index 0000000000000..31b6107afcb62 --- /dev/null +++ b/src/wp-includes/icons/library/add-template.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/align-center.svg b/src/wp-includes/icons/library/align-center.svg new file mode 100644 index 0000000000000..4a859d45cc2a0 --- /dev/null +++ b/src/wp-includes/icons/library/align-center.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/align-justify.svg b/src/wp-includes/icons/library/align-justify.svg new file mode 100644 index 0000000000000..52c22e430d43a --- /dev/null +++ b/src/wp-includes/icons/library/align-justify.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/align-left.svg b/src/wp-includes/icons/library/align-left.svg new file mode 100644 index 0000000000000..5b26154484352 --- /dev/null +++ b/src/wp-includes/icons/library/align-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/align-none.svg b/src/wp-includes/icons/library/align-none.svg new file mode 100644 index 0000000000000..30942087145e5 --- /dev/null +++ b/src/wp-includes/icons/library/align-none.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/align-right.svg b/src/wp-includes/icons/library/align-right.svg new file mode 100644 index 0000000000000..6ad90bdb89678 --- /dev/null +++ b/src/wp-includes/icons/library/align-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/archive.svg b/src/wp-includes/icons/library/archive.svg new file mode 100644 index 0000000000000..661a9782231ef --- /dev/null +++ b/src/wp-includes/icons/library/archive.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/arrow-down-left.svg b/src/wp-includes/icons/library/arrow-down-left.svg new file mode 100644 index 0000000000000..7ae619122cb18 --- /dev/null +++ b/src/wp-includes/icons/library/arrow-down-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/arrow-down-right.svg b/src/wp-includes/icons/library/arrow-down-right.svg new file mode 100644 index 0000000000000..96f3eaaa341f3 --- /dev/null +++ b/src/wp-includes/icons/library/arrow-down-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/arrow-down.svg b/src/wp-includes/icons/library/arrow-down.svg new file mode 100644 index 0000000000000..eec68fd0379db --- /dev/null +++ b/src/wp-includes/icons/library/arrow-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/arrow-left.svg b/src/wp-includes/icons/library/arrow-left.svg new file mode 100644 index 0000000000000..f0ad62990499b --- /dev/null +++ b/src/wp-includes/icons/library/arrow-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/arrow-right.svg b/src/wp-includes/icons/library/arrow-right.svg new file mode 100644 index 0000000000000..b1d35eb42725a --- /dev/null +++ b/src/wp-includes/icons/library/arrow-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/arrow-up-left.svg b/src/wp-includes/icons/library/arrow-up-left.svg new file mode 100644 index 0000000000000..ace24ff41421c --- /dev/null +++ b/src/wp-includes/icons/library/arrow-up-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/arrow-up-right.svg b/src/wp-includes/icons/library/arrow-up-right.svg new file mode 100644 index 0000000000000..ff9807df94919 --- /dev/null +++ b/src/wp-includes/icons/library/arrow-up-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/arrow-up.svg b/src/wp-includes/icons/library/arrow-up.svg new file mode 100644 index 0000000000000..bc68d5bee25ba --- /dev/null +++ b/src/wp-includes/icons/library/arrow-up.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/aspect-ratio.svg b/src/wp-includes/icons/library/aspect-ratio.svg new file mode 100644 index 0000000000000..8d83f7635ebd7 --- /dev/null +++ b/src/wp-includes/icons/library/aspect-ratio.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/at-symbol.svg b/src/wp-includes/icons/library/at-symbol.svg new file mode 100644 index 0000000000000..d7280813c6a9c --- /dev/null +++ b/src/wp-includes/icons/library/at-symbol.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/audio.svg b/src/wp-includes/icons/library/audio.svg new file mode 100644 index 0000000000000..3cdbe1181dc10 --- /dev/null +++ b/src/wp-includes/icons/library/audio.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/background.svg b/src/wp-includes/icons/library/background.svg new file mode 100644 index 0000000000000..166c1db70dd50 --- /dev/null +++ b/src/wp-includes/icons/library/background.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/backup.svg b/src/wp-includes/icons/library/backup.svg new file mode 100644 index 0000000000000..4abf701d41fed --- /dev/null +++ b/src/wp-includes/icons/library/backup.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/bell-unread.svg b/src/wp-includes/icons/library/bell-unread.svg new file mode 100644 index 0000000000000..efdedbf25d4b3 --- /dev/null +++ b/src/wp-includes/icons/library/bell-unread.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/wp-includes/icons/library/bell.svg b/src/wp-includes/icons/library/bell.svg new file mode 100644 index 0000000000000..c1bccda2275e7 --- /dev/null +++ b/src/wp-includes/icons/library/bell.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/block-default.svg b/src/wp-includes/icons/library/block-default.svg new file mode 100644 index 0000000000000..5c8e11103d994 --- /dev/null +++ b/src/wp-includes/icons/library/block-default.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/block-meta.svg b/src/wp-includes/icons/library/block-meta.svg new file mode 100644 index 0000000000000..81dfc1d3684d4 --- /dev/null +++ b/src/wp-includes/icons/library/block-meta.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/block-table.svg b/src/wp-includes/icons/library/block-table.svg new file mode 100644 index 0000000000000..44d91172e4c10 --- /dev/null +++ b/src/wp-includes/icons/library/block-table.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/border.svg b/src/wp-includes/icons/library/border.svg new file mode 100644 index 0000000000000..344181dccd79a --- /dev/null +++ b/src/wp-includes/icons/library/border.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/box.svg b/src/wp-includes/icons/library/box.svg new file mode 100644 index 0000000000000..396c4471cf40b --- /dev/null +++ b/src/wp-includes/icons/library/box.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/breadcrumbs.svg b/src/wp-includes/icons/library/breadcrumbs.svg new file mode 100644 index 0000000000000..96919bd87fe6c --- /dev/null +++ b/src/wp-includes/icons/library/breadcrumbs.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/brush.svg b/src/wp-includes/icons/library/brush.svg new file mode 100644 index 0000000000000..18dffa96f6993 --- /dev/null +++ b/src/wp-includes/icons/library/brush.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/bug.svg b/src/wp-includes/icons/library/bug.svg new file mode 100644 index 0000000000000..92ca3b18be2d8 --- /dev/null +++ b/src/wp-includes/icons/library/bug.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/button.svg b/src/wp-includes/icons/library/button.svg new file mode 100644 index 0000000000000..cbc2b05e75dcb --- /dev/null +++ b/src/wp-includes/icons/library/button.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/buttons.svg b/src/wp-includes/icons/library/buttons.svg new file mode 100644 index 0000000000000..fdc79c2b1b71d --- /dev/null +++ b/src/wp-includes/icons/library/buttons.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/calendar.svg b/src/wp-includes/icons/library/calendar.svg new file mode 100644 index 0000000000000..982890efb37a8 --- /dev/null +++ b/src/wp-includes/icons/library/calendar.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/cancel-circle-filled.svg b/src/wp-includes/icons/library/cancel-circle-filled.svg new file mode 100644 index 0000000000000..63dce97f38000 --- /dev/null +++ b/src/wp-includes/icons/library/cancel-circle-filled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/caption.svg b/src/wp-includes/icons/library/caption.svg new file mode 100644 index 0000000000000..0fff644fb6176 --- /dev/null +++ b/src/wp-includes/icons/library/caption.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/capture-photo.svg b/src/wp-includes/icons/library/capture-photo.svg new file mode 100644 index 0000000000000..9322db371f060 --- /dev/null +++ b/src/wp-includes/icons/library/capture-photo.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/capture-video.svg b/src/wp-includes/icons/library/capture-video.svg new file mode 100644 index 0000000000000..5fde23efb3d04 --- /dev/null +++ b/src/wp-includes/icons/library/capture-video.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/cart.svg b/src/wp-includes/icons/library/cart.svg new file mode 100644 index 0000000000000..5bf6f6d45f559 --- /dev/null +++ b/src/wp-includes/icons/library/cart.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/category.svg b/src/wp-includes/icons/library/category.svg new file mode 100644 index 0000000000000..3b36e4f2fc00c --- /dev/null +++ b/src/wp-includes/icons/library/category.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/caution-filled.svg b/src/wp-includes/icons/library/caution-filled.svg new file mode 100644 index 0000000000000..6b35a8ea4d022 --- /dev/null +++ b/src/wp-includes/icons/library/caution-filled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/caution.svg b/src/wp-includes/icons/library/caution.svg new file mode 100644 index 0000000000000..3e6c70c263b9a --- /dev/null +++ b/src/wp-includes/icons/library/caution.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/chart-bar.svg b/src/wp-includes/icons/library/chart-bar.svg new file mode 100644 index 0000000000000..c2bcf26f58a35 --- /dev/null +++ b/src/wp-includes/icons/library/chart-bar.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/check.svg b/src/wp-includes/icons/library/check.svg new file mode 100644 index 0000000000000..af0a393450169 --- /dev/null +++ b/src/wp-includes/icons/library/check.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/chevron-down-small.svg b/src/wp-includes/icons/library/chevron-down-small.svg new file mode 100644 index 0000000000000..c8fb1bfffa2f0 --- /dev/null +++ b/src/wp-includes/icons/library/chevron-down-small.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/chevron-down.svg b/src/wp-includes/icons/library/chevron-down.svg new file mode 100644 index 0000000000000..bd3f8fb059df5 --- /dev/null +++ b/src/wp-includes/icons/library/chevron-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/chevron-left-small.svg b/src/wp-includes/icons/library/chevron-left-small.svg new file mode 100644 index 0000000000000..b2ca179d1a59e --- /dev/null +++ b/src/wp-includes/icons/library/chevron-left-small.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/chevron-left.svg b/src/wp-includes/icons/library/chevron-left.svg new file mode 100644 index 0000000000000..6276e30f924a8 --- /dev/null +++ b/src/wp-includes/icons/library/chevron-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/chevron-right-small.svg b/src/wp-includes/icons/library/chevron-right-small.svg new file mode 100644 index 0000000000000..956ca53c66147 --- /dev/null +++ b/src/wp-includes/icons/library/chevron-right-small.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/chevron-right.svg b/src/wp-includes/icons/library/chevron-right.svg new file mode 100644 index 0000000000000..d4b7d6dac2b96 --- /dev/null +++ b/src/wp-includes/icons/library/chevron-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/chevron-up-down.svg b/src/wp-includes/icons/library/chevron-up-down.svg new file mode 100644 index 0000000000000..7cdd5d61d0497 --- /dev/null +++ b/src/wp-includes/icons/library/chevron-up-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/chevron-up-small.svg b/src/wp-includes/icons/library/chevron-up-small.svg new file mode 100644 index 0000000000000..e6be7bd3b841e --- /dev/null +++ b/src/wp-includes/icons/library/chevron-up-small.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/chevron-up.svg b/src/wp-includes/icons/library/chevron-up.svg new file mode 100644 index 0000000000000..59db09c28b612 --- /dev/null +++ b/src/wp-includes/icons/library/chevron-up.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/classic.svg b/src/wp-includes/icons/library/classic.svg new file mode 100644 index 0000000000000..d27703521a3cf --- /dev/null +++ b/src/wp-includes/icons/library/classic.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/close-small.svg b/src/wp-includes/icons/library/close-small.svg new file mode 100644 index 0000000000000..5ba16b5c710f7 --- /dev/null +++ b/src/wp-includes/icons/library/close-small.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/close.svg b/src/wp-includes/icons/library/close.svg new file mode 100644 index 0000000000000..75be939490410 --- /dev/null +++ b/src/wp-includes/icons/library/close.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/cloud-download.svg b/src/wp-includes/icons/library/cloud-download.svg new file mode 100644 index 0000000000000..6d2125241572b --- /dev/null +++ b/src/wp-includes/icons/library/cloud-download.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/cloud-upload.svg b/src/wp-includes/icons/library/cloud-upload.svg new file mode 100644 index 0000000000000..513159068a773 --- /dev/null +++ b/src/wp-includes/icons/library/cloud-upload.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/cloud.svg b/src/wp-includes/icons/library/cloud.svg new file mode 100644 index 0000000000000..9fb89b1aac649 --- /dev/null +++ b/src/wp-includes/icons/library/cloud.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/code.svg b/src/wp-includes/icons/library/code.svg new file mode 100644 index 0000000000000..24d4bdccbd5a2 --- /dev/null +++ b/src/wp-includes/icons/library/code.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/cog.svg b/src/wp-includes/icons/library/cog.svg new file mode 100644 index 0000000000000..d8b4b82c02c2d --- /dev/null +++ b/src/wp-includes/icons/library/cog.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/color.svg b/src/wp-includes/icons/library/color.svg new file mode 100644 index 0000000000000..07e1a13011a10 --- /dev/null +++ b/src/wp-includes/icons/library/color.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/column.svg b/src/wp-includes/icons/library/column.svg new file mode 100644 index 0000000000000..bd7e1e71e696a --- /dev/null +++ b/src/wp-includes/icons/library/column.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/columns.svg b/src/wp-includes/icons/library/columns.svg new file mode 100644 index 0000000000000..dc376abf5013d --- /dev/null +++ b/src/wp-includes/icons/library/columns.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/comment-author-avatar.svg b/src/wp-includes/icons/library/comment-author-avatar.svg new file mode 100644 index 0000000000000..d26ae18218da4 --- /dev/null +++ b/src/wp-includes/icons/library/comment-author-avatar.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/comment-author-name.svg b/src/wp-includes/icons/library/comment-author-name.svg new file mode 100644 index 0000000000000..260be0a635ba0 --- /dev/null +++ b/src/wp-includes/icons/library/comment-author-name.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/wp-includes/icons/library/comment-content.svg b/src/wp-includes/icons/library/comment-content.svg new file mode 100644 index 0000000000000..7094932f8e9cb --- /dev/null +++ b/src/wp-includes/icons/library/comment-content.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/comment-edit-link.svg b/src/wp-includes/icons/library/comment-edit-link.svg new file mode 100644 index 0000000000000..db400e2e871d9 --- /dev/null +++ b/src/wp-includes/icons/library/comment-edit-link.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/comment-reply-link.svg b/src/wp-includes/icons/library/comment-reply-link.svg new file mode 100644 index 0000000000000..49c79270c08a1 --- /dev/null +++ b/src/wp-includes/icons/library/comment-reply-link.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/comment.svg b/src/wp-includes/icons/library/comment.svg new file mode 100644 index 0000000000000..c95cfe7421875 --- /dev/null +++ b/src/wp-includes/icons/library/comment.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/connection.svg b/src/wp-includes/icons/library/connection.svg new file mode 100644 index 0000000000000..2193bd27a5f2c --- /dev/null +++ b/src/wp-includes/icons/library/connection.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/contents.svg b/src/wp-includes/icons/library/contents.svg new file mode 100644 index 0000000000000..c0e26159bef0f --- /dev/null +++ b/src/wp-includes/icons/library/contents.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/copy-small.svg b/src/wp-includes/icons/library/copy-small.svg new file mode 100644 index 0000000000000..40439846218e6 --- /dev/null +++ b/src/wp-includes/icons/library/copy-small.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/copy.svg b/src/wp-includes/icons/library/copy.svg new file mode 100644 index 0000000000000..8acb3bf068658 --- /dev/null +++ b/src/wp-includes/icons/library/copy.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/corner-all.svg b/src/wp-includes/icons/library/corner-all.svg new file mode 100644 index 0000000000000..455870f0f0127 --- /dev/null +++ b/src/wp-includes/icons/library/corner-all.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/corner-bottom-left.svg b/src/wp-includes/icons/library/corner-bottom-left.svg new file mode 100644 index 0000000000000..73ae5297c8fca --- /dev/null +++ b/src/wp-includes/icons/library/corner-bottom-left.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/wp-includes/icons/library/corner-bottom-right.svg b/src/wp-includes/icons/library/corner-bottom-right.svg new file mode 100644 index 0000000000000..9d8416abc5c8a --- /dev/null +++ b/src/wp-includes/icons/library/corner-bottom-right.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/wp-includes/icons/library/corner-top-left.svg b/src/wp-includes/icons/library/corner-top-left.svg new file mode 100644 index 0000000000000..d1c72c1b9d6c3 --- /dev/null +++ b/src/wp-includes/icons/library/corner-top-left.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/wp-includes/icons/library/corner-top-right.svg b/src/wp-includes/icons/library/corner-top-right.svg new file mode 100644 index 0000000000000..bf806bb899a3c --- /dev/null +++ b/src/wp-includes/icons/library/corner-top-right.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/wp-includes/icons/library/cover.svg b/src/wp-includes/icons/library/cover.svg new file mode 100644 index 0000000000000..d625a018cda7f --- /dev/null +++ b/src/wp-includes/icons/library/cover.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/create.svg b/src/wp-includes/icons/library/create.svg new file mode 100644 index 0000000000000..3e96b8596ee47 --- /dev/null +++ b/src/wp-includes/icons/library/create.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/crop.svg b/src/wp-includes/icons/library/crop.svg new file mode 100644 index 0000000000000..b56abed30292b --- /dev/null +++ b/src/wp-includes/icons/library/crop.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/currency-dollar.svg b/src/wp-includes/icons/library/currency-dollar.svg new file mode 100644 index 0000000000000..80089d8d68c35 --- /dev/null +++ b/src/wp-includes/icons/library/currency-dollar.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/currency-euro.svg b/src/wp-includes/icons/library/currency-euro.svg new file mode 100644 index 0000000000000..2e57f3726ec9e --- /dev/null +++ b/src/wp-includes/icons/library/currency-euro.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/currency-pound.svg b/src/wp-includes/icons/library/currency-pound.svg new file mode 100644 index 0000000000000..5a86fa25075e9 --- /dev/null +++ b/src/wp-includes/icons/library/currency-pound.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/custom-link.svg b/src/wp-includes/icons/library/custom-link.svg new file mode 100644 index 0000000000000..6294804a2acc9 --- /dev/null +++ b/src/wp-includes/icons/library/custom-link.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/custom-post-type.svg b/src/wp-includes/icons/library/custom-post-type.svg new file mode 100644 index 0000000000000..7c91be9bf21b2 --- /dev/null +++ b/src/wp-includes/icons/library/custom-post-type.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/dashboard.svg b/src/wp-includes/icons/library/dashboard.svg new file mode 100644 index 0000000000000..374d5ba916f7b --- /dev/null +++ b/src/wp-includes/icons/library/dashboard.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/desktop.svg b/src/wp-includes/icons/library/desktop.svg new file mode 100644 index 0000000000000..9d8a699f91834 --- /dev/null +++ b/src/wp-includes/icons/library/desktop.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/details.svg b/src/wp-includes/icons/library/details.svg new file mode 100644 index 0000000000000..cdc6d8cbdf2b3 --- /dev/null +++ b/src/wp-includes/icons/library/details.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/wp-includes/icons/library/download.svg b/src/wp-includes/icons/library/download.svg new file mode 100644 index 0000000000000..9d3fbe682d25b --- /dev/null +++ b/src/wp-includes/icons/library/download.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/drafts.svg b/src/wp-includes/icons/library/drafts.svg new file mode 100644 index 0000000000000..4cd55eee757b5 --- /dev/null +++ b/src/wp-includes/icons/library/drafts.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/drag-handle.svg b/src/wp-includes/icons/library/drag-handle.svg new file mode 100644 index 0000000000000..e8012fd7721f9 --- /dev/null +++ b/src/wp-includes/icons/library/drag-handle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/drawer-left.svg b/src/wp-includes/icons/library/drawer-left.svg new file mode 100644 index 0000000000000..c0fd465b61f40 --- /dev/null +++ b/src/wp-includes/icons/library/drawer-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/drawer-right.svg b/src/wp-includes/icons/library/drawer-right.svg new file mode 100644 index 0000000000000..7b22105ae5a5d --- /dev/null +++ b/src/wp-includes/icons/library/drawer-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/envelope.svg b/src/wp-includes/icons/library/envelope.svg new file mode 100644 index 0000000000000..f41c0a915ba60 --- /dev/null +++ b/src/wp-includes/icons/library/envelope.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/error.svg b/src/wp-includes/icons/library/error.svg new file mode 100644 index 0000000000000..006d6aec28ca2 --- /dev/null +++ b/src/wp-includes/icons/library/error.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/external.svg b/src/wp-includes/icons/library/external.svg new file mode 100644 index 0000000000000..aa3348828b006 --- /dev/null +++ b/src/wp-includes/icons/library/external.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/file.svg b/src/wp-includes/icons/library/file.svg new file mode 100644 index 0000000000000..0144266c4425e --- /dev/null +++ b/src/wp-includes/icons/library/file.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/filter.svg b/src/wp-includes/icons/library/filter.svg new file mode 100644 index 0000000000000..6e83e036d0856 --- /dev/null +++ b/src/wp-includes/icons/library/filter.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/flip-horizontal.svg b/src/wp-includes/icons/library/flip-horizontal.svg new file mode 100644 index 0000000000000..62464773c0a76 --- /dev/null +++ b/src/wp-includes/icons/library/flip-horizontal.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/flip-vertical.svg b/src/wp-includes/icons/library/flip-vertical.svg new file mode 100644 index 0000000000000..a9ca7edc29bd7 --- /dev/null +++ b/src/wp-includes/icons/library/flip-vertical.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/footer.svg b/src/wp-includes/icons/library/footer.svg new file mode 100644 index 0000000000000..e888b893caf61 --- /dev/null +++ b/src/wp-includes/icons/library/footer.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/format-bold.svg b/src/wp-includes/icons/library/format-bold.svg new file mode 100644 index 0000000000000..89b84e8810fb2 --- /dev/null +++ b/src/wp-includes/icons/library/format-bold.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/format-capitalize.svg b/src/wp-includes/icons/library/format-capitalize.svg new file mode 100644 index 0000000000000..9dda39c17d68e --- /dev/null +++ b/src/wp-includes/icons/library/format-capitalize.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/format-indent-rtl.svg b/src/wp-includes/icons/library/format-indent-rtl.svg new file mode 100644 index 0000000000000..c85346d08b5fc --- /dev/null +++ b/src/wp-includes/icons/library/format-indent-rtl.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/format-indent.svg b/src/wp-includes/icons/library/format-indent.svg new file mode 100644 index 0000000000000..a89e7d313d386 --- /dev/null +++ b/src/wp-includes/icons/library/format-indent.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/format-italic.svg b/src/wp-includes/icons/library/format-italic.svg new file mode 100644 index 0000000000000..fc2c5380a8d3e --- /dev/null +++ b/src/wp-includes/icons/library/format-italic.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/format-list-bullets-rtl.svg b/src/wp-includes/icons/library/format-list-bullets-rtl.svg new file mode 100644 index 0000000000000..ecbcd95ee849b --- /dev/null +++ b/src/wp-includes/icons/library/format-list-bullets-rtl.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/format-list-bullets.svg b/src/wp-includes/icons/library/format-list-bullets.svg new file mode 100644 index 0000000000000..7c855d82938ce --- /dev/null +++ b/src/wp-includes/icons/library/format-list-bullets.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/format-list-numbered-rtl.svg b/src/wp-includes/icons/library/format-list-numbered-rtl.svg new file mode 100644 index 0000000000000..e976b85248f19 --- /dev/null +++ b/src/wp-includes/icons/library/format-list-numbered-rtl.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/format-list-numbered.svg b/src/wp-includes/icons/library/format-list-numbered.svg new file mode 100644 index 0000000000000..4febed3ea87a0 --- /dev/null +++ b/src/wp-includes/icons/library/format-list-numbered.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/format-lowercase.svg b/src/wp-includes/icons/library/format-lowercase.svg new file mode 100644 index 0000000000000..ccb9e2f07a7a4 --- /dev/null +++ b/src/wp-includes/icons/library/format-lowercase.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/format-ltr.svg b/src/wp-includes/icons/library/format-ltr.svg new file mode 100644 index 0000000000000..efc114919be8d --- /dev/null +++ b/src/wp-includes/icons/library/format-ltr.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/format-outdent-rtl.svg b/src/wp-includes/icons/library/format-outdent-rtl.svg new file mode 100644 index 0000000000000..c09ce6e45b511 --- /dev/null +++ b/src/wp-includes/icons/library/format-outdent-rtl.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/format-outdent.svg b/src/wp-includes/icons/library/format-outdent.svg new file mode 100644 index 0000000000000..87a656789531a --- /dev/null +++ b/src/wp-includes/icons/library/format-outdent.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/format-rtl.svg b/src/wp-includes/icons/library/format-rtl.svg new file mode 100644 index 0000000000000..e2438fb7ca237 --- /dev/null +++ b/src/wp-includes/icons/library/format-rtl.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/format-strikethrough.svg b/src/wp-includes/icons/library/format-strikethrough.svg new file mode 100644 index 0000000000000..e4b87f5dbe1fe --- /dev/null +++ b/src/wp-includes/icons/library/format-strikethrough.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/format-underline.svg b/src/wp-includes/icons/library/format-underline.svg new file mode 100644 index 0000000000000..be2f1b5cb4f87 --- /dev/null +++ b/src/wp-includes/icons/library/format-underline.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/format-uppercase.svg b/src/wp-includes/icons/library/format-uppercase.svg new file mode 100644 index 0000000000000..6521cb22e029a --- /dev/null +++ b/src/wp-includes/icons/library/format-uppercase.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/full-height.svg b/src/wp-includes/icons/library/full-height.svg new file mode 100644 index 0000000000000..cbe69cfb604a3 --- /dev/null +++ b/src/wp-includes/icons/library/full-height.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/fullscreen.svg b/src/wp-includes/icons/library/fullscreen.svg new file mode 100644 index 0000000000000..18dde7bea3e75 --- /dev/null +++ b/src/wp-includes/icons/library/fullscreen.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/funnel.svg b/src/wp-includes/icons/library/funnel.svg new file mode 100644 index 0000000000000..903a7ec4ab215 --- /dev/null +++ b/src/wp-includes/icons/library/funnel.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/gallery.svg b/src/wp-includes/icons/library/gallery.svg new file mode 100644 index 0000000000000..389a918817fcb --- /dev/null +++ b/src/wp-includes/icons/library/gallery.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/gift.svg b/src/wp-includes/icons/library/gift.svg new file mode 100644 index 0000000000000..39727cb9fa491 --- /dev/null +++ b/src/wp-includes/icons/library/gift.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/globe.svg b/src/wp-includes/icons/library/globe.svg new file mode 100644 index 0000000000000..5c1274db85467 --- /dev/null +++ b/src/wp-includes/icons/library/globe.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/grid.svg b/src/wp-includes/icons/library/grid.svg new file mode 100644 index 0000000000000..62617fcb82680 --- /dev/null +++ b/src/wp-includes/icons/library/grid.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/group.svg b/src/wp-includes/icons/library/group.svg new file mode 100644 index 0000000000000..8f00bd1d043d2 --- /dev/null +++ b/src/wp-includes/icons/library/group.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/handle.svg b/src/wp-includes/icons/library/handle.svg new file mode 100644 index 0000000000000..3dd7cb09a490b --- /dev/null +++ b/src/wp-includes/icons/library/handle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/header.svg b/src/wp-includes/icons/library/header.svg new file mode 100644 index 0000000000000..5d051294f2802 --- /dev/null +++ b/src/wp-includes/icons/library/header.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/heading-level-1.svg b/src/wp-includes/icons/library/heading-level-1.svg new file mode 100644 index 0000000000000..8cfb64f53f8f8 --- /dev/null +++ b/src/wp-includes/icons/library/heading-level-1.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/heading-level-2.svg b/src/wp-includes/icons/library/heading-level-2.svg new file mode 100644 index 0000000000000..cf38f4d17adef --- /dev/null +++ b/src/wp-includes/icons/library/heading-level-2.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/heading-level-3.svg b/src/wp-includes/icons/library/heading-level-3.svg new file mode 100644 index 0000000000000..03d52fee98d61 --- /dev/null +++ b/src/wp-includes/icons/library/heading-level-3.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/heading-level-4.svg b/src/wp-includes/icons/library/heading-level-4.svg new file mode 100644 index 0000000000000..556d57faa256c --- /dev/null +++ b/src/wp-includes/icons/library/heading-level-4.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/heading-level-5.svg b/src/wp-includes/icons/library/heading-level-5.svg new file mode 100644 index 0000000000000..6f4858ef0bc5f --- /dev/null +++ b/src/wp-includes/icons/library/heading-level-5.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/heading-level-6.svg b/src/wp-includes/icons/library/heading-level-6.svg new file mode 100644 index 0000000000000..511099d84a27a --- /dev/null +++ b/src/wp-includes/icons/library/heading-level-6.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/heading.svg b/src/wp-includes/icons/library/heading.svg new file mode 100644 index 0000000000000..51f90adaa39c2 --- /dev/null +++ b/src/wp-includes/icons/library/heading.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/help-filled.svg b/src/wp-includes/icons/library/help-filled.svg new file mode 100644 index 0000000000000..9c8cf7e6b5c07 --- /dev/null +++ b/src/wp-includes/icons/library/help-filled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/help.svg b/src/wp-includes/icons/library/help.svg new file mode 100644 index 0000000000000..ae2167edb7ce5 --- /dev/null +++ b/src/wp-includes/icons/library/help.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/home-button.svg b/src/wp-includes/icons/library/home-button.svg new file mode 100644 index 0000000000000..c9798175aa921 --- /dev/null +++ b/src/wp-includes/icons/library/home-button.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/home.svg b/src/wp-includes/icons/library/home.svg new file mode 100644 index 0000000000000..bedfb6e00f593 --- /dev/null +++ b/src/wp-includes/icons/library/home.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/html.svg b/src/wp-includes/icons/library/html.svg new file mode 100644 index 0000000000000..da3eafd242cf3 --- /dev/null +++ b/src/wp-includes/icons/library/html.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/image.svg b/src/wp-includes/icons/library/image.svg new file mode 100644 index 0000000000000..e14678e2cf4ab --- /dev/null +++ b/src/wp-includes/icons/library/image.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/inbox.svg b/src/wp-includes/icons/library/inbox.svg new file mode 100644 index 0000000000000..af82f9eb05e2a --- /dev/null +++ b/src/wp-includes/icons/library/inbox.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/info.svg b/src/wp-includes/icons/library/info.svg new file mode 100644 index 0000000000000..9d7afc85fae83 --- /dev/null +++ b/src/wp-includes/icons/library/info.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/insert-after.svg b/src/wp-includes/icons/library/insert-after.svg new file mode 100644 index 0000000000000..6743fe8043803 --- /dev/null +++ b/src/wp-includes/icons/library/insert-after.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/insert-before.svg b/src/wp-includes/icons/library/insert-before.svg new file mode 100644 index 0000000000000..90ceb9c31fb7a --- /dev/null +++ b/src/wp-includes/icons/library/insert-before.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/institution.svg b/src/wp-includes/icons/library/institution.svg new file mode 100644 index 0000000000000..fa5e94b06cf04 --- /dev/null +++ b/src/wp-includes/icons/library/institution.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/justify-bottom.svg b/src/wp-includes/icons/library/justify-bottom.svg new file mode 100644 index 0000000000000..983f354b08d9d --- /dev/null +++ b/src/wp-includes/icons/library/justify-bottom.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/justify-center-vertical.svg b/src/wp-includes/icons/library/justify-center-vertical.svg new file mode 100644 index 0000000000000..09fa620daedc5 --- /dev/null +++ b/src/wp-includes/icons/library/justify-center-vertical.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/justify-center.svg b/src/wp-includes/icons/library/justify-center.svg new file mode 100644 index 0000000000000..17eb01f512295 --- /dev/null +++ b/src/wp-includes/icons/library/justify-center.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/justify-left.svg b/src/wp-includes/icons/library/justify-left.svg new file mode 100644 index 0000000000000..f3913733ecf92 --- /dev/null +++ b/src/wp-includes/icons/library/justify-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/justify-right.svg b/src/wp-includes/icons/library/justify-right.svg new file mode 100644 index 0000000000000..6238f51099b5f --- /dev/null +++ b/src/wp-includes/icons/library/justify-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/justify-space-between-vertical.svg b/src/wp-includes/icons/library/justify-space-between-vertical.svg new file mode 100644 index 0000000000000..1fb2a4145c22f --- /dev/null +++ b/src/wp-includes/icons/library/justify-space-between-vertical.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/justify-space-between.svg b/src/wp-includes/icons/library/justify-space-between.svg new file mode 100644 index 0000000000000..f562659d010a0 --- /dev/null +++ b/src/wp-includes/icons/library/justify-space-between.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/justify-stretch-vertical.svg b/src/wp-includes/icons/library/justify-stretch-vertical.svg new file mode 100644 index 0000000000000..cff13e239deac --- /dev/null +++ b/src/wp-includes/icons/library/justify-stretch-vertical.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/justify-stretch.svg b/src/wp-includes/icons/library/justify-stretch.svg new file mode 100644 index 0000000000000..5e7d892b5b717 --- /dev/null +++ b/src/wp-includes/icons/library/justify-stretch.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/justify-top.svg b/src/wp-includes/icons/library/justify-top.svg new file mode 100644 index 0000000000000..2e0bfacd43dd9 --- /dev/null +++ b/src/wp-includes/icons/library/justify-top.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/key.svg b/src/wp-includes/icons/library/key.svg new file mode 100644 index 0000000000000..b04dde57aa7fa --- /dev/null +++ b/src/wp-includes/icons/library/key.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/keyboard-close.svg b/src/wp-includes/icons/library/keyboard-close.svg new file mode 100644 index 0000000000000..db193d038e347 --- /dev/null +++ b/src/wp-includes/icons/library/keyboard-close.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/keyboard-return.svg b/src/wp-includes/icons/library/keyboard-return.svg new file mode 100644 index 0000000000000..db53403b3db6a --- /dev/null +++ b/src/wp-includes/icons/library/keyboard-return.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/keyboard.svg b/src/wp-includes/icons/library/keyboard.svg new file mode 100644 index 0000000000000..34fcf1a2e5fa4 --- /dev/null +++ b/src/wp-includes/icons/library/keyboard.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/wp-includes/icons/library/language.svg b/src/wp-includes/icons/library/language.svg new file mode 100644 index 0000000000000..42b3b549824f2 --- /dev/null +++ b/src/wp-includes/icons/library/language.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/layout.svg b/src/wp-includes/icons/library/layout.svg new file mode 100644 index 0000000000000..9179ce8e9b1db --- /dev/null +++ b/src/wp-includes/icons/library/layout.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/level-up.svg b/src/wp-includes/icons/library/level-up.svg new file mode 100644 index 0000000000000..fbd9a5d69c483 --- /dev/null +++ b/src/wp-includes/icons/library/level-up.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/lifesaver.svg b/src/wp-includes/icons/library/lifesaver.svg new file mode 100644 index 0000000000000..766784ed531bd --- /dev/null +++ b/src/wp-includes/icons/library/lifesaver.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/line-dashed.svg b/src/wp-includes/icons/library/line-dashed.svg new file mode 100644 index 0000000000000..0fff9b3f2bfe5 --- /dev/null +++ b/src/wp-includes/icons/library/line-dashed.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/line-dotted.svg b/src/wp-includes/icons/library/line-dotted.svg new file mode 100644 index 0000000000000..ba9ff4a2b299e --- /dev/null +++ b/src/wp-includes/icons/library/line-dotted.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/line-solid.svg b/src/wp-includes/icons/library/line-solid.svg new file mode 100644 index 0000000000000..95aa7137b5bdb --- /dev/null +++ b/src/wp-includes/icons/library/line-solid.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/link-off.svg b/src/wp-includes/icons/library/link-off.svg new file mode 100644 index 0000000000000..bb22938f6522a --- /dev/null +++ b/src/wp-includes/icons/library/link-off.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/link.svg b/src/wp-includes/icons/library/link.svg new file mode 100644 index 0000000000000..5be28f494efe5 --- /dev/null +++ b/src/wp-includes/icons/library/link.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/list-item.svg b/src/wp-includes/icons/library/list-item.svg new file mode 100644 index 0000000000000..96f60ae5cf213 --- /dev/null +++ b/src/wp-includes/icons/library/list-item.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/list-view.svg b/src/wp-includes/icons/library/list-view.svg new file mode 100644 index 0000000000000..3df1c41cbffeb --- /dev/null +++ b/src/wp-includes/icons/library/list-view.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/list.svg b/src/wp-includes/icons/library/list.svg new file mode 100644 index 0000000000000..1178564a6b81d --- /dev/null +++ b/src/wp-includes/icons/library/list.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/lock-outline.svg b/src/wp-includes/icons/library/lock-outline.svg new file mode 100644 index 0000000000000..aae2b8e0d25dd --- /dev/null +++ b/src/wp-includes/icons/library/lock-outline.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/lock-small.svg b/src/wp-includes/icons/library/lock-small.svg new file mode 100644 index 0000000000000..68c43b0e94e45 --- /dev/null +++ b/src/wp-includes/icons/library/lock-small.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/lock.svg b/src/wp-includes/icons/library/lock.svg new file mode 100644 index 0000000000000..4c51bf5efc8a4 --- /dev/null +++ b/src/wp-includes/icons/library/lock.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/login.svg b/src/wp-includes/icons/library/login.svg new file mode 100644 index 0000000000000..220c8635b92cc --- /dev/null +++ b/src/wp-includes/icons/library/login.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/loop.svg b/src/wp-includes/icons/library/loop.svg new file mode 100644 index 0000000000000..eaf69f00a6d41 --- /dev/null +++ b/src/wp-includes/icons/library/loop.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/map-marker.svg b/src/wp-includes/icons/library/map-marker.svg new file mode 100644 index 0000000000000..09102ac0ce2bc --- /dev/null +++ b/src/wp-includes/icons/library/map-marker.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/math.svg b/src/wp-includes/icons/library/math.svg new file mode 100644 index 0000000000000..eeda5f831717e --- /dev/null +++ b/src/wp-includes/icons/library/math.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/media-and-text.svg b/src/wp-includes/icons/library/media-and-text.svg new file mode 100644 index 0000000000000..d63b328cb4abe --- /dev/null +++ b/src/wp-includes/icons/library/media-and-text.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/media.svg b/src/wp-includes/icons/library/media.svg new file mode 100644 index 0000000000000..c529ab8413db1 --- /dev/null +++ b/src/wp-includes/icons/library/media.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/wp-includes/icons/library/megaphone.svg b/src/wp-includes/icons/library/megaphone.svg new file mode 100644 index 0000000000000..0a76cbd05a5c7 --- /dev/null +++ b/src/wp-includes/icons/library/megaphone.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/menu.svg b/src/wp-includes/icons/library/menu.svg new file mode 100644 index 0000000000000..58c9c4d2701c9 --- /dev/null +++ b/src/wp-includes/icons/library/menu.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/mobile.svg b/src/wp-includes/icons/library/mobile.svg new file mode 100644 index 0000000000000..90410b38463b2 --- /dev/null +++ b/src/wp-includes/icons/library/mobile.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/more-horizontal.svg b/src/wp-includes/icons/library/more-horizontal.svg new file mode 100644 index 0000000000000..9abb19ec73607 --- /dev/null +++ b/src/wp-includes/icons/library/more-horizontal.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/more-vertical.svg b/src/wp-includes/icons/library/more-vertical.svg new file mode 100644 index 0000000000000..469a873d1f01f --- /dev/null +++ b/src/wp-includes/icons/library/more-vertical.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/more.svg b/src/wp-includes/icons/library/more.svg new file mode 100644 index 0000000000000..f1264ebba4fc2 --- /dev/null +++ b/src/wp-includes/icons/library/more.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/move-to.svg b/src/wp-includes/icons/library/move-to.svg new file mode 100644 index 0000000000000..26cf713a06c36 --- /dev/null +++ b/src/wp-includes/icons/library/move-to.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/navigation-overlay.svg b/src/wp-includes/icons/library/navigation-overlay.svg new file mode 100644 index 0000000000000..83425951477b7 --- /dev/null +++ b/src/wp-includes/icons/library/navigation-overlay.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/navigation.svg b/src/wp-includes/icons/library/navigation.svg new file mode 100644 index 0000000000000..9897b55a11927 --- /dev/null +++ b/src/wp-includes/icons/library/navigation.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/next.svg b/src/wp-includes/icons/library/next.svg new file mode 100644 index 0000000000000..c4a9b1b454b38 --- /dev/null +++ b/src/wp-includes/icons/library/next.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/not-allowed.svg b/src/wp-includes/icons/library/not-allowed.svg new file mode 100644 index 0000000000000..4550385ac2e3a --- /dev/null +++ b/src/wp-includes/icons/library/not-allowed.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/not-found.svg b/src/wp-includes/icons/library/not-found.svg new file mode 100644 index 0000000000000..a436d883f5ac7 --- /dev/null +++ b/src/wp-includes/icons/library/not-found.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/offline.svg b/src/wp-includes/icons/library/offline.svg new file mode 100644 index 0000000000000..ddd432987997f --- /dev/null +++ b/src/wp-includes/icons/library/offline.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/overlay-text.svg b/src/wp-includes/icons/library/overlay-text.svg new file mode 100644 index 0000000000000..0b15b071b67a6 --- /dev/null +++ b/src/wp-includes/icons/library/overlay-text.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/page-break.svg b/src/wp-includes/icons/library/page-break.svg new file mode 100644 index 0000000000000..0f9dd1f1b7a2f --- /dev/null +++ b/src/wp-includes/icons/library/page-break.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/page.svg b/src/wp-includes/icons/library/page.svg new file mode 100644 index 0000000000000..ce1918e963dd6 --- /dev/null +++ b/src/wp-includes/icons/library/page.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/wp-includes/icons/library/pages.svg b/src/wp-includes/icons/library/pages.svg new file mode 100644 index 0000000000000..4cfedd8e91f01 --- /dev/null +++ b/src/wp-includes/icons/library/pages.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/wp-includes/icons/library/paragraph.svg b/src/wp-includes/icons/library/paragraph.svg new file mode 100644 index 0000000000000..a5945a65500e6 --- /dev/null +++ b/src/wp-includes/icons/library/paragraph.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/payment.svg b/src/wp-includes/icons/library/payment.svg new file mode 100644 index 0000000000000..305e1e2495e9c --- /dev/null +++ b/src/wp-includes/icons/library/payment.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/pencil.svg b/src/wp-includes/icons/library/pencil.svg new file mode 100644 index 0000000000000..6a6fccc85deed --- /dev/null +++ b/src/wp-includes/icons/library/pencil.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/pending.svg b/src/wp-includes/icons/library/pending.svg new file mode 100644 index 0000000000000..ef3b154b2240f --- /dev/null +++ b/src/wp-includes/icons/library/pending.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/people.svg b/src/wp-includes/icons/library/people.svg new file mode 100644 index 0000000000000..352a6410e30bc --- /dev/null +++ b/src/wp-includes/icons/library/people.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/percent.svg b/src/wp-includes/icons/library/percent.svg new file mode 100644 index 0000000000000..bb1bf2a134d49 --- /dev/null +++ b/src/wp-includes/icons/library/percent.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/pin-small.svg b/src/wp-includes/icons/library/pin-small.svg new file mode 100644 index 0000000000000..25a36f5e6a801 --- /dev/null +++ b/src/wp-includes/icons/library/pin-small.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/pin.svg b/src/wp-includes/icons/library/pin.svg new file mode 100644 index 0000000000000..a61c2cafad05e --- /dev/null +++ b/src/wp-includes/icons/library/pin.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/plugins.svg b/src/wp-includes/icons/library/plugins.svg new file mode 100644 index 0000000000000..a74ce8910aac1 --- /dev/null +++ b/src/wp-includes/icons/library/plugins.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/plus-circle-filled.svg b/src/wp-includes/icons/library/plus-circle-filled.svg new file mode 100644 index 0000000000000..e46a7e178e589 --- /dev/null +++ b/src/wp-includes/icons/library/plus-circle-filled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/plus-circle.svg b/src/wp-includes/icons/library/plus-circle.svg new file mode 100644 index 0000000000000..9ab6d1bbd7fee --- /dev/null +++ b/src/wp-includes/icons/library/plus-circle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/plus.svg b/src/wp-includes/icons/library/plus.svg new file mode 100644 index 0000000000000..09776c79ee92a --- /dev/null +++ b/src/wp-includes/icons/library/plus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/position-center.svg b/src/wp-includes/icons/library/position-center.svg new file mode 100644 index 0000000000000..ab9a1990373c3 --- /dev/null +++ b/src/wp-includes/icons/library/position-center.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/position-left.svg b/src/wp-includes/icons/library/position-left.svg new file mode 100644 index 0000000000000..a1b96ae2f92f3 --- /dev/null +++ b/src/wp-includes/icons/library/position-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/position-right.svg b/src/wp-includes/icons/library/position-right.svg new file mode 100644 index 0000000000000..1abb237622be8 --- /dev/null +++ b/src/wp-includes/icons/library/position-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/post-author.svg b/src/wp-includes/icons/library/post-author.svg new file mode 100644 index 0000000000000..acbf5f1383c1c --- /dev/null +++ b/src/wp-includes/icons/library/post-author.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/post-categories.svg b/src/wp-includes/icons/library/post-categories.svg new file mode 100644 index 0000000000000..22471982de366 --- /dev/null +++ b/src/wp-includes/icons/library/post-categories.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/post-comments-count.svg b/src/wp-includes/icons/library/post-comments-count.svg new file mode 100644 index 0000000000000..55caa3b60a080 --- /dev/null +++ b/src/wp-includes/icons/library/post-comments-count.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/post-comments-form.svg b/src/wp-includes/icons/library/post-comments-form.svg new file mode 100644 index 0000000000000..ecbdd4766e127 --- /dev/null +++ b/src/wp-includes/icons/library/post-comments-form.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/post-comments.svg b/src/wp-includes/icons/library/post-comments.svg new file mode 100644 index 0000000000000..b05d4bf1a167a --- /dev/null +++ b/src/wp-includes/icons/library/post-comments.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/post-content.svg b/src/wp-includes/icons/library/post-content.svg new file mode 100644 index 0000000000000..82a7c427a11a9 --- /dev/null +++ b/src/wp-includes/icons/library/post-content.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/post-date.svg b/src/wp-includes/icons/library/post-date.svg new file mode 100644 index 0000000000000..84bc05d2549fa --- /dev/null +++ b/src/wp-includes/icons/library/post-date.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/wp-includes/icons/library/post-excerpt.svg b/src/wp-includes/icons/library/post-excerpt.svg new file mode 100644 index 0000000000000..8dca8a3ab16f7 --- /dev/null +++ b/src/wp-includes/icons/library/post-excerpt.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/post-featured-image.svg b/src/wp-includes/icons/library/post-featured-image.svg new file mode 100644 index 0000000000000..d5c88159e5843 --- /dev/null +++ b/src/wp-includes/icons/library/post-featured-image.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/post-list.svg b/src/wp-includes/icons/library/post-list.svg new file mode 100644 index 0000000000000..008b1dc86a66e --- /dev/null +++ b/src/wp-includes/icons/library/post-list.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/post-terms.svg b/src/wp-includes/icons/library/post-terms.svg new file mode 100644 index 0000000000000..1df12e6e31d53 --- /dev/null +++ b/src/wp-includes/icons/library/post-terms.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/post.svg b/src/wp-includes/icons/library/post.svg new file mode 100644 index 0000000000000..be934e242a1cd --- /dev/null +++ b/src/wp-includes/icons/library/post.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/preformatted.svg b/src/wp-includes/icons/library/preformatted.svg new file mode 100644 index 0000000000000..231d6e77a5fcd --- /dev/null +++ b/src/wp-includes/icons/library/preformatted.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/previous.svg b/src/wp-includes/icons/library/previous.svg new file mode 100644 index 0000000000000..ea03926c3aa11 --- /dev/null +++ b/src/wp-includes/icons/library/previous.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/published.svg b/src/wp-includes/icons/library/published.svg new file mode 100644 index 0000000000000..13dfc4bb18164 --- /dev/null +++ b/src/wp-includes/icons/library/published.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/pull-left.svg b/src/wp-includes/icons/library/pull-left.svg new file mode 100644 index 0000000000000..016da89b0afc1 --- /dev/null +++ b/src/wp-includes/icons/library/pull-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/pull-right.svg b/src/wp-includes/icons/library/pull-right.svg new file mode 100644 index 0000000000000..688280c37fbc7 --- /dev/null +++ b/src/wp-includes/icons/library/pull-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/pullquote.svg b/src/wp-includes/icons/library/pullquote.svg new file mode 100644 index 0000000000000..6fe0e1447936b --- /dev/null +++ b/src/wp-includes/icons/library/pullquote.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/query-pagination-next.svg b/src/wp-includes/icons/library/query-pagination-next.svg new file mode 100644 index 0000000000000..8925c33bfd4fb --- /dev/null +++ b/src/wp-includes/icons/library/query-pagination-next.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/query-pagination-numbers.svg b/src/wp-includes/icons/library/query-pagination-numbers.svg new file mode 100644 index 0000000000000..7fdff964d8a86 --- /dev/null +++ b/src/wp-includes/icons/library/query-pagination-numbers.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/query-pagination-previous.svg b/src/wp-includes/icons/library/query-pagination-previous.svg new file mode 100644 index 0000000000000..c8bc7eb8e032d --- /dev/null +++ b/src/wp-includes/icons/library/query-pagination-previous.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/query-pagination.svg b/src/wp-includes/icons/library/query-pagination.svg new file mode 100644 index 0000000000000..6c6cb0cfed672 --- /dev/null +++ b/src/wp-includes/icons/library/query-pagination.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/quote.svg b/src/wp-includes/icons/library/quote.svg new file mode 100644 index 0000000000000..655bd131dfe3f --- /dev/null +++ b/src/wp-includes/icons/library/quote.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/receipt.svg b/src/wp-includes/icons/library/receipt.svg new file mode 100644 index 0000000000000..def9c8118f0fc --- /dev/null +++ b/src/wp-includes/icons/library/receipt.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/redo.svg b/src/wp-includes/icons/library/redo.svg new file mode 100644 index 0000000000000..8adb40ee5d946 --- /dev/null +++ b/src/wp-includes/icons/library/redo.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/remove-bug.svg b/src/wp-includes/icons/library/remove-bug.svg new file mode 100644 index 0000000000000..07fc6c0b05a76 --- /dev/null +++ b/src/wp-includes/icons/library/remove-bug.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/remove-submenu.svg b/src/wp-includes/icons/library/remove-submenu.svg new file mode 100644 index 0000000000000..e57bd6f94bed2 --- /dev/null +++ b/src/wp-includes/icons/library/remove-submenu.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/replace.svg b/src/wp-includes/icons/library/replace.svg new file mode 100644 index 0000000000000..c4629ecaf869d --- /dev/null +++ b/src/wp-includes/icons/library/replace.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/reset.svg b/src/wp-includes/icons/library/reset.svg new file mode 100644 index 0000000000000..660c39b49123c --- /dev/null +++ b/src/wp-includes/icons/library/reset.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/resize-corner-ne.svg b/src/wp-includes/icons/library/resize-corner-ne.svg new file mode 100644 index 0000000000000..764fec3b29bde --- /dev/null +++ b/src/wp-includes/icons/library/resize-corner-ne.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/reusable-block.svg b/src/wp-includes/icons/library/reusable-block.svg new file mode 100644 index 0000000000000..e6879cc660bc4 --- /dev/null +++ b/src/wp-includes/icons/library/reusable-block.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/rotate-left.svg b/src/wp-includes/icons/library/rotate-left.svg new file mode 100644 index 0000000000000..262ab29a96648 --- /dev/null +++ b/src/wp-includes/icons/library/rotate-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/rotate-right.svg b/src/wp-includes/icons/library/rotate-right.svg new file mode 100644 index 0000000000000..deb8cc272a1b3 --- /dev/null +++ b/src/wp-includes/icons/library/rotate-right.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/row.svg b/src/wp-includes/icons/library/row.svg new file mode 100644 index 0000000000000..1ce7a6a417ac7 --- /dev/null +++ b/src/wp-includes/icons/library/row.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/rss.svg b/src/wp-includes/icons/library/rss.svg new file mode 100644 index 0000000000000..47af92eca26a6 --- /dev/null +++ b/src/wp-includes/icons/library/rss.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/scheduled.svg b/src/wp-includes/icons/library/scheduled.svg new file mode 100644 index 0000000000000..1a1e769092211 --- /dev/null +++ b/src/wp-includes/icons/library/scheduled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/search.svg b/src/wp-includes/icons/library/search.svg new file mode 100644 index 0000000000000..fe24af8e80dec --- /dev/null +++ b/src/wp-includes/icons/library/search.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/seen.svg b/src/wp-includes/icons/library/seen.svg new file mode 100644 index 0000000000000..b8bf2575dc8a4 --- /dev/null +++ b/src/wp-includes/icons/library/seen.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/send.svg b/src/wp-includes/icons/library/send.svg new file mode 100644 index 0000000000000..31444a297e420 --- /dev/null +++ b/src/wp-includes/icons/library/send.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/separator.svg b/src/wp-includes/icons/library/separator.svg new file mode 100644 index 0000000000000..f2ec17aea2a29 --- /dev/null +++ b/src/wp-includes/icons/library/separator.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/settings.svg b/src/wp-includes/icons/library/settings.svg new file mode 100644 index 0000000000000..a6b1d86540ad9 --- /dev/null +++ b/src/wp-includes/icons/library/settings.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/wp-includes/icons/library/shadow.svg b/src/wp-includes/icons/library/shadow.svg new file mode 100644 index 0000000000000..41a5c2cac7f09 --- /dev/null +++ b/src/wp-includes/icons/library/shadow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/share.svg b/src/wp-includes/icons/library/share.svg new file mode 100644 index 0000000000000..2ed89feccf56b --- /dev/null +++ b/src/wp-includes/icons/library/share.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/shield.svg b/src/wp-includes/icons/library/shield.svg new file mode 100644 index 0000000000000..33e45e6228de5 --- /dev/null +++ b/src/wp-includes/icons/library/shield.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/shipping.svg b/src/wp-includes/icons/library/shipping.svg new file mode 100644 index 0000000000000..f987d40c9725f --- /dev/null +++ b/src/wp-includes/icons/library/shipping.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/shortcode.svg b/src/wp-includes/icons/library/shortcode.svg new file mode 100644 index 0000000000000..f0e3b412d73f8 --- /dev/null +++ b/src/wp-includes/icons/library/shortcode.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/shuffle.svg b/src/wp-includes/icons/library/shuffle.svg new file mode 100644 index 0000000000000..2683ef13fb50a --- /dev/null +++ b/src/wp-includes/icons/library/shuffle.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/sidebar.svg b/src/wp-includes/icons/library/sidebar.svg new file mode 100644 index 0000000000000..15d5880d3fe93 --- /dev/null +++ b/src/wp-includes/icons/library/sidebar.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/sides-all.svg b/src/wp-includes/icons/library/sides-all.svg new file mode 100644 index 0000000000000..afbf1775bb9b8 --- /dev/null +++ b/src/wp-includes/icons/library/sides-all.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/sides-axial.svg b/src/wp-includes/icons/library/sides-axial.svg new file mode 100644 index 0000000000000..08f202cfa6d16 --- /dev/null +++ b/src/wp-includes/icons/library/sides-axial.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/sides-bottom.svg b/src/wp-includes/icons/library/sides-bottom.svg new file mode 100644 index 0000000000000..7e477e5d6d7af --- /dev/null +++ b/src/wp-includes/icons/library/sides-bottom.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/wp-includes/icons/library/sides-horizontal.svg b/src/wp-includes/icons/library/sides-horizontal.svg new file mode 100644 index 0000000000000..df651421e339e --- /dev/null +++ b/src/wp-includes/icons/library/sides-horizontal.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/wp-includes/icons/library/sides-left.svg b/src/wp-includes/icons/library/sides-left.svg new file mode 100644 index 0000000000000..c546c042fba39 --- /dev/null +++ b/src/wp-includes/icons/library/sides-left.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/wp-includes/icons/library/sides-right.svg b/src/wp-includes/icons/library/sides-right.svg new file mode 100644 index 0000000000000..689698d85d0dc --- /dev/null +++ b/src/wp-includes/icons/library/sides-right.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/wp-includes/icons/library/sides-top.svg b/src/wp-includes/icons/library/sides-top.svg new file mode 100644 index 0000000000000..a413488ac3fca --- /dev/null +++ b/src/wp-includes/icons/library/sides-top.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/wp-includes/icons/library/sides-vertical.svg b/src/wp-includes/icons/library/sides-vertical.svg new file mode 100644 index 0000000000000..1e64f408855fb --- /dev/null +++ b/src/wp-includes/icons/library/sides-vertical.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/wp-includes/icons/library/site-logo.svg b/src/wp-includes/icons/library/site-logo.svg new file mode 100644 index 0000000000000..26b6cfb4ce689 --- /dev/null +++ b/src/wp-includes/icons/library/site-logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/square.svg b/src/wp-includes/icons/library/square.svg new file mode 100644 index 0000000000000..3b66d51854cb1 --- /dev/null +++ b/src/wp-includes/icons/library/square.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/stack.svg b/src/wp-includes/icons/library/stack.svg new file mode 100644 index 0000000000000..c4d9aef31e5c0 --- /dev/null +++ b/src/wp-includes/icons/library/stack.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/star-empty.svg b/src/wp-includes/icons/library/star-empty.svg new file mode 100644 index 0000000000000..75cd0e122d458 --- /dev/null +++ b/src/wp-includes/icons/library/star-empty.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/star-filled.svg b/src/wp-includes/icons/library/star-filled.svg new file mode 100644 index 0000000000000..2b32a6424776a --- /dev/null +++ b/src/wp-includes/icons/library/star-filled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/star-half.svg b/src/wp-includes/icons/library/star-half.svg new file mode 100644 index 0000000000000..fe0f1b5ca0b16 --- /dev/null +++ b/src/wp-includes/icons/library/star-half.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/store.svg b/src/wp-includes/icons/library/store.svg new file mode 100644 index 0000000000000..af15718d7f908 --- /dev/null +++ b/src/wp-includes/icons/library/store.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/stretch-full-width.svg b/src/wp-includes/icons/library/stretch-full-width.svg new file mode 100644 index 0000000000000..02a5f5c0cb644 --- /dev/null +++ b/src/wp-includes/icons/library/stretch-full-width.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/stretch-wide.svg b/src/wp-includes/icons/library/stretch-wide.svg new file mode 100644 index 0000000000000..ff3031ef9bd74 --- /dev/null +++ b/src/wp-includes/icons/library/stretch-wide.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/styles.svg b/src/wp-includes/icons/library/styles.svg new file mode 100644 index 0000000000000..377fa2e6bb458 --- /dev/null +++ b/src/wp-includes/icons/library/styles.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/subscript.svg b/src/wp-includes/icons/library/subscript.svg new file mode 100644 index 0000000000000..632317fe7536c --- /dev/null +++ b/src/wp-includes/icons/library/subscript.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/superscript.svg b/src/wp-includes/icons/library/superscript.svg new file mode 100644 index 0000000000000..ca60e0e1133f2 --- /dev/null +++ b/src/wp-includes/icons/library/superscript.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/swatch.svg b/src/wp-includes/icons/library/swatch.svg new file mode 100644 index 0000000000000..af21de80a183b --- /dev/null +++ b/src/wp-includes/icons/library/swatch.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/symbol-filled.svg b/src/wp-includes/icons/library/symbol-filled.svg new file mode 100644 index 0000000000000..608a9e8ee96b2 --- /dev/null +++ b/src/wp-includes/icons/library/symbol-filled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/symbol.svg b/src/wp-includes/icons/library/symbol.svg new file mode 100644 index 0000000000000..58f92a5cc93c6 --- /dev/null +++ b/src/wp-includes/icons/library/symbol.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/tab.svg b/src/wp-includes/icons/library/tab.svg new file mode 100644 index 0000000000000..a6444a9739efd --- /dev/null +++ b/src/wp-includes/icons/library/tab.svg @@ -0,0 +1 @@ + diff --git a/src/wp-includes/icons/library/table-column-after.svg b/src/wp-includes/icons/library/table-column-after.svg new file mode 100644 index 0000000000000..bfbf79eefb306 --- /dev/null +++ b/src/wp-includes/icons/library/table-column-after.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/table-column-before.svg b/src/wp-includes/icons/library/table-column-before.svg new file mode 100644 index 0000000000000..6966550159ef2 --- /dev/null +++ b/src/wp-includes/icons/library/table-column-before.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/table-column-delete.svg b/src/wp-includes/icons/library/table-column-delete.svg new file mode 100644 index 0000000000000..a23314d76e897 --- /dev/null +++ b/src/wp-includes/icons/library/table-column-delete.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/table-of-contents.svg b/src/wp-includes/icons/library/table-of-contents.svg new file mode 100644 index 0000000000000..09a6e26ec72b1 --- /dev/null +++ b/src/wp-includes/icons/library/table-of-contents.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/wp-includes/icons/library/table-row-after.svg b/src/wp-includes/icons/library/table-row-after.svg new file mode 100644 index 0000000000000..f20db5ac4c884 --- /dev/null +++ b/src/wp-includes/icons/library/table-row-after.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/table-row-before.svg b/src/wp-includes/icons/library/table-row-before.svg new file mode 100644 index 0000000000000..ab0c02e9dce58 --- /dev/null +++ b/src/wp-includes/icons/library/table-row-before.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/table-row-delete.svg b/src/wp-includes/icons/library/table-row-delete.svg new file mode 100644 index 0000000000000..110a6a9fb80e8 --- /dev/null +++ b/src/wp-includes/icons/library/table-row-delete.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/table.svg b/src/wp-includes/icons/library/table.svg new file mode 100644 index 0000000000000..64e387e683d62 --- /dev/null +++ b/src/wp-includes/icons/library/table.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/tablet.svg b/src/wp-includes/icons/library/tablet.svg new file mode 100644 index 0000000000000..fa36e90de69cd --- /dev/null +++ b/src/wp-includes/icons/library/tablet.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/tabs-menu-item.svg b/src/wp-includes/icons/library/tabs-menu-item.svg new file mode 100644 index 0000000000000..2e8102d5d7f9b --- /dev/null +++ b/src/wp-includes/icons/library/tabs-menu-item.svg @@ -0,0 +1 @@ + diff --git a/src/wp-includes/icons/library/tabs-menu.svg b/src/wp-includes/icons/library/tabs-menu.svg new file mode 100644 index 0000000000000..d42453416b532 --- /dev/null +++ b/src/wp-includes/icons/library/tabs-menu.svg @@ -0,0 +1 @@ + diff --git a/src/wp-includes/icons/library/tabs.svg b/src/wp-includes/icons/library/tabs.svg new file mode 100644 index 0000000000000..9740dca50ff48 --- /dev/null +++ b/src/wp-includes/icons/library/tabs.svg @@ -0,0 +1 @@ + diff --git a/src/wp-includes/icons/library/tag.svg b/src/wp-includes/icons/library/tag.svg new file mode 100644 index 0000000000000..a2a52b7541ed8 --- /dev/null +++ b/src/wp-includes/icons/library/tag.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/term-count.svg b/src/wp-includes/icons/library/term-count.svg new file mode 100644 index 0000000000000..8b333407a02ef --- /dev/null +++ b/src/wp-includes/icons/library/term-count.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/wp-includes/icons/library/term-description.svg b/src/wp-includes/icons/library/term-description.svg new file mode 100644 index 0000000000000..5a00b07073134 --- /dev/null +++ b/src/wp-includes/icons/library/term-description.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/term-name.svg b/src/wp-includes/icons/library/term-name.svg new file mode 100644 index 0000000000000..c4135c2511de2 --- /dev/null +++ b/src/wp-includes/icons/library/term-name.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/wp-includes/icons/library/text-color.svg b/src/wp-includes/icons/library/text-color.svg new file mode 100644 index 0000000000000..a6096517801ad --- /dev/null +++ b/src/wp-includes/icons/library/text-color.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/text-horizontal.svg b/src/wp-includes/icons/library/text-horizontal.svg new file mode 100644 index 0000000000000..faf6150751bba --- /dev/null +++ b/src/wp-includes/icons/library/text-horizontal.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/text-vertical.svg b/src/wp-includes/icons/library/text-vertical.svg new file mode 100644 index 0000000000000..64ec893f7f0f2 --- /dev/null +++ b/src/wp-includes/icons/library/text-vertical.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/thumbs-down.svg b/src/wp-includes/icons/library/thumbs-down.svg new file mode 100644 index 0000000000000..72c96f5b5693e --- /dev/null +++ b/src/wp-includes/icons/library/thumbs-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/thumbs-up.svg b/src/wp-includes/icons/library/thumbs-up.svg new file mode 100644 index 0000000000000..79fb58752a32a --- /dev/null +++ b/src/wp-includes/icons/library/thumbs-up.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/time-to-read.svg b/src/wp-includes/icons/library/time-to-read.svg new file mode 100644 index 0000000000000..fd368c5e4fc80 --- /dev/null +++ b/src/wp-includes/icons/library/time-to-read.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/tip.svg b/src/wp-includes/icons/library/tip.svg new file mode 100644 index 0000000000000..212885ca47e50 --- /dev/null +++ b/src/wp-includes/icons/library/tip.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/title.svg b/src/wp-includes/icons/library/title.svg new file mode 100644 index 0000000000000..28e8fa6921378 --- /dev/null +++ b/src/wp-includes/icons/library/title.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/tool.svg b/src/wp-includes/icons/library/tool.svg new file mode 100644 index 0000000000000..1c9cc50018fcf --- /dev/null +++ b/src/wp-includes/icons/library/tool.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/trash.svg b/src/wp-includes/icons/library/trash.svg new file mode 100644 index 0000000000000..fddfcfeb44883 --- /dev/null +++ b/src/wp-includes/icons/library/trash.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/trending-down.svg b/src/wp-includes/icons/library/trending-down.svg new file mode 100644 index 0000000000000..66f297ade96fc --- /dev/null +++ b/src/wp-includes/icons/library/trending-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/trending-up.svg b/src/wp-includes/icons/library/trending-up.svg new file mode 100644 index 0000000000000..b7644d8f2b52f --- /dev/null +++ b/src/wp-includes/icons/library/trending-up.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/typography.svg b/src/wp-includes/icons/library/typography.svg new file mode 100644 index 0000000000000..c81ee1fad6551 --- /dev/null +++ b/src/wp-includes/icons/library/typography.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/undo.svg b/src/wp-includes/icons/library/undo.svg new file mode 100644 index 0000000000000..2a66cab0267f1 --- /dev/null +++ b/src/wp-includes/icons/library/undo.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/ungroup.svg b/src/wp-includes/icons/library/ungroup.svg new file mode 100644 index 0000000000000..9e8339598f228 --- /dev/null +++ b/src/wp-includes/icons/library/ungroup.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/unlock.svg b/src/wp-includes/icons/library/unlock.svg new file mode 100644 index 0000000000000..59785ed29f86d --- /dev/null +++ b/src/wp-includes/icons/library/unlock.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/unseen.svg b/src/wp-includes/icons/library/unseen.svg new file mode 100644 index 0000000000000..661725a3048de --- /dev/null +++ b/src/wp-includes/icons/library/unseen.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/update.svg b/src/wp-includes/icons/library/update.svg new file mode 100644 index 0000000000000..e69e11c4e2a1f --- /dev/null +++ b/src/wp-includes/icons/library/update.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/upload.svg b/src/wp-includes/icons/library/upload.svg new file mode 100644 index 0000000000000..27578edddddc3 --- /dev/null +++ b/src/wp-includes/icons/library/upload.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/verse.svg b/src/wp-includes/icons/library/verse.svg new file mode 100644 index 0000000000000..3ad231a950a52 --- /dev/null +++ b/src/wp-includes/icons/library/verse.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/video.svg b/src/wp-includes/icons/library/video.svg new file mode 100644 index 0000000000000..4b80f689b0efb --- /dev/null +++ b/src/wp-includes/icons/library/video.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/widget.svg b/src/wp-includes/icons/library/widget.svg new file mode 100644 index 0000000000000..987e201641fef --- /dev/null +++ b/src/wp-includes/icons/library/widget.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/word-count.svg b/src/wp-includes/icons/library/word-count.svg new file mode 100644 index 0000000000000..0d1dfd33f82c8 --- /dev/null +++ b/src/wp-includes/icons/library/word-count.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/library/wordpress.svg b/src/wp-includes/icons/library/wordpress.svg new file mode 100644 index 0000000000000..56be7255c7482 --- /dev/null +++ b/src/wp-includes/icons/library/wordpress.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/wp-includes/icons/manifest.php b/src/wp-includes/icons/manifest.php new file mode 100644 index 0000000000000..b15ff4b5fd9f0 --- /dev/null +++ b/src/wp-includes/icons/manifest.php @@ -0,0 +1,360 @@ + array( + 'label' => _x( 'Arrow Down Left', 'icon label' ), + 'filePath' => 'library/arrow-down-left.svg', + ), + 'arrow-down-right' => array( + 'label' => _x( 'Arrow Down Right', 'icon label' ), + 'filePath' => 'library/arrow-down-right.svg', + ), + 'arrow-down' => array( + 'label' => _x( 'Arrow Down', 'icon label' ), + 'filePath' => 'library/arrow-down.svg', + ), + 'arrow-left' => array( + 'label' => _x( 'Arrow Left', 'icon label' ), + 'filePath' => 'library/arrow-left.svg', + ), + 'arrow-right' => array( + 'label' => _x( 'Arrow Right', 'icon label' ), + 'filePath' => 'library/arrow-right.svg', + ), + 'arrow-up-left' => array( + 'label' => _x( 'Arrow Up Left', 'icon label' ), + 'filePath' => 'library/arrow-up-left.svg', + ), + 'arrow-up-right' => array( + 'label' => _x( 'Arrow Up Right', 'icon label' ), + 'filePath' => 'library/arrow-up-right.svg', + ), + 'arrow-up' => array( + 'label' => _x( 'Arrow Up', 'icon label' ), + 'filePath' => 'library/arrow-up.svg', + ), + 'at-symbol' => array( + 'label' => _x( 'At Symbol (@)', 'icon label' ), + 'filePath' => 'library/at-symbol.svg', + ), + 'audio' => array( + 'label' => _x( 'Audio', 'icon label' ), + 'filePath' => 'library/audio.svg', + ), + 'bell' => array( + 'label' => _x( 'Bell', 'icon label' ), + 'filePath' => 'library/bell.svg', + ), + 'block-default' => array( + 'label' => _x( 'Block Default', 'icon label' ), + 'filePath' => 'library/block-default.svg', + ), + 'block-meta' => array( + 'label' => _x( 'Block Meta', 'icon label' ), + 'filePath' => 'library/block-meta.svg', + ), + 'block-table' => array( + 'label' => _x( 'Block Table', 'icon label' ), + 'filePath' => 'library/block-table.svg', + ), + 'calendar' => array( + 'label' => _x( 'Calendar', 'icon label' ), + 'filePath' => 'library/calendar.svg', + ), + 'capture-photo' => array( + 'label' => _x( 'Capture Photo', 'icon label' ), + 'filePath' => 'library/capture-photo.svg', + ), + 'capture-video' => array( + 'label' => _x( 'Capture Video', 'icon label' ), + 'filePath' => 'library/capture-video.svg', + ), + 'cart' => array( + 'label' => _x( 'Cart', 'icon label' ), + 'filePath' => 'library/cart.svg', + ), + 'category' => array( + 'label' => _x( 'Category', 'icon label' ), + 'filePath' => 'library/category.svg', + ), + 'caution' => array( + 'label' => _x( 'Caution', 'icon label' ), + 'filePath' => 'library/caution.svg', + ), + 'chart-bar' => array( + 'label' => _x( 'Chart Bar', 'icon label' ), + 'filePath' => 'library/chart-bar.svg', + ), + 'check' => array( + 'label' => _x( 'Check', 'icon label' ), + 'filePath' => 'library/check.svg', + ), + 'chevron-down' => array( + 'label' => _x( 'Chevron Down', 'icon label' ), + 'filePath' => 'library/chevron-down.svg', + ), + 'chevron-down-small' => array( + 'label' => _x( 'Chevron Down Small', 'icon label' ), + 'filePath' => 'library/chevron-down-small.svg', + ), + 'chevron-left' => array( + 'label' => _x( 'Chevron Left', 'icon label' ), + 'filePath' => 'library/chevron-left.svg', + ), + 'chevron-left-small' => array( + 'label' => _x( 'Chevron Left Small', 'icon label' ), + 'filePath' => 'library/chevron-left-small.svg', + ), + 'chevron-right' => array( + 'label' => _x( 'Chevron Right', 'icon label' ), + 'filePath' => 'library/chevron-right.svg', + ), + 'chevron-right-small' => array( + 'label' => _x( 'Chevron Right Small', 'icon label' ), + 'filePath' => 'library/chevron-right-small.svg', + ), + 'chevron-up' => array( + 'label' => _x( 'Chevron Up', 'icon label' ), + 'filePath' => 'library/chevron-up.svg', + ), + 'chevron-up-down' => array( + 'label' => _x( 'Chevron Up Down', 'icon label' ), + 'filePath' => 'library/chevron-up-down.svg', + ), + 'chevron-up-small' => array( + 'label' => _x( 'Chevron Up Small', 'icon label' ), + 'filePath' => 'library/chevron-up-small.svg', + ), + 'comment' => array( + 'label' => _x( 'Comment', 'icon label' ), + 'filePath' => 'library/comment.svg', + ), + 'cover' => array( + 'label' => _x( 'Cover', 'icon label' ), + 'filePath' => 'library/cover.svg', + ), + 'create' => array( + 'label' => _x( 'Create', 'icon label' ), + 'filePath' => 'library/create.svg', + ), + 'desktop' => array( + 'label' => _x( 'Desktop', 'icon label' ), + 'filePath' => 'library/desktop.svg', + ), + 'download' => array( + 'label' => _x( 'Download', 'icon label' ), + 'filePath' => 'library/download.svg', + ), + 'drawer-left' => array( + 'label' => _x( 'Drawer Left', 'icon label' ), + 'filePath' => 'library/drawer-left.svg', + ), + 'drawer-right' => array( + 'label' => _x( 'Drawer Right', 'icon label' ), + 'filePath' => 'library/drawer-right.svg', + ), + 'envelope' => array( + 'label' => _x( 'Envelope', 'icon label' ), + 'filePath' => 'library/envelope.svg', + ), + 'error' => array( + 'label' => _x( 'Error', 'icon label' ), + 'filePath' => 'library/error.svg', + ), + 'external' => array( + 'label' => _x( 'External', 'icon label' ), + 'filePath' => 'library/external.svg', + ), + 'file' => array( + 'label' => _x( 'File', 'icon label' ), + 'filePath' => 'library/file.svg', + ), + 'gallery' => array( + 'label' => _x( 'Gallery', 'icon label' ), + 'filePath' => 'library/gallery.svg', + ), + 'group' => array( + 'label' => _x( 'Group', 'icon label' ), + 'filePath' => 'library/group.svg', + ), + 'heading' => array( + 'label' => _x( 'Heading', 'icon label' ), + 'filePath' => 'library/heading.svg', + ), + 'help' => array( + 'label' => _x( 'Help', 'icon label' ), + 'filePath' => 'library/help.svg', + ), + 'home' => array( + 'label' => _x( 'Home', 'icon label' ), + 'filePath' => 'library/home.svg', + ), + 'image' => array( + 'label' => _x( 'Image', 'icon label' ), + 'filePath' => 'library/image.svg', + ), + 'info' => array( + 'label' => _x( 'Info', 'icon label' ), + 'filePath' => 'library/info.svg', + ), + 'key' => array( + 'label' => _x( 'Key', 'icon label' ), + 'filePath' => 'library/key.svg', + ), + 'language' => array( + 'label' => _x( 'Language', 'icon label' ), + 'filePath' => 'library/language.svg', + ), + 'map-marker' => array( + 'label' => _x( 'Map Marker', 'icon label' ), + 'filePath' => 'library/map-marker.svg', + ), + 'menu' => array( + 'label' => _x( 'Menu', 'icon label' ), + 'filePath' => 'library/menu.svg', + ), + 'mobile' => array( + 'label' => _x( 'Mobile', 'icon label' ), + 'filePath' => 'library/mobile.svg', + ), + 'more-horizontal' => array( + 'label' => _x( 'More Horizontal', 'icon label' ), + 'filePath' => 'library/more-horizontal.svg', + ), + 'more-vertical' => array( + 'label' => _x( 'More Vertical', 'icon label' ), + 'filePath' => 'library/more-vertical.svg', + ), + 'next' => array( + 'label' => _x( 'Next', 'icon label' ), + 'filePath' => 'library/next.svg', + ), + 'paragraph' => array( + 'label' => _x( 'Paragraph', 'icon label' ), + 'filePath' => 'library/paragraph.svg', + ), + 'payment' => array( + 'label' => _x( 'Payment', 'icon label' ), + 'filePath' => 'library/payment.svg', + ), + 'pencil' => array( + 'label' => _x( 'Pencil', 'icon label' ), + 'filePath' => 'library/pencil.svg', + ), + 'people' => array( + 'label' => _x( 'People', 'icon label' ), + 'filePath' => 'library/people.svg', + ), + 'plus' => array( + 'label' => _x( 'Plus', 'icon label' ), + 'filePath' => 'library/plus.svg', + ), + 'plus-circle' => array( + 'label' => _x( 'Plus Circle', 'icon label' ), + 'filePath' => 'library/plus-circle.svg', + ), + 'previous' => array( + 'label' => _x( 'Previous', 'icon label' ), + 'filePath' => 'library/previous.svg', + ), + 'published' => array( + 'label' => _x( 'Published', 'icon label' ), + 'filePath' => 'library/published.svg', + ), + 'quote' => array( + 'label' => _x( 'Quote', 'icon label' ), + 'filePath' => 'library/quote.svg', + ), + 'receipt' => array( + 'label' => _x( 'Receipt', 'icon label' ), + 'filePath' => 'library/receipt.svg', + ), + 'rss' => array( + 'label' => _x( 'RSS', 'icon label' ), + 'filePath' => 'library/rss.svg', + ), + 'scheduled' => array( + 'label' => _x( 'Scheduled', 'icon label' ), + 'filePath' => 'library/scheduled.svg', + ), + 'search' => array( + 'label' => _x( 'Search', 'icon label' ), + 'filePath' => 'library/search.svg', + ), + 'settings' => array( + 'label' => _x( 'Settings', 'icon label' ), + 'filePath' => 'library/settings.svg', + ), + 'shadow' => array( + 'label' => _x( 'Shadow', 'icon label' ), + 'filePath' => 'library/shadow.svg', + ), + 'share' => array( + 'label' => _x( 'Share', 'icon label' ), + 'filePath' => 'library/share.svg', + ), + 'shield' => array( + 'label' => _x( 'Shield', 'icon label' ), + 'filePath' => 'library/shield.svg', + ), + 'shuffle' => array( + 'label' => _x( 'Shuffle', 'icon label' ), + 'filePath' => 'library/shuffle.svg', + ), + 'star-empty' => array( + 'label' => _x( 'Star Empty', 'icon label' ), + 'filePath' => 'library/star-empty.svg', + ), + 'star-filled' => array( + 'label' => _x( 'Star Filled', 'icon label' ), + 'filePath' => 'library/star-filled.svg', + ), + 'star-half' => array( + 'label' => _x( 'Star Half', 'icon label' ), + 'filePath' => 'library/star-half.svg', + ), + 'store' => array( + 'label' => _x( 'Store', 'icon label' ), + 'filePath' => 'library/store.svg', + ), + 'styles' => array( + 'label' => _x( 'Styles', 'icon label' ), + 'filePath' => 'library/styles.svg', + ), + 'symbol' => array( + 'label' => _x( 'Symbol', 'icon label' ), + 'filePath' => 'library/symbol.svg', + ), + 'symbol-filled' => array( + 'label' => _x( 'Symbol Filled', 'icon label' ), + 'filePath' => 'library/symbol-filled.svg', + ), + 'table' => array( + 'label' => _x( 'Table', 'icon label' ), + 'filePath' => 'library/table.svg', + ), + 'tablet' => array( + 'label' => _x( 'Tablet', 'icon label' ), + 'filePath' => 'library/tablet.svg', + ), + 'tag' => array( + 'label' => _x( 'Tag', 'icon label' ), + 'filePath' => 'library/tag.svg', + ), + 'tip' => array( + 'label' => _x( 'Tip', 'icon label' ), + 'filePath' => 'library/tip.svg', + ), + 'upload' => array( + 'label' => _x( 'Upload', 'icon label' ), + 'filePath' => 'library/upload.svg', + ), + 'verse' => array( + 'label' => _x( 'Verse', 'icon label' ), + 'filePath' => 'library/verse.svg', + ), +); diff --git a/src/wp-includes/rest-api.php b/src/wp-includes/rest-api.php index 5548ecf5c6f45..694cfe5d2fc6b 100644 --- a/src/wp-includes/rest-api.php +++ b/src/wp-includes/rest-api.php @@ -428,6 +428,17 @@ function create_initial_rest_routes() { // Icons. $icons_controller = new WP_REST_Icons_Controller(); $icons_controller->register_routes(); + + // View Config. + $view_config_controller = new WP_REST_View_Config_Controller(); + $view_config_controller->register_routes(); + + // Collaboration. + if ( get_option( 'wp_enable_real_time_collaboration' ) ) { + $sync_storage = new WP_Sync_Post_Meta_Storage(); + $sync_server = new WP_HTTP_Polling_Sync_Server( $sync_storage ); + $sync_server->register_routes(); + } } /** diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php new file mode 100644 index 0000000000000..705a927946098 --- /dev/null +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php @@ -0,0 +1,395 @@ +namespace = 'wp/v2'; + $this->rest_base = 'view-config'; + } + + /** + * Registers the routes for the controller. + */ + public function register_routes() { + register_rest_route( + $this->namespace, + '/' . $this->rest_base, + array( + array( + 'methods' => WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_items' ), + 'permission_callback' => array( $this, 'get_items_permissions_check' ), + 'args' => array( + 'kind' => array( + 'description' => __( 'Entity kind.' ), + 'type' => 'string', + 'required' => true, + ), + 'name' => array( + 'description' => __( 'Entity name.' ), + 'type' => 'string', + 'required' => true, + ), + ), + ), + 'schema' => array( $this, 'get_public_item_schema' ), + ) + ); + } + + /** + * Checks if a given request has access to read view config. + * + * @since 7.1.0 + * + * @param WP_REST_Request $request Full details about the request. + * @return true|WP_Error True if the request has read access, WP_Error object otherwise. + */ + public function get_items_permissions_check( $request ) { + if ( ! current_user_can( 'edit_posts' ) ) { + return new WP_Error( + 'rest_cannot_read', + __( 'Sorry, you are not allowed to read view config.' ), + array( 'status' => rest_authorization_required_code() ) + ); + } + + return true; + } + + /** + * Returns the default view configuration for the given entity type. + * + * @since 7.1.0 + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. + */ + public function get_items( $request ) { + $kind = $request->get_param( 'kind' ); + $name = $request->get_param( 'name' ); + + // TODO: this data will come from a registry of view configs per entity. + $default_view = array( + 'type' => 'table', + 'filters' => array(), + 'perPage' => 20, + 'sort' => array( + 'field' => 'title', + 'direction' => 'asc', + ), + 'titleField' => 'title', + 'fields' => array( 'author', 'status' ), + ); + $default_layouts = array( + 'table' => array(), + 'grid' => array(), + 'list' => array(), + ); + $all_items_title = __( 'All items' ); + if ( 'postType' === $kind ) { + $post_type_object = get_post_type_object( $name ); + if ( $post_type_object && ! empty( $post_type_object->labels->all_items ) ) { + $all_items_title = $post_type_object->labels->all_items; + } + } + $view_list = array( + array( + 'title' => $all_items_title, + 'slug' => 'all', + ), + ); + if ( 'postType' === $kind && 'page' === $name ) { + $default_view = array( + 'type' => 'list', + 'filters' => array(), + 'perPage' => 20, + 'sort' => array( + 'field' => 'title', + 'direction' => 'asc', + ), + 'showLevels' => true, + 'titleField' => 'title', + 'mediaField' => 'featured_media', + 'fields' => array( 'author', 'status' ), + ); + $default_layouts = array( + 'table' => array( + 'layout' => array( + 'styles' => array( + 'author' => array( + 'align' => 'start', + ), + ), + ), + ), + 'grid' => array(), + 'list' => array(), + ); + $view_list = array( + array( + 'title' => $all_items_title, + 'slug' => 'all', + ), + array( + 'title' => __( 'Published' ), + 'slug' => 'published', + 'view' => array( + 'filters' => array( + array( + 'field' => 'status', + 'operator' => 'isAny', + 'value' => 'publish', + 'isLocked' => true, + ), + ), + ), + ), + array( + 'title' => __( 'Scheduled' ), + 'slug' => 'future', + 'view' => array( + 'filters' => array( + array( + 'field' => 'status', + 'operator' => 'isAny', + 'value' => 'future', + 'isLocked' => true, + ), + ), + ), + ), + array( + 'title' => __( 'Drafts' ), + 'slug' => 'drafts', + 'view' => array( + 'filters' => array( + array( + 'field' => 'status', + 'operator' => 'isAny', + 'value' => 'draft', + 'isLocked' => true, + ), + ), + ), + ), + array( + 'title' => __( 'Pending' ), + 'slug' => 'pending', + 'view' => array( + 'filters' => array( + array( + 'field' => 'status', + 'operator' => 'isAny', + 'value' => 'pending', + 'isLocked' => true, + ), + ), + ), + ), + array( + 'title' => __( 'Private' ), + 'slug' => 'private', + 'view' => array( + 'filters' => array( + array( + 'field' => 'status', + 'operator' => 'isAny', + 'value' => 'private', + 'isLocked' => true, + ), + ), + ), + ), + array( + 'title' => __( 'Trash' ), + 'slug' => 'trash', + 'view' => array( + 'type' => 'table', + 'layout' => isset( $default_layouts['table']['layout'] ) ? $default_layouts['table']['layout'] : array(), + 'filters' => array( + array( + 'field' => 'status', + 'operator' => 'isAny', + 'value' => 'trash', + 'isLocked' => true, + ), + ), + ), + ), + ); + } + + $response = array( + 'kind' => $kind, + 'name' => $name, + 'default_view' => $default_view, + 'default_layouts' => $default_layouts, + 'view_list' => $view_list, + ); + + return rest_ensure_response( $response ); + } + + /** + * Retrieves the item's schema, conforming to JSON Schema. + * + * @since 7.1.0 + * + * @return array Item schema data. + */ + public function get_item_schema() { + if ( $this->schema ) { + return $this->add_additional_fields_schema( $this->schema ); + } + + $this->schema = array( + '$schema' => 'http://json-schema.org/draft-04/schema#', + 'title' => 'view-config', + 'type' => 'object', + 'properties' => array( + 'kind' => array( + 'description' => __( 'Entity kind.' ), + 'type' => 'string', + 'readonly' => true, + ), + 'name' => array( + 'description' => __( 'Entity name.' ), + 'type' => 'string', + 'readonly' => true, + ), + 'default_view' => array( + 'description' => __( 'Default view configuration.' ), + 'type' => 'object', + 'readonly' => true, + 'properties' => array( + 'type' => array( + 'type' => 'string', + ), + 'search' => array( + 'type' => 'string', + ), + 'filters' => array( + 'type' => 'array', + 'items' => array( + 'type' => 'object', + ), + ), + 'sort' => array( + 'type' => 'object', + 'properties' => array( + 'field' => array( + 'type' => 'string', + ), + 'direction' => array( + 'type' => 'string', + 'enum' => array( 'asc', 'desc' ), + ), + ), + ), + 'page' => array( + 'type' => 'integer', + ), + 'perPage' => array( + 'type' => 'integer', + ), + 'fields' => array( + 'type' => 'array', + 'items' => array( + 'type' => 'string', + ), + ), + 'titleField' => array( + 'type' => 'string', + ), + 'mediaField' => array( + 'type' => 'string', + ), + 'descriptionField' => array( + 'type' => 'string', + ), + 'showTitle' => array( + 'type' => 'boolean', + ), + 'showMedia' => array( + 'type' => 'boolean', + ), + 'showDescription' => array( + 'type' => 'boolean', + ), + 'showLevels' => array( + 'type' => 'boolean', + ), + 'groupBy' => array( + 'type' => 'object', + 'properties' => array( + 'field' => array( + 'type' => 'string', + ), + 'direction' => array( + 'type' => 'string', + 'enum' => array( 'asc', 'desc' ), + ), + 'showLabel' => array( + 'type' => 'boolean', + 'default' => true, + ), + ), + ), + 'infiniteScrollEnabled' => array( + 'type' => 'boolean', + ), + ), + ), + 'default_layouts' => array( + 'description' => __( 'Default layout configurations.' ), + 'type' => 'object', + 'readonly' => true, + 'additionalProperties' => array( + 'type' => 'object', + ), + ), + 'view_list' => array( + 'description' => __( 'List of default views.' ), + 'type' => 'array', + 'readonly' => true, + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'title' => array( + 'type' => 'string', + ), + 'slug' => array( + 'type' => 'string', + ), + 'view' => array( + 'type' => 'object', + ), + ), + ), + ), + ), + ); + + return $this->add_additional_fields_schema( $this->schema ); + } +} diff --git a/src/wp-settings.php b/src/wp-settings.php index 0935e2762619c..b4dbb7716e06b 100644 --- a/src/wp-settings.php +++ b/src/wp-settings.php @@ -356,6 +356,7 @@ require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-font-faces-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-font-collections-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-icons-controller.php'; +require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-view-config-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-abilities-v1-categories-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-abilities-v1-run-controller.php'; From ee3b316afb665c16d7fcb60b54ed121025038cca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Maneiro?= <583546+oandregal@users.noreply.github.com> Date: Wed, 25 Mar 2026 10:53:07 +0100 Subject: [PATCH 2/6] Backport https://github.com/WordPress/gutenberg/pull/76734 and https://github.com/WordPress/gutenberg/pull/76622 --- .../class-wp-rest-view-config-controller.php | 948 ++++++++++++++---- 1 file changed, 757 insertions(+), 191 deletions(-) diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php index 705a927946098..7c95bb4855839 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php @@ -119,124 +119,19 @@ public function get_items( $request ) { ), ); if ( 'postType' === $kind && 'page' === $name ) { - $default_view = array( - 'type' => 'list', - 'filters' => array(), - 'perPage' => 20, - 'sort' => array( - 'field' => 'title', - 'direction' => 'asc', - ), - 'showLevels' => true, - 'titleField' => 'title', - 'mediaField' => 'featured_media', - 'fields' => array( 'author', 'status' ), - ); - $default_layouts = array( - 'table' => array( - 'layout' => array( - 'styles' => array( - 'author' => array( - 'align' => 'start', - ), - ), - ), - ), - 'grid' => array(), - 'list' => array(), - ); - $view_list = array( - array( - 'title' => $all_items_title, - 'slug' => 'all', - ), - array( - 'title' => __( 'Published' ), - 'slug' => 'published', - 'view' => array( - 'filters' => array( - array( - 'field' => 'status', - 'operator' => 'isAny', - 'value' => 'publish', - 'isLocked' => true, - ), - ), - ), - ), - array( - 'title' => __( 'Scheduled' ), - 'slug' => 'future', - 'view' => array( - 'filters' => array( - array( - 'field' => 'status', - 'operator' => 'isAny', - 'value' => 'future', - 'isLocked' => true, - ), - ), - ), - ), - array( - 'title' => __( 'Drafts' ), - 'slug' => 'drafts', - 'view' => array( - 'filters' => array( - array( - 'field' => 'status', - 'operator' => 'isAny', - 'value' => 'draft', - 'isLocked' => true, - ), - ), - ), - ), - array( - 'title' => __( 'Pending' ), - 'slug' => 'pending', - 'view' => array( - 'filters' => array( - array( - 'field' => 'status', - 'operator' => 'isAny', - 'value' => 'pending', - 'isLocked' => true, - ), - ), - ), - ), - array( - 'title' => __( 'Private' ), - 'slug' => 'private', - 'view' => array( - 'filters' => array( - array( - 'field' => 'status', - 'operator' => 'isAny', - 'value' => 'private', - 'isLocked' => true, - ), - ), - ), - ), - array( - 'title' => __( 'Trash' ), - 'slug' => 'trash', - 'view' => array( - 'type' => 'table', - 'layout' => isset( $default_layouts['table']['layout'] ) ? $default_layouts['table']['layout'] : array(), - 'filters' => array( - array( - 'field' => 'status', - 'operator' => 'isAny', - 'value' => 'trash', - 'isLocked' => true, - ), - ), - ), - ), - ); + $default_layouts = $this->get_default_layouts_for_page(); + $default_view = $this->get_default_view_for_page(); + $view_list = $this->get_view_list_for_page( $all_items_title, $default_layouts ); + } elseif ( 'postType' === $kind && 'wp_block' === $name ) { + $default_layouts = $this->get_default_layouts_for_wp_block(); + $default_view = $this->get_default_view_for_wp_block( $default_layouts ); + } elseif ( 'postType' === $kind && 'wp_template_part' === $name ) { + $default_layouts = $this->get_default_layouts_for_wp_template_part(); + $default_view = $this->get_default_view_for_wp_template_part( $default_layouts ); + } elseif ( 'postType' === $kind && 'wp_template' === $name ) { + $default_view = $this->get_default_view_for_wp_template(); + $default_layouts = $this->get_default_layouts_for_wp_template(); + $view_list = $this->get_view_list_for_wp_template(); } $response = array( @@ -262,6 +157,8 @@ public function get_item_schema() { return $this->add_additional_fields_schema( $this->schema ); } + $view_base_properties = $this->get_view_base_schema(); + $this->schema = array( '$schema' => 'http://json-schema.org/draft-04/schema#', 'title' => 'view-config', @@ -281,93 +178,76 @@ public function get_item_schema() { 'description' => __( 'Default view configuration.' ), 'type' => 'object', 'readonly' => true, - 'properties' => array( - 'type' => array( - 'type' => 'string', - ), - 'search' => array( - 'type' => 'string', - ), - 'filters' => array( - 'type' => 'array', - 'items' => array( - 'type' => 'object', + 'properties' => array_merge( + array( + 'type' => array( + 'type' => 'string', ), ), - 'sort' => array( + $view_base_properties + ), + ), + 'default_layouts' => array( + 'description' => __( 'Default layout configurations.' ), + 'type' => 'object', + 'readonly' => true, + 'properties' => array( + 'table' => array( 'type' => 'object', - 'properties' => array( - 'field' => array( - 'type' => 'string', - ), - 'direction' => array( - 'type' => 'string', - 'enum' => array( 'asc', 'desc' ), - ), + 'properties' => array_merge( + $view_base_properties, + array( + 'layout' => $this->get_table_layout_schema(), + ) ), ), - 'page' => array( - 'type' => 'integer', - ), - 'perPage' => array( - 'type' => 'integer', - ), - 'fields' => array( - 'type' => 'array', - 'items' => array( - 'type' => 'string', + 'list' => array( + 'type' => 'object', + 'properties' => array_merge( + $view_base_properties, + array( + 'layout' => $this->get_list_layout_schema(), + ) ), ), - 'titleField' => array( - 'type' => 'string', - ), - 'mediaField' => array( - 'type' => 'string', - ), - 'descriptionField' => array( - 'type' => 'string', - ), - 'showTitle' => array( - 'type' => 'boolean', - ), - 'showMedia' => array( - 'type' => 'boolean', - ), - 'showDescription' => array( - 'type' => 'boolean', + 'grid' => array( + 'type' => 'object', + 'properties' => array_merge( + $view_base_properties, + array( + 'layout' => $this->get_grid_layout_schema(), + ) + ), ), - 'showLevels' => array( - 'type' => 'boolean', + 'activity' => array( + 'type' => 'object', + 'properties' => array_merge( + $view_base_properties, + array( + 'layout' => $this->get_list_layout_schema(), + ) + ), ), - 'groupBy' => array( + 'pickerGrid' => array( 'type' => 'object', - 'properties' => array( - 'field' => array( - 'type' => 'string', - ), - 'direction' => array( - 'type' => 'string', - 'enum' => array( 'asc', 'desc' ), - ), - 'showLabel' => array( - 'type' => 'boolean', - 'default' => true, - ), + 'properties' => array_merge( + $view_base_properties, + array( + 'layout' => $this->get_grid_layout_schema(), + ) ), ), - 'infiniteScrollEnabled' => array( - 'type' => 'boolean', + 'pickerTable' => array( + 'type' => 'object', + 'properties' => array_merge( + $view_base_properties, + array( + 'layout' => $this->get_table_layout_schema(), + ) + ), ), ), ), - 'default_layouts' => array( - 'description' => __( 'Default layout configurations.' ), - 'type' => 'object', - 'readonly' => true, - 'additionalProperties' => array( - 'type' => 'object', - ), - ), 'view_list' => array( 'description' => __( 'List of default views.' ), 'type' => 'array', @@ -382,7 +262,16 @@ public function get_item_schema() { 'type' => 'string', ), 'view' => array( - 'type' => 'object', + 'type' => 'object', + 'properties' => array_merge( + array( + 'type' => array( + 'type' => 'string', + ), + 'layout' => $this->get_combined_layout_schema(), + ), + $view_base_properties + ), ), ), ), @@ -392,4 +281,681 @@ public function get_item_schema() { return $this->add_additional_fields_schema( $this->schema ); } + + /** + * Returns the schema properties shared by all view types (ViewBase), excluding 'type'. + * + * @since 7.1.0 + * + * @return array Schema properties for the base view configuration. + */ + private function get_view_base_schema() { + return array( + 'search' => array( + 'type' => 'string', + ), + 'filters' => array( + 'type' => 'array', + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'field' => array( + 'type' => 'string', + ), + 'operator' => array( + 'type' => 'string', + 'enum' => array( + 'is', + 'isNot', + 'isAny', + 'isNone', + 'isAll', + 'isNotAll', + 'lessThan', + 'greaterThan', + 'lessThanOrEqual', + 'greaterThanOrEqual', + 'before', + 'after', + ), + ), + 'value' => array(), + 'isLocked' => array( + 'type' => 'boolean', + ), + ), + ), + ), + 'sort' => array( + 'type' => 'object', + 'properties' => array( + 'field' => array( + 'type' => 'string', + ), + 'direction' => array( + 'type' => 'string', + 'enum' => array( 'asc', 'desc' ), + ), + ), + ), + 'page' => array( + 'type' => 'integer', + ), + 'perPage' => array( + 'type' => 'integer', + ), + 'fields' => array( + 'type' => 'array', + 'items' => array( + 'type' => 'string', + ), + ), + 'titleField' => array( + 'type' => 'string', + ), + 'mediaField' => array( + 'type' => 'string', + ), + 'descriptionField' => array( + 'type' => 'string', + ), + 'showTitle' => array( + 'type' => 'boolean', + ), + 'showMedia' => array( + 'type' => 'boolean', + ), + 'showDescription' => array( + 'type' => 'boolean', + ), + 'showLevels' => array( + 'type' => 'boolean', + ), + 'groupBy' => array( + 'type' => 'object', + 'properties' => array( + 'field' => array( + 'type' => 'string', + ), + 'direction' => array( + 'type' => 'string', + 'enum' => array( 'asc', 'desc' ), + ), + 'showLabel' => array( + 'type' => 'boolean', + 'default' => true, + ), + ), + ), + 'infiniteScrollEnabled' => array( + 'type' => 'boolean', + ), + ); + } + + /** + * Returns the schema for the ColumnStyle type. + * + * @since 7.1.0 + * + * @return array Schema for a column style object. + */ + private function get_column_style_schema() { + return array( + 'type' => 'object', + 'properties' => array( + 'width' => array( + 'type' => array( 'string', 'number' ), + ), + 'maxWidth' => array( + 'type' => array( 'string', 'number' ), + ), + 'minWidth' => array( + 'type' => array( 'string', 'number' ), + ), + 'align' => array( + 'type' => 'string', + 'enum' => array( 'start', 'center', 'end' ), + ), + ), + ); + } + + /** + * Returns the layout schema for table-type views (ViewTable, ViewPickerTable). + * + * @since 7.1.0 + * + * @return array Schema for a table layout object. + */ + private function get_table_layout_schema() { + return array( + 'type' => 'object', + 'properties' => array( + 'styles' => array( + 'type' => 'object', + 'additionalProperties' => $this->get_column_style_schema(), + ), + 'density' => array( + 'type' => 'string', + 'enum' => array( 'compact', 'balanced', 'comfortable' ), + ), + 'enableMoving' => array( + 'type' => 'boolean', + ), + ), + ); + } + + /** + * Returns the layout schema for list-type views (ViewList, ViewActivity). + * + * @since 7.1.0 + * + * @return array Schema for a list layout object. + */ + private function get_list_layout_schema() { + return array( + 'type' => 'object', + 'properties' => array( + 'density' => array( + 'type' => 'string', + 'enum' => array( 'compact', 'balanced', 'comfortable' ), + ), + ), + ); + } + + /** + * Returns a combined layout schema that accepts properties from all view types. + * + * This is useful for contexts where the view type is not known ahead of time + * (e.g. the `view` override in a view list item), so all possible layout + * properties must be accepted. + * + * @since 7.1.0 + * + * @return array Schema for a combined layout object. + */ + private function get_combined_layout_schema() { + return array( + 'type' => 'object', + 'properties' => array_merge( + $this->get_table_layout_schema()['properties'], + $this->get_grid_layout_schema()['properties'] + ), + ); + } + + /** + * Returns the layout schema for grid-type views (ViewGrid, ViewPickerGrid). + * + * @since 7.1.0 + * + * @return array Schema for a grid layout object. + */ + private function get_grid_layout_schema() { + return array( + 'type' => 'object', + 'properties' => array( + 'badgeFields' => array( + 'type' => 'array', + 'items' => array( + 'type' => 'string', + ), + ), + 'previewSize' => array( + 'type' => 'number', + ), + 'density' => array( + 'type' => 'string', + 'enum' => array( 'compact', 'balanced', 'comfortable' ), + ), + ), + ); + } + + /** + * Returns the default view configuration for the page post type. + * + * @since 7.1.0 + * + * @return array Default view configuration. + */ + private function get_default_view_for_page() { + return array( + 'type' => 'list', + 'filters' => array(), + 'perPage' => 20, + 'sort' => array( + 'field' => 'title', + 'direction' => 'asc', + ), + 'showLevels' => true, + 'titleField' => 'title', + 'mediaField' => 'featured_media', + 'fields' => array( 'author', 'status' ), + ); + } + + /** + * Returns the default layout configurations for the page post type. + * + * @since 7.1.0 + * + * @return array Default layout configurations. + */ + private function get_default_layouts_for_page() { + return array( + 'table' => array( + 'layout' => array( + 'styles' => array( + 'author' => array( + 'align' => 'start', + ), + ), + ), + ), + 'grid' => array(), + 'list' => array(), + ); + } + + /** + * Returns the view list for the page post type. + * + * @since 7.1.0 + * + * @param string $all_items_title The title for the "All items" view. + * @param array $default_layouts The default layout configurations. + * @return array View list. + */ + private function get_view_list_for_page( $all_items_title, $default_layouts ) { + return array( + array( + 'title' => $all_items_title, + 'slug' => 'all', + ), + array( + 'title' => __( 'Published' ), + 'slug' => 'published', + 'view' => array( + 'filters' => array( + array( + 'field' => 'status', + 'operator' => 'isAny', + 'value' => 'publish', + 'isLocked' => true, + ), + ), + ), + ), + array( + 'title' => __( 'Scheduled' ), + 'slug' => 'future', + 'view' => array( + 'filters' => array( + array( + 'field' => 'status', + 'operator' => 'isAny', + 'value' => 'future', + 'isLocked' => true, + ), + ), + ), + ), + array( + 'title' => __( 'Drafts' ), + 'slug' => 'drafts', + 'view' => array( + 'filters' => array( + array( + 'field' => 'status', + 'operator' => 'isAny', + 'value' => 'draft', + 'isLocked' => true, + ), + ), + ), + ), + array( + 'title' => __( 'Pending' ), + 'slug' => 'pending', + 'view' => array( + 'filters' => array( + array( + 'field' => 'status', + 'operator' => 'isAny', + 'value' => 'pending', + 'isLocked' => true, + ), + ), + ), + ), + array( + 'title' => __( 'Private' ), + 'slug' => 'private', + 'view' => array( + 'filters' => array( + array( + 'field' => 'status', + 'operator' => 'isAny', + 'value' => 'private', + 'isLocked' => true, + ), + ), + ), + ), + array( + 'title' => __( 'Trash' ), + 'slug' => 'trash', + 'view' => array( + 'type' => 'table', + 'layout' => $default_layouts['table']['layout'], + 'filters' => array( + array( + 'field' => 'status', + 'operator' => 'isAny', + 'value' => 'trash', + 'isLocked' => true, + ), + ), + ), + ), + ); + } + + /** + * Returns the default layout configurations for the wp_block post type. + * + * @since 7.1.0 + * + * @return array Default layout configurations. + */ + private function get_default_layouts_for_wp_block() { + return array( + 'table' => array( + 'layout' => array( + 'styles' => array( + 'author' => array( + 'width' => '1%', + ), + ), + ), + ), + 'grid' => array( + 'layout' => array( + 'badgeFields' => array( 'sync-status' ), + ), + ), + ); + } + + /** + * Returns the default view configuration for the wp_block post type. + * + * @since 7.1.0 + * + * @param array $default_layouts The default layout configurations. + * @return array Default view configuration. + */ + private function get_default_view_for_wp_block( $default_layouts ) { + return array( + 'type' => 'grid', + 'perPage' => 20, + 'titleField' => 'title', + 'mediaField' => 'preview', + 'fields' => array( 'sync-status' ), + 'filters' => array(), + 'layout' => $default_layouts['grid']['layout'], + ); + } + + /** + * Returns the default layout configurations for the wp_template_part post type. + * + * @since 7.1.0 + * + * @return array Default layout configurations. + */ + private function get_default_layouts_for_wp_template_part() { + return array( + 'table' => array( + 'layout' => array( + 'styles' => array( + 'author' => array( + 'width' => '1%', + ), + ), + ), + ), + 'grid' => array(), + ); + } + + /** + * Returns the default view configuration for the wp_template_part post type. + * + * @since 7.1.0 + * + * @param array $default_layouts The default layout configurations. + * @return array Default view configuration. + */ + private function get_default_view_for_wp_template_part( $default_layouts ) { + return array( + 'type' => 'grid', + 'perPage' => 20, + 'titleField' => 'title', + 'mediaField' => 'preview', + 'fields' => array( 'author' ), + 'filters' => array(), + 'layout' => $default_layouts['grid']['layout'], + ); + } + + /** + * Returns the original source of a template. + * + * @since 7.1.0 + * + * @param WP_Block_Template $template_object Template instance. + * @return string The original source ('theme', 'plugin', 'site', or 'user'). + */ + private static function get_wp_templates_original_source_field( $template_object ) { + if ( 'wp_template' === $template_object->type || 'wp_template_part' === $template_object->type ) { + /* + * Added by theme. + * Template originally provided by a theme, but customized by a user. + * Templates originally didn't have the 'origin' field so identify + * older customized templates by checking for no origin and a 'theme' + * or 'custom' source. + */ + if ( $template_object->has_theme_file && + ( 'theme' === $template_object->origin || ( + empty( $template_object->origin ) && in_array( + $template_object->source, + array( + 'theme', + 'custom', + ), + true + ) ) + ) + ) { + return 'theme'; + } + + // Added by plugin. + if ( 'plugin' === $template_object->origin ) { + return 'plugin'; + } + + /* + * Added by site. + * Template was created from scratch, but has no author. Author support + * was only added to templates in WordPress 5.9. Fallback to showing the + * site logo and title. + */ + if ( empty( $template_object->has_theme_file ) && 'custom' === $template_object->source && empty( $template_object->author ) ) { + return 'site'; + } + } + + // Added by user. + return 'user'; + } + + /** + * Returns a human readable text for the author of a template. + * + * @since 7.1.0 + * + * @param WP_Block_Template $template_object Template instance. + * @return string Human readable text for the author. + */ + private static function get_wp_templates_author_text_field( $template_object ) { + $original_source = self::get_wp_templates_original_source_field( $template_object ); + switch ( $original_source ) { + case 'theme': + $theme_name = wp_get_theme( $template_object->theme )->get( 'Name' ); + return empty( $theme_name ) ? $template_object->theme : $theme_name; + case 'plugin': + if ( ! function_exists( 'get_plugins' ) ) { + require_once ABSPATH . 'wp-admin/includes/plugin.php'; + } + if ( isset( $template_object->plugin ) ) { + $plugins = wp_get_active_and_valid_plugins(); + + foreach ( $plugins as $plugin_file ) { + $plugin_basename = plugin_basename( $plugin_file ); + list( $plugin_slug, ) = explode( '/', $plugin_basename ); + + if ( $plugin_slug === $template_object->plugin ) { + $plugin_data = get_plugin_data( $plugin_file ); + + if ( ! empty( $plugin_data['Name'] ) ) { + return $plugin_data['Name']; + } + + break; + } + } + } + + /* + * Fall back to the theme name if the plugin is not defined. That's needed to keep backwards + * compatibility with templates that were registered before the plugin attribute was added. + */ + $plugins = get_plugins(); + $plugin_basename = plugin_basename( sanitize_text_field( $template_object->theme . '.php' ) ); + if ( isset( $plugins[ $plugin_basename ] ) && isset( $plugins[ $plugin_basename ]['Name'] ) ) { + return $plugins[ $plugin_basename ]['Name']; + } + return $template_object->plugin ?? $template_object->theme; + case 'site': + return get_bloginfo( 'name' ); + case 'user': + $author = get_user_by( 'id', $template_object->author ); + if ( ! $author ) { + return __( 'Unknown author' ); + } + return $author->get( 'display_name' ); + } + + // Fail-safe to return a string should the original source ever fall through. + return ''; + } + + /** + * Returns the default view configuration for the wp_template post type. + * + * @since 7.1.0 + * + * @return array Default view configuration. + */ + private function get_default_view_for_wp_template() { + return array( + 'type' => 'grid', + 'perPage' => 20, + 'sort' => array( + 'field' => 'title', + 'direction' => 'asc', + ), + 'titleField' => 'title', + 'descriptionField' => 'description', + 'mediaField' => 'preview', + 'fields' => array( 'author', 'active', 'slug', 'theme' ), + 'filters' => array(), + 'showMedia' => true, + ); + } + + /** + * Returns the default layout configurations for the wp_template post type. + * + * @since 7.1.0 + * + * @return array Default layout configurations. + */ + private function get_default_layouts_for_wp_template() { + return array( + 'table' => array( 'showMedia' => false ), + 'grid' => array( 'showMedia' => true ), + 'list' => array( 'showMedia' => false ), + ); + } + + /** + * Returns the view list for the wp_template post type. + * + * @since 7.1.0 + * + * @return array View list. + */ + private function get_view_list_for_wp_template() { + $view_list = array( + array( + 'title' => __( 'All templates' ), + 'slug' => 'all', + ), + ); + + $templates = get_block_templates( array(), 'wp_template' ); + + // Collect unique authors, tracking whether they come from a registered + // source (theme, plugin, site) so we can sort those before user ones. + $seen_authors = array(); + $registered_authors = array(); + $user_authors = array(); + foreach ( $templates as $template ) { + $original_source = self::get_wp_templates_original_source_field( $template ); + $author_text = self::get_wp_templates_author_text_field( $template ); + if ( ! empty( $author_text ) && ! isset( $seen_authors[ $author_text ] ) ) { + $seen_authors[ $author_text ] = true; + $entry = array( + 'title' => $author_text, + 'slug' => $author_text, + 'view' => array( + 'filters' => array( + array( + 'field' => 'author', + 'operator' => 'is', + 'value' => $author_text, + 'isLocked' => true, + ), + ), + ), + ); + if ( 'user' === $original_source ) { + $user_authors[] = $entry; + } else { + $registered_authors[] = $entry; + } + } + } + + $view_list = array_merge( $view_list, $registered_authors, $user_authors ); + + return $view_list; + } } From bd6cd7eb07e8723d0534c4cbf0a9619e9fd75eb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Maneiro?= <583546+oandregal@users.noreply.github.com> Date: Fri, 27 Mar 2026 09:03:01 +0100 Subject: [PATCH 3/6] Backport WordPress/gutenberg #76823 --- .../class-wp-rest-view-config-controller.php | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php index 7c95bb4855839..ed70582a4369d 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php @@ -125,9 +125,11 @@ public function get_items( $request ) { } elseif ( 'postType' === $kind && 'wp_block' === $name ) { $default_layouts = $this->get_default_layouts_for_wp_block(); $default_view = $this->get_default_view_for_wp_block( $default_layouts ); + $view_list = $this->get_view_list_for_wp_block(); } elseif ( 'postType' === $kind && 'wp_template_part' === $name ) { $default_layouts = $this->get_default_layouts_for_wp_template_part(); $default_view = $this->get_default_view_for_wp_template_part( $default_layouts ); + $view_list = $this->get_view_list_for_wp_template_part(); } elseif ( 'postType' === $kind && 'wp_template' === $name ) { $default_view = $this->get_default_view_for_wp_template(); $default_layouts = $this->get_default_layouts_for_wp_template(); @@ -753,6 +755,120 @@ private function get_default_view_for_wp_template_part( $default_layouts ) { ); } + /** + * Returns the view list for the wp_template_part post type. + * + * Builds entries from the registered template part areas (header, footer, etc.). + * + * @since 7.1.0 + * + * @return array View list entries. + */ + private function get_view_list_for_wp_template_part() { + $view_list = array( + array( + 'title' => __( 'All template parts' ), + 'slug' => 'all-parts', + ), + ); + + $areas = get_allowed_block_template_part_areas(); + + // Ensure default areas appear in a consistent order. + $preferred_order = array( 'header', 'footer', 'sidebar', 'navigation-overlay', 'uncategorized' ); + $ordered_areas = array(); + $remaining_areas = array(); + foreach ( $areas as $area ) { + $position = array_search( $area['area'], $preferred_order, true ); + if ( false !== $position ) { + $ordered_areas[ $position ] = $area; + } else { + $remaining_areas[] = $area; + } + } + ksort( $ordered_areas ); + $areas = array_merge( array_values( $ordered_areas ), $remaining_areas ); + + foreach ( $areas as $area ) { + $view_list[] = array( + 'title' => $area['label'], + 'slug' => $area['area'], + 'view' => array( + 'filters' => array( + array( + 'field' => 'area', + 'operator' => 'is', + 'value' => $area['area'], + 'isLocked' => true, + ), + ), + ), + ); + } + + return $view_list; + } + + /** + * Returns the view list for the wp_block (patterns) post type. + * + * Builds entries from registered block pattern categories and user pattern categories. + * + * @since 7.1.0 + * + * @return array View list entries. + */ + private function get_view_list_for_wp_block() { + $view_list = array( + array( + 'title' => __( 'All patterns' ), + 'slug' => 'all-patterns', + ), + array( + 'title' => __( 'My patterns' ), + 'slug' => 'my-patterns', + ), + ); + + // Gather categories from the block pattern categories registry. + $registry = WP_Block_Pattern_Categories_Registry::get_instance(); + $categories = array(); + + foreach ( $registry->get_all_registered() as $category ) { + $categories[ $category['name'] ] = $category['label']; + } + + // Ensure "Uncategorized" is always included for patterns + // that have no category assigned. + $categories['uncategorized'] ??= __( 'Uncategorized' ); + + // Also gather user-created pattern categories (wp_pattern_category taxonomy). + $user_terms = get_terms( + array( + 'taxonomy' => 'wp_pattern_category', + 'hide_empty' => false, + ) + ); + + if ( ! is_wp_error( $user_terms ) ) { + foreach ( $user_terms as $term ) { + $categories[ $term->slug ] = $term->name; + } + } + + // Sort categories alphabetically by label. + asort( $categories, SORT_NATURAL | SORT_FLAG_CASE ); + + foreach ( $categories as $name => $label ) { + $view_list[] = array( + 'title' => $label, + 'slug' => $name, + ); + } + + return $view_list; + } + /** * Returns the original source of a template. * From 5fe864ab763ed391485d16318bae91a274e8d57f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Maneiro?= <583546+oandregal@users.noreply.github.com> Date: Wed, 1 Apr 2026 14:20:41 +0200 Subject: [PATCH 4/6] Backport gutenberg/76953 --- .../class-wp-rest-view-config-controller.php | 302 ++++++++++++++++++ 1 file changed, 302 insertions(+) diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php index ed70582a4369d..fd4565b1074c1 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php @@ -89,6 +89,7 @@ public function get_items( $request ) { $name = $request->get_param( 'name' ); // TODO: this data will come from a registry of view configs per entity. + $form = array(); $default_view = array( 'type' => 'table', 'filters' => array(), @@ -122,6 +123,9 @@ public function get_items( $request ) { $default_layouts = $this->get_default_layouts_for_page(); $default_view = $this->get_default_view_for_page(); $view_list = $this->get_view_list_for_page( $all_items_title, $default_layouts ); + $form = $this->get_form_for_page(); + } elseif ( 'postType' === $kind && 'post' === $name ) { + $form = $this->get_form_for_page(); } elseif ( 'postType' === $kind && 'wp_block' === $name ) { $default_layouts = $this->get_default_layouts_for_wp_block(); $default_view = $this->get_default_view_for_wp_block( $default_layouts ); @@ -142,6 +146,7 @@ public function get_items( $request ) { 'default_view' => $default_view, 'default_layouts' => $default_layouts, 'view_list' => $view_list, + 'form' => $form, ); return rest_ensure_response( $response ); @@ -278,6 +283,12 @@ public function get_item_schema() { ), ), ), + 'form' => array( + 'description' => __( 'Default form configuration.' ), + 'type' => 'object', + 'readonly' => true, + 'properties' => $this->get_form_schema(), + ), ), ); @@ -517,6 +528,231 @@ private function get_grid_layout_schema() { ); } + /** + * Returns the schema for a form layout object as a discriminated union. + * + * Each variant is discriminated by a single-value enum on its `type` property, + * matching the TypeScript Layout union in dataviews/src/types/dataform.ts. + * + * @since 7.1.0 + * + * @return array Schema for a form layout object. + */ + private function get_form_layout_schema() { + return array( + 'oneOf' => array( + // RegularLayout. + array( + 'type' => 'object', + 'properties' => array( + 'type' => array( + 'type' => 'string', + 'enum' => array( 'regular' ), + ), + 'labelPosition' => array( + 'type' => 'string', + 'enum' => array( 'top', 'side', 'none' ), + ), + ), + ), + // PanelLayout. + array( + 'type' => 'object', + 'properties' => array( + 'type' => array( + 'type' => 'string', + 'enum' => array( 'panel' ), + ), + 'labelPosition' => array( + 'type' => 'string', + 'enum' => array( 'top', 'side', 'none' ), + ), + 'openAs' => array( + 'oneOf' => array( + array( + 'type' => 'string', + 'enum' => array( 'dropdown', 'modal' ), + ), + array( + 'type' => 'object', + 'properties' => array( + 'type' => array( + 'type' => 'string', + 'enum' => array( 'dropdown', 'modal' ), + ), + 'applyLabel' => array( + 'type' => 'string', + ), + 'cancelLabel' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + 'summary' => array( + 'oneOf' => array( + array( 'type' => 'string' ), + array( + 'type' => 'array', + 'items' => array( + 'type' => 'string', + ), + ), + ), + ), + 'editVisibility' => array( + 'type' => 'string', + 'enum' => array( 'always', 'on-hover' ), + ), + ), + ), + // CardLayout. + array( + 'type' => 'object', + 'properties' => array( + 'type' => array( + 'type' => 'string', + 'enum' => array( 'card' ), + ), + 'withHeader' => array( + 'type' => 'boolean', + ), + 'isOpened' => array( + 'type' => 'boolean', + ), + 'isCollapsible' => array( + 'type' => 'boolean', + ), + 'summary' => array( + 'oneOf' => array( + array( 'type' => 'string' ), + array( + 'type' => 'array', + 'items' => array( + 'oneOf' => array( + array( 'type' => 'string' ), + array( + 'type' => 'object', + 'properties' => array( + 'id' => array( + 'type' => 'string', + ), + 'visibility' => array( + 'type' => 'string', + 'enum' => array( 'always', 'when-collapsed' ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + // RowLayout. + array( + 'type' => 'object', + 'properties' => array( + 'type' => array( + 'type' => 'string', + 'enum' => array( 'row' ), + ), + 'alignment' => array( + 'type' => 'string', + 'enum' => array( 'start', 'center', 'end' ), + ), + 'styles' => array( + 'type' => 'object', + 'additionalProperties' => array( + 'type' => 'object', + 'properties' => array( + 'flex' => array( + 'type' => array( 'string', 'number' ), + ), + ), + ), + ), + ), + ), + // DetailsLayout. + array( + 'type' => 'object', + 'properties' => array( + 'type' => array( + 'type' => 'string', + 'enum' => array( 'details' ), + ), + 'summary' => array( + 'type' => 'string', + ), + ), + ), + ), + ); + } + + /** + * Returns the schema for a form field item (string or object). + * + * @since 7.1.0 + * + * @return array Schema for a form field. + */ + private function get_form_field_schema() { + return array( + 'oneOf' => array( + array( 'type' => 'string' ), + array( + 'type' => 'object', + 'properties' => array( + 'id' => array( + 'type' => 'string', + ), + 'label' => array( + 'type' => 'string', + ), + 'description' => array( + 'type' => 'string', + ), + 'layout' => $this->get_form_layout_schema(), + 'children' => array( + 'type' => 'array', + 'items' => array( + 'oneOf' => array( + array( 'type' => 'string' ), + // This object can have the shape of a form field itself, + // allowing for recursive nesting of form fields. + // There's no easy way to codify this recursion via the JSON Schema draft-04 + // supported by the REST API. + array( 'type' => 'object' ), + ), + ), + ), + ), + ), + ), + ); + } + + /** + * Returns the schema for the form configuration object. + * + * @since 7.1.0 + * + * @return array Schema properties for the form configuration. + */ + private function get_form_schema() { + return array( + 'layout' => $this->get_form_layout_schema(), + 'fields' => array( + 'type' => 'array', + 'items' => $this->get_form_field_schema(), + ), + ); + } + /** * Returns the default view configuration for the page post type. * @@ -563,6 +799,72 @@ private function get_default_layouts_for_page() { ); } + /** + * Returns the default form configuration for the page post type. + * + * @since 7.1.0 + * + * @return array Default form configuration. + */ + private function get_form_for_page() { + return array( + 'layout' => array( 'type' => 'panel' ), + 'fields' => array( + array( + 'id' => 'featured_media', + 'layout' => array( + 'type' => 'regular', + 'labelPosition' => 'none', + ), + ), + array( + 'id' => 'post-content-info', + 'layout' => array( + 'type' => 'regular', + 'labelPosition' => 'none', + ), + ), + 'excerpt', + array( + 'id' => 'status', + 'label' => __( 'Status' ), + 'children' => array( + array( + 'id' => 'status', + 'layout' => array( + 'type' => 'regular', + 'labelPosition' => 'none', + ), + ), + 'scheduled_date', + 'password', + 'sticky', + ), + ), + 'date', + 'slug', + 'author', + 'template', + array( + 'id' => 'discussion', + 'label' => __( 'Discussion' ), + 'children' => array( + array( + 'id' => 'comment_status', + 'layout' => array( + 'type' => 'regular', + 'labelPosition' => 'none', + ), + ), + 'ping_status', + ), + ), + 'parent', + 'format', + ), + ); + } + /** * Returns the view list for the page post type. * From e0a178ec411db2a10f4664e7c46b24085f06e093 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Maneiro?= <583546+oandregal@users.noreply.github.com> Date: Fri, 5 Jun 2026 13:52:53 +0200 Subject: [PATCH 5/6] Update with changes from gutenberg --- .../endpoints/class-wp-rest-view-config-controller.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php index fd4565b1074c1..7581cb8c3f38c 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php @@ -824,7 +824,13 @@ private function get_form_for_page() { 'labelPosition' => 'none', ), ), - 'excerpt', + array( + 'id' => 'excerpt', + 'layout' => array( + 'type' => 'panel', + 'labelPosition' => 'top', + ), + ), array( 'id' => 'status', 'label' => __( 'Status' ), From 46bbae7b00dcccd75f343fe006b433b266da3f0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Maneiro?= <583546+oandregal@users.noreply.github.com> Date: Fri, 5 Jun 2026 13:59:29 +0200 Subject: [PATCH 6/6] Backport more changes from gutenberg --- .../endpoints/class-wp-rest-view-config-controller.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php index 7581cb8c3f38c..8e7c2f667fb30 100644 --- a/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php +++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-view-config-controller.php @@ -1039,7 +1039,9 @@ private function get_default_layouts_for_wp_template_part() { ), ), ), - 'grid' => array(), + 'grid' => array( + 'layout' => array(), + ), ); }