HEX
Server: nginx/1.28.1
System: Linux VM-0-12-opencloudos 6.6.117-45.oc9.x86_64 #1 SMP Thu Dec 4 10:26:39 CST 2025 x86_64
User: www (1000)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/www.waciwang.com/wp-content/plugins/gutenberg/build/scripts/edit-site/index.js.map
{
  "version": 3,
  "sources": ["package-external:@wordpress/blocks", "package-external:@wordpress/block-library", "package-external:@wordpress/data", "package-external:@wordpress/deprecated", "package-external:@wordpress/element", "package-external:@wordpress/editor", "package-external:@wordpress/preferences", "package-external:@wordpress/widgets", "package-external:@wordpress/core-data", "package-external:@wordpress/block-editor", "package-external:@wordpress/i18n", "package-external:@wordpress/patterns", "package-external:@wordpress/private-apis", "package-external:@wordpress/router", "package-external:@wordpress/components", "vendor-external:react/jsx-runtime", "package-external:@wordpress/compose", "package-external:@wordpress/plugins", "package-external:@wordpress/notices", "package-external:@wordpress/html-entities", "package-external:@wordpress/primitives", "package-external:@wordpress/commands", "package-external:@wordpress/keycodes", "package-external:@wordpress/url", "package-external:@wordpress/dom", "package-external:@wordpress/keyboard-shortcuts", "vendor-external:react", "vendor-external:react-dom", "package-external:@wordpress/api-fetch", "package-external:@wordpress/style-engine", "../../../node_modules/fast-deep-equal/es6/index.js", "../../../node_modules/deepmerge/dist/cjs.js", "package-external:@wordpress/a11y", "package-external:@wordpress/date", "package-external:@wordpress/blob", "../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js", "../../../node_modules/use-sync-external-store/shim/index.js", "../../../node_modules/remove-accents/index.js", "package-external:@wordpress/warning", "../../../packages/edit-site/src/index.js", "../../../packages/edit-site/src/store/index.js", "../../../packages/edit-site/src/store/reducer.js", "../../../packages/edit-site/src/store/actions.js", "../../../packages/edit-site/src/utils/constants.js", "../../../packages/edit-site/src/lock-unlock.js", "../../../packages/edit-site/src/store/private-actions.js", "../../../packages/edit-site/src/store/selectors.js", "../../../packages/edit-site/src/utils/get-filtered-template-parts.js", "../../../packages/edit-site/src/store/private-selectors.js", "../../../packages/edit-site/src/store/constants.js", "../../../packages/edit-site/src/components/app/index.js", "../../../node_modules/clsx/dist/clsx.mjs", "../../../packages/admin-ui/src/navigable-region/index.tsx", "../../../packages/admin-ui/src/page/header.tsx", "../../../packages/admin-ui/src/page/sidebar-toggle-slot.tsx", "../../../packages/admin-ui/src/page/index.tsx", "../../../packages/edit-site/src/components/layout/index.js", "../../../packages/edit-site/src/components/site-hub/index.js", "../../../packages/icons/src/icon/index.ts", "../../../packages/icons/src/library/archive.tsx", "../../../packages/icons/src/library/arrow-down.tsx", "../../../packages/icons/src/library/arrow-left.tsx", "../../../packages/icons/src/library/arrow-right.tsx", "../../../packages/icons/src/library/arrow-up-left.tsx", "../../../packages/icons/src/library/arrow-up.tsx", "../../../packages/icons/src/library/backup.tsx", "../../../packages/icons/src/library/block-meta.tsx", "../../../packages/icons/src/library/block-table.tsx", "../../../packages/icons/src/library/calendar.tsx", "../../../packages/icons/src/library/category.tsx", "../../../packages/icons/src/library/check.tsx", "../../../packages/icons/src/library/chevron-down.tsx", "../../../packages/icons/src/library/chevron-left-small.tsx", "../../../packages/icons/src/library/chevron-left.tsx", "../../../packages/icons/src/library/chevron-right-small.tsx", "../../../packages/icons/src/library/chevron-right.tsx", "../../../packages/icons/src/library/chevron-up.tsx", "../../../packages/icons/src/library/close-small.tsx", "../../../packages/icons/src/library/cog.tsx", "../../../packages/icons/src/library/comment-author-avatar.tsx", "../../../packages/icons/src/library/download.tsx", "../../../packages/icons/src/library/drafts.tsx", "../../../packages/icons/src/library/drawer-right.tsx", "../../../packages/icons/src/library/envelope.tsx", "../../../packages/icons/src/library/error.tsx", "../../../packages/icons/src/library/file.tsx", "../../../packages/icons/src/library/format-list-bullets-rtl.tsx", "../../../packages/icons/src/library/format-list-bullets.tsx", "../../../packages/icons/src/library/funnel.tsx", "../../../packages/icons/src/library/globe.tsx", "../../../packages/icons/src/library/help.tsx", "../../../packages/icons/src/library/home.tsx", "../../../packages/icons/src/library/layout.tsx", "../../../packages/icons/src/library/link.tsx", "../../../packages/icons/src/library/list.tsx", "../../../packages/icons/src/library/media.tsx", "../../../packages/icons/src/library/mobile.tsx", "../../../packages/icons/src/library/more-vertical.tsx", "../../../packages/icons/src/library/navigation.tsx", "../../../packages/icons/src/library/next.tsx", "../../../packages/icons/src/library/not-allowed.tsx", "../../../packages/icons/src/library/not-found.tsx", "../../../packages/icons/src/library/page.tsx", "../../../packages/icons/src/library/pages.tsx", "../../../packages/icons/src/library/pencil.tsx", "../../../packages/icons/src/library/pending.tsx", "../../../packages/icons/src/library/pin.tsx", "../../../packages/icons/src/library/plugins.tsx", "../../../packages/icons/src/library/post.tsx", "../../../packages/icons/src/library/previous.tsx", "../../../packages/icons/src/library/published.tsx", "../../../packages/icons/src/library/rotate-left.tsx", "../../../packages/icons/src/library/rotate-right.tsx", "../../../packages/icons/src/library/scheduled.tsx", "../../../packages/icons/src/library/search.tsx", "../../../packages/icons/src/library/seen.tsx", "../../../packages/icons/src/library/styles.tsx", "../../../packages/icons/src/library/symbol-filled.tsx", "../../../packages/icons/src/library/symbol.tsx", "../../../packages/icons/src/library/tag.tsx", "../../../packages/icons/src/library/trash.tsx", "../../../packages/icons/src/library/unseen.tsx", "../../../packages/icons/src/library/upload.tsx", "../../../packages/icons/src/library/verse.tsx", "../../../packages/icons/src/library/wordpress.tsx", "../../../packages/edit-site/src/components/site-icon/index.js", "../../../packages/edit-site/src/components/sidebar/index.js", "../../../packages/edit-site/src/components/resizable-frame/index.js", "../../../packages/edit-site/src/components/save-keyboard-shortcut/index.js", "../../../packages/edit-site/src/components/layout/hooks.js", "../../../node_modules/@react-spring/rafz/dist/react-spring-rafz.esm.js", "../../../node_modules/@react-spring/shared/dist/react-spring-shared.esm.js", "../../../node_modules/@react-spring/core/dist/react-spring-core.esm.js", "../../../node_modules/@react-spring/animated/dist/react-spring-animated.esm.js", "../../../node_modules/@react-spring/web/dist/react-spring-web.esm.js", "../../../packages/edit-site/src/components/layout/animation.js", "../../../packages/edit-site/src/components/save-hub/index.js", "../../../packages/edit-site/src/components/save-button/index.js", "../../../packages/edit-site/src/utils/is-previewing-theme.js", "../../../packages/edit-site/src/components/save-panel/index.js", "../../../packages/edit-site/src/utils/use-activate-theme.js", "../../../packages/edit-site/src/utils/use-actual-current-theme.js", "../../../packages/edit-site/src/hooks/commands/use-common-commands.js", "../../../packages/edit-site/src/hooks/commands/use-set-command-context.js", "../../../packages/edit-site/src/components/site-editor-routes/index.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-main/index.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen/index.js", "../../../packages/edit-site/src/components/sidebar-button/index.js", "../../../packages/edit-site/src/components/sidebar-navigation-item/index.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-global-styles/index.js", "../../../packages/global-styles-ui/src/global-styles-ui.tsx", "../../../packages/global-styles-engine/src/utils/object.ts", "../../../packages/global-styles-engine/src/settings/get-setting.ts", "../../../packages/global-styles-engine/src/settings/set-setting.ts", "../../../packages/global-styles-engine/src/utils/common.ts", "../../../packages/global-styles-engine/src/utils/fluid.ts", "../../../packages/global-styles-engine/src/utils/typography.ts", "../../../packages/global-styles-engine/src/settings/get-style.ts", "../../../packages/global-styles-engine/src/settings/set-style.ts", "../../../packages/global-styles-engine/src/core/equal.ts", "../../../packages/global-styles-engine/src/core/merge.ts", "../../../node_modules/is-plain-object/dist/is-plain-object.mjs", "../../../packages/global-styles-engine/src/core/render.tsx", "../../../packages/global-styles-engine/src/core/selectors.ts", "../../../node_modules/colord/index.mjs", "../../../packages/global-styles-engine/src/utils/duotone.ts", "../../../packages/global-styles-engine/src/utils/string.ts", "../../../packages/global-styles-engine/src/utils/spacing.ts", "../../../packages/global-styles-engine/src/utils/gap.ts", "../../../packages/global-styles-engine/src/utils/background.ts", "../../../packages/global-styles-engine/src/utils/layout.ts", "../../../packages/global-styles-ui/src/provider.tsx", "../../../packages/global-styles-ui/src/context.ts", "../../../packages/global-styles-ui/src/screen-root.tsx", "../../../packages/global-styles-ui/src/icon-with-current-color.tsx", "../../../packages/global-styles-ui/src/navigation-button.tsx", "../../../packages/global-styles-ui/src/root-menu.tsx", "../../../node_modules/colord/plugins/a11y.mjs", "../../../packages/global-styles-ui/src/hooks.ts", "../../../packages/global-styles-ui/src/utils.ts", "../../../packages/global-styles-ui/src/lock-unlock.ts", "../../../packages/global-styles-ui/src/preview-styles.tsx", "../../../packages/global-styles-ui/src/preview-hooks.tsx", "../../../packages/global-styles-ui/src/typography-example.tsx", "../../../packages/global-styles-ui/src/font-library/utils/preview-styles.ts", "../../../packages/global-styles-ui/src/highlighted-colors.tsx", "../../../packages/global-styles-ui/src/preview-wrapper.tsx", "../../../packages/global-styles-ui/src/screen-block-list.tsx", "../../../packages/global-styles-ui/src/variations/variations-panel.tsx", "../../../packages/global-styles-ui/src/screen-header.tsx", "../../../packages/global-styles-ui/src/screen-block.tsx", "../../../packages/global-styles-ui/src/block-preview-panel.tsx", "../../../packages/global-styles-ui/src/subtitle.tsx", "../../../packages/global-styles-ui/src/screen-typography.tsx", "../../../packages/global-styles-ui/src/screen-body.tsx", "../../../packages/global-styles-ui/src/typography-elements.tsx", "../../../packages/global-styles-ui/src/variations/variations-typography.tsx", "../../../packages/global-styles-ui/src/preview-typography.tsx", "../../../packages/global-styles-ui/src/variations/variation.tsx", "../../../packages/global-styles-ui/src/font-families.tsx", "../../../packages/global-styles-ui/src/font-library/context.tsx", "../../../packages/global-styles-ui/src/font-library/api.ts", "../../../packages/global-styles-ui/src/font-library/utils/index.ts", "../../../packages/global-styles-ui/src/font-library/utils/constants.ts", "../../../packages/global-styles-ui/src/font-library/modal.tsx", "../../../packages/global-styles-ui/src/font-library/installed-fonts.tsx", "../../../packages/global-styles-ui/src/font-library/font-card.tsx", "../../../packages/global-styles-ui/src/font-library/font-demo.tsx", "../../../packages/global-styles-ui/src/font-library/library-font-variant.tsx", "../../../packages/global-styles-ui/src/font-library/font-collection.tsx", "../../../packages/global-styles-ui/src/font-library/google-fonts-confirm-dialog.tsx", "../../../packages/global-styles-ui/src/font-library/collection-font-variant.tsx", "../../../packages/global-styles-ui/src/font-library/upload-fonts.tsx", "../../../packages/global-styles-ui/src/font-library/lib/unbrotli.js", "../../../packages/global-styles-ui/src/font-library/lib/inflate.js", "../../../packages/global-styles-ui/src/font-library/lib/lib-font.browser.js", "../../../packages/global-styles-ui/src/font-library/utils/make-families-from-faces.ts", "../../../packages/global-styles-ui/src/font-family-item.tsx", "../../../packages/global-styles-ui/src/font-sizes/font-sizes-count.tsx", "../../../packages/global-styles-ui/src/screen-typography-element.tsx", "../../../packages/global-styles-ui/src/typography-panel.tsx", "../../../packages/global-styles-ui/src/typography-preview.tsx", "../../../packages/global-styles-ui/src/screen-colors.tsx", "../../../packages/global-styles-ui/src/palette.tsx", "../../../packages/global-styles-ui/src/color-indicator-wrapper.tsx", "../../../packages/global-styles-ui/src/screen-color-palette.tsx", "../../../packages/global-styles-ui/src/color-palette-panel.tsx", "../../../packages/global-styles-ui/src/variations/variations-color.tsx", "../../../packages/global-styles-ui/src/preview-colors.tsx", "../../../packages/global-styles-ui/src/preset-colors.tsx", "../../../packages/global-styles-ui/src/gradients-palette-panel.tsx", "../../../packages/global-styles-ui/src/screen-background.tsx", "../../../packages/global-styles-ui/src/background-panel.tsx", "../../../packages/global-styles-ui/src/shadows-panel.tsx", "../../../packages/global-styles-ui/src/confirm-reset-shadow-dialog.tsx", "../../../packages/global-styles-ui/src/shadows-edit-panel.tsx", "../../../packages/global-styles-ui/src/screen-shadows.tsx", "../../../packages/global-styles-ui/src/screen-layout.tsx", "../../../packages/global-styles-ui/src/dimensions-panel.tsx", "../../../packages/global-styles-ui/src/screen-style-variations.tsx", "../../../packages/global-styles-ui/src/style-variations-content.tsx", "../../../packages/global-styles-ui/src/style-variations-container.tsx", "../../../packages/global-styles-ui/src/screen-css.tsx", "../../../packages/global-styles-ui/src/screen-revisions/index.tsx", "../../../packages/global-styles-ui/src/screen-revisions/use-global-styles-revisions.tsx", "../../../packages/global-styles-ui/src/screen-revisions/revisions-buttons.tsx", "../../../packages/global-styles-ui/src/pagination/index.tsx", "../../../packages/global-styles-ui/src/font-sizes/font-sizes.tsx", "../../../packages/global-styles-ui/src/font-sizes/confirm-reset-font-sizes-dialog.tsx", "../../../packages/global-styles-ui/src/font-sizes/font-size.tsx", "../../../packages/global-styles-ui/src/font-sizes/font-size-preview.tsx", "../../../packages/global-styles-ui/src/font-sizes/confirm-delete-font-size-dialog.tsx", "../../../packages/global-styles-ui/src/font-sizes/rename-font-size-dialog.tsx", "../../../packages/global-styles-ui/src/size-control/index.tsx", "../../../packages/global-styles-ui/src/with-global-styles-provider.tsx", "../../../packages/global-styles-ui/src/style-variations.tsx", "../../../packages/global-styles-ui/src/color-variations.tsx", "../../../packages/global-styles-ui/src/typography-variations.tsx", "../../../packages/global-styles-ui/src/font-library/font-library.tsx", "../../../packages/edit-site/src/components/sidebar-navigation-screen-details-footer/index.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-unsupported/index.js", "../../../packages/edit-site/src/components/editor/index.js", "../../../packages/edit-site/src/components/welcome-guide/editor.js", "../../../packages/edit-site/src/components/welcome-guide/image.js", "../../../packages/edit-site/src/components/welcome-guide/page.js", "../../../packages/edit-site/src/components/welcome-guide/template.js", "../../../packages/edit-site/src/components/welcome-guide/index.js", "../../../packages/edit-site/src/components/canvas-loader/index.js", "../../../packages/edit-site/src/components/block-editor/use-site-editor-settings.js", "../../../packages/edit-site/src/components/block-editor/use-navigate-to-entity-record.js", "../../../packages/edit-site/src/components/plugin-template-setting-panel/index.js", "../../../packages/edit-site/src/components/more-menu/index.js", "../../../packages/edit-site/src/components/more-menu/site-export.js", "../../../packages/edit-site/src/components/more-menu/welcome-guide-menu-item.js", "../../../packages/edit-site/src/components/block-editor/use-editor-iframe-props.js", "../../../packages/edit-site/src/components/editor/use-editor-title.js", "../../../packages/edit-site/src/components/routes/use-title.js", "../../../packages/edit-site/src/components/editor/use-adapt-editor-to-canvas.js", "../../../packages/edit-site/src/components/editor/use-resolve-edited-entity.js", "../../../packages/edit-site/src/components/editor/site-preview.js", "../../../packages/edit-site/src/components/site-editor-routes/utils.js", "../../../packages/edit-site/src/components/site-editor-routes/home.js", "../../../packages/edit-site/src/components/site-editor-routes/styles.js", "../../../packages/edit-site/src/components/sidebar-global-styles/index.js", "../../../packages/edit-site/src/components/site-editor-routes/navigation.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-navigation-menus/index.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-navigation-menus/constants.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-navigation-menu/more-menu.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-navigation-menu/rename-modal.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-navigation-menu/delete-confirm-dialog.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-navigation-menus/build-navigation-label.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-navigation-menu/index.js", "../../../packages/edit-site/src/components/site-editor-routes/navigation-item.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-patterns/index.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-patterns/category-item.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-patterns/use-pattern-categories.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-patterns/use-default-pattern-categories.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-patterns/use-theme-patterns.js", "../../../packages/edit-site/src/components/page-patterns/utils.js", "../../../packages/edit-site/src/components/page-patterns/use-patterns.js", "../../../packages/edit-site/src/components/page-patterns/search-items.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-patterns/use-template-part-areas.js", "../../../packages/edit-site/src/components/page-patterns/index.js", "../../../packages/dataviews/src/dataviews/index.tsx", "../../../node_modules/@base-ui/utils/esm/useRefWithInit.js", "../../../node_modules/@base-ui/react/esm/utils/useRenderElement.js", "../../../node_modules/@base-ui/utils/esm/useMergedRefs.js", "../../../node_modules/@base-ui/utils/esm/getReactElementRef.js", "../../../node_modules/@base-ui/utils/esm/reactVersion.js", "../../../node_modules/@base-ui/utils/esm/mergeObjects.js", "../../../node_modules/@base-ui/react/esm/utils/getStateAttributesProps.js", "../../../node_modules/@base-ui/react/esm/utils/resolveClassName.js", "../../../node_modules/@base-ui/react/esm/utils/resolveStyle.js", "../../../node_modules/@base-ui/react/esm/merge-props/mergeProps.js", "../../../node_modules/@base-ui/utils/esm/empty.js", "../../../node_modules/@base-ui/react/esm/use-render/useRender.js", "../../../packages/ui/src/stack/stack.tsx", "../../../packages/ui/src/stack/style.module.css", "../../../packages/dataviews/src/components/dataviews-context/index.ts", "../../../packages/dataviews/src/constants.ts", "../../../packages/dataviews/src/components/dataviews-layouts/index.ts", "../../../packages/dataviews/src/components/dataviews-layouts/table/index.tsx", "../../../packages/dataviews/src/components/dataviews-selection-checkbox/index.tsx", "../../../packages/dataviews/src/components/dataviews-item-actions/index.tsx", "../../../packages/dataviews/src/lock-unlock.ts", "../../../packages/dataviews/src/components/dataviews-bulk-actions/index.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/table/column-header-menu.tsx", "../../../packages/dataviews/src/utils/get-hideable-fields.ts", "../../../packages/dataviews/src/components/dataviews-layouts/utils/item-click-wrapper.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/table/column-primary.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/table/use-is-horizontal-scroll-end.ts", "../../../packages/dataviews/src/components/dataviews-layouts/utils/get-data-by-group.ts", "../../../packages/dataviews/src/components/dataviews-view-config/properties-section.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/grid/index.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/grid/composite-grid.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/grid/preview-size-picker.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/list/index.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/activity/index.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/activity/activity-group.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/activity/activity-item.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/activity/activity-items.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/picker-grid/index.tsx", "../../../packages/dataviews/src/components/dataviews-picker-footer/index.tsx", "../../../packages/dataviews/src/components/dataviews-pagination/index.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/utils/grid-items.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/picker-table/index.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/utils/preview-size-picker.tsx", "../../../packages/dataviews/src/components/dataviews-layouts/utils/density-picker.tsx", "../../../packages/dataviews/src/components/dataviews-filters/filters.tsx", "../../../packages/dataviews/src/components/dataviews-filters/filter.tsx", "../../../node_modules/@ariakit/react-core/esm/__chunks/3YLGPPWQ.js", "../../../node_modules/@ariakit/core/esm/__chunks/3YLGPPWQ.js", "../../../node_modules/@ariakit/core/esm/__chunks/PBFD2E7P.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/SK3NAZA3.js", "../../../node_modules/@ariakit/core/esm/__chunks/DTR5TSDJ.js", "../../../node_modules/@ariakit/core/esm/__chunks/QAGXQEUG.js", "../../../node_modules/@ariakit/core/esm/utils/events.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/ABQUS43J.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/LMDWO4NN.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/VDHZ5F7K.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/P7GR5CS5.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/3XAVFTCA.js", "../../../node_modules/@ariakit/core/esm/__chunks/BCALMBPZ.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/YV4JVR4I.js", "../../../node_modules/@ariakit/core/esm/__chunks/CYQWQL4J.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/C3IKGW5T.js", "../../../node_modules/@ariakit/core/esm/__chunks/7PRQYBBV.js", "../../../node_modules/@ariakit/core/esm/__chunks/AJZ4BYF3.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/4CMBR7SL.js", "../../../node_modules/@ariakit/core/esm/__chunks/RCQ5P4YE.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/WYCIER3C.js", "../../../node_modules/@ariakit/core/esm/__chunks/FZZ2AVHF.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/BM6PGYQY.js", "../../../node_modules/@ariakit/core/esm/__chunks/ME2CUF3F.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/O2PQ2652.js", "../../../node_modules/@ariakit/core/esm/combobox/combobox-store.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/FEOFMWBY.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/S6EF7IVO.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/RS7LB2H4.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/MTZPJQMC.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/VEVQD5MH.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/OMU7RWRV.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/5VQZOHHZ.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/SWN3JYXT.js", "../../../node_modules/@ariakit/core/esm/utils/focus.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/LVA2YJMS.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/ITI7HKP4.js", "../../../node_modules/@ariakit/react-core/esm/combobox/combobox.js", "../../../node_modules/@ariakit/react-core/esm/combobox/combobox-provider.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/KUU7WJ55.js", "../../../node_modules/@ariakit/react-core/esm/combobox/combobox-item-value.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/UQQRIHDV.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/RZ4GPYOB.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/P2CTZE2T.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/ZTDSJLD6.js", "../../../node_modules/@ariakit/react-core/esm/combobox/combobox-label.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/VGCJ63VH.js", "../../../node_modules/@ariakit/react-core/esm/__chunks/HUWAI7RB.js", "../../../packages/dataviews/src/components/dataviews-filters/search-widget.tsx", "../../../packages/dataviews/src/components/dataviews-filters/utils.ts", "../../../packages/dataviews/src/hooks/use-elements.ts", "../../../packages/dataviews/src/components/dataviews-filters/input-widget.tsx", "../../../packages/dataviews/src/utils/operators.tsx", "../../../packages/dataviews/src/components/dataviews-filters/add-filter.tsx", "../../../packages/dataviews/src/components/dataviews-filters/reset-filters.tsx", "../../../packages/dataviews/src/components/dataviews-filters/use-filters.ts", "../../../packages/dataviews/src/components/dataviews-filters/toggle.tsx", "../../../packages/dataviews/src/components/dataviews-filters/filters-toggled.tsx", "../../../packages/dataviews/src/components/dataviews-layout/index.tsx", "../../../packages/dataviews/src/components/dataviews-footer/index.tsx", "../../../packages/dataviews/src/components/dataviews-search/index.tsx", "../../../packages/dataviews/src/components/dataviews-view-config/index.tsx", "../../../packages/dataviews/src/components/dataviews-view-config/infinite-scroll-toggle.tsx", "../../../packages/dataviews/src/components/dataform-controls/checkbox.tsx", "../../../packages/dataviews/src/components/dataform-controls/utils/get-custom-validity.ts", "../../../packages/dataviews/node_modules/date-fns/constants.js", "../../../packages/dataviews/node_modules/date-fns/constructFrom.js", "../../../packages/dataviews/node_modules/date-fns/toDate.js", "../../../packages/dataviews/node_modules/date-fns/addDays.js", "../../../packages/dataviews/node_modules/date-fns/addMonths.js", "../../../packages/dataviews/node_modules/date-fns/_lib/defaultOptions.js", "../../../packages/dataviews/node_modules/date-fns/startOfWeek.js", "../../../packages/dataviews/node_modules/date-fns/startOfISOWeek.js", "../../../packages/dataviews/node_modules/date-fns/getISOWeekYear.js", "../../../packages/dataviews/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js", "../../../packages/dataviews/node_modules/date-fns/_lib/normalizeDates.js", "../../../packages/dataviews/node_modules/date-fns/startOfDay.js", "../../../packages/dataviews/node_modules/date-fns/differenceInCalendarDays.js", "../../../packages/dataviews/node_modules/date-fns/startOfISOWeekYear.js", "../../../packages/dataviews/node_modules/date-fns/addWeeks.js", "../../../packages/dataviews/node_modules/date-fns/addYears.js", "../../../packages/dataviews/node_modules/date-fns/isDate.js", "../../../packages/dataviews/node_modules/date-fns/isValid.js", "../../../packages/dataviews/node_modules/date-fns/startOfMonth.js", "../../../packages/dataviews/node_modules/date-fns/startOfYear.js", "../../../packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatDistance.js", "../../../packages/dataviews/node_modules/date-fns/locale/_lib/buildFormatLongFn.js", "../../../packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatLong.js", "../../../packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatRelative.js", "../../../packages/dataviews/node_modules/date-fns/locale/_lib/buildLocalizeFn.js", "../../../packages/dataviews/node_modules/date-fns/locale/en-US/_lib/localize.js", "../../../packages/dataviews/node_modules/date-fns/locale/_lib/buildMatchFn.js", "../../../packages/dataviews/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js", "../../../packages/dataviews/node_modules/date-fns/locale/en-US/_lib/match.js", "../../../packages/dataviews/node_modules/date-fns/locale/en-US.js", "../../../packages/dataviews/node_modules/date-fns/getDayOfYear.js", "../../../packages/dataviews/node_modules/date-fns/getISOWeek.js", "../../../packages/dataviews/node_modules/date-fns/getWeekYear.js", "../../../packages/dataviews/node_modules/date-fns/startOfWeekYear.js", "../../../packages/dataviews/node_modules/date-fns/getWeek.js", "../../../packages/dataviews/node_modules/date-fns/_lib/addLeadingZeros.js", "../../../packages/dataviews/node_modules/date-fns/_lib/format/lightFormatters.js", "../../../packages/dataviews/node_modules/date-fns/_lib/format/formatters.js", "../../../packages/dataviews/node_modules/date-fns/_lib/format/longFormatters.js", "../../../packages/dataviews/node_modules/date-fns/_lib/protectedTokens.js", "../../../packages/dataviews/node_modules/date-fns/format.js", "../../../packages/dataviews/node_modules/date-fns/subDays.js", "../../../packages/dataviews/node_modules/date-fns/subMonths.js", "../../../packages/dataviews/node_modules/date-fns/subWeeks.js", "../../../packages/dataviews/node_modules/date-fns/subYears.js", "../../../packages/dataviews/src/components/dataform-controls/datetime.tsx", "../../../packages/dataviews/src/components/dataform-controls/utils/relative-date-control.tsx", "../../../packages/dataviews/src/field-types/utils/parse-date-time.ts", "../../../packages/dataviews/src/components/dataform-controls/date.tsx", "../../../packages/dataviews/src/components/dataform-controls/email.tsx", "../../../packages/dataviews/src/components/dataform-controls/utils/validated-input.tsx", "../../../packages/dataviews/src/components/dataform-controls/telephone.tsx", "../../../packages/dataviews/src/components/dataform-controls/url.tsx", "../../../packages/dataviews/src/components/dataform-controls/utils/validated-number.tsx", "../../../packages/dataviews/src/components/dataform-controls/integer.tsx", "../../../packages/dataviews/src/components/dataform-controls/number.tsx", "../../../packages/dataviews/src/components/dataform-controls/radio.tsx", "../../../packages/dataviews/src/components/dataform-controls/select.tsx", "../../../packages/dataviews/src/components/dataform-controls/text.tsx", "../../../packages/dataviews/src/components/dataform-controls/toggle.tsx", "../../../packages/dataviews/src/components/dataform-controls/textarea.tsx", "../../../packages/dataviews/src/components/dataform-controls/toggle-group.tsx", "../../../packages/dataviews/src/components/dataform-controls/array.tsx", "../../../packages/dataviews/src/components/dataform-controls/color.tsx", "../../../packages/dataviews/src/components/dataform-controls/password.tsx", "../../../packages/dataviews/src/field-types/utils/has-elements.ts", "../../../packages/dataviews/src/components/dataform-controls/index.tsx", "../../../packages/dataviews/src/field-types/utils/get-filter-by.ts", "../../../packages/dataviews/src/field-types/utils/get-value-from-id.ts", "../../../packages/dataviews/src/field-types/utils/set-value-from-id.ts", "../../../packages/dataviews/src/field-types/email.tsx", "../../../packages/dataviews/src/field-types/utils/render-from-elements.tsx", "../../../packages/dataviews/src/field-types/utils/render-default.tsx", "../../../packages/dataviews/src/field-types/utils/sort-text.ts", "../../../packages/dataviews/src/field-types/utils/is-valid-required.ts", "../../../packages/dataviews/src/field-types/utils/is-valid-min-length.ts", "../../../packages/dataviews/src/field-types/utils/is-valid-max-length.ts", "../../../packages/dataviews/src/field-types/utils/is-valid-pattern.ts", "../../../packages/dataviews/src/field-types/utils/is-valid-elements.ts", "../../../packages/dataviews/src/field-types/utils/get-value-formatted-default.ts", "../../../packages/dataviews/src/field-types/integer.tsx", "../../../packages/dataviews/src/field-types/utils/sort-number.ts", "../../../packages/dataviews/src/field-types/utils/is-valid-min.ts", "../../../packages/dataviews/src/field-types/utils/is-valid-max.ts", "../../../packages/dataviews/src/field-types/number.tsx", "../../../packages/dataviews/src/field-types/text.tsx", "../../../packages/dataviews/src/field-types/datetime.tsx", "../../../packages/dataviews/src/field-types/date.tsx", "../../../packages/dataviews/src/field-types/boolean.tsx", "../../../packages/dataviews/src/field-types/utils/is-valid-required-for-bool.ts", "../../../packages/dataviews/src/field-types/media.tsx", "../../../packages/dataviews/src/field-types/array.tsx", "../../../packages/dataviews/src/field-types/utils/is-valid-required-for-array.ts", "../../../packages/dataviews/src/field-types/password.tsx", "../../../packages/dataviews/src/field-types/telephone.tsx", "../../../packages/dataviews/src/field-types/color.tsx", "../../../packages/dataviews/src/field-types/url.tsx", "../../../packages/dataviews/src/field-types/no-type.tsx", "../../../packages/dataviews/src/field-types/utils/get-is-valid.ts", "../../../packages/dataviews/src/field-types/utils/get-format.ts", "../../../packages/dataviews/src/field-types/index.tsx", "../../../packages/dataviews/src/dataform/index.tsx", "../../../packages/dataviews/src/components/dataform-context/index.tsx", "../../../packages/dataviews/src/components/dataform-layouts/data-form-layout.tsx", "../../../packages/dataviews/src/components/dataform-layouts/regular/index.tsx", "../../../packages/dataviews/src/components/dataform-layouts/normalize-form.ts", "../../../packages/dataviews/src/components/dataform-layouts/panel/index.tsx", "../../../packages/dataviews/src/components/dataform-layouts/panel/dropdown.tsx", "../../../packages/dataviews/src/components/dataform-layouts/panel/summary-button.tsx", "../../../packages/dataviews/src/components/dataform-layouts/panel/modal.tsx", "../../../packages/dataviews/src/hooks/use-form-validity.ts", "../../../packages/dataviews/src/components/dataform-layouts/get-summary-fields.ts", "../../../packages/dataviews/src/components/dataform-layouts/card/index.tsx", "../../../packages/dataviews/src/components/dataform-layouts/row/index.tsx", "../../../packages/dataviews/src/components/dataform-layouts/details/index.tsx", "../../../packages/dataviews/src/components/dataform-layouts/index.tsx", "../../../packages/dataviews/src/utils/filter-sort-and-paginate.ts", "../../../node_modules/dequal/dist/index.mjs", "../../../packages/views/src/preference-keys.ts", "../../../packages/views/src/use-view.ts", "../../../packages/views/src/load-view.ts", "../../../packages/edit-site/src/components/page-patterns/use-pattern-settings.js", "../../../packages/edit-site/src/components/page-patterns/actions.js", "../../../packages/edit-site/src/components/add-new-pattern/index.js", "../../../packages/edit-site/src/components/page-patterns/rename-category-menu-item.js", "../../../packages/edit-site/src/components/page-patterns/delete-category-menu-item.js", "../../../packages/edit-site/src/components/dataviews-actions/index.js", "../../../packages/edit-site/src/components/page-patterns/fields.js", "../../../packages/edit-site/src/components/page-templates/hooks.js", "../../../packages/edit-site/src/components/site-editor-routes/patterns.js", "../../../packages/edit-site/src/components/site-editor-routes/pattern-item.js", "../../../packages/edit-site/src/components/site-editor-routes/template-part-item.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-templates-browse/index.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-templates-browse/content.js", "../../../packages/edit-site/src/components/sidebar-navigation-screen-templates-browse/content-legacy.js", "../../../packages/edit-site/src/components/page-templates/index.js", "../../../packages/edit-site/src/components/add-new-template/index.js", "../../../packages/edit-site/src/components/add-new-template/add-custom-template-modal-content.js", "../../../packages/edit-site/src/components/add-new-template/utils.js", "../../../node_modules/tslib/tslib.es6.mjs", "../../../node_modules/lower-case/src/index.ts", "../../../node_modules/no-case/src/index.ts", "../../../node_modules/dot-case/src/index.ts", "../../../node_modules/param-case/src/index.ts", "../../../packages/edit-site/src/components/add-new-template/add-custom-generic-template-modal-content.js", "../../../packages/edit-site/src/components/page-templates/fields.js", "../../../packages/edit-site/src/components/page-templates/view-utils.js", "../../../packages/edit-site/src/components/page-templates/index-legacy.js", "../../../packages/edit-site/src/components/add-new-template-legacy/index.js", "../../../packages/edit-site/src/components/add-new-template-legacy/add-custom-template-modal-content.js", "../../../packages/edit-site/src/components/add-new-template-legacy/utils.js", "../../../packages/edit-site/src/components/add-new-template-legacy/add-custom-generic-template-modal-content.js", "../../../packages/edit-site/src/components/site-editor-routes/templates.js", "../../../packages/edit-site/src/components/site-editor-routes/template-item.js", "../../../packages/edit-site/src/components/site-editor-routes/pages.js", "../../../packages/edit-site/src/components/sidebar-dataviews/index.js", "../../../packages/edit-site/src/components/sidebar-dataviews/dataview-item.js", "../../../packages/edit-site/src/components/post-list/view-utils.js", "../../../packages/edit-site/src/components/post-list/index.js", "../../../packages/edit-site/src/components/add-new-post/index.js", "../../../packages/edit-site/src/components/post-list/use-notes-count.js", "../../../packages/edit-site/src/components/post-edit/index.js", "../../../packages/edit-site/src/components/site-editor-routes/page-item.js", "../../../packages/edit-site/src/components/site-editor-routes/stylebook.js", "../../../packages/edit-site/src/components/site-editor-routes/notfound.js", "../../../packages/edit-site/src/deprecated.js"],
  "sourcesContent": ["module.exports = window.wp.blocks;", "module.exports = window.wp.blockLibrary;", "module.exports = window.wp.data;", "module.exports = window.wp.deprecated;", "module.exports = window.wp.element;", "module.exports = window.wp.editor;", "module.exports = window.wp.preferences;", "module.exports = window.wp.widgets;", "module.exports = window.wp.coreData;", "module.exports = window.wp.blockEditor;", "module.exports = window.wp.i18n;", "module.exports = window.wp.patterns;", "module.exports = window.wp.privateApis;", "module.exports = window.wp.router;", "module.exports = window.wp.components;", "module.exports = window.ReactJSXRuntime;", "module.exports = window.wp.compose;", "module.exports = window.wp.plugins;", "module.exports = window.wp.notices;", "module.exports = window.wp.htmlEntities;", "module.exports = window.wp.primitives;", "module.exports = window.wp.commands;", "module.exports = window.wp.keycodes;", "module.exports = window.wp.url;", "module.exports = window.wp.dom;", "module.exports = window.wp.keyboardShortcuts;", "module.exports = window.React;", "module.exports = window.ReactDOM;", "module.exports = window.wp.apiFetch;", "module.exports = window.wp.styleEngine;", "'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n  var envHasBigInt64Array = typeof BigInt64Array !== 'undefined';\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n    if ((a instanceof Map) && (b instanceof Map)) {\n      if (a.size !== b.size) return false;\n      for (i of a.entries())\n        if (!b.has(i[0])) return false;\n      for (i of a.entries())\n        if (!equal(i[1], b.get(i[0]))) return false;\n      return true;\n    }\n\n    if ((a instanceof Set) && (b instanceof Set)) {\n      if (a.size !== b.size) return false;\n      for (i of a.entries())\n        if (!b.has(i[0])) return false;\n      return true;\n    }\n\n    if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (a[i] !== b[i]) return false;\n      return true;\n    }\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n", "'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n", "module.exports = window.wp.a11y;", "module.exports = window.wp.date;", "module.exports = window.wp.blob;", "/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n  (function () {\n    function is(x, y) {\n      return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n    }\n    function useSyncExternalStore$2(subscribe, getSnapshot) {\n      didWarnOld18Alpha ||\n        void 0 === React.startTransition ||\n        ((didWarnOld18Alpha = !0),\n        console.error(\n          \"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.\"\n        ));\n      var value = getSnapshot();\n      if (!didWarnUncachedGetSnapshot) {\n        var cachedValue = getSnapshot();\n        objectIs(value, cachedValue) ||\n          (console.error(\n            \"The result of getSnapshot should be cached to avoid an infinite loop\"\n          ),\n          (didWarnUncachedGetSnapshot = !0));\n      }\n      cachedValue = useState({\n        inst: { value: value, getSnapshot: getSnapshot }\n      });\n      var inst = cachedValue[0].inst,\n        forceUpdate = cachedValue[1];\n      useLayoutEffect(\n        function () {\n          inst.value = value;\n          inst.getSnapshot = getSnapshot;\n          checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n        },\n        [subscribe, value, getSnapshot]\n      );\n      useEffect(\n        function () {\n          checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n          return subscribe(function () {\n            checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n          });\n        },\n        [subscribe]\n      );\n      useDebugValue(value);\n      return value;\n    }\n    function checkIfSnapshotChanged(inst) {\n      var latestGetSnapshot = inst.getSnapshot;\n      inst = inst.value;\n      try {\n        var nextValue = latestGetSnapshot();\n        return !objectIs(inst, nextValue);\n      } catch (error) {\n        return !0;\n      }\n    }\n    function useSyncExternalStore$1(subscribe, getSnapshot) {\n      return getSnapshot();\n    }\n    \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n      \"function\" ===\n        typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n      __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n    var React = require(\"react\"),\n      objectIs = \"function\" === typeof Object.is ? Object.is : is,\n      useState = React.useState,\n      useEffect = React.useEffect,\n      useLayoutEffect = React.useLayoutEffect,\n      useDebugValue = React.useDebugValue,\n      didWarnOld18Alpha = !1,\n      didWarnUncachedGetSnapshot = !1,\n      shim =\n        \"undefined\" === typeof window ||\n        \"undefined\" === typeof window.document ||\n        \"undefined\" === typeof window.document.createElement\n          ? useSyncExternalStore$1\n          : useSyncExternalStore$2;\n    exports.useSyncExternalStore =\n      void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n    \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n      \"function\" ===\n        typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n      __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n  })();\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n  module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n", "var characterMap = {\n\t\"\u00C0\": \"A\",\n\t\"\u00C1\": \"A\",\n\t\"\u00C2\": \"A\",\n\t\"\u00C3\": \"A\",\n\t\"\u00C4\": \"A\",\n\t\"\u00C5\": \"A\",\n\t\"\u1EA4\": \"A\",\n\t\"\u1EAE\": \"A\",\n\t\"\u1EB2\": \"A\",\n\t\"\u1EB4\": \"A\",\n\t\"\u1EB6\": \"A\",\n\t\"\u00C6\": \"AE\",\n\t\"\u1EA6\": \"A\",\n\t\"\u1EB0\": \"A\",\n\t\"\u0202\": \"A\",\n\t\"\u1EA2\": \"A\",\n\t\"\u1EA0\": \"A\",\n\t\"\u1EA8\": \"A\",\n\t\"\u1EAA\": \"A\",\n\t\"\u1EAC\": \"A\",\n\t\"\u00C7\": \"C\",\n\t\"\u1E08\": \"C\",\n\t\"\u00C8\": \"E\",\n\t\"\u00C9\": \"E\",\n\t\"\u00CA\": \"E\",\n\t\"\u00CB\": \"E\",\n\t\"\u1EBE\": \"E\",\n\t\"\u1E16\": \"E\",\n\t\"\u1EC0\": \"E\",\n\t\"\u1E14\": \"E\",\n\t\"\u1E1C\": \"E\",\n\t\"\u0206\": \"E\",\n\t\"\u1EBA\": \"E\",\n\t\"\u1EBC\": \"E\",\n\t\"\u1EB8\": \"E\",\n\t\"\u1EC2\": \"E\",\n\t\"\u1EC4\": \"E\",\n\t\"\u1EC6\": \"E\",\n\t\"\u00CC\": \"I\",\n\t\"\u00CD\": \"I\",\n\t\"\u00CE\": \"I\",\n\t\"\u00CF\": \"I\",\n\t\"\u1E2E\": \"I\",\n\t\"\u020A\": \"I\",\n\t\"\u1EC8\": \"I\",\n\t\"\u1ECA\": \"I\",\n\t\"\u00D0\": \"D\",\n\t\"\u00D1\": \"N\",\n\t\"\u00D2\": \"O\",\n\t\"\u00D3\": \"O\",\n\t\"\u00D4\": \"O\",\n\t\"\u00D5\": \"O\",\n\t\"\u00D6\": \"O\",\n\t\"\u00D8\": \"O\",\n\t\"\u1ED0\": \"O\",\n\t\"\u1E4C\": \"O\",\n\t\"\u1E52\": \"O\",\n\t\"\u020E\": \"O\",\n\t\"\u1ECE\": \"O\",\n\t\"\u1ECC\": \"O\",\n\t\"\u1ED4\": \"O\",\n\t\"\u1ED6\": \"O\",\n\t\"\u1ED8\": \"O\",\n\t\"\u1EDC\": \"O\",\n\t\"\u1EDE\": \"O\",\n\t\"\u1EE0\": \"O\",\n\t\"\u1EDA\": \"O\",\n\t\"\u1EE2\": \"O\",\n\t\"\u00D9\": \"U\",\n\t\"\u00DA\": \"U\",\n\t\"\u00DB\": \"U\",\n\t\"\u00DC\": \"U\",\n\t\"\u1EE6\": \"U\",\n\t\"\u1EE4\": \"U\",\n\t\"\u1EEC\": \"U\",\n\t\"\u1EEE\": \"U\",\n\t\"\u1EF0\": \"U\",\n\t\"\u00DD\": \"Y\",\n\t\"\u00E0\": \"a\",\n\t\"\u00E1\": \"a\",\n\t\"\u00E2\": \"a\",\n\t\"\u00E3\": \"a\",\n\t\"\u00E4\": \"a\",\n\t\"\u00E5\": \"a\",\n\t\"\u1EA5\": \"a\",\n\t\"\u1EAF\": \"a\",\n\t\"\u1EB3\": \"a\",\n\t\"\u1EB5\": \"a\",\n\t\"\u1EB7\": \"a\",\n\t\"\u00E6\": \"ae\",\n\t\"\u1EA7\": \"a\",\n\t\"\u1EB1\": \"a\",\n\t\"\u0203\": \"a\",\n\t\"\u1EA3\": \"a\",\n\t\"\u1EA1\": \"a\",\n\t\"\u1EA9\": \"a\",\n\t\"\u1EAB\": \"a\",\n\t\"\u1EAD\": \"a\",\n\t\"\u00E7\": \"c\",\n\t\"\u1E09\": \"c\",\n\t\"\u00E8\": \"e\",\n\t\"\u00E9\": \"e\",\n\t\"\u00EA\": \"e\",\n\t\"\u00EB\": \"e\",\n\t\"\u1EBF\": \"e\",\n\t\"\u1E17\": \"e\",\n\t\"\u1EC1\": \"e\",\n\t\"\u1E15\": \"e\",\n\t\"\u1E1D\": \"e\",\n\t\"\u0207\": \"e\",\n\t\"\u1EBB\": \"e\",\n\t\"\u1EBD\": \"e\",\n\t\"\u1EB9\": \"e\",\n\t\"\u1EC3\": \"e\",\n\t\"\u1EC5\": \"e\",\n\t\"\u1EC7\": \"e\",\n\t\"\u00EC\": \"i\",\n\t\"\u00ED\": \"i\",\n\t\"\u00EE\": \"i\",\n\t\"\u00EF\": \"i\",\n\t\"\u1E2F\": \"i\",\n\t\"\u020B\": \"i\",\n\t\"\u1EC9\": \"i\",\n\t\"\u1ECB\": \"i\",\n\t\"\u00F0\": \"d\",\n\t\"\u00F1\": \"n\",\n\t\"\u00F2\": \"o\",\n\t\"\u00F3\": \"o\",\n\t\"\u00F4\": \"o\",\n\t\"\u00F5\": \"o\",\n\t\"\u00F6\": \"o\",\n\t\"\u00F8\": \"o\",\n\t\"\u1ED1\": \"o\",\n\t\"\u1E4D\": \"o\",\n\t\"\u1E53\": \"o\",\n\t\"\u020F\": \"o\",\n\t\"\u1ECF\": \"o\",\n\t\"\u1ECD\": \"o\",\n\t\"\u1ED5\": \"o\",\n\t\"\u1ED7\": \"o\",\n\t\"\u1ED9\": \"o\",\n\t\"\u1EDD\": \"o\",\n\t\"\u1EDF\": \"o\",\n\t\"\u1EE1\": \"o\",\n\t\"\u1EDB\": \"o\",\n\t\"\u1EE3\": \"o\",\n\t\"\u00F9\": \"u\",\n\t\"\u00FA\": \"u\",\n\t\"\u00FB\": \"u\",\n\t\"\u00FC\": \"u\",\n\t\"\u1EE7\": \"u\",\n\t\"\u1EE5\": \"u\",\n\t\"\u1EED\": \"u\",\n\t\"\u1EEF\": \"u\",\n\t\"\u1EF1\": \"u\",\n\t\"\u00FD\": \"y\",\n\t\"\u00FF\": \"y\",\n\t\"\u0100\": \"A\",\n\t\"\u0101\": \"a\",\n\t\"\u0102\": \"A\",\n\t\"\u0103\": \"a\",\n\t\"\u0104\": \"A\",\n\t\"\u0105\": \"a\",\n\t\"\u0106\": \"C\",\n\t\"\u0107\": \"c\",\n\t\"\u0108\": \"C\",\n\t\"\u0109\": \"c\",\n\t\"\u010A\": \"C\",\n\t\"\u010B\": \"c\",\n\t\"\u010C\": \"C\",\n\t\"\u010D\": \"c\",\n\t\"C\u0306\": \"C\",\n\t\"c\u0306\": \"c\",\n\t\"\u010E\": \"D\",\n\t\"\u010F\": \"d\",\n\t\"\u0110\": \"D\",\n\t\"\u0111\": \"d\",\n\t\"\u0112\": \"E\",\n\t\"\u0113\": \"e\",\n\t\"\u0114\": \"E\",\n\t\"\u0115\": \"e\",\n\t\"\u0116\": \"E\",\n\t\"\u0117\": \"e\",\n\t\"\u0118\": \"E\",\n\t\"\u0119\": \"e\",\n\t\"\u011A\": \"E\",\n\t\"\u011B\": \"e\",\n\t\"\u011C\": \"G\",\n\t\"\u01F4\": \"G\",\n\t\"\u011D\": \"g\",\n\t\"\u01F5\": \"g\",\n\t\"\u011E\": \"G\",\n\t\"\u011F\": \"g\",\n\t\"\u0120\": \"G\",\n\t\"\u0121\": \"g\",\n\t\"\u0122\": \"G\",\n\t\"\u0123\": \"g\",\n\t\"\u0124\": \"H\",\n\t\"\u0125\": \"h\",\n\t\"\u0126\": \"H\",\n\t\"\u0127\": \"h\",\n\t\"\u1E2A\": \"H\",\n\t\"\u1E2B\": \"h\",\n\t\"\u0128\": \"I\",\n\t\"\u0129\": \"i\",\n\t\"\u012A\": \"I\",\n\t\"\u012B\": \"i\",\n\t\"\u012C\": \"I\",\n\t\"\u012D\": \"i\",\n\t\"\u012E\": \"I\",\n\t\"\u012F\": \"i\",\n\t\"\u0130\": \"I\",\n\t\"\u0131\": \"i\",\n\t\"\u0132\": \"IJ\",\n\t\"\u0133\": \"ij\",\n\t\"\u0134\": \"J\",\n\t\"\u0135\": \"j\",\n\t\"\u0136\": \"K\",\n\t\"\u0137\": \"k\",\n\t\"\u1E30\": \"K\",\n\t\"\u1E31\": \"k\",\n\t\"K\u0306\": \"K\",\n\t\"k\u0306\": \"k\",\n\t\"\u0139\": \"L\",\n\t\"\u013A\": \"l\",\n\t\"\u013B\": \"L\",\n\t\"\u013C\": \"l\",\n\t\"\u013D\": \"L\",\n\t\"\u013E\": \"l\",\n\t\"\u013F\": \"L\",\n\t\"\u0140\": \"l\",\n\t\"\u0141\": \"l\",\n\t\"\u0142\": \"l\",\n\t\"\u1E3E\": \"M\",\n\t\"\u1E3F\": \"m\",\n\t\"M\u0306\": \"M\",\n\t\"m\u0306\": \"m\",\n\t\"\u0143\": \"N\",\n\t\"\u0144\": \"n\",\n\t\"\u0145\": \"N\",\n\t\"\u0146\": \"n\",\n\t\"\u0147\": \"N\",\n\t\"\u0148\": \"n\",\n\t\"\u0149\": \"n\",\n\t\"N\u0306\": \"N\",\n\t\"n\u0306\": \"n\",\n\t\"\u014C\": \"O\",\n\t\"\u014D\": \"o\",\n\t\"\u014E\": \"O\",\n\t\"\u014F\": \"o\",\n\t\"\u0150\": \"O\",\n\t\"\u0151\": \"o\",\n\t\"\u0152\": \"OE\",\n\t\"\u0153\": \"oe\",\n\t\"P\u0306\": \"P\",\n\t\"p\u0306\": \"p\",\n\t\"\u0154\": \"R\",\n\t\"\u0155\": \"r\",\n\t\"\u0156\": \"R\",\n\t\"\u0157\": \"r\",\n\t\"\u0158\": \"R\",\n\t\"\u0159\": \"r\",\n\t\"R\u0306\": \"R\",\n\t\"r\u0306\": \"r\",\n\t\"\u0212\": \"R\",\n\t\"\u0213\": \"r\",\n\t\"\u015A\": \"S\",\n\t\"\u015B\": \"s\",\n\t\"\u015C\": \"S\",\n\t\"\u015D\": \"s\",\n\t\"\u015E\": \"S\",\n\t\"\u0218\": \"S\",\n\t\"\u0219\": \"s\",\n\t\"\u015F\": \"s\",\n\t\"\u0160\": \"S\",\n\t\"\u0161\": \"s\",\n\t\"\u0162\": \"T\",\n\t\"\u0163\": \"t\",\n\t\"\u021B\": \"t\",\n\t\"\u021A\": \"T\",\n\t\"\u0164\": \"T\",\n\t\"\u0165\": \"t\",\n\t\"\u0166\": \"T\",\n\t\"\u0167\": \"t\",\n\t\"T\u0306\": \"T\",\n\t\"t\u0306\": \"t\",\n\t\"\u0168\": \"U\",\n\t\"\u0169\": \"u\",\n\t\"\u016A\": \"U\",\n\t\"\u016B\": \"u\",\n\t\"\u016C\": \"U\",\n\t\"\u016D\": \"u\",\n\t\"\u016E\": \"U\",\n\t\"\u016F\": \"u\",\n\t\"\u0170\": \"U\",\n\t\"\u0171\": \"u\",\n\t\"\u0172\": \"U\",\n\t\"\u0173\": \"u\",\n\t\"\u0216\": \"U\",\n\t\"\u0217\": \"u\",\n\t\"V\u0306\": \"V\",\n\t\"v\u0306\": \"v\",\n\t\"\u0174\": \"W\",\n\t\"\u0175\": \"w\",\n\t\"\u1E82\": \"W\",\n\t\"\u1E83\": \"w\",\n\t\"X\u0306\": \"X\",\n\t\"x\u0306\": \"x\",\n\t\"\u0176\": \"Y\",\n\t\"\u0177\": \"y\",\n\t\"\u0178\": \"Y\",\n\t\"Y\u0306\": \"Y\",\n\t\"y\u0306\": \"y\",\n\t\"\u0179\": \"Z\",\n\t\"\u017A\": \"z\",\n\t\"\u017B\": \"Z\",\n\t\"\u017C\": \"z\",\n\t\"\u017D\": \"Z\",\n\t\"\u017E\": \"z\",\n\t\"\u017F\": \"s\",\n\t\"\u0192\": \"f\",\n\t\"\u01A0\": \"O\",\n\t\"\u01A1\": \"o\",\n\t\"\u01AF\": \"U\",\n\t\"\u01B0\": \"u\",\n\t\"\u01CD\": \"A\",\n\t\"\u01CE\": \"a\",\n\t\"\u01CF\": \"I\",\n\t\"\u01D0\": \"i\",\n\t\"\u01D1\": \"O\",\n\t\"\u01D2\": \"o\",\n\t\"\u01D3\": \"U\",\n\t\"\u01D4\": \"u\",\n\t\"\u01D5\": \"U\",\n\t\"\u01D6\": \"u\",\n\t\"\u01D7\": \"U\",\n\t\"\u01D8\": \"u\",\n\t\"\u01D9\": \"U\",\n\t\"\u01DA\": \"u\",\n\t\"\u01DB\": \"U\",\n\t\"\u01DC\": \"u\",\n\t\"\u1EE8\": \"U\",\n\t\"\u1EE9\": \"u\",\n\t\"\u1E78\": \"U\",\n\t\"\u1E79\": \"u\",\n\t\"\u01FA\": \"A\",\n\t\"\u01FB\": \"a\",\n\t\"\u01FC\": \"AE\",\n\t\"\u01FD\": \"ae\",\n\t\"\u01FE\": \"O\",\n\t\"\u01FF\": \"o\",\n\t\"\u00DE\": \"TH\",\n\t\"\u00FE\": \"th\",\n\t\"\u1E54\": \"P\",\n\t\"\u1E55\": \"p\",\n\t\"\u1E64\": \"S\",\n\t\"\u1E65\": \"s\",\n\t\"X\u0301\": \"X\",\n\t\"x\u0301\": \"x\",\n\t\"\u0403\": \"\u0413\",\n\t\"\u0453\": \"\u0433\",\n\t\"\u040C\": \"\u041A\",\n\t\"\u045C\": \"\u043A\",\n\t\"A\u030B\": \"A\",\n\t\"a\u030B\": \"a\",\n\t\"E\u030B\": \"E\",\n\t\"e\u030B\": \"e\",\n\t\"I\u030B\": \"I\",\n\t\"i\u030B\": \"i\",\n\t\"\u01F8\": \"N\",\n\t\"\u01F9\": \"n\",\n\t\"\u1ED2\": \"O\",\n\t\"\u1ED3\": \"o\",\n\t\"\u1E50\": \"O\",\n\t\"\u1E51\": \"o\",\n\t\"\u1EEA\": \"U\",\n\t\"\u1EEB\": \"u\",\n\t\"\u1E80\": \"W\",\n\t\"\u1E81\": \"w\",\n\t\"\u1EF2\": \"Y\",\n\t\"\u1EF3\": \"y\",\n\t\"\u0200\": \"A\",\n\t\"\u0201\": \"a\",\n\t\"\u0204\": \"E\",\n\t\"\u0205\": \"e\",\n\t\"\u0208\": \"I\",\n\t\"\u0209\": \"i\",\n\t\"\u020C\": \"O\",\n\t\"\u020D\": \"o\",\n\t\"\u0210\": \"R\",\n\t\"\u0211\": \"r\",\n\t\"\u0214\": \"U\",\n\t\"\u0215\": \"u\",\n\t\"B\u030C\": \"B\",\n\t\"b\u030C\": \"b\",\n\t\"\u010C\u0323\": \"C\",\n\t\"\u010D\u0323\": \"c\",\n\t\"\u00CA\u030C\": \"E\",\n\t\"\u00EA\u030C\": \"e\",\n\t\"F\u030C\": \"F\",\n\t\"f\u030C\": \"f\",\n\t\"\u01E6\": \"G\",\n\t\"\u01E7\": \"g\",\n\t\"\u021E\": \"H\",\n\t\"\u021F\": \"h\",\n\t\"J\u030C\": \"J\",\n\t\"\u01F0\": \"j\",\n\t\"\u01E8\": \"K\",\n\t\"\u01E9\": \"k\",\n\t\"M\u030C\": \"M\",\n\t\"m\u030C\": \"m\",\n\t\"P\u030C\": \"P\",\n\t\"p\u030C\": \"p\",\n\t\"Q\u030C\": \"Q\",\n\t\"q\u030C\": \"q\",\n\t\"\u0158\u0329\": \"R\",\n\t\"\u0159\u0329\": \"r\",\n\t\"\u1E66\": \"S\",\n\t\"\u1E67\": \"s\",\n\t\"V\u030C\": \"V\",\n\t\"v\u030C\": \"v\",\n\t\"W\u030C\": \"W\",\n\t\"w\u030C\": \"w\",\n\t\"X\u030C\": \"X\",\n\t\"x\u030C\": \"x\",\n\t\"Y\u030C\": \"Y\",\n\t\"y\u030C\": \"y\",\n\t\"A\u0327\": \"A\",\n\t\"a\u0327\": \"a\",\n\t\"B\u0327\": \"B\",\n\t\"b\u0327\": \"b\",\n\t\"\u1E10\": \"D\",\n\t\"\u1E11\": \"d\",\n\t\"\u0228\": \"E\",\n\t\"\u0229\": \"e\",\n\t\"\u0190\u0327\": \"E\",\n\t\"\u025B\u0327\": \"e\",\n\t\"\u1E28\": \"H\",\n\t\"\u1E29\": \"h\",\n\t\"I\u0327\": \"I\",\n\t\"i\u0327\": \"i\",\n\t\"\u0197\u0327\": \"I\",\n\t\"\u0268\u0327\": \"i\",\n\t\"M\u0327\": \"M\",\n\t\"m\u0327\": \"m\",\n\t\"O\u0327\": \"O\",\n\t\"o\u0327\": \"o\",\n\t\"Q\u0327\": \"Q\",\n\t\"q\u0327\": \"q\",\n\t\"U\u0327\": \"U\",\n\t\"u\u0327\": \"u\",\n\t\"X\u0327\": \"X\",\n\t\"x\u0327\": \"x\",\n\t\"Z\u0327\": \"Z\",\n\t\"z\u0327\": \"z\",\n\t\"\u0439\":\"\u0438\",\n\t\"\u0419\":\"\u0418\",\n\t\"\u0451\":\"\u0435\",\n\t\"\u0401\":\"\u0415\",\n};\n\nvar chars = Object.keys(characterMap).join('|');\nvar allAccents = new RegExp(chars, 'g');\nvar firstAccent = new RegExp(chars, '');\n\nfunction matcher(match) {\n\treturn characterMap[match];\n}\n\nvar removeAccents = function(string) {\n\treturn string.replace(allAccents, matcher);\n};\n\nvar hasAccents = function(string) {\n\treturn !!string.match(firstAccent);\n};\n\nmodule.exports = removeAccents;\nmodule.exports.has = hasAccents;\nmodule.exports.remove = removeAccents;\n", "module.exports = window.wp.warning;", "/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport {\n\tregisterCoreBlocks,\n\t__experimentalGetCoreBlocks,\n\t__experimentalRegisterExperimentalCoreBlocks,\n} from '@wordpress/block-library';\nimport { dispatch } from '@wordpress/data';\nimport deprecated from '@wordpress/deprecated';\nimport { createRoot, StrictMode } from '@wordpress/element';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport {\n\tregisterLegacyWidgetBlock,\n\tregisterWidgetGroupBlock,\n} from '@wordpress/widgets';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from './store';\nimport { unlock } from './lock-unlock';\nimport App from './components/app';\n\nconst { registerCoreBlockBindingsSources } = unlock( editorPrivateApis );\n\n/**\n * Initializes the site editor screen.\n *\n * @param {string} id       ID of the root element to render the screen in.\n * @param {Object} settings Editor settings.\n */\nexport function initializeEditor( id, settings ) {\n\tconst target = document.getElementById( id );\n\tconst root = createRoot( target );\n\n\tdispatch( blocksStore ).reapplyBlockTypeFilters();\n\tconst coreBlocks = __experimentalGetCoreBlocks().filter(\n\t\t( { name } ) => name !== 'core/freeform'\n\t);\n\tregisterCoreBlocks( coreBlocks );\n\tregisterCoreBlockBindingsSources();\n\tdispatch( blocksStore ).setFreeformFallbackBlockName( 'core/html' );\n\tregisterLegacyWidgetBlock( { inserter: false } );\n\tregisterWidgetGroupBlock( { inserter: false } );\n\tif ( globalThis.IS_GUTENBERG_PLUGIN ) {\n\t\t__experimentalRegisterExperimentalCoreBlocks( {\n\t\t\tenableFSEBlocks: true,\n\t\t} );\n\t}\n\n\t// We dispatch actions and update the store synchronously before rendering\n\t// so that we won't trigger unnecessary re-renders with useEffect.\n\tdispatch( preferencesStore ).setDefaults( 'core/edit-site', {\n\t\twelcomeGuide: true,\n\t\twelcomeGuideStyles: true,\n\t\twelcomeGuidePage: true,\n\t\twelcomeGuideTemplate: true,\n\t} );\n\n\tdispatch( preferencesStore ).setDefaults( 'core', {\n\t\tallowRightClickOverrides: true,\n\t\tdistractionFree: false,\n\t\teditorMode: 'visual',\n\t\teditorTool: 'edit',\n\t\tfixedToolbar: false,\n\t\tfocusMode: false,\n\t\tinactivePanels: [],\n\t\tkeepCaretInsideBlock: false,\n\t\topenPanels: [ 'post-status' ],\n\t\tshowBlockBreadcrumbs: true,\n\t\tshowListViewByDefault: false,\n\t\tenableChoosePatternModal: true,\n\t} );\n\n\tif ( window.__experimentalMediaProcessing ) {\n\t\tdispatch( preferencesStore ).setDefaults( 'core/media', {\n\t\t\trequireApproval: true,\n\t\t\toptimizeOnUpload: true,\n\t\t} );\n\t}\n\n\tdispatch( editSiteStore ).updateSettings( settings );\n\n\t// Prevent the default browser action for files dropped outside of dropzones.\n\twindow.addEventListener( 'dragover', ( e ) => e.preventDefault(), false );\n\twindow.addEventListener( 'drop', ( e ) => e.preventDefault(), false );\n\n\troot.render(\n\t\t<StrictMode>\n\t\t\t<App />\n\t\t</StrictMode>\n\t);\n\n\treturn root;\n}\n\nexport function reinitializeEditor() {\n\tdeprecated( 'wp.editSite.reinitializeEditor', {\n\t\tsince: '6.2',\n\t\tversion: '6.3',\n\t} );\n}\n\nexport { default as PluginTemplateSettingPanel } from './components/plugin-template-setting-panel';\nexport { store } from './store';\nexport * from './deprecated';\n", "/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport reducer from './reducer';\nimport * as actions from './actions';\nimport * as privateActions from './private-actions';\nimport * as selectors from './selectors';\nimport * as privateSelectors from './private-selectors';\nimport { STORE_NAME } from './constants';\nimport { unlock } from '../lock-unlock';\n\nexport const storeConfig = {\n\treducer,\n\tactions,\n\tselectors,\n};\n\nexport const store = createReduxStore( STORE_NAME, storeConfig );\nregister( store );\nunlock( store ).registerPrivateSelectors( privateSelectors );\nunlock( store ).registerPrivateActions( privateActions );\n", "/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\n\n/**\n * Reducer returning the settings.\n *\n * @param {Object} state  Current state.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function settings( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'UPDATE_SETTINGS':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\t...action.settings,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer keeping track of the currently edited Post Type,\n * Post Id and the context provided to fill the content of the block editor.\n *\n * @param {Object} state  Current edited post.\n * @param {Object} action Dispatched action.\n *\n * @return {Object} Updated state.\n */\nexport function editedPost( state = {}, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_EDITED_POST':\n\t\t\treturn {\n\t\t\t\tpostType: action.postType,\n\t\t\t\tid: action.id,\n\t\t\t\tcontext: action.context,\n\t\t\t};\n\t\tcase 'SET_EDITED_POST_CONTEXT':\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tcontext: action.context,\n\t\t\t};\n\t}\n\n\treturn state;\n}\n\n/**\n * Reducer to set the save view panel open or closed.\n *\n * @param {Object} state  Current state.\n * @param {Object} action Dispatched action.\n */\nexport function saveViewPanel( state = false, action ) {\n\tswitch ( action.type ) {\n\t\tcase 'SET_IS_SAVE_VIEW_OPENED':\n\t\t\treturn action.isOpen;\n\t}\n\treturn state;\n}\n\nfunction routes( state = [], action ) {\n\tswitch ( action.type ) {\n\t\tcase 'REGISTER_ROUTE':\n\t\t\treturn [ ...state, action.route ];\n\t\tcase 'UNREGISTER_ROUTE':\n\t\t\treturn state.filter( ( route ) => route.name !== action.name );\n\t}\n\n\treturn state;\n}\n\nexport default combineReducers( {\n\tsettings,\n\teditedPost,\n\tsaveViewPanel,\n\troutes,\n} );\n", "/**\n * WordPress dependencies\n */\nimport { parse } from '@wordpress/blocks';\nimport deprecated from '@wordpress/deprecated';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport {\n\tstore as editorStore,\n\tprivateApis as editorPrivateApis,\n} from '@wordpress/editor';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport {\n\tTEMPLATE_POST_TYPE,\n\tTEMPLATE_PART_POST_TYPE,\n\tNAVIGATION_POST_TYPE,\n} from '../utils/constants';\nimport { unlock } from '../lock-unlock';\n\nconst { interfaceStore } = unlock( editorPrivateApis );\n\n/**\n * Dispatches an action that toggles a feature flag.\n *\n * @param {string} featureName Feature name.\n */\nexport function toggleFeature( featureName ) {\n\treturn function ( { registry } ) {\n\t\tdeprecated(\n\t\t\t\"dispatch( 'core/edit-site' ).toggleFeature( featureName )\",\n\t\t\t{\n\t\t\t\tsince: '6.0',\n\t\t\t\talternative:\n\t\t\t\t\t\"dispatch( 'core/preferences').toggle( 'core/edit-site', featureName )\",\n\t\t\t}\n\t\t);\n\n\t\tregistry\n\t\t\t.dispatch( preferencesStore )\n\t\t\t.toggle( 'core/edit-site', featureName );\n\t};\n}\n\n/**\n * Action that changes the width of the editing canvas.\n *\n * @deprecated\n *\n * @param {string} deviceType\n *\n * @return {Object} Action object.\n */\nexport const __experimentalSetPreviewDeviceType =\n\t( deviceType ) =>\n\t( { registry } ) => {\n\t\tdeprecated(\n\t\t\t\"dispatch( 'core/edit-site' ).__experimentalSetPreviewDeviceType\",\n\t\t\t{\n\t\t\t\tsince: '6.5',\n\t\t\t\tversion: '6.7',\n\t\t\t\thint: 'registry.dispatch( editorStore ).setDeviceType',\n\t\t\t}\n\t\t);\n\t\tregistry.dispatch( editorStore ).setDeviceType( deviceType );\n\t};\n\n/**\n * Action that sets a template, optionally fetching it from REST API.\n *\n * @return {Object} Action object.\n */\nexport function setTemplate() {\n\tdeprecated( \"dispatch( 'core/edit-site' ).setTemplate\", {\n\t\tsince: '6.5',\n\t\tversion: '6.8',\n\t\thint: 'The setTemplate is not needed anymore, the correct entity is resolved from the URL automatically.',\n\t} );\n\n\treturn {\n\t\ttype: 'NOTHING',\n\t};\n}\n\n/**\n * Action that adds a new template and sets it as the current template.\n *\n * @param {Object} template The template.\n *\n * @deprecated\n *\n * @return {Object} Action object used to set the current template.\n */\nexport const addTemplate =\n\t( template ) =>\n\tasync ( { dispatch, registry } ) => {\n\t\tdeprecated( \"dispatch( 'core/edit-site' ).addTemplate\", {\n\t\t\tsince: '6.5',\n\t\t\tversion: '6.8',\n\t\t\thint: 'use saveEntityRecord directly',\n\t\t} );\n\n\t\tconst newTemplate = await registry\n\t\t\t.dispatch( coreStore )\n\t\t\t.saveEntityRecord( 'postType', TEMPLATE_POST_TYPE, template );\n\n\t\tif ( template.content ) {\n\t\t\tregistry\n\t\t\t\t.dispatch( coreStore )\n\t\t\t\t.editEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t\tnewTemplate.id,\n\t\t\t\t\t{ blocks: parse( template.content ) },\n\t\t\t\t\t{ undoIgnore: true }\n\t\t\t\t);\n\t\t}\n\n\t\tdispatch( {\n\t\t\ttype: 'SET_EDITED_POST',\n\t\t\tpostType: TEMPLATE_POST_TYPE,\n\t\t\tid: newTemplate.id,\n\t\t} );\n\t};\n\n/**\n * Action that removes a template.\n *\n * @param {Object} template The template object.\n */\nexport const removeTemplate =\n\t( template ) =>\n\t( { registry } ) => {\n\t\treturn unlock( registry.dispatch( editorStore ) ).removeTemplates( [\n\t\t\ttemplate,\n\t\t] );\n\t};\n\n/**\n * Action that sets a template part.\n *\n * @deprecated\n * @param {string} templatePartId The template part ID.\n *\n * @return {Object} Action object.\n */\nexport function setTemplatePart( templatePartId ) {\n\tdeprecated( \"dispatch( 'core/edit-site' ).setTemplatePart\", {\n\t\tsince: '6.8',\n\t} );\n\n\treturn {\n\t\ttype: 'SET_EDITED_POST',\n\t\tpostType: TEMPLATE_PART_POST_TYPE,\n\t\tid: templatePartId,\n\t};\n}\n\n/**\n * Action that sets a navigation menu.\n *\n * @deprecated\n * @param {string} navigationMenuId The Navigation Menu Post ID.\n *\n * @return {Object} Action object.\n */\nexport function setNavigationMenu( navigationMenuId ) {\n\tdeprecated( \"dispatch( 'core/edit-site' ).setNavigationMenu\", {\n\t\tsince: '6.8',\n\t} );\n\n\treturn {\n\t\ttype: 'SET_EDITED_POST',\n\t\tpostType: NAVIGATION_POST_TYPE,\n\t\tid: navigationMenuId,\n\t};\n}\n\n/**\n * Action that sets an edited entity.\n *\n * @deprecated\n * @param {string} postType The entity's post type.\n * @param {string} postId   The entity's ID.\n * @param {Object} context  The entity's context.\n *\n * @return {Object} Action object.\n */\nexport function setEditedEntity( postType, postId, context ) {\n\treturn {\n\t\ttype: 'SET_EDITED_POST',\n\t\tpostType,\n\t\tid: postId,\n\t\tcontext,\n\t};\n}\n\n/**\n * @deprecated\n */\nexport function setHomeTemplateId() {\n\tdeprecated( \"dispatch( 'core/edit-site' ).setHomeTemplateId\", {\n\t\tsince: '6.2',\n\t\tversion: '6.4',\n\t} );\n\n\treturn {\n\t\ttype: 'NOTHING',\n\t};\n}\n\n/**\n * Set's the current block editor context.\n *\n * @deprecated\n * @param {Object} context The context object.\n *\n * @return {Object} Action object.\n */\nexport function setEditedPostContext( context ) {\n\tdeprecated( \"dispatch( 'core/edit-site' ).setEditedPostContext\", {\n\t\tsince: '6.8',\n\t} );\n\treturn {\n\t\ttype: 'SET_EDITED_POST_CONTEXT',\n\t\tcontext,\n\t};\n}\n\n/**\n * Resolves the template for a page and displays both. If no path is given, attempts\n * to use the postId to generate a path like `?p=${ postId }`.\n *\n * @deprecated\n *\n * @return {Object} Action object.\n */\nexport function setPage() {\n\tdeprecated( \"dispatch( 'core/edit-site' ).setPage\", {\n\t\tsince: '6.5',\n\t\tversion: '6.8',\n\t\thint: 'The setPage is not needed anymore, the correct entity is resolved from the URL automatically.',\n\t} );\n\n\treturn { type: 'NOTHING' };\n}\n\n/**\n * Action that sets the active navigation panel menu.\n *\n * @deprecated\n *\n * @return {Object} Action object.\n */\nexport function setNavigationPanelActiveMenu() {\n\tdeprecated( \"dispatch( 'core/edit-site' ).setNavigationPanelActiveMenu\", {\n\t\tsince: '6.2',\n\t\tversion: '6.4',\n\t} );\n\n\treturn { type: 'NOTHING' };\n}\n\n/**\n * Opens the navigation panel and sets its active menu at the same time.\n *\n * @deprecated\n */\nexport function openNavigationPanelToMenu() {\n\tdeprecated( \"dispatch( 'core/edit-site' ).openNavigationPanelToMenu\", {\n\t\tsince: '6.2',\n\t\tversion: '6.4',\n\t} );\n\n\treturn { type: 'NOTHING' };\n}\n\n/**\n * Sets whether the navigation panel should be open.\n *\n * @deprecated\n */\nexport function setIsNavigationPanelOpened() {\n\tdeprecated( \"dispatch( 'core/edit-site' ).setIsNavigationPanelOpened\", {\n\t\tsince: '6.2',\n\t\tversion: '6.4',\n\t} );\n\n\treturn { type: 'NOTHING' };\n}\n\n/**\n * Returns an action object used to open/close the inserter.\n *\n * @deprecated\n *\n * @param {boolean|Object} value Whether the inserter should be opened (true) or closed (false).\n */\nexport const setIsInserterOpened =\n\t( value ) =>\n\t( { registry } ) => {\n\t\tdeprecated( \"dispatch( 'core/edit-site' ).setIsInserterOpened\", {\n\t\t\tsince: '6.5',\n\t\t\talternative: \"dispatch( 'core/editor').setIsInserterOpened\",\n\t\t} );\n\t\tregistry.dispatch( editorStore ).setIsInserterOpened( value );\n\t};\n\n/**\n * Returns an action object used to open/close the list view.\n *\n * @deprecated\n *\n * @param {boolean} isOpen A boolean representing whether the list view should be opened or closed.\n */\nexport const setIsListViewOpened =\n\t( isOpen ) =>\n\t( { registry } ) => {\n\t\tdeprecated( \"dispatch( 'core/edit-site' ).setIsListViewOpened\", {\n\t\t\tsince: '6.5',\n\t\t\talternative: \"dispatch( 'core/editor').setIsListViewOpened\",\n\t\t} );\n\t\tregistry.dispatch( editorStore ).setIsListViewOpened( isOpen );\n\t};\n\n/**\n * Returns an action object used to update the settings.\n *\n * @param {Object} settings New settings.\n *\n * @return {Object} Action object.\n */\nexport function updateSettings( settings ) {\n\treturn {\n\t\ttype: 'UPDATE_SETTINGS',\n\t\tsettings,\n\t};\n}\n\n/**\n * Sets whether the save view panel should be open.\n *\n * @param {boolean} isOpen If true, opens the save view. If false, closes it.\n *                         It does not toggle the state, but sets it directly.\n */\nexport function setIsSaveViewOpened( isOpen ) {\n\treturn {\n\t\ttype: 'SET_IS_SAVE_VIEW_OPENED',\n\t\tisOpen,\n\t};\n}\n\n/**\n * Reverts a template to its original theme-provided file.\n *\n * @param {Object}  template            The template to revert.\n * @param {Object}  [options]\n * @param {boolean} [options.allowUndo] Whether to allow the user to undo\n *                                      reverting the template. Default true.\n */\nexport const revertTemplate =\n\t( template, options ) =>\n\t( { registry } ) => {\n\t\treturn unlock( registry.dispatch( editorStore ) ).revertTemplate(\n\t\t\ttemplate,\n\t\t\toptions\n\t\t);\n\t};\n\n/**\n * Action that opens an editor sidebar.\n *\n * @param {?string} name Sidebar name to be opened.\n */\nexport const openGeneralSidebar =\n\t( name ) =>\n\t( { registry } ) => {\n\t\tregistry\n\t\t\t.dispatch( interfaceStore )\n\t\t\t.enableComplementaryArea( 'core', name );\n\t};\n\n/**\n * Action that closes the sidebar.\n */\nexport const closeGeneralSidebar =\n\t() =>\n\t( { registry } ) => {\n\t\tregistry.dispatch( interfaceStore ).disableComplementaryArea( 'core' );\n\t};\n\n/**\n * Triggers an action used to switch editor mode.\n *\n * @deprecated\n *\n * @param {string} mode The editor mode.\n */\nexport const switchEditorMode =\n\t( mode ) =>\n\t( { registry } ) => {\n\t\tdeprecated( \"dispatch( 'core/edit-site' ).switchEditorMode\", {\n\t\t\tsince: '6.6',\n\t\t\talternative: \"dispatch( 'core/editor').switchEditorMode\",\n\t\t} );\n\t\tregistry.dispatch( editorStore ).switchEditorMode( mode );\n\t};\n\n/**\n * Sets whether or not the editor allows only page content to be edited.\n *\n * @param {boolean} hasPageContentFocus True to allow only page content to be\n *                                      edited, false to allow template to be\n *                                      edited.\n */\nexport const setHasPageContentFocus =\n\t( hasPageContentFocus ) =>\n\t( { dispatch, registry } ) => {\n\t\tdeprecated( `dispatch( 'core/edit-site' ).setHasPageContentFocus`, {\n\t\t\tsince: '6.5',\n\t\t} );\n\n\t\tif ( hasPageContentFocus ) {\n\t\t\tregistry.dispatch( blockEditorStore ).clearSelectedBlock();\n\t\t}\n\t\tdispatch( {\n\t\t\ttype: 'SET_HAS_PAGE_CONTENT_FOCUS',\n\t\t\thasPageContentFocus,\n\t\t} );\n\t};\n\n/**\n * Action that toggles Distraction free mode.\n * Distraction free mode expects there are no sidebars, as due to the\n * z-index values set, you can't close sidebars.\n *\n * @deprecated\n */\nexport const toggleDistractionFree =\n\t() =>\n\t( { registry } ) => {\n\t\tdeprecated( \"dispatch( 'core/edit-site' ).toggleDistractionFree\", {\n\t\t\tsince: '6.6',\n\t\t\talternative: \"dispatch( 'core/editor').toggleDistractionFree\",\n\t\t} );\n\t\tregistry.dispatch( editorStore ).toggleDistractionFree();\n\t};\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { privateApis as patternPrivateApis } from '@wordpress/patterns';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\n\n// Navigation\nexport const NAVIGATION_POST_TYPE = 'wp_navigation';\n\n// Templates.\nexport const TEMPLATE_POST_TYPE = 'wp_template';\nexport const TEMPLATE_PART_POST_TYPE = 'wp_template_part';\nexport const TEMPLATE_ORIGINS = {\n\tcustom: 'custom',\n\ttheme: 'theme',\n\tplugin: 'plugin',\n};\nexport const TEMPLATE_PART_AREA_DEFAULT_CATEGORY = 'uncategorized';\nexport const TEMPLATE_PART_ALL_AREAS_CATEGORY = 'all-parts';\n\n// Patterns.\nexport const {\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_SYNC_TYPES,\n} = unlock( patternPrivateApis );\n\n// Entities that are editable in focus mode.\nexport const FOCUSABLE_ENTITIES = [\n\tTEMPLATE_PART_POST_TYPE,\n\tNAVIGATION_POST_TYPE,\n\tPATTERN_TYPES.user,\n];\n\nexport const POST_TYPE_LABELS = {\n\t[ TEMPLATE_POST_TYPE ]: __( 'Template' ),\n\t[ TEMPLATE_PART_POST_TYPE ]: __( 'Template part' ),\n\t[ PATTERN_TYPES.user ]: __( 'Pattern' ),\n\t[ NAVIGATION_POST_TYPE ]: __( 'Navigation' ),\n};\n\n// DataViews constants\nexport const LAYOUT_GRID = 'grid';\nexport const LAYOUT_TABLE = 'table';\nexport const LAYOUT_LIST = 'list';\n\nexport const OPERATOR_IS = 'is';\nexport const OPERATOR_IS_NOT = 'isNot';\nexport const OPERATOR_IS_ANY = 'isAny';\nexport const OPERATOR_IS_NONE = 'isNone';\nexport const OPERATOR_BEFORE = 'before';\nexport const OPERATOR_AFTER = 'after';\n", "/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\n\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.',\n\t\t'@wordpress/edit-site'\n\t);\n", "export function registerRoute( route ) {\n\treturn {\n\t\ttype: 'REGISTER_ROUTE',\n\t\troute,\n\t};\n}\n\nexport function unregisterRoute( name ) {\n\treturn {\n\t\ttype: 'UNREGISTER_ROUTE',\n\t\tname,\n\t};\n}\n", "/**\n * WordPress dependencies\n */\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport { createRegistrySelector, createSelector } from '@wordpress/data';\nimport deprecated from '@wordpress/deprecated';\nimport { Platform } from '@wordpress/element';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\nimport { TEMPLATE_PART_POST_TYPE } from '../utils/constants';\nimport getFilteredTemplatePartBlocks from '../utils/get-filtered-template-parts';\n\n/**\n * @typedef {'template'|'template_type'} TemplateType Template type.\n */\n\n/**\n * Returns whether the given feature is enabled or not.\n *\n * @deprecated\n * @param {Object} state       Global application state.\n * @param {string} featureName Feature slug.\n *\n * @return {boolean} Is active.\n */\nexport const isFeatureActive = createRegistrySelector(\n\t( select ) => ( _, featureName ) => {\n\t\tdeprecated( `select( 'core/edit-site' ).isFeatureActive`, {\n\t\t\tsince: '6.0',\n\t\t\talternative: `select( 'core/preferences' ).get`,\n\t\t} );\n\n\t\treturn !! select( preferencesStore ).get(\n\t\t\t'core/edit-site',\n\t\t\tfeatureName\n\t\t);\n\t}\n);\n\n/**\n * Returns the current editing canvas device type.\n *\n * @deprecated\n *\n * @param {Object} state Global application state.\n *\n * @return {string} Device type.\n */\nexport const __experimentalGetPreviewDeviceType = createRegistrySelector(\n\t( select ) => () => {\n\t\tdeprecated(\n\t\t\t`select( 'core/edit-site' ).__experimentalGetPreviewDeviceType`,\n\t\t\t{\n\t\t\t\tsince: '6.5',\n\t\t\t\tversion: '6.7',\n\t\t\t\talternative: `select( 'core/editor' ).getDeviceType`,\n\t\t\t}\n\t\t);\n\t\treturn select( editorStore ).getDeviceType();\n\t}\n);\n\n/**\n * Returns whether the current user can create media or not.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} Whether the current user can create media or not.\n */\nexport const getCanUserCreateMedia = createRegistrySelector(\n\t( select ) => () => {\n\t\tdeprecated(\n\t\t\t`wp.data.select( 'core/edit-site' ).getCanUserCreateMedia()`,\n\t\t\t{\n\t\t\t\tsince: '6.7',\n\t\t\t\talternative: `wp.data.select( 'core' ).canUser( 'create', { kind: 'postType', type: 'attachment' } )`,\n\t\t\t}\n\t\t);\n\n\t\treturn select( coreDataStore ).canUser( 'create', 'media' );\n\t}\n);\n\n/**\n * Returns any available Reusable blocks.\n *\n * @param {Object} state Global application state.\n *\n * @return {Array} The available reusable blocks.\n */\nexport const getReusableBlocks = createRegistrySelector( ( select ) => () => {\n\tdeprecated( `select( 'core/edit-site' ).getReusableBlocks()`, {\n\t\tsince: '6.5',\n\t\tversion: '6.8',\n\t\talternative: `select( 'core/core' ).getEntityRecords( 'postType', 'wp_block' )`,\n\t} );\n\tconst isWeb = Platform.OS === 'web';\n\treturn isWeb\n\t\t? select( coreDataStore ).getEntityRecords( 'postType', 'wp_block', {\n\t\t\t\tper_page: -1,\n\t\t  } )\n\t\t: [];\n} );\n\n/**\n * Returns the site editor settings.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} Settings.\n */\nexport function getSettings( state ) {\n\t// It is important that we don't inject anything into these settings locally.\n\t// The reason for this is that we have an effect in place that calls setSettings based on the previous value of getSettings.\n\t// If we add computed settings here, we'll be adding these computed settings to the state which is very unexpected.\n\treturn state.settings;\n}\n\n/**\n * @deprecated\n */\nexport function getHomeTemplateId() {\n\tdeprecated( \"select( 'core/edit-site' ).getHomeTemplateId\", {\n\t\tsince: '6.2',\n\t\tversion: '6.4',\n\t} );\n}\n\n/**\n * Returns the current edited post type (wp_template or wp_template_part).\n *\n * @deprecated\n * @param {Object} state Global application state.\n *\n * @return {?TemplateType} Template type.\n */\nexport function getEditedPostType( state ) {\n\tdeprecated( \"select( 'core/edit-site' ).getEditedPostType\", {\n\t\tsince: '6.8',\n\t\talternative: \"select( 'core/editor' ).getCurrentPostType\",\n\t} );\n\treturn state.editedPost.postType;\n}\n\n/**\n * Returns the ID of the currently edited template or template part.\n *\n * @deprecated\n * @param {Object} state Global application state.\n *\n * @return {?string} Post ID.\n */\nexport function getEditedPostId( state ) {\n\tdeprecated( \"select( 'core/edit-site' ).getEditedPostId\", {\n\t\tsince: '6.8',\n\t\talternative: \"select( 'core/editor' ).getCurrentPostId\",\n\t} );\n\treturn state.editedPost.id;\n}\n\n/**\n * Returns the edited post's context object.\n *\n * @deprecated\n * @param {Object} state Global application state.\n *\n * @return {Object} Page.\n */\nexport function getEditedPostContext( state ) {\n\tdeprecated( \"select( 'core/edit-site' ).getEditedPostContext\", {\n\t\tsince: '6.8',\n\t} );\n\n\treturn state.editedPost.context;\n}\n\n/**\n * Returns the current page object.\n *\n * @deprecated\n * @param {Object} state Global application state.\n *\n * @return {Object} Page.\n */\nexport function getPage( state ) {\n\tdeprecated( \"select( 'core/edit-site' ).getPage\", {\n\t\tsince: '6.8',\n\t} );\n\n\treturn { context: state.editedPost.context };\n}\n\n/**\n * Returns true if the inserter is opened.\n *\n * @deprecated\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the inserter is opened.\n */\nexport const isInserterOpened = createRegistrySelector( ( select ) => () => {\n\tdeprecated( `select( 'core/edit-site' ).isInserterOpened`, {\n\t\tsince: '6.5',\n\t\talternative: `select( 'core/editor' ).isInserterOpened`,\n\t} );\n\treturn select( editorStore ).isInserterOpened();\n} );\n\n/**\n * Get the insertion point for the inserter.\n *\n * @deprecated\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} The root client ID, index to insert at and starting filter value.\n */\nexport const __experimentalGetInsertionPoint = createRegistrySelector(\n\t( select ) => () => {\n\t\tdeprecated(\n\t\t\t`select( 'core/edit-site' ).__experimentalGetInsertionPoint`,\n\t\t\t{\n\t\t\t\tsince: '6.5',\n\t\t\t\tversion: '6.7',\n\t\t\t}\n\t\t);\n\t\treturn unlock( select( editorStore ) ).getInserter();\n\t}\n);\n\n/**\n * Returns true if the list view is opened.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the list view is opened.\n */\nexport const isListViewOpened = createRegistrySelector( ( select ) => () => {\n\tdeprecated( `select( 'core/edit-site' ).isListViewOpened`, {\n\t\tsince: '6.5',\n\t\talternative: `select( 'core/editor' ).isListViewOpened`,\n\t} );\n\treturn select( editorStore ).isListViewOpened();\n} );\n\n/**\n * Returns the current opened/closed state of the save panel.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} True if the save panel should be open; false if closed.\n */\nexport function isSaveViewOpened( state ) {\n\treturn state.saveViewPanel;\n}\n\nfunction getBlocksAndTemplateParts( select ) {\n\tconst templateParts = select( coreDataStore ).getEntityRecords(\n\t\t'postType',\n\t\tTEMPLATE_PART_POST_TYPE,\n\t\t{ per_page: -1 }\n\t);\n\n\tconst { getBlocksByName, getBlocksByClientId } = select( blockEditorStore );\n\n\tconst clientIds = getBlocksByName( 'core/template-part' );\n\tconst blocks = getBlocksByClientId( clientIds );\n\treturn [ blocks, templateParts ];\n}\n\n/**\n * Returns the template parts and their blocks for the current edited template.\n *\n * @deprecated\n * @param {Object} state Global application state.\n * @return {Array} Template parts and their blocks in an array.\n */\nexport const getCurrentTemplateTemplateParts = createRegistrySelector(\n\t( select ) =>\n\t\tcreateSelector(\n\t\t\t() => {\n\t\t\t\tdeprecated(\n\t\t\t\t\t`select( 'core/edit-site' ).getCurrentTemplateTemplateParts()`,\n\t\t\t\t\t{\n\t\t\t\t\t\tsince: '6.7',\n\t\t\t\t\t\tversion: '6.9',\n\t\t\t\t\t\talternative: `select( 'core/block-editor' ).getBlocksByName( 'core/template-part' )`,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\treturn getFilteredTemplatePartBlocks(\n\t\t\t\t\t...getBlocksAndTemplateParts( select )\n\t\t\t\t);\n\t\t\t},\n\t\t\t() => getBlocksAndTemplateParts( select )\n\t\t)\n);\n\n/**\n * Returns the current editing mode.\n *\n * @param {Object} state Global application state.\n *\n * @return {string} Editing mode.\n */\nexport const getEditorMode = createRegistrySelector( ( select ) => () => {\n\treturn select( preferencesStore ).get( 'core', 'editorMode' );\n} );\n\n/**\n * @deprecated\n */\nexport function getCurrentTemplateNavigationPanelSubMenu() {\n\tdeprecated(\n\t\t\"dispatch( 'core/edit-site' ).getCurrentTemplateNavigationPanelSubMenu\",\n\t\t{\n\t\t\tsince: '6.2',\n\t\t\tversion: '6.4',\n\t\t}\n\t);\n}\n\n/**\n * @deprecated\n */\nexport function getNavigationPanelActiveMenu() {\n\tdeprecated( \"dispatch( 'core/edit-site' ).getNavigationPanelActiveMenu\", {\n\t\tsince: '6.2',\n\t\tversion: '6.4',\n\t} );\n}\n\n/**\n * @deprecated\n */\nexport function isNavigationOpened() {\n\tdeprecated( \"dispatch( 'core/edit-site' ).isNavigationOpened\", {\n\t\tsince: '6.2',\n\t\tversion: '6.4',\n\t} );\n}\n\n/**\n * Whether or not the editor has a page loaded into it.\n *\n * @see setPage\n * @deprecated\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether or not the editor has a page loaded into it.\n */\nexport function isPage( state ) {\n\tdeprecated( \"select( 'core/edit-site' ).isPage\", {\n\t\tsince: '6.8',\n\t\talternative: \"select( 'core/editor' ).getCurrentPostType\",\n\t} );\n\n\treturn !! state.editedPost.context?.postId;\n}\n\n/**\n * Whether or not the editor allows only page content to be edited.\n *\n * @deprecated\n *\n * @return {boolean} Whether or not focus is on editing page content.\n */\nexport function hasPageContentFocus() {\n\tdeprecated( `select( 'core/edit-site' ).hasPageContentFocus`, {\n\t\tsince: '6.5',\n\t} );\n\n\treturn false;\n}\n", "/**\n * WordPress dependencies\n */\nimport { isTemplatePart } from '@wordpress/blocks';\n\nconst EMPTY_ARRAY = [];\n\n/**\n * Get a flattened and filtered list of template parts and the matching block for that template part.\n *\n * Takes a list of blocks defined within a template, and a list of template parts, and returns a\n * flattened list of template parts and the matching block for that template part.\n *\n * @param {Array}  blocks        Blocks to flatten.\n * @param {?Array} templateParts Available template parts.\n * @return {Array} An array of template parts and their blocks.\n */\nexport default function getFilteredTemplatePartBlocks(\n\tblocks = EMPTY_ARRAY,\n\ttemplateParts\n) {\n\tconst templatePartsById = templateParts\n\t\t? // Key template parts by their ID.\n\t\t  templateParts.reduce(\n\t\t\t\t( newTemplateParts, part ) => ( {\n\t\t\t\t\t...newTemplateParts,\n\t\t\t\t\t[ part.id ]: part,\n\t\t\t\t} ),\n\t\t\t\t{}\n\t\t  )\n\t\t: {};\n\n\tconst result = [];\n\n\t// Iterate over all blocks, recursing into inner blocks.\n\t// Output will be based on a depth-first traversal.\n\tconst stack = [ ...blocks ];\n\twhile ( stack.length ) {\n\t\tconst { innerBlocks, ...block } = stack.shift();\n\t\t// Place inner blocks at the beginning of the stack to preserve order.\n\t\tstack.unshift( ...innerBlocks );\n\n\t\tif ( isTemplatePart( block ) ) {\n\t\t\tconst {\n\t\t\t\tattributes: { theme, slug },\n\t\t\t} = block;\n\t\t\tconst templatePartId = `${ theme }//${ slug }`;\n\t\t\tconst templatePart = templatePartsById[ templatePartId ];\n\n\t\t\t// Only add to output if the found template part block is in the list of available template parts.\n\t\t\tif ( templatePart ) {\n\t\t\t\tresult.push( {\n\t\t\t\t\ttemplatePart,\n\t\t\t\t\tblock,\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n", "export function getRoutes( state ) {\n\treturn state.routes;\n}\n", "/**\n * The identifier for the data store.\n *\n * @type {string}\n */\nexport const STORE_NAME = 'core/edit-site';\n", "/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport Layout from '../layout';\nimport { unlock } from '../../lock-unlock';\nimport { store as editSiteStore } from '../../store';\nimport { useCommonCommands } from '../../hooks/commands/use-common-commands';\nimport useSetCommandContext from '../../hooks/commands/use-set-command-context';\nimport { useRegisterSiteEditorRoutes } from '../site-editor-routes';\nimport {\n\tcurrentlyPreviewingTheme,\n\tisPreviewingTheme,\n} from '../../utils/is-previewing-theme';\n\nconst { RouterProvider } = unlock( routerPrivateApis );\n\nfunction AppLayout() {\n\tuseCommonCommands();\n\tuseSetCommandContext();\n\n\treturn <Layout />;\n}\n\nexport default function App() {\n\tuseRegisterSiteEditorRoutes();\n\tconst { routes, currentTheme, editorSettings } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\troutes: unlock( select( editSiteStore ) ).getRoutes(),\n\t\t\tcurrentTheme: select( coreStore ).getCurrentTheme(),\n\t\t\t// This is a temp solution until the has_theme_json value is available for the current theme.\n\t\t\teditorSettings: select( editSiteStore ).getSettings(),\n\t\t};\n\t}, [] );\n\n\tconst beforeNavigate = useCallback( ( { path, query } ) => {\n\t\tif ( ! isPreviewingTheme() ) {\n\t\t\treturn { path, query };\n\t\t}\n\n\t\treturn {\n\t\t\tpath,\n\t\t\tquery: {\n\t\t\t\t...query,\n\t\t\t\twp_theme_preview:\n\t\t\t\t\t'wp_theme_preview' in query\n\t\t\t\t\t\t? query.wp_theme_preview\n\t\t\t\t\t\t: currentlyPreviewingTheme(),\n\t\t\t},\n\t\t};\n\t}, [] );\n\n\tconst matchResolverArgsValue = useMemo(\n\t\t() => ( {\n\t\t\tsiteData: { currentTheme, editorSettings },\n\t\t} ),\n\t\t[ currentTheme, editorSettings ]\n\t);\n\n\treturn (\n\t\t<RouterProvider\n\t\t\troutes={ routes }\n\t\t\tpathArg=\"p\"\n\t\t\tbeforeNavigate={ beforeNavigate }\n\t\t\tmatchResolverArgs={ matchResolverArgsValue }\n\t\t>\n\t\t\t<AppLayout />\n\t\t</RouterProvider>\n\t);\n}\n", "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}export 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}export default clsx;", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Type definitions\n */\ntype NavigableRegionProps = {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n\tariaLabel: string;\n\tas?: React.ElementType;\n\t[ key: string ]: any;\n};\n\n// This is a copy of the private `NavigableRegion` component from the '@wordpress/editor' private APIs.\nconst NavigableRegion = forwardRef< HTMLElement, NavigableRegionProps >(\n\t( { children, className, ariaLabel, as: Tag = 'div', ...props }, ref ) => {\n\t\treturn (\n\t\t\t<Tag\n\t\t\t\tref={ ref }\n\t\t\t\tclassName={ clsx( 'admin-ui-navigable-region', className ) }\n\t\t\t\taria-label={ ariaLabel }\n\t\t\t\trole=\"region\"\n\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t{ ...props }\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</Tag>\n\t\t);\n\t}\n);\n\nNavigableRegion.displayName = 'NavigableRegion';\n\nexport default NavigableRegion;\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHeading as Heading,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { SidebarToggleSlot } from './sidebar-toggle-slot';\n\nexport default function Header( {\n\tbreadcrumbs,\n\tbadges,\n\ttitle,\n\tsubTitle,\n\tactions,\n\tshowSidebarToggle = true,\n}: {\n\tbreadcrumbs?: React.ReactNode;\n\tbadges?: React.ReactNode;\n\ttitle?: React.ReactNode;\n\tsubTitle: React.ReactNode;\n\tactions?: React.ReactNode;\n\tshowSidebarToggle?: boolean;\n} ) {\n\treturn (\n\t\t<VStack className=\"admin-ui-page__header\" as=\"header\">\n\t\t\t<HStack justify=\"space-between\" spacing={ 2 }>\n\t\t\t\t<HStack spacing={ 2 } justify=\"left\">\n\t\t\t\t\t{ showSidebarToggle && (\n\t\t\t\t\t\t<SidebarToggleSlot\n\t\t\t\t\t\t\tbubblesVirtually\n\t\t\t\t\t\t\tclassName=\"admin-ui-page__sidebar-toggle-slot\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ title && (\n\t\t\t\t\t\t<Heading as=\"h2\" level={ 3 } weight={ 500 } truncate>\n\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t</Heading>\n\t\t\t\t\t) }\n\t\t\t\t\t{ breadcrumbs }\n\t\t\t\t\t{ badges }\n\t\t\t\t</HStack>\n\t\t\t\t<HStack\n\t\t\t\t\tstyle={ { width: 'auto', flexShrink: 0 } }\n\t\t\t\t\tspacing={ 2 }\n\t\t\t\t\tclassName=\"admin-ui-page__header-actions\"\n\t\t\t\t>\n\t\t\t\t\t{ actions }\n\t\t\t\t</HStack>\n\t\t\t</HStack>\n\t\t\t{ subTitle && (\n\t\t\t\t<p className=\"admin-ui-page__header-subtitle\">{ subTitle }</p>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { createSlotFill } from '@wordpress/components';\n\nconst { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } =\n\tcreateSlotFill( 'SidebarToggle' );\n\nexport { SidebarToggleFill, SidebarToggleSlot };\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * Internal dependencies\n */\nimport Header from './header';\nimport NavigableRegion from '../navigable-region';\nimport { SidebarToggleFill } from './sidebar-toggle-slot';\n\nfunction Page( {\n\tbreadcrumbs,\n\tbadges,\n\ttitle,\n\tsubTitle,\n\tchildren,\n\tclassName,\n\tactions,\n\thasPadding = false,\n\tshowSidebarToggle = true,\n}: {\n\tbreadcrumbs?: React.ReactNode;\n\tbadges?: React.ReactNode;\n\ttitle?: React.ReactNode;\n\tsubTitle?: React.ReactNode;\n\tchildren: React.ReactNode;\n\tclassName?: string;\n\tactions?: React.ReactNode;\n\thasPadding?: boolean;\n\tshowSidebarToggle?: boolean;\n} ) {\n\tconst classes = clsx( 'admin-ui-page', className );\n\n\treturn (\n\t\t<NavigableRegion className={ classes } ariaLabel={ title }>\n\t\t\t{ ( title || breadcrumbs || badges ) && (\n\t\t\t\t<Header\n\t\t\t\t\tbreadcrumbs={ breadcrumbs }\n\t\t\t\t\tbadges={ badges }\n\t\t\t\t\ttitle={ title }\n\t\t\t\t\tsubTitle={ subTitle }\n\t\t\t\t\tactions={ actions }\n\t\t\t\t\tshowSidebarToggle={ showSidebarToggle }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasPadding ? (\n\t\t\t\t<div className=\"admin-ui-page__content has-padding\">\n\t\t\t\t\t{ children }\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\tchildren\n\t\t\t) }\n\t\t</NavigableRegion>\n\t);\n}\n\nPage.SidebarToggleFill = SidebarToggleFill;\n\nexport default Page;\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { NavigableRegion } from '@wordpress/admin-ui';\nimport {\n\t__unstableMotion as motion,\n\t__unstableAnimatePresence as AnimatePresence,\n\t__unstableUseNavigateRegions as useNavigateRegions,\n\tSlotFillProvider,\n} from '@wordpress/components';\nimport {\n\tuseReducedMotion,\n\tuseViewportMatch,\n\tuseResizeObserver,\n\tusePrevious,\n} from '@wordpress/compose';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useState, useRef, useEffect } from '@wordpress/element';\nimport {\n\tEditorSnackbars,\n\tUnsavedChangesWarning,\n\tErrorBoundary,\n\tprivateApis as editorPrivateApis,\n} from '@wordpress/editor';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { PluginArea } from '@wordpress/plugins';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport { default as SiteHub, SiteHubMobile } from '../site-hub';\nimport ResizableFrame from '../resizable-frame';\nimport { unlock } from '../../lock-unlock';\nimport SaveKeyboardShortcut from '../save-keyboard-shortcut';\nimport { useIsSiteEditorLoading } from './hooks';\nimport useMovingAnimation from './animation';\nimport { SidebarContent, SidebarNavigationProvider } from '../sidebar';\nimport SaveHub from '../save-hub';\nimport SavePanel from '../save-panel';\n\nconst { useLocation } = unlock( routerPrivateApis );\nconst { useStyle } = unlock( editorPrivateApis );\n\nconst ANIMATION_DURATION = 0.3;\n\nfunction Layout() {\n\tconst { query, name: routeKey, areas, widths } = useLocation();\n\t// Force canvas to 'view' on notfound route to show the error message and allow navigation.\n\tconst canvas = routeKey === 'notfound' ? 'view' : query?.canvas ?? 'view';\n\tconst isMobileViewport = useViewportMatch( 'medium', '<' );\n\tconst toggleRef = useRef();\n\tconst navigateRegionsProps = useNavigateRegions();\n\tconst disableMotion = useReducedMotion();\n\tconst [ canvasResizer, canvasSize ] = useResizeObserver();\n\tconst isEditorLoading = useIsSiteEditorLoading();\n\tconst [ isResizableFrameOversized, setIsResizableFrameOversized ] =\n\t\tuseState( false );\n\tconst animationRef = useMovingAnimation( {\n\t\ttriggerAnimationOnChange: routeKey + '-' + canvas,\n\t} );\n\n\tconst { showIconLabels } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tshowIconLabels: select( preferencesStore ).get(\n\t\t\t\t'core',\n\t\t\t\t'showIconLabels'\n\t\t\t),\n\t\t};\n\t} );\n\n\tconst backgroundColor = useStyle( 'color.background' );\n\tconst gradientValue = useStyle( 'color.gradient' );\n\tconst previousCanvaMode = usePrevious( canvas );\n\tuseEffect( () => {\n\t\tif ( previousCanvaMode === 'edit' ) {\n\t\t\ttoggleRef.current?.focus();\n\t\t}\n\t\t// Should not depend on the previous canvas mode value but the next.\n\t}, [ canvas ] );\n\n\treturn (\n\t\t<>\n\t\t\t<UnsavedChangesWarning />\n\t\t\t{ canvas === 'view' && <SaveKeyboardShortcut /> }\n\t\t\t<div\n\t\t\t\t{ ...navigateRegionsProps }\n\t\t\t\tref={ navigateRegionsProps.ref }\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'edit-site-layout',\n\t\t\t\t\tnavigateRegionsProps.className,\n\t\t\t\t\t{\n\t\t\t\t\t\t'is-full-canvas': canvas === 'edit',\n\t\t\t\t\t\t'show-icon-labels': showIconLabels,\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t<div className=\"edit-site-layout__content\">\n\t\t\t\t\t{ /*\n\t\t\t\t\t\tThe NavigableRegion must always be rendered and not use\n\t\t\t\t\t\t`inert` otherwise `useNavigateRegions` will fail.\n\t\t\t\t\t*/ }\n\t\t\t\t\t{ ( ! isMobileViewport || ! areas.mobile ) && (\n\t\t\t\t\t\t<NavigableRegion\n\t\t\t\t\t\t\tariaLabel={ __( 'Navigation' ) }\n\t\t\t\t\t\t\tclassName=\"edit-site-layout__sidebar-region\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<AnimatePresence>\n\t\t\t\t\t\t\t\t{ canvas === 'view' && (\n\t\t\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\t\t\tinitial={ { opacity: 0 } }\n\t\t\t\t\t\t\t\t\t\tanimate={ { opacity: 1 } }\n\t\t\t\t\t\t\t\t\t\texit={ { opacity: 0 } }\n\t\t\t\t\t\t\t\t\t\ttransition={ {\n\t\t\t\t\t\t\t\t\t\t\ttype: 'tween',\n\t\t\t\t\t\t\t\t\t\t\tduration:\n\t\t\t\t\t\t\t\t\t\t\t\t// Disable transition in mobile to emulate a full page transition.\n\t\t\t\t\t\t\t\t\t\t\t\tdisableMotion ||\n\t\t\t\t\t\t\t\t\t\t\t\tisMobileViewport\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t\t\t\t\t\t: ANIMATION_DURATION,\n\t\t\t\t\t\t\t\t\t\t\tease: 'easeOut',\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\tclassName=\"edit-site-layout__sidebar\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<SiteHub\n\t\t\t\t\t\t\t\t\t\t\tref={ toggleRef }\n\t\t\t\t\t\t\t\t\t\t\tisTransparent={\n\t\t\t\t\t\t\t\t\t\t\t\tisResizableFrameOversized\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<SidebarNavigationProvider>\n\t\t\t\t\t\t\t\t\t\t\t<SidebarContent\n\t\t\t\t\t\t\t\t\t\t\t\tshouldAnimate={\n\t\t\t\t\t\t\t\t\t\t\t\t\trouteKey !== 'styles'\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\trouteKey={ routeKey }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<ErrorBoundary>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ areas.sidebar }\n\t\t\t\t\t\t\t\t\t\t\t\t</ErrorBoundary>\n\t\t\t\t\t\t\t\t\t\t\t</SidebarContent>\n\t\t\t\t\t\t\t\t\t\t</SidebarNavigationProvider>\n\t\t\t\t\t\t\t\t\t\t<SaveHub />\n\t\t\t\t\t\t\t\t\t\t<SavePanel />\n\t\t\t\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</AnimatePresence>\n\t\t\t\t\t\t</NavigableRegion>\n\t\t\t\t\t) }\n\n\t\t\t\t\t<EditorSnackbars />\n\n\t\t\t\t\t{ isMobileViewport && areas.mobile && (\n\t\t\t\t\t\t<div className=\"edit-site-layout__mobile\">\n\t\t\t\t\t\t\t<SidebarNavigationProvider>\n\t\t\t\t\t\t\t\t{ canvas !== 'edit' ? (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<SiteHubMobile\n\t\t\t\t\t\t\t\t\t\t\tref={ toggleRef }\n\t\t\t\t\t\t\t\t\t\t\tisTransparent={\n\t\t\t\t\t\t\t\t\t\t\t\tisResizableFrameOversized\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<SidebarContent routeKey={ routeKey }>\n\t\t\t\t\t\t\t\t\t\t\t<ErrorBoundary>\n\t\t\t\t\t\t\t\t\t\t\t\t{ areas.mobile }\n\t\t\t\t\t\t\t\t\t\t\t</ErrorBoundary>\n\t\t\t\t\t\t\t\t\t\t</SidebarContent>\n\t\t\t\t\t\t\t\t\t\t<SaveHub />\n\t\t\t\t\t\t\t\t\t\t<SavePanel />\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<ErrorBoundary>\n\t\t\t\t\t\t\t\t\t\t{ areas.mobile }\n\t\t\t\t\t\t\t\t\t</ErrorBoundary>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</SidebarNavigationProvider>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ ! isMobileViewport &&\n\t\t\t\t\t\tareas.content &&\n\t\t\t\t\t\tcanvas !== 'edit' && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"edit-site-layout__area\"\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\tmaxWidth: widths?.content,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ErrorBoundary>{ areas.content }</ErrorBoundary>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\n\t\t\t\t\t{ ! isMobileViewport && areas.edit && canvas !== 'edit' && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"edit-site-layout__area\"\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\tmaxWidth: widths?.edit,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ErrorBoundary>{ areas.edit }</ErrorBoundary>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ ! isMobileViewport && areas.preview && (\n\t\t\t\t\t\t<div className=\"edit-site-layout__canvas-container\">\n\t\t\t\t\t\t\t{ canvasResizer }\n\t\t\t\t\t\t\t{ !! canvasSize.width && (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t\t'edit-site-layout__canvas',\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t'is-right-aligned':\n\t\t\t\t\t\t\t\t\t\t\t\tisResizableFrameOversized,\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tref={ animationRef }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ErrorBoundary>\n\t\t\t\t\t\t\t\t\t\t<ResizableFrame\n\t\t\t\t\t\t\t\t\t\t\tisReady={ ! isEditorLoading }\n\t\t\t\t\t\t\t\t\t\t\tisFullWidth={ canvas === 'edit' }\n\t\t\t\t\t\t\t\t\t\t\tdefaultSize={ {\n\t\t\t\t\t\t\t\t\t\t\t\twidth:\n\t\t\t\t\t\t\t\t\t\t\t\t\tcanvasSize.width -\n\t\t\t\t\t\t\t\t\t\t\t\t\t24 /* $canvas-padding */,\n\t\t\t\t\t\t\t\t\t\t\t\theight: canvasSize.height,\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\tisOversized={\n\t\t\t\t\t\t\t\t\t\t\t\tisResizableFrameOversized\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tsetIsOversized={\n\t\t\t\t\t\t\t\t\t\t\t\tsetIsResizableFrameOversized\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tinnerContentStyle={ {\n\t\t\t\t\t\t\t\t\t\t\t\tbackground:\n\t\t\t\t\t\t\t\t\t\t\t\t\tgradientValue ??\n\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor,\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ areas.preview }\n\t\t\t\t\t\t\t\t\t\t</ResizableFrame>\n\t\t\t\t\t\t\t\t\t</ErrorBoundary>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default function LayoutWithGlobalStylesProvider( props ) {\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onPluginAreaError( name ) {\n\t\tcreateErrorNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: plugin name */\n\t\t\t\t__(\n\t\t\t\t\t'The \"%s\" plugin has encountered an error and cannot be rendered.'\n\t\t\t\t),\n\t\t\t\tname\n\t\t\t)\n\t\t);\n\t}\n\n\treturn (\n\t\t<SlotFillProvider>\n\t\t\t{ /** This needs to be within the SlotFillProvider */ }\n\t\t\t<PluginArea onError={ onPluginAreaError } />\n\t\t\t<Layout { ...props } />\n\t\t</SlotFillProvider>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tButton,\n\t__experimentalHStack as HStack,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { memo, forwardRef, useContext } from '@wordpress/element';\nimport { search } from '@wordpress/icons';\nimport { store as commandsStore } from '@wordpress/commands';\nimport { displayShortcut } from '@wordpress/keycodes';\nimport { filterURLForDisplay } from '@wordpress/url';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport SiteIcon from '../site-icon';\nimport { unlock } from '../../lock-unlock';\nimport { SidebarNavigationContext } from '../sidebar';\nconst { useLocation, useHistory } = unlock( routerPrivateApis );\n\nconst SiteHub = memo(\n\tforwardRef( ( { isTransparent }, ref ) => {\n\t\tconst { dashboardLink, homeUrl, siteTitle } = useSelect( ( select ) => {\n\t\t\tconst { getSettings } = unlock( select( editSiteStore ) );\n\n\t\t\tconst { getEntityRecord } = select( coreStore );\n\t\t\tconst _site = getEntityRecord( 'root', 'site' );\n\t\t\treturn {\n\t\t\t\tdashboardLink: getSettings().__experimentalDashboardLink,\n\t\t\t\thomeUrl: getEntityRecord( 'root', '__unstableBase' )?.home,\n\t\t\t\tsiteTitle:\n\t\t\t\t\t! _site?.title && !! _site?.url\n\t\t\t\t\t\t? filterURLForDisplay( _site?.url )\n\t\t\t\t\t\t: _site?.title,\n\t\t\t};\n\t\t}, [] );\n\t\tconst { open: openCommandCenter } = useDispatch( commandsStore );\n\n\t\treturn (\n\t\t\t<div className=\"edit-site-site-hub\">\n\t\t\t\t<HStack justify=\"flex-start\" spacing=\"0\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'edit-site-site-hub__view-mode-toggle-container',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'has-transparent-background': isTransparent,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\thref={ dashboardLink }\n\t\t\t\t\t\t\tlabel={ __( 'Go to the Dashboard' ) }\n\t\t\t\t\t\t\tclassName=\"edit-site-layout__view-mode-toggle\"\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\ttransform: 'scale(0.5333) translateX(-4px)', // Offset to position the icon 12px from viewport edge\n\t\t\t\t\t\t\t\tborderRadius: 4,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<SiteIcon className=\"edit-site-layout__view-mode-toggle-icon\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<HStack>\n\t\t\t\t\t\t<div className=\"edit-site-site-hub__title\">\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\t\t\thref={ homeUrl }\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ decodeEntities( siteTitle ) }\n\t\t\t\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t/* translators: accessibility text */\n\t\t\t\t\t\t\t\t\t\t__( '(opens in a new tab)' )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<HStack\n\t\t\t\t\t\t\tspacing={ 0 }\n\t\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\t\tclassName=\"edit-site-site-hub__actions\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\tclassName=\"edit-site-site-hub_toggle-command-center\"\n\t\t\t\t\t\t\t\ticon={ search }\n\t\t\t\t\t\t\t\tonClick={ () => openCommandCenter() }\n\t\t\t\t\t\t\t\tlabel={ __( 'Open command palette' ) }\n\t\t\t\t\t\t\t\tshortcut={ displayShortcut.primary( 'k' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t</HStack>\n\t\t\t\t</HStack>\n\t\t\t</div>\n\t\t);\n\t} )\n);\n\nexport default SiteHub;\n\nexport const SiteHubMobile = memo(\n\tforwardRef( ( { isTransparent }, ref ) => {\n\t\tconst { path } = useLocation();\n\t\tconst history = useHistory();\n\t\tconst { navigate } = useContext( SidebarNavigationContext );\n\n\t\tconst {\n\t\t\tdashboardLink,\n\t\t\thomeUrl,\n\t\t\tsiteTitle,\n\t\t\tisBlockTheme,\n\t\t\tisClassicThemeWithStyleBookSupport,\n\t\t} = useSelect( ( select ) => {\n\t\t\tconst { getSettings } = unlock( select( editSiteStore ) );\n\t\t\tconst { getEntityRecord, getCurrentTheme } = select( coreStore );\n\t\t\tconst _site = getEntityRecord( 'root', 'site' );\n\t\t\tconst currentTheme = getCurrentTheme();\n\t\t\tconst settings = getSettings();\n\t\t\tconst supportsEditorStyles =\n\t\t\t\tcurrentTheme?.theme_supports[ 'editor-styles' ];\n\t\t\t// This is a temp solution until the has_theme_json value is available for the current theme.\n\t\t\tconst hasThemeJson = settings.supportsLayout;\n\n\t\t\treturn {\n\t\t\t\tdashboardLink: settings.__experimentalDashboardLink,\n\t\t\t\thomeUrl: getEntityRecord( 'root', '__unstableBase' )?.home,\n\t\t\t\tsiteTitle:\n\t\t\t\t\t! _site?.title && !! _site?.url\n\t\t\t\t\t\t? filterURLForDisplay( _site?.url )\n\t\t\t\t\t\t: _site?.title,\n\t\t\t\tisBlockTheme: currentTheme?.is_block_theme,\n\t\t\t\tisClassicThemeWithStyleBookSupport:\n\t\t\t\t\t! currentTheme?.is_block_theme &&\n\t\t\t\t\t( supportsEditorStyles || hasThemeJson ),\n\t\t\t};\n\t\t}, [] );\n\t\tconst { open: openCommandCenter } = useDispatch( commandsStore );\n\n\t\tlet backPath;\n\n\t\t// If the current path is not the root page, find a page to back to.\n\t\tif ( path !== '/' ) {\n\t\t\tif ( isBlockTheme || isClassicThemeWithStyleBookSupport ) {\n\t\t\t\t// If the current theme is a block theme or a classic theme that supports StyleBook,\n\t\t\t\t// back to the Design screen.\n\t\t\t\tbackPath = '/';\n\t\t\t} else if ( path !== '/pattern' ) {\n\t\t\t\t// If the current theme is a classic theme that does not support StyleBook,\n\t\t\t\t// back to the Patterns page.\n\t\t\t\tbackPath = '/pattern';\n\t\t\t}\n\t\t}\n\n\t\tconst backButtonProps = {\n\t\t\thref: !! backPath ? undefined : dashboardLink,\n\t\t\tlabel: !! backPath\n\t\t\t\t? __( 'Go to Site Editor' )\n\t\t\t\t: __( 'Go to the Dashboard' ),\n\t\t\tonClick: !! backPath\n\t\t\t\t? () => {\n\t\t\t\t\t\thistory.navigate( backPath );\n\t\t\t\t\t\tnavigate( 'back' );\n\t\t\t\t  }\n\t\t\t\t: undefined,\n\t\t};\n\n\t\treturn (\n\t\t\t<div className=\"edit-site-site-hub\">\n\t\t\t\t<HStack justify=\"flex-start\" spacing=\"0\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'edit-site-site-hub__view-mode-toggle-container',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'has-transparent-background': isTransparent,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\tclassName=\"edit-site-layout__view-mode-toggle\"\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\ttransform: 'scale(0.5)',\n\t\t\t\t\t\t\t\tborderRadius: 4,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t{ ...backButtonProps }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<SiteIcon className=\"edit-site-layout__view-mode-toggle-icon\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<HStack>\n\t\t\t\t\t\t<div className=\"edit-site-site-hub__title\">\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\t\t\thref={ homeUrl }\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\tlabel={ __( 'View site (opens in a new tab)' ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ decodeEntities( siteTitle ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<HStack\n\t\t\t\t\t\t\tspacing={ 0 }\n\t\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\t\tclassName=\"edit-site-site-hub__actions\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tclassName=\"edit-site-site-hub_toggle-command-center\"\n\t\t\t\t\t\t\t\ticon={ search }\n\t\t\t\t\t\t\t\tonClick={ () => openCommandCenter() }\n\t\t\t\t\t\t\t\tlabel={ __( 'Open command palette' ) }\n\t\t\t\t\t\t\t\tshortcut={ displayShortcut.primary( 'k' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t</HStack>\n\t\t\t\t</HStack>\n\t\t\t</div>\n\t\t);\n\t} )\n);\n", "/**\n * WordPress dependencies\n */\nimport { cloneElement, forwardRef } from '@wordpress/element';\n\n/**\n * External dependencies\n */\nimport type { ReactElement } from 'react';\nimport type { SVGProps } from '@wordpress/primitives';\n\nexport interface IconProps extends SVGProps {\n\t/**\n\t * The SVG component to render\n\t */\n\ticon: ReactElement;\n\t/**\n\t * The size of the icon in pixels\n\t *\n\t * @default 24\n\t */\n\tsize?: number;\n}\n\n/**\n * Return an SVG icon.\n *\n * @param props The component props.\n *\n * @return Icon component\n */\nexport default forwardRef< HTMLElement, IconProps >(\n\t( { icon, size = 24, ...props }: IconProps, ref ) => {\n\t\treturn cloneElement( icon, {\n\t\t\twidth: size,\n\t\t\theight: size,\n\t\t\t...props,\n\t\t\tref,\n\t\t} );\n\t}\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<Path fillRule=\"evenodd\"\n\t      clipRule=\"evenodd\"\n\t      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\"\n\t    />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M20 11.2H6.8l3.7-3.7-1-1L3.9 12l5.6 5.5 1-1-3.7-3.7H20z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"m14.5 6.5-1 1 3.7 3.7H4v1.6h13.2l-3.7 3.7 1 1 5.6-5.5z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M14 6H6v8h1.5V8.5L17 18l1-1-9.5-9.5H14V6Z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M12 3.9 6.5 9.5l1 1 3.8-3.7V20h1.5V6.8l3.7 3.7 1-1z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M5.5 12h1.75l-2.5 3-2.5-3H4a8 8 0 113.134 6.35l.907-1.194A6.5 6.5 0 105.5 12zm9.53 1.97l-2.28-2.28V8.5a.75.75 0 00-1.5 0V12a.747.747 0 00.218.529l1.282-.84-1.28.842 2.5 2.5a.75.75 0 101.06-1.061z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path fillRule=\"evenodd\"\n\t      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\"\n\t      clipRule=\"evenodd\"\n\t    />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<Path d=\"M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z\"\n\t      fillRule=\"evenodd\"\n\t      clipRule=\"evenodd\"\n\t    />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M16.5 7.5 10 13.9l-2.5-2.4-1 1 3.5 3.6 7.5-7.6z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<Path d=\"M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"m13.1 16-3.4-4 3.4-4 1.1 1-2.6 3 2.6 3-1.1 1z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M10.8622 8.04053L14.2805 12.0286L10.8622 16.0167L9.72327 15.0405L12.3049 12.0286L9.72327 9.01672L10.8622 8.04053Z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<Path d=\"M6.5 12.4L12 8l5.5 4.4-.9 1.2L12 10l-4.5 3.6-1-1.2z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path fillRule=\"evenodd\"\n\t      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\"\n\t      clipRule=\"evenodd\"\n\t    />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path fillRule=\"evenodd\"\n\t      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\"\n\t      clipRule=\"evenodd\"\n\t    />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M18 11.3l-1-1.1-4 4V3h-1.5v11.3L7 10.2l-1 1.1 6.2 5.8 5.8-5.8zm.5 3.7v3.5h-13V15H4v5h16v-5h-1.5z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path fillRule=\"evenodd\"\n\t      clipRule=\"evenodd\"\n\t      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 0Zm8 4a4 4 0 0 0 4-4H8a4 4 0 0 0 4 4Z\"\n\t    />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path fillRule=\"evenodd\"\n\t      clipRule=\"evenodd\"\n\t      d=\"M18 4H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-4 14.5H6c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h8v13zm4.5-.5c0 .3-.2.5-.5.5h-2.5v-13H18c.3 0 .5.2.5.5v12z\"\n\t    />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path fillRule=\"evenodd\"\n\t      clipRule=\"evenodd\"\n\t      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\"\n\t    />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<Path fillRule=\"evenodd\"\n\t      clipRule=\"evenodd\"\n\t      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\"\n\t    />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<Path fillRule=\"evenodd\"\n\t      clipRule=\"evenodd\"\n\t      d=\"M12.848 8a1 1 0 0 1-.914-.594l-.723-1.63a.5.5 0 0 0-.447-.276H5a.5.5 0 0 0-.5.5v11.5a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5v-9A.5.5 0 0 0 19 8h-6.152Zm.612-1.5a.5.5 0 0 1-.462-.31l-.445-1.084A2 2 0 0 0 10.763 4H5a2 2 0 0 0-2 2v11.5a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2h-5.54Z\"\n\t    />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<Path d=\"M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8Zm6.5 8c0 .6 0 1.2-.2 1.8h-2.7c0-.6.2-1.1.2-1.8s0-1.2-.2-1.8h2.7c.2.6.2 1.1.2 1.8Zm-.9-3.2h-2.4c-.3-.9-.7-1.8-1.1-2.4-.1-.2-.2-.4-.3-.5 1.6.5 3 1.6 3.8 3ZM12.8 17c-.3.5-.6 1-.8 1.3-.2-.3-.5-.8-.8-1.3-.3-.5-.6-1.1-.8-1.7h3.3c-.2.6-.5 1.2-.8 1.7Zm-2.9-3.2c-.1-.6-.2-1.1-.2-1.8s0-1.2.2-1.8H14c.1.6.2 1.1.2 1.8s0 1.2-.2 1.8H9.9ZM11.2 7c.3-.5.6-1 .8-1.3.2.3.5.8.8 1.3.3.5.6 1.1.8 1.7h-3.3c.2-.6.5-1.2.8-1.7Zm-1-1.2c-.1.2-.2.3-.3.5-.4.7-.8 1.5-1.1 2.4H6.4c.8-1.4 2.2-2.5 3.8-3Zm-1.8 8H5.7c-.2-.6-.2-1.1-.2-1.8s0-1.2.2-1.8h2.7c0 .6-.2 1.1-.2 1.8s0 1.2.2 1.8Zm-2 1.4h2.4c.3.9.7 1.8 1.1 2.4.1.2.2.4.3.5-1.6-.5-3-1.6-3.8-3Zm7.4 3c.1-.2.2-.3.3-.5.4-.7.8-1.5 1.1-2.4h2.4c-.8 1.4-2.2 2.5-3.8 3Z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M12 4a8 8 0 1 1 .001 16.001A8 8 0 0 1 12 4Zm0 1.5a6.5 6.5 0 1 0-.001 13.001A6.5 6.5 0 0 0 12 5.5Zm.75 11h-1.5V15h1.5v1.5Zm-.445-9.234a3 3 0 0 1 .445 5.89V14h-1.5v-1.25c0-.57.452-.958.917-1.01A1.5 1.5 0 0 0 12 8.75a1.5 1.5 0 0 0-1.5 1.5H9a3 3 0 0 1 3.305-2.984Z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M12 4L4 7.9V20h16V7.9L12 4zm6.5 14.5H14V13h-4v5.5H5.5V8.8L12 5.7l6.5 3.1v9.7z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"m7 6.5 4 2.5-4 2.5z\" />\n\t    <Path fillRule=\"evenodd\"\n\t      clipRule=\"evenodd\"\n\t      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\"\n\t    />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<Path d=\"M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14.5c-3.6 0-6.5-2.9-6.5-6.5S8.4 5.5 12 5.5s6.5 2.9 6.5 6.5-2.9 6.5-6.5 6.5zM9 16l4.5-3L15 8.4l-4.5 3L9 16z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path fillRule=\"evenodd\"\n\t      clipRule=\"evenodd\"\n\t      d=\"M12 18.5A6.5 6.5 0 0 1 6.93 7.931l9.139 9.138A6.473 6.473 0 0 1 12 18.5Zm5.123-2.498a6.5 6.5 0 0 0-9.124-9.124l9.124 9.124ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Z\"\n\t    />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M15.5 7.5h-7V9h7V7.5Zm-7 3.5h7v1.5h-7V11Zm7 3.5h-7V16h7v-1.5Z\" />\n\t    <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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M14.5 5.5h-7V7h7V5.5ZM7.5 9h7v1.5h-7V9Zm7 3.5h-7V14h7v-1.5Z\" />\n\t    <Path d=\"M16 2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2ZM6 3.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H6a.5.5 0 0 1-.5-.5V4a.5.5 0 0 1 .5-.5Z\" />\n\t    <Path d=\"M20 8v11c0 .69-.31 1-.999 1H6v1.5h13.001c1.52 0 2.499-.982 2.499-2.5V8H20Z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path d=\"m19 7-3-3-8.5 8.5-1 4 4-1L19 7Zm-7 11.5H5V20h7v-1.5Z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path fillRule=\"evenodd\"\n\t      clipRule=\"evenodd\"\n\t      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 0Zm8 4a4 4 0 0 1-4-4h4V8a4 4 0 0 1 0 8Z\"\n\t    />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M10.5 4v4h3V4H15v4h1.5a1 1 0 011 1v4l-3 4v2a1 1 0 01-1 1h-3a1 1 0 01-1-1v-2l-3-4V9a1 1 0 011-1H9V4h1.5zm.5 12.5v2h2v-2l3-4v-3H8v3l3 4z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path fillRule=\"evenodd\"\n\t      clipRule=\"evenodd\"\n\t      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\"\n\t    />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M12 4V2.2L9 4.8l3 2.5V5.5c3.6 0 6.5 2.9 6.5 6.5 0 2.9-1.9 5.3-4.5 6.2v.2l-.1-.2c-.4.1-.7.2-1.1.2l.2 1.5c.3 0 .6-.1 1-.2 3.5-.9 6-4 6-7.7 0-4.4-3.6-8-8-8zm-7.9 7l1.5.2c.1-1.2.5-2.3 1.2-3.2l-1.1-.9C4.8 8.2 4.3 9.6 4.1 11zm1.5 1.8l-1.5.2c.1.7.3 1.4.5 2 .3.7.6 1.3 1 1.8l1.2-.8c-.3-.5-.6-1-.8-1.5s-.4-1.1-.4-1.7zm1.5 5.5c1.1.9 2.4 1.4 3.8 1.6l.2-1.5c-1.1-.1-2.2-.5-3.1-1.2l-.9 1.1z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M15.1 4.8l-3-2.5V4c-4.4 0-8 3.6-8 8 0 3.7 2.5 6.9 6 7.7.3.1.6.1 1 .2l.2-1.5c-.4 0-.7-.1-1.1-.2l-.1.2v-.2c-2.6-.8-4.5-3.3-4.5-6.2 0-3.6 2.9-6.5 6.5-6.5v1.8l3-2.5zM20 11c-.2-1.4-.7-2.7-1.6-3.8l-1.2.8c.7.9 1.1 2 1.3 3.1L20 11zm-1.5 1.8c-.1.5-.2 1.1-.4 1.6s-.5 1-.8 1.5l1.2.9c.4-.5.8-1.1 1-1.8s.5-1.3.5-2l-1.5-.2zm-5.6 5.6l.2 1.5c1.4-.2 2.7-.7 3.8-1.6l-.9-1.1c-.9.7-2 1.1-3.1 1.2z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path fillRule=\"evenodd\"\n\t      clipRule=\"evenodd\"\n\t      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\"\n\t    />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<Path fillRule=\"evenodd\"\n\t      clipRule=\"evenodd\"\n\t      d=\"M20 12a8 8 0 1 1-16 0 8 8 0 0 1 16 0Zm-1.5 0a6.5 6.5 0 0 1-6.5 6.5v-13a6.5 6.5 0 0 1 6.5 6.5Z\"\n\t    />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<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-1 1.4l-5.6 5.6c-.1.1-.3.1-.4 0l-5.6-5.6c-.1-.1-.1-.3 0-.4l5.6-5.6s.1-.1.2-.1.1 0 .2.1l5.6 5.6c.1.1.1.3 0 .4zm-16.6-.4L10 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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path fillRule=\"evenodd\"\n\t      clipRule=\"evenodd\"\n\t      d=\"M12 5.5A2.25 2.25 0 0 0 9.878 7h4.244A2.251 2.251 0 0 0 12 5.5ZM12 4a3.751 3.751 0 0 0-3.675 3H5v1.5h1.27l.818 8.997a2.75 2.75 0 0 0 2.739 2.501h4.347a2.75 2.75 0 0 0 2.738-2.5L17.73 8.5H19V7h-3.325A3.751 3.751 0 0 0 12 4Zm4.224 4.5H7.776l.806 8.861a1.25 1.25 0 0 0 1.245 1.137h4.347a1.25 1.25 0 0 0 1.245-1.137l.805-8.861Z\"\n\t    />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M18.5 15v3.5H13V6.7l4.5 4.1 1-1.1-6.2-5.8-5.8 5.8 1 1.1 4-4v11.7h-6V15H4v5h16v-5z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<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\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-2 -2 24 24\">\n\t<Path d=\"M20 10c0-5.51-4.49-10-10-10C4.48 0 0 4.49 0 10c0 5.52 4.48 10 10 10 5.51 0 10-4.48 10-10zM7.78 15.37L4.37 6.22c.55-.02 1.17-.08 1.17-.08.5-.06.44-1.13-.06-1.11 0 0-1.45.11-2.37.11-.18 0-.37 0-.58-.01C4.12 2.69 6.87 1.11 10 1.11c2.33 0 4.45.87 6.05 2.34-.68-.11-1.65.39-1.65 1.58 0 .74.45 1.36.9 2.1.35.61.55 1.36.55 2.46 0 1.49-1.4 5-1.4 5l-3.03-8.37c.54-.02.82-.17.82-.17.5-.05.44-1.25-.06-1.22 0 0-1.44.12-2.38.12-.87 0-2.33-.12-2.33-.12-.5-.03-.56 1.2-.06 1.22l.92.08 1.26 3.41zM17.41 10c.24-.64.74-1.87.43-4.25.7 1.29 1.05 2.71 1.05 4.25 0 3.29-1.73 6.24-4.4 7.78.97-2.59 1.94-5.2 2.92-7.78zM6.1 18.09C3.12 16.65 1.11 13.53 1.11 10c0-1.3.23-2.48.72-3.59C3.25 10.3 4.67 14.2 6.1 18.09zm4.03-6.63l2.58 6.98c-.86.29-1.76.45-2.71.45-.79 0-1.57-.11-2.29-.33.81-2.38 1.62-4.74 2.42-7.1z\" />\n\t</SVG>\n);\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { Icon } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { wordpress } from '@wordpress/icons';\nimport { store as coreDataStore } from '@wordpress/core-data';\n\nfunction SiteIcon( { className } ) {\n\tconst { isRequestingSite, siteIconUrl } = useSelect( ( select ) => {\n\t\tconst { getEntityRecord } = select( coreDataStore );\n\t\tconst siteData = getEntityRecord( 'root', '__unstableBase', undefined );\n\n\t\treturn {\n\t\t\tisRequestingSite: ! siteData,\n\t\t\tsiteIconUrl: siteData?.site_icon_url,\n\t\t};\n\t}, [] );\n\n\tif ( isRequestingSite && ! siteIconUrl ) {\n\t\treturn <div className=\"edit-site-site-icon__image\" />;\n\t}\n\n\tconst icon = siteIconUrl ? (\n\t\t<img\n\t\t\tclassName=\"edit-site-site-icon__image\"\n\t\t\talt={ __( 'Site Icon' ) }\n\t\t\tsrc={ siteIconUrl }\n\t\t/>\n\t) : (\n\t\t<Icon\n\t\t\tclassName=\"edit-site-site-icon__icon\"\n\t\t\ticon={ wordpress }\n\t\t\tsize={ 48 }\n\t\t/>\n\t);\n\n\treturn (\n\t\t<div className={ clsx( className, 'edit-site-site-icon' ) }>\n\t\t\t{ icon }\n\t\t</div>\n\t);\n}\n\nexport default SiteIcon;\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcreateContext,\n\tuseContext,\n\tuseState,\n\tuseRef,\n\tuseLayoutEffect,\n} from '@wordpress/element';\nimport { focus } from '@wordpress/dom';\n\nexport const SidebarNavigationContext = createContext( () => {} );\nSidebarNavigationContext.displayName = 'SidebarNavigationContext';\n\n// Focus a sidebar element after a navigation. The element to focus is either\n// specified by `focusSelector` (when navigating back) or it is the first\n// tabbable element (usually the \"Back\" button).\nfunction focusSidebarElement( el, direction, focusSelector ) {\n\tlet elementToFocus;\n\tif ( direction === 'back' && focusSelector ) {\n\t\telementToFocus = el.querySelector( focusSelector );\n\t}\n\tif ( direction !== null && ! elementToFocus ) {\n\t\tconst [ firstTabbable ] = focus.tabbable.find( el );\n\t\telementToFocus = firstTabbable ?? el;\n\t}\n\telementToFocus?.focus();\n}\n\n// Navigation state that is updated when navigating back or forward. Helps us\n// manage the animations and also focus.\nfunction createNavState() {\n\tlet state = {\n\t\tdirection: null,\n\t\tfocusSelector: null,\n\t};\n\n\treturn {\n\t\tget() {\n\t\t\treturn state;\n\t\t},\n\t\tnavigate( direction, focusSelector = null ) {\n\t\t\tstate = {\n\t\t\t\tdirection,\n\t\t\t\tfocusSelector:\n\t\t\t\t\tdirection === 'forward' && focusSelector\n\t\t\t\t\t\t? focusSelector\n\t\t\t\t\t\t: state.focusSelector,\n\t\t\t};\n\t\t},\n\t};\n}\n\nfunction SidebarContentWrapper( { children, shouldAnimate } ) {\n\tconst navState = useContext( SidebarNavigationContext );\n\tconst wrapperRef = useRef();\n\tconst [ navAnimation, setNavAnimation ] = useState( null );\n\n\tuseLayoutEffect( () => {\n\t\tconst { direction, focusSelector } = navState.get();\n\t\tfocusSidebarElement( wrapperRef.current, direction, focusSelector );\n\t\tsetNavAnimation( direction );\n\t}, [ navState ] );\n\n\tconst wrapperCls = clsx(\n\t\t'edit-site-sidebar__screen-wrapper',\n\t\t/*\n\t\t * Some panes do not have sub-panes and therefore\n\t\t * should not animate when clicked on.\n\t\t */\n\t\tshouldAnimate\n\t\t\t? {\n\t\t\t\t\t'slide-from-left': navAnimation === 'back',\n\t\t\t\t\t'slide-from-right': navAnimation === 'forward',\n\t\t\t  }\n\t\t\t: {}\n\t);\n\n\treturn (\n\t\t<div ref={ wrapperRef } className={ wrapperCls }>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nexport function SidebarNavigationProvider( { children } ) {\n\tconst [ navState ] = useState( createNavState );\n\n\treturn (\n\t\t<SidebarNavigationContext.Provider value={ navState }>\n\t\t\t{ children }\n\t\t</SidebarNavigationContext.Provider>\n\t);\n}\n\nexport function SidebarContent( { routeKey, shouldAnimate, children } ) {\n\treturn (\n\t\t<div className=\"edit-site-sidebar__content\">\n\t\t\t<SidebarContentWrapper\n\t\t\t\tshouldAnimate={ shouldAnimate }\n\t\t\t\tkey={ routeKey }\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</SidebarContentWrapper>\n\t\t</div>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useRef } from '@wordpress/element';\nimport {\n\tResizableBox,\n\tTooltip,\n\t__unstableMotion as motion,\n} from '@wordpress/components';\nimport { useInstanceId, useReducedMotion } from '@wordpress/compose';\nimport { __, isRTL } from '@wordpress/i18n';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { addQueryArgs } from '@wordpress/url';\n\nconst { useLocation, useHistory } = unlock( routerPrivateApis );\n\n// Removes the inline styles in the drag handles.\nconst HANDLE_STYLES_OVERRIDE = {\n\tposition: undefined,\n\tuserSelect: undefined,\n\tcursor: undefined,\n\twidth: undefined,\n\theight: undefined,\n\ttop: undefined,\n\tright: undefined,\n\tbottom: undefined,\n\tleft: undefined,\n};\n\n// The minimum width of the frame (in px) while resizing.\nconst FRAME_MIN_WIDTH = 320;\n// The reference width of the frame (in px) used to calculate the aspect ratio.\nconst FRAME_REFERENCE_WIDTH = 1300;\n// 9 : 19.5 is the target aspect ratio enforced (when possible) while resizing.\nconst FRAME_TARGET_ASPECT_RATIO = 9 / 19.5;\n// The minimum distance (in px) between the frame resize handle and the\n// viewport's edge. If the frame is resized to be closer to the viewport's edge\n// than this distance, then \"canvas mode\" will be enabled.\nconst SNAP_TO_EDIT_CANVAS_MODE_THRESHOLD = 200;\n// Default size for the `frameSize` state.\nconst INITIAL_FRAME_SIZE = { width: '100%', height: '100%' };\n\nfunction calculateNewHeight( width, initialAspectRatio ) {\n\tconst lerp = ( a, b, amount ) => {\n\t\treturn a + ( b - a ) * amount;\n\t};\n\n\t// Calculate the intermediate aspect ratio based on the current width.\n\tconst lerpFactor =\n\t\t1 -\n\t\tMath.max(\n\t\t\t0,\n\t\t\tMath.min(\n\t\t\t\t1,\n\t\t\t\t( width - FRAME_MIN_WIDTH ) /\n\t\t\t\t\t( FRAME_REFERENCE_WIDTH - FRAME_MIN_WIDTH )\n\t\t\t)\n\t\t);\n\n\t// Calculate the height based on the intermediate aspect ratio\n\t// ensuring the frame arrives at the target aspect ratio.\n\tconst intermediateAspectRatio = lerp(\n\t\tinitialAspectRatio,\n\t\tFRAME_TARGET_ASPECT_RATIO,\n\t\tlerpFactor\n\t);\n\n\treturn width / intermediateAspectRatio;\n}\n\nfunction ResizableFrame( {\n\tisFullWidth,\n\tisOversized,\n\tsetIsOversized,\n\tisReady,\n\tchildren,\n\t/** The default (unresized) width/height of the frame, based on the space available in the viewport. */\n\tdefaultSize,\n\tinnerContentStyle,\n} ) {\n\tconst history = useHistory();\n\tconst { path, query } = useLocation();\n\tconst { canvas = 'view' } = query;\n\tconst disableMotion = useReducedMotion();\n\tconst [ frameSize, setFrameSize ] = useState( INITIAL_FRAME_SIZE );\n\t// The width of the resizable frame when a new resize gesture starts.\n\tconst [ startingWidth, setStartingWidth ] = useState();\n\tconst [ isResizing, setIsResizing ] = useState( false );\n\tconst [ shouldShowHandle, setShouldShowHandle ] = useState( false );\n\tconst [ resizeRatio, setResizeRatio ] = useState( 1 );\n\n\tconst FRAME_TRANSITION = { type: 'tween', duration: isResizing ? 0 : 0.5 };\n\tconst frameRef = useRef( null );\n\tconst resizableHandleHelpId = useInstanceId(\n\t\tResizableFrame,\n\t\t'edit-site-resizable-frame-handle-help'\n\t);\n\tconst defaultAspectRatio = defaultSize.width / defaultSize.height;\n\tconst isBlockTheme = useSelect( ( select ) => {\n\t\tconst { getCurrentTheme } = select( coreStore );\n\t\treturn getCurrentTheme()?.is_block_theme;\n\t}, [] );\n\n\tconst handleResizeStart = ( _event, _direction, ref ) => {\n\t\t// Remember the starting width so we don't have to get `ref.offsetWidth` on\n\t\t// every resize event thereafter, which will cause layout thrashing.\n\t\tsetStartingWidth( ref.offsetWidth );\n\t\tsetIsResizing( true );\n\t};\n\n\t// Calculate the frame size based on the window width as its resized.\n\tconst handleResize = ( _event, _direction, _ref, delta ) => {\n\t\tconst normalizedDelta = delta.width / resizeRatio;\n\t\tconst deltaAbs = Math.abs( normalizedDelta );\n\t\tconst maxDoubledDelta =\n\t\t\tdelta.width < 0 // is shrinking\n\t\t\t\t? deltaAbs\n\t\t\t\t: ( defaultSize.width - startingWidth ) / 2;\n\t\tconst deltaToDouble = Math.min( deltaAbs, maxDoubledDelta );\n\t\tconst doubleSegment = deltaAbs === 0 ? 0 : deltaToDouble / deltaAbs;\n\t\tconst singleSegment = 1 - doubleSegment;\n\n\t\tsetResizeRatio( singleSegment + doubleSegment * 2 );\n\n\t\tconst updatedWidth = startingWidth + delta.width;\n\n\t\tsetIsOversized( updatedWidth > defaultSize.width );\n\n\t\t// Width will be controlled by the library (via `resizeRatio`),\n\t\t// so we only need to update the height.\n\t\tsetFrameSize( {\n\t\t\theight: isOversized\n\t\t\t\t? '100%'\n\t\t\t\t: calculateNewHeight( updatedWidth, defaultAspectRatio ),\n\t\t} );\n\t};\n\n\tconst handleResizeStop = ( _event, _direction, ref ) => {\n\t\tsetIsResizing( false );\n\n\t\tif ( ! isOversized ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetIsOversized( false );\n\n\t\tconst remainingWidth =\n\t\t\tref.ownerDocument.documentElement.offsetWidth - ref.offsetWidth;\n\n\t\tif (\n\t\t\tremainingWidth > SNAP_TO_EDIT_CANVAS_MODE_THRESHOLD ||\n\t\t\t! isBlockTheme\n\t\t) {\n\t\t\t// Reset the initial aspect ratio if the frame is resized slightly\n\t\t\t// above the sidebar but not far enough to trigger full screen.\n\t\t\tsetFrameSize( INITIAL_FRAME_SIZE );\n\t\t} else {\n\t\t\t// Trigger full screen if the frame is resized far enough to the left.\n\t\t\thistory.navigate(\n\t\t\t\taddQueryArgs( path, {\n\t\t\t\t\tcanvas: 'edit',\n\t\t\t\t} ),\n\t\t\t\t{\n\t\t\t\t\ttransition: 'canvas-mode-edit-transition',\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n\n\t// Handle resize by arrow keys\n\tconst handleResizableHandleKeyDown = ( event ) => {\n\t\tif ( ! [ 'ArrowLeft', 'ArrowRight' ].includes( event.key ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tconst step = 20 * ( event.shiftKey ? 5 : 1 );\n\t\tconst delta =\n\t\t\tstep *\n\t\t\t( event.key === 'ArrowLeft' ? 1 : -1 ) *\n\t\t\t( isRTL() ? -1 : 1 );\n\t\tconst newWidth = Math.min(\n\t\t\tMath.max(\n\t\t\t\tFRAME_MIN_WIDTH,\n\t\t\t\tframeRef.current.resizable.offsetWidth + delta\n\t\t\t),\n\t\t\tdefaultSize.width\n\t\t);\n\n\t\tsetFrameSize( {\n\t\t\twidth: newWidth,\n\t\t\theight: calculateNewHeight( newWidth, defaultAspectRatio ),\n\t\t} );\n\t};\n\n\tconst frameAnimationVariants = {\n\t\tdefault: {\n\t\t\tflexGrow: 0,\n\t\t\theight: frameSize.height,\n\t\t},\n\t\tfullWidth: {\n\t\t\tflexGrow: 1,\n\t\t\theight: frameSize.height,\n\t\t},\n\t};\n\n\tconst resizeHandleVariants = {\n\t\thidden: {\n\t\t\topacity: 0,\n\t\t\t...( isRTL() ? { right: 0 } : { left: 0 } ),\n\t\t},\n\t\tvisible: {\n\t\t\topacity: 1,\n\t\t\t// Account for the handle's width.\n\t\t\t...( isRTL() ? { right: -14 } : { left: -14 } ),\n\t\t},\n\t\tactive: {\n\t\t\topacity: 1,\n\t\t\t// Account for the handle's width.\n\t\t\t...( isRTL() ? { right: -14 } : { left: -14 } ),\n\t\t\tscaleY: 1.3,\n\t\t},\n\t};\n\tconst currentResizeHandleVariant = ( () => {\n\t\tif ( isResizing ) {\n\t\t\treturn 'active';\n\t\t}\n\t\treturn shouldShowHandle ? 'visible' : 'hidden';\n\t} )();\n\n\treturn (\n\t\t<ResizableBox\n\t\t\tas={ motion.div }\n\t\t\tref={ frameRef }\n\t\t\tinitial={ false }\n\t\t\tvariants={ frameAnimationVariants }\n\t\t\tanimate={ isFullWidth ? 'fullWidth' : 'default' }\n\t\t\tonAnimationComplete={ ( definition ) => {\n\t\t\t\tif ( definition === 'fullWidth' ) {\n\t\t\t\t\tsetFrameSize( { width: '100%', height: '100%' } );\n\t\t\t\t}\n\t\t\t} }\n\t\t\twhileHover={\n\t\t\t\tcanvas === 'view' && isBlockTheme\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tscale: 1.005,\n\t\t\t\t\t\t\ttransition: {\n\t\t\t\t\t\t\t\tduration: disableMotion ? 0 : 0.5,\n\t\t\t\t\t\t\t\tease: 'easeOut',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t  }\n\t\t\t\t\t: {}\n\t\t\t}\n\t\t\ttransition={ FRAME_TRANSITION }\n\t\t\tsize={ frameSize }\n\t\t\tenable={ {\n\t\t\t\ttop: false,\n\t\t\t\tbottom: false,\n\t\t\t\t// Resizing will be disabled until the editor content is loaded.\n\t\t\t\t...( isRTL()\n\t\t\t\t\t? { right: isReady, left: false }\n\t\t\t\t\t: { left: isReady, right: false } ),\n\t\t\t\ttopRight: false,\n\t\t\t\tbottomRight: false,\n\t\t\t\tbottomLeft: false,\n\t\t\t\ttopLeft: false,\n\t\t\t} }\n\t\t\tresizeRatio={ resizeRatio }\n\t\t\thandleClasses={ undefined }\n\t\t\thandleStyles={ {\n\t\t\t\tleft: HANDLE_STYLES_OVERRIDE,\n\t\t\t\tright: HANDLE_STYLES_OVERRIDE,\n\t\t\t} }\n\t\t\tminWidth={ FRAME_MIN_WIDTH }\n\t\t\tmaxWidth={ isFullWidth ? '100%' : '150%' }\n\t\t\tmaxHeight=\"100%\"\n\t\t\tonFocus={ () => setShouldShowHandle( true ) }\n\t\t\tonBlur={ () => setShouldShowHandle( false ) }\n\t\t\tonMouseOver={ () => setShouldShowHandle( true ) }\n\t\t\tonMouseOut={ () => setShouldShowHandle( false ) }\n\t\t\thandleComponent={ {\n\t\t\t\t[ isRTL() ? 'right' : 'left' ]: canvas === 'view' && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Tooltip text={ __( 'Drag to resize' ) }>\n\t\t\t\t\t\t\t{ /* Disable reason: role=\"separator\" does in fact support aria-valuenow */ }\n\t\t\t\t\t\t\t{ /* eslint-disable-next-line jsx-a11y/role-supports-aria-props */ }\n\t\t\t\t\t\t\t<motion.button\n\t\t\t\t\t\t\t\tkey=\"handle\"\n\t\t\t\t\t\t\t\trole=\"separator\"\n\t\t\t\t\t\t\t\taria-orientation=\"vertical\"\n\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'edit-site-resizable-frame__handle',\n\t\t\t\t\t\t\t\t\t{ 'is-resizing': isResizing }\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tvariants={ resizeHandleVariants }\n\t\t\t\t\t\t\t\tanimate={ currentResizeHandleVariant }\n\t\t\t\t\t\t\t\taria-label={ __( 'Drag to resize' ) }\n\t\t\t\t\t\t\t\taria-describedby={ resizableHandleHelpId }\n\t\t\t\t\t\t\t\taria-valuenow={\n\t\t\t\t\t\t\t\t\tframeRef.current?.resizable?.offsetWidth ||\n\t\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\taria-valuemin={ FRAME_MIN_WIDTH }\n\t\t\t\t\t\t\t\taria-valuemax={ defaultSize.width }\n\t\t\t\t\t\t\t\tonKeyDown={ handleResizableHandleKeyDown }\n\t\t\t\t\t\t\t\tinitial=\"hidden\"\n\t\t\t\t\t\t\t\texit=\"hidden\"\n\t\t\t\t\t\t\t\twhileFocus=\"active\"\n\t\t\t\t\t\t\t\twhileHover=\"active\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t<div hidden id={ resizableHandleHelpId }>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'Use left and right arrow keys to resize the canvas. Hold shift to resize in larger increments.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</>\n\t\t\t\t),\n\t\t\t} }\n\t\t\tonResizeStart={ handleResizeStart }\n\t\t\tonResize={ handleResize }\n\t\t\tonResizeStop={ handleResizeStop }\n\t\t\tclassName={ clsx( 'edit-site-resizable-frame__inner', {\n\t\t\t\t'is-resizing': isResizing,\n\t\t\t} ) }\n\t\t\tshowHandle={ false } // Do not show the default handle, as we're using a custom one.\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName=\"edit-site-resizable-frame__inner-content\"\n\t\t\t\tstyle={ innerContentStyle }\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t</ResizableBox>\n\t);\n}\n\nexport default ResizableFrame;\n", "/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element';\nimport {\n\tuseShortcut,\n\tstore as keyboardShortcutsStore,\n} from '@wordpress/keyboard-shortcuts';\nimport { __ } from '@wordpress/i18n';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\n\nconst shortcutName = 'core/edit-site/save';\n\n/**\n * Register the save keyboard shortcut in view mode.\n *\n * @return {null} Returns null.\n */\nexport default function SaveKeyboardShortcut() {\n\tconst { __experimentalGetDirtyEntityRecords, isSavingEntityRecord } =\n\t\tuseSelect( coreStore );\n\tconst { hasNonPostEntityChanges, isPostSavingLocked } =\n\t\tuseSelect( editorStore );\n\tconst { savePost } = useDispatch( editorStore );\n\tconst { setIsSaveViewOpened } = useDispatch( editSiteStore );\n\tconst { registerShortcut, unregisterShortcut } = useDispatch(\n\t\tkeyboardShortcutsStore\n\t);\n\tuseEffect( () => {\n\t\tregisterShortcut( {\n\t\t\tname: shortcutName,\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Save your changes.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primary',\n\t\t\t\tcharacter: 's',\n\t\t\t},\n\t\t} );\n\t\treturn () => {\n\t\t\tunregisterShortcut( shortcutName );\n\t\t};\n\t}, [ registerShortcut, unregisterShortcut ] );\n\n\tuseShortcut( 'core/edit-site/save', ( event ) => {\n\t\tevent.preventDefault();\n\t\tconst dirtyEntityRecords = __experimentalGetDirtyEntityRecords();\n\t\tconst hasDirtyEntities = !! dirtyEntityRecords.length;\n\t\tconst isSaving = dirtyEntityRecords.some( ( record ) =>\n\t\t\tisSavingEntityRecord( record.kind, record.name, record.key )\n\t\t);\n\t\tif ( ! hasDirtyEntities || isSaving ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( hasNonPostEntityChanges() ) {\n\t\t\tsetIsSaveViewOpened( true );\n\t\t} else if ( ! isPostSavingLocked() ) {\n\t\t\tsavePost();\n\t\t}\n\t} );\n\n\treturn null;\n}\n", "/**\n * WordPress dependencies\n */\nimport { useEffect, useState } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\nconst MAX_LOADING_TIME = 10000; // 10 seconds\n\nexport function useIsSiteEditorLoading() {\n\tconst [ loaded, setLoaded ] = useState( false );\n\tconst inLoadingPause = useSelect(\n\t\t( select ) => {\n\t\t\tconst hasResolvingSelectors =\n\t\t\t\tselect( coreStore ).hasResolvingSelectors();\n\t\t\treturn ! loaded && ! hasResolvingSelectors;\n\t\t},\n\t\t[ loaded ]\n\t);\n\n\t/*\n\t * If the maximum expected loading time has passed, we're marking the\n\t * editor as loaded, in order to prevent any failed requests from blocking\n\t * the editor canvas from appearing.\n\t */\n\tuseEffect( () => {\n\t\tlet timeout;\n\n\t\tif ( ! loaded ) {\n\t\t\ttimeout = setTimeout( () => {\n\t\t\t\tsetLoaded( true );\n\t\t\t}, MAX_LOADING_TIME );\n\t\t}\n\n\t\treturn () => {\n\t\t\tclearTimeout( timeout );\n\t\t};\n\t}, [ loaded ] );\n\n\tuseEffect( () => {\n\t\tif ( inLoadingPause ) {\n\t\t\t/*\n\t\t\t * We're using an arbitrary 100ms timeout here to catch brief\n\t\t\t * moments without any resolving selectors that would result in\n\t\t\t * displaying brief flickers of loading state and loaded state.\n\t\t\t *\n\t\t\t * It's worth experimenting with different values, since this also\n\t\t\t * adds 100ms of artificial delay after loading has finished.\n\t\t\t */\n\t\t\tconst ARTIFICIAL_DELAY = 100;\n\t\t\tconst timeout = setTimeout( () => {\n\t\t\t\tsetLoaded( true );\n\t\t\t}, ARTIFICIAL_DELAY );\n\n\t\t\treturn () => {\n\t\t\t\tclearTimeout( timeout );\n\t\t\t};\n\t\t}\n\t}, [ inLoadingPause ] );\n\n\treturn ! loaded;\n}\n", "let updateQueue = makeQueue();\nconst raf = fn => schedule(fn, updateQueue);\nlet writeQueue = makeQueue();\n\nraf.write = fn => schedule(fn, writeQueue);\n\nlet onStartQueue = makeQueue();\n\nraf.onStart = fn => schedule(fn, onStartQueue);\n\nlet onFrameQueue = makeQueue();\n\nraf.onFrame = fn => schedule(fn, onFrameQueue);\n\nlet onFinishQueue = makeQueue();\n\nraf.onFinish = fn => schedule(fn, onFinishQueue);\n\nlet timeouts = [];\n\nraf.setTimeout = (handler, ms) => {\n  let time = raf.now() + ms;\n\n  let cancel = () => {\n    let i = timeouts.findIndex(t => t.cancel == cancel);\n    if (~i) timeouts.splice(i, 1);\n    pendingCount -= ~i ? 1 : 0;\n  };\n\n  let timeout = {\n    time,\n    handler,\n    cancel\n  };\n  timeouts.splice(findTimeout(time), 0, timeout);\n  pendingCount += 1;\n  start();\n  return timeout;\n};\n\nlet findTimeout = time => ~(~timeouts.findIndex(t => t.time > time) || ~timeouts.length);\n\nraf.cancel = fn => {\n  onStartQueue.delete(fn);\n  onFrameQueue.delete(fn);\n  onFinishQueue.delete(fn);\n  updateQueue.delete(fn);\n  writeQueue.delete(fn);\n};\n\nraf.sync = fn => {\n  sync = true;\n  raf.batchedUpdates(fn);\n  sync = false;\n};\n\nraf.throttle = fn => {\n  let lastArgs;\n\n  function queuedFn() {\n    try {\n      fn(...lastArgs);\n    } finally {\n      lastArgs = null;\n    }\n  }\n\n  function throttled(...args) {\n    lastArgs = args;\n    raf.onStart(queuedFn);\n  }\n\n  throttled.handler = fn;\n\n  throttled.cancel = () => {\n    onStartQueue.delete(queuedFn);\n    lastArgs = null;\n  };\n\n  return throttled;\n};\n\nlet nativeRaf = typeof window != 'undefined' ? window.requestAnimationFrame : () => {};\n\nraf.use = impl => nativeRaf = impl;\n\nraf.now = typeof performance != 'undefined' ? () => performance.now() : Date.now;\n\nraf.batchedUpdates = fn => fn();\n\nraf.catch = console.error;\nraf.frameLoop = 'always';\n\nraf.advance = () => {\n  if (raf.frameLoop !== 'demand') {\n    console.warn('Cannot call the manual advancement of rafz whilst frameLoop is not set as demand');\n  } else {\n    update();\n  }\n};\n\nlet ts = -1;\nlet pendingCount = 0;\nlet sync = false;\n\nfunction schedule(fn, queue) {\n  if (sync) {\n    queue.delete(fn);\n    fn(0);\n  } else {\n    queue.add(fn);\n    start();\n  }\n}\n\nfunction start() {\n  if (ts < 0) {\n    ts = 0;\n\n    if (raf.frameLoop !== 'demand') {\n      nativeRaf(loop);\n    }\n  }\n}\n\nfunction stop() {\n  ts = -1;\n}\n\nfunction loop() {\n  if (~ts) {\n    nativeRaf(loop);\n    raf.batchedUpdates(update);\n  }\n}\n\nfunction update() {\n  let prevTs = ts;\n  ts = raf.now();\n  let count = findTimeout(ts);\n\n  if (count) {\n    eachSafely(timeouts.splice(0, count), t => t.handler());\n    pendingCount -= count;\n  }\n\n  if (!pendingCount) {\n    stop();\n    return;\n  }\n\n  onStartQueue.flush();\n  updateQueue.flush(prevTs ? Math.min(64, ts - prevTs) : 16.667);\n  onFrameQueue.flush();\n  writeQueue.flush();\n  onFinishQueue.flush();\n}\n\nfunction makeQueue() {\n  let next = new Set();\n  let current = next;\n  return {\n    add(fn) {\n      pendingCount += current == next && !next.has(fn) ? 1 : 0;\n      next.add(fn);\n    },\n\n    delete(fn) {\n      pendingCount -= current == next && next.has(fn) ? 1 : 0;\n      return next.delete(fn);\n    },\n\n    flush(arg) {\n      if (current.size) {\n        next = new Set();\n        pendingCount -= current.size;\n        eachSafely(current, fn => fn(arg) && next.add(fn));\n        pendingCount += next.size;\n        current = next;\n      }\n    }\n\n  };\n}\n\nfunction eachSafely(values, each) {\n  values.forEach(value => {\n    try {\n      each(value);\n    } catch (e) {\n      raf.catch(e);\n    }\n  });\n}\n\nconst __raf = {\n  count() {\n    return pendingCount;\n  },\n\n  isRunning() {\n    return ts >= 0;\n  },\n\n  clear() {\n    ts = -1;\n    timeouts = [];\n    onStartQueue = makeQueue();\n    updateQueue = makeQueue();\n    onFrameQueue = makeQueue();\n    writeQueue = makeQueue();\n    onFinishQueue = makeQueue();\n    pendingCount = 0;\n  }\n\n};\n\nexport { __raf, raf };\n", "import { raf } from '@react-spring/rafz';\nexport { raf } from '@react-spring/rafz';\nimport { useEffect, useLayoutEffect, useRef, useState } from 'react';\n\nfunction noop() {}\nconst defineHidden = (obj, key, value) => Object.defineProperty(obj, key, {\n  value,\n  writable: true,\n  configurable: true\n});\nconst is = {\n  arr: Array.isArray,\n  obj: a => !!a && a.constructor.name === 'Object',\n  fun: a => typeof a === 'function',\n  str: a => typeof a === 'string',\n  num: a => typeof a === 'number',\n  und: a => a === undefined\n};\nfunction isEqual(a, b) {\n  if (is.arr(a)) {\n    if (!is.arr(b) || a.length !== b.length) return false;\n\n    for (let i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) return false;\n    }\n\n    return true;\n  }\n\n  return a === b;\n}\nconst each = (obj, fn) => obj.forEach(fn);\nfunction eachProp(obj, fn, ctx) {\n  if (is.arr(obj)) {\n    for (let i = 0; i < obj.length; i++) {\n      fn.call(ctx, obj[i], `${i}`);\n    }\n\n    return;\n  }\n\n  for (const key in obj) {\n    if (obj.hasOwnProperty(key)) {\n      fn.call(ctx, obj[key], key);\n    }\n  }\n}\nconst toArray = a => is.und(a) ? [] : is.arr(a) ? a : [a];\nfunction flush(queue, iterator) {\n  if (queue.size) {\n    const items = Array.from(queue);\n    queue.clear();\n    each(items, iterator);\n  }\n}\nconst flushCalls = (queue, ...args) => flush(queue, fn => fn(...args));\nconst isSSR = () => typeof window === 'undefined' || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\n\nlet createStringInterpolator$1;\nlet to;\nlet colors$1 = null;\nlet skipAnimation = false;\nlet willAdvance = noop;\nconst assign = globals => {\n  if (globals.to) to = globals.to;\n  if (globals.now) raf.now = globals.now;\n  if (globals.colors !== undefined) colors$1 = globals.colors;\n  if (globals.skipAnimation != null) skipAnimation = globals.skipAnimation;\n  if (globals.createStringInterpolator) createStringInterpolator$1 = globals.createStringInterpolator;\n  if (globals.requestAnimationFrame) raf.use(globals.requestAnimationFrame);\n  if (globals.batchedUpdates) raf.batchedUpdates = globals.batchedUpdates;\n  if (globals.willAdvance) willAdvance = globals.willAdvance;\n  if (globals.frameLoop) raf.frameLoop = globals.frameLoop;\n};\n\nvar globals = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  get createStringInterpolator () { return createStringInterpolator$1; },\n  get to () { return to; },\n  get colors () { return colors$1; },\n  get skipAnimation () { return skipAnimation; },\n  get willAdvance () { return willAdvance; },\n  assign: assign\n});\n\nconst startQueue = new Set();\nlet currentFrame = [];\nlet prevFrame = [];\nlet priority = 0;\nconst frameLoop = {\n  get idle() {\n    return !startQueue.size && !currentFrame.length;\n  },\n\n  start(animation) {\n    if (priority > animation.priority) {\n      startQueue.add(animation);\n      raf.onStart(flushStartQueue);\n    } else {\n      startSafely(animation);\n      raf(advance);\n    }\n  },\n\n  advance,\n\n  sort(animation) {\n    if (priority) {\n      raf.onFrame(() => frameLoop.sort(animation));\n    } else {\n      const prevIndex = currentFrame.indexOf(animation);\n\n      if (~prevIndex) {\n        currentFrame.splice(prevIndex, 1);\n        startUnsafely(animation);\n      }\n    }\n  },\n\n  clear() {\n    currentFrame = [];\n    startQueue.clear();\n  }\n\n};\n\nfunction flushStartQueue() {\n  startQueue.forEach(startSafely);\n  startQueue.clear();\n  raf(advance);\n}\n\nfunction startSafely(animation) {\n  if (!currentFrame.includes(animation)) startUnsafely(animation);\n}\n\nfunction startUnsafely(animation) {\n  currentFrame.splice(findIndex(currentFrame, other => other.priority > animation.priority), 0, animation);\n}\n\nfunction advance(dt) {\n  const nextFrame = prevFrame;\n\n  for (let i = 0; i < currentFrame.length; i++) {\n    const animation = currentFrame[i];\n    priority = animation.priority;\n\n    if (!animation.idle) {\n      willAdvance(animation);\n      animation.advance(dt);\n\n      if (!animation.idle) {\n        nextFrame.push(animation);\n      }\n    }\n  }\n\n  priority = 0;\n  prevFrame = currentFrame;\n  prevFrame.length = 0;\n  currentFrame = nextFrame;\n  return currentFrame.length > 0;\n}\n\nfunction findIndex(arr, test) {\n  const index = arr.findIndex(test);\n  return index < 0 ? arr.length : index;\n}\n\nconst colors = {\n  transparent: 0x00000000,\n  aliceblue: 0xf0f8ffff,\n  antiquewhite: 0xfaebd7ff,\n  aqua: 0x00ffffff,\n  aquamarine: 0x7fffd4ff,\n  azure: 0xf0ffffff,\n  beige: 0xf5f5dcff,\n  bisque: 0xffe4c4ff,\n  black: 0x000000ff,\n  blanchedalmond: 0xffebcdff,\n  blue: 0x0000ffff,\n  blueviolet: 0x8a2be2ff,\n  brown: 0xa52a2aff,\n  burlywood: 0xdeb887ff,\n  burntsienna: 0xea7e5dff,\n  cadetblue: 0x5f9ea0ff,\n  chartreuse: 0x7fff00ff,\n  chocolate: 0xd2691eff,\n  coral: 0xff7f50ff,\n  cornflowerblue: 0x6495edff,\n  cornsilk: 0xfff8dcff,\n  crimson: 0xdc143cff,\n  cyan: 0x00ffffff,\n  darkblue: 0x00008bff,\n  darkcyan: 0x008b8bff,\n  darkgoldenrod: 0xb8860bff,\n  darkgray: 0xa9a9a9ff,\n  darkgreen: 0x006400ff,\n  darkgrey: 0xa9a9a9ff,\n  darkkhaki: 0xbdb76bff,\n  darkmagenta: 0x8b008bff,\n  darkolivegreen: 0x556b2fff,\n  darkorange: 0xff8c00ff,\n  darkorchid: 0x9932ccff,\n  darkred: 0x8b0000ff,\n  darksalmon: 0xe9967aff,\n  darkseagreen: 0x8fbc8fff,\n  darkslateblue: 0x483d8bff,\n  darkslategray: 0x2f4f4fff,\n  darkslategrey: 0x2f4f4fff,\n  darkturquoise: 0x00ced1ff,\n  darkviolet: 0x9400d3ff,\n  deeppink: 0xff1493ff,\n  deepskyblue: 0x00bfffff,\n  dimgray: 0x696969ff,\n  dimgrey: 0x696969ff,\n  dodgerblue: 0x1e90ffff,\n  firebrick: 0xb22222ff,\n  floralwhite: 0xfffaf0ff,\n  forestgreen: 0x228b22ff,\n  fuchsia: 0xff00ffff,\n  gainsboro: 0xdcdcdcff,\n  ghostwhite: 0xf8f8ffff,\n  gold: 0xffd700ff,\n  goldenrod: 0xdaa520ff,\n  gray: 0x808080ff,\n  green: 0x008000ff,\n  greenyellow: 0xadff2fff,\n  grey: 0x808080ff,\n  honeydew: 0xf0fff0ff,\n  hotpink: 0xff69b4ff,\n  indianred: 0xcd5c5cff,\n  indigo: 0x4b0082ff,\n  ivory: 0xfffff0ff,\n  khaki: 0xf0e68cff,\n  lavender: 0xe6e6faff,\n  lavenderblush: 0xfff0f5ff,\n  lawngreen: 0x7cfc00ff,\n  lemonchiffon: 0xfffacdff,\n  lightblue: 0xadd8e6ff,\n  lightcoral: 0xf08080ff,\n  lightcyan: 0xe0ffffff,\n  lightgoldenrodyellow: 0xfafad2ff,\n  lightgray: 0xd3d3d3ff,\n  lightgreen: 0x90ee90ff,\n  lightgrey: 0xd3d3d3ff,\n  lightpink: 0xffb6c1ff,\n  lightsalmon: 0xffa07aff,\n  lightseagreen: 0x20b2aaff,\n  lightskyblue: 0x87cefaff,\n  lightslategray: 0x778899ff,\n  lightslategrey: 0x778899ff,\n  lightsteelblue: 0xb0c4deff,\n  lightyellow: 0xffffe0ff,\n  lime: 0x00ff00ff,\n  limegreen: 0x32cd32ff,\n  linen: 0xfaf0e6ff,\n  magenta: 0xff00ffff,\n  maroon: 0x800000ff,\n  mediumaquamarine: 0x66cdaaff,\n  mediumblue: 0x0000cdff,\n  mediumorchid: 0xba55d3ff,\n  mediumpurple: 0x9370dbff,\n  mediumseagreen: 0x3cb371ff,\n  mediumslateblue: 0x7b68eeff,\n  mediumspringgreen: 0x00fa9aff,\n  mediumturquoise: 0x48d1ccff,\n  mediumvioletred: 0xc71585ff,\n  midnightblue: 0x191970ff,\n  mintcream: 0xf5fffaff,\n  mistyrose: 0xffe4e1ff,\n  moccasin: 0xffe4b5ff,\n  navajowhite: 0xffdeadff,\n  navy: 0x000080ff,\n  oldlace: 0xfdf5e6ff,\n  olive: 0x808000ff,\n  olivedrab: 0x6b8e23ff,\n  orange: 0xffa500ff,\n  orangered: 0xff4500ff,\n  orchid: 0xda70d6ff,\n  palegoldenrod: 0xeee8aaff,\n  palegreen: 0x98fb98ff,\n  paleturquoise: 0xafeeeeff,\n  palevioletred: 0xdb7093ff,\n  papayawhip: 0xffefd5ff,\n  peachpuff: 0xffdab9ff,\n  peru: 0xcd853fff,\n  pink: 0xffc0cbff,\n  plum: 0xdda0ddff,\n  powderblue: 0xb0e0e6ff,\n  purple: 0x800080ff,\n  rebeccapurple: 0x663399ff,\n  red: 0xff0000ff,\n  rosybrown: 0xbc8f8fff,\n  royalblue: 0x4169e1ff,\n  saddlebrown: 0x8b4513ff,\n  salmon: 0xfa8072ff,\n  sandybrown: 0xf4a460ff,\n  seagreen: 0x2e8b57ff,\n  seashell: 0xfff5eeff,\n  sienna: 0xa0522dff,\n  silver: 0xc0c0c0ff,\n  skyblue: 0x87ceebff,\n  slateblue: 0x6a5acdff,\n  slategray: 0x708090ff,\n  slategrey: 0x708090ff,\n  snow: 0xfffafaff,\n  springgreen: 0x00ff7fff,\n  steelblue: 0x4682b4ff,\n  tan: 0xd2b48cff,\n  teal: 0x008080ff,\n  thistle: 0xd8bfd8ff,\n  tomato: 0xff6347ff,\n  turquoise: 0x40e0d0ff,\n  violet: 0xee82eeff,\n  wheat: 0xf5deb3ff,\n  white: 0xffffffff,\n  whitesmoke: 0xf5f5f5ff,\n  yellow: 0xffff00ff,\n  yellowgreen: 0x9acd32ff\n};\n\nconst NUMBER = '[-+]?\\\\d*\\\\.?\\\\d+';\nconst PERCENTAGE = NUMBER + '%';\n\nfunction call(...parts) {\n  return '\\\\(\\\\s*(' + parts.join(')\\\\s*,\\\\s*(') + ')\\\\s*\\\\)';\n}\n\nconst rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER));\nconst rgba = new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER));\nconst hsl = new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE));\nconst hsla = new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER));\nconst hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex6 = /^#([0-9a-fA-F]{6})$/;\nconst hex8 = /^#([0-9a-fA-F]{8})$/;\n\nfunction normalizeColor(color) {\n  let match;\n\n  if (typeof color === 'number') {\n    return color >>> 0 === color && color >= 0 && color <= 0xffffffff ? color : null;\n  }\n\n  if (match = hex6.exec(color)) return parseInt(match[1] + 'ff', 16) >>> 0;\n\n  if (colors$1 && colors$1[color] !== undefined) {\n    return colors$1[color];\n  }\n\n  if (match = rgb.exec(color)) {\n    return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | 0x000000ff) >>> 0;\n  }\n\n  if (match = rgba.exec(color)) {\n    return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | parse1(match[4])) >>> 0;\n  }\n\n  if (match = hex3.exec(color)) {\n    return parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + 'ff', 16) >>> 0;\n  }\n\n  if (match = hex8.exec(color)) return parseInt(match[1], 16) >>> 0;\n\n  if (match = hex4.exec(color)) {\n    return parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + match[4] + match[4], 16) >>> 0;\n  }\n\n  if (match = hsl.exec(color)) {\n    return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | 0x000000ff) >>> 0;\n  }\n\n  if (match = hsla.exec(color)) {\n    return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | parse1(match[4])) >>> 0;\n  }\n\n  return null;\n}\n\nfunction hue2rgb(p, q, t) {\n  if (t < 0) t += 1;\n  if (t > 1) t -= 1;\n  if (t < 1 / 6) return p + (q - p) * 6 * t;\n  if (t < 1 / 2) return q;\n  if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n  return p;\n}\n\nfunction hslToRgb(h, s, l) {\n  const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n  const p = 2 * l - q;\n  const r = hue2rgb(p, q, h + 1 / 3);\n  const g = hue2rgb(p, q, h);\n  const b = hue2rgb(p, q, h - 1 / 3);\n  return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8;\n}\n\nfunction parse255(str) {\n  const int = parseInt(str, 10);\n  if (int < 0) return 0;\n  if (int > 255) return 255;\n  return int;\n}\n\nfunction parse360(str) {\n  const int = parseFloat(str);\n  return (int % 360 + 360) % 360 / 360;\n}\n\nfunction parse1(str) {\n  const num = parseFloat(str);\n  if (num < 0) return 0;\n  if (num > 1) return 255;\n  return Math.round(num * 255);\n}\n\nfunction parsePercentage(str) {\n  const int = parseFloat(str);\n  if (int < 0) return 0;\n  if (int > 100) return 1;\n  return int / 100;\n}\n\nfunction colorToRgba(input) {\n  let int32Color = normalizeColor(input);\n  if (int32Color === null) return input;\n  int32Color = int32Color || 0;\n  let r = (int32Color & 0xff000000) >>> 24;\n  let g = (int32Color & 0x00ff0000) >>> 16;\n  let b = (int32Color & 0x0000ff00) >>> 8;\n  let a = (int32Color & 0x000000ff) / 255;\n  return `rgba(${r}, ${g}, ${b}, ${a})`;\n}\n\nconst createInterpolator = (range, output, extrapolate) => {\n  if (is.fun(range)) {\n    return range;\n  }\n\n  if (is.arr(range)) {\n    return createInterpolator({\n      range,\n      output: output,\n      extrapolate\n    });\n  }\n\n  if (is.str(range.output[0])) {\n    return createStringInterpolator$1(range);\n  }\n\n  const config = range;\n  const outputRange = config.output;\n  const inputRange = config.range || [0, 1];\n  const extrapolateLeft = config.extrapolateLeft || config.extrapolate || 'extend';\n  const extrapolateRight = config.extrapolateRight || config.extrapolate || 'extend';\n\n  const easing = config.easing || (t => t);\n\n  return input => {\n    const range = findRange(input, inputRange);\n    return interpolate(input, inputRange[range], inputRange[range + 1], outputRange[range], outputRange[range + 1], easing, extrapolateLeft, extrapolateRight, config.map);\n  };\n};\n\nfunction interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) {\n  let result = map ? map(input) : input;\n\n  if (result < inputMin) {\n    if (extrapolateLeft === 'identity') return result;else if (extrapolateLeft === 'clamp') result = inputMin;\n  }\n\n  if (result > inputMax) {\n    if (extrapolateRight === 'identity') return result;else if (extrapolateRight === 'clamp') result = inputMax;\n  }\n\n  if (outputMin === outputMax) return outputMin;\n  if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax;\n  if (inputMin === -Infinity) result = -result;else if (inputMax === Infinity) result = result - inputMin;else result = (result - inputMin) / (inputMax - inputMin);\n  result = easing(result);\n  if (outputMin === -Infinity) result = -result;else if (outputMax === Infinity) result = result + outputMin;else result = result * (outputMax - outputMin) + outputMin;\n  return result;\n}\n\nfunction findRange(input, inputRange) {\n  for (var i = 1; i < inputRange.length - 1; ++i) if (inputRange[i] >= input) break;\n\n  return i - 1;\n}\n\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\n\nconst $get = Symbol.for('FluidValue.get');\nconst $observers = Symbol.for('FluidValue.observers');\n\nconst hasFluidValue = arg => Boolean(arg && arg[$get]);\n\nconst getFluidValue = arg => arg && arg[$get] ? arg[$get]() : arg;\n\nconst getFluidObservers = target => target[$observers] || null;\n\nfunction callFluidObserver(observer, event) {\n  if (observer.eventObserved) {\n    observer.eventObserved(event);\n  } else {\n    observer(event);\n  }\n}\n\nfunction callFluidObservers(target, event) {\n  let observers = target[$observers];\n\n  if (observers) {\n    observers.forEach(observer => {\n      callFluidObserver(observer, event);\n    });\n  }\n}\n\nclass FluidValue {\n  constructor(get) {\n    this[$get] = void 0;\n    this[$observers] = void 0;\n\n    if (!get && !(get = this.get)) {\n      throw Error('Unknown getter');\n    }\n\n    setFluidGetter(this, get);\n  }\n\n}\n\nconst setFluidGetter = (target, get) => setHidden(target, $get, get);\n\nfunction addFluidObserver(target, observer) {\n  if (target[$get]) {\n    let observers = target[$observers];\n\n    if (!observers) {\n      setHidden(target, $observers, observers = new Set());\n    }\n\n    if (!observers.has(observer)) {\n      observers.add(observer);\n\n      if (target.observerAdded) {\n        target.observerAdded(observers.size, observer);\n      }\n    }\n  }\n\n  return observer;\n}\n\nfunction removeFluidObserver(target, observer) {\n  let observers = target[$observers];\n\n  if (observers && observers.has(observer)) {\n    const count = observers.size - 1;\n\n    if (count) {\n      observers.delete(observer);\n    } else {\n      target[$observers] = null;\n    }\n\n    if (target.observerRemoved) {\n      target.observerRemoved(count, observer);\n    }\n  }\n}\n\nconst setHidden = (target, key, value) => Object.defineProperty(target, key, {\n  value,\n  writable: true,\n  configurable: true\n});\n\nconst numberRegex = /[+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g;\nconst colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\\((-?\\d+%?[,\\s]+){2,3}\\s*[\\d\\.]+%?\\))/gi;\nconst unitRegex = new RegExp(`(${numberRegex.source})(%|[a-z]+)`, 'i');\nconst rgbaRegex = /rgba\\(([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+)\\)/gi;\nconst cssVariableRegex = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\n\nconst variableToRgba = input => {\n  const [token, fallback] = parseCSSVariable(input);\n\n  if (!token || isSSR()) {\n    return input;\n  }\n\n  const value = window.getComputedStyle(document.documentElement).getPropertyValue(token);\n\n  if (value) {\n    return value.trim();\n  } else if (fallback && fallback.startsWith('--')) {\n    const _value = window.getComputedStyle(document.documentElement).getPropertyValue(fallback);\n\n    if (_value) {\n      return _value;\n    } else {\n      return input;\n    }\n  } else if (fallback && cssVariableRegex.test(fallback)) {\n    return variableToRgba(fallback);\n  } else if (fallback) {\n    return fallback;\n  }\n\n  return input;\n};\n\nconst parseCSSVariable = current => {\n  const match = cssVariableRegex.exec(current);\n  if (!match) return [,];\n  const [, token, fallback] = match;\n  return [token, fallback];\n};\n\nlet namedColorRegex;\n\nconst rgbaRound = (_, p1, p2, p3, p4) => `rgba(${Math.round(p1)}, ${Math.round(p2)}, ${Math.round(p3)}, ${p4})`;\n\nconst createStringInterpolator = config => {\n  if (!namedColorRegex) namedColorRegex = colors$1 ? new RegExp(`(${Object.keys(colors$1).join('|')})(?!\\\\w)`, 'g') : /^\\b$/;\n  const output = config.output.map(value => {\n    return getFluidValue(value).replace(cssVariableRegex, variableToRgba).replace(colorRegex, colorToRgba).replace(namedColorRegex, colorToRgba);\n  });\n  const keyframes = output.map(value => value.match(numberRegex).map(Number));\n  const outputRanges = keyframes[0].map((_, i) => keyframes.map(values => {\n    if (!(i in values)) {\n      throw Error('The arity of each \"output\" value must be equal');\n    }\n\n    return values[i];\n  }));\n  const interpolators = outputRanges.map(output => createInterpolator(_extends({}, config, {\n    output\n  })));\n  return input => {\n    var _output$find;\n\n    const missingUnit = !unitRegex.test(output[0]) && ((_output$find = output.find(value => unitRegex.test(value))) == null ? void 0 : _output$find.replace(numberRegex, ''));\n    let i = 0;\n    return output[0].replace(numberRegex, () => `${interpolators[i++](input)}${missingUnit || ''}`).replace(rgbaRegex, rgbaRound);\n  };\n};\n\nconst prefix = 'react-spring: ';\n\nconst once = fn => {\n  const func = fn;\n  let called = false;\n\n  if (typeof func != 'function') {\n    throw new TypeError(`${prefix}once requires a function parameter`);\n  }\n\n  return (...args) => {\n    if (!called) {\n      func(...args);\n      called = true;\n    }\n  };\n};\n\nconst warnInterpolate = once(console.warn);\nfunction deprecateInterpolate() {\n  warnInterpolate(`${prefix}The \"interpolate\" function is deprecated in v9 (use \"to\" instead)`);\n}\nconst warnDirectCall = once(console.warn);\nfunction deprecateDirectCall() {\n  warnDirectCall(`${prefix}Directly calling start instead of using the api object is deprecated in v9 (use \".start\" instead), this will be removed in later 0.X.0 versions`);\n}\n\nfunction isAnimatedString(value) {\n  return is.str(value) && (value[0] == '#' || /\\d/.test(value) || !isSSR() && cssVariableRegex.test(value) || value in (colors$1 || {}));\n}\n\nconst useIsomorphicLayoutEffect = isSSR() ? useEffect : useLayoutEffect;\n\nconst useIsMounted = () => {\n  const isMounted = useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    isMounted.current = true;\n    return () => {\n      isMounted.current = false;\n    };\n  }, []);\n  return isMounted;\n};\n\nfunction useForceUpdate() {\n  const update = useState()[1];\n  const isMounted = useIsMounted();\n  return () => {\n    if (isMounted.current) {\n      update(Math.random());\n    }\n  };\n}\n\nfunction useMemoOne(getResult, inputs) {\n  const [initial] = useState(() => ({\n    inputs,\n    result: getResult()\n  }));\n  const committed = useRef();\n  const prevCache = committed.current;\n  let cache = prevCache;\n\n  if (cache) {\n    const useCache = Boolean(inputs && cache.inputs && areInputsEqual(inputs, cache.inputs));\n\n    if (!useCache) {\n      cache = {\n        inputs,\n        result: getResult()\n      };\n    }\n  } else {\n    cache = initial;\n  }\n\n  useEffect(() => {\n    committed.current = cache;\n\n    if (prevCache == initial) {\n      initial.inputs = initial.result = undefined;\n    }\n  }, [cache]);\n  return cache.result;\n}\n\nfunction areInputsEqual(next, prev) {\n  if (next.length !== prev.length) {\n    return false;\n  }\n\n  for (let i = 0; i < next.length; i++) {\n    if (next[i] !== prev[i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nconst useOnce = effect => useEffect(effect, emptyDeps);\nconst emptyDeps = [];\n\nfunction usePrev(value) {\n  const prevRef = useRef();\n  useEffect(() => {\n    prevRef.current = value;\n  });\n  return prevRef.current;\n}\n\nconst useReducedMotion = () => {\n  const [reducedMotion, setReducedMotion] = useState(null);\n  useIsomorphicLayoutEffect(() => {\n    const mql = window.matchMedia('(prefers-reduced-motion)');\n\n    const handleMediaChange = e => {\n      setReducedMotion(e.matches);\n      assign({\n        skipAnimation: e.matches\n      });\n    };\n\n    handleMediaChange(mql);\n    mql.addEventListener('change', handleMediaChange);\n    return () => {\n      mql.removeEventListener('change', handleMediaChange);\n    };\n  }, []);\n  return reducedMotion;\n};\n\nexport { FluidValue, globals as Globals, addFluidObserver, callFluidObserver, callFluidObservers, colorToRgba, colors, createInterpolator, createStringInterpolator, defineHidden, deprecateDirectCall, deprecateInterpolate, each, eachProp, flush, flushCalls, frameLoop, getFluidObservers, getFluidValue, hasFluidValue, hex3, hex4, hex6, hex8, hsl, hsla, is, isAnimatedString, isEqual, isSSR, noop, removeFluidObserver, rgb, rgba, setFluidGetter, toArray, useForceUpdate, useIsomorphicLayoutEffect, useMemoOne, useOnce, usePrev, useReducedMotion };\n", "import { eachProp, is, toArray, getFluidValue, isAnimatedString, Globals, useIsomorphicLayoutEffect, each, raf, flush, FluidValue, deprecateInterpolate, callFluidObservers, frameLoop, hasFluidValue, flushCalls, isEqual, getFluidObservers, addFluidObserver, removeFluidObserver, noop, useMemoOne, deprecateDirectCall, useForceUpdate, usePrev, useOnce, createInterpolator, createStringInterpolator } from '@react-spring/shared';\nexport { Globals, createInterpolator, useIsomorphicLayoutEffect, useReducedMotion } from '@react-spring/shared';\nimport * as React from 'react';\nimport { useContext, useMemo, useRef, useState } from 'react';\nimport { getAnimated, AnimatedValue, getPayload, AnimatedString, getAnimatedType, setAnimated } from '@react-spring/animated';\nexport * from '@react-spring/types/animated';\nexport * from '@react-spring/types/interpolation';\n\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\n\nfunction callProp(value, ...args) {\n  return is.fun(value) ? value(...args) : value;\n}\nconst matchProp = (value, key) => value === true || !!(key && value && (is.fun(value) ? value(key) : toArray(value).includes(key)));\nconst resolveProp = (prop, key) => is.obj(prop) ? key && prop[key] : prop;\nconst getDefaultProp = (props, key) => props.default === true ? props[key] : props.default ? props.default[key] : undefined;\n\nconst noopTransform = value => value;\n\nconst getDefaultProps = (props, transform = noopTransform) => {\n  let keys = DEFAULT_PROPS;\n\n  if (props.default && props.default !== true) {\n    props = props.default;\n    keys = Object.keys(props);\n  }\n\n  const defaults = {};\n\n  for (const key of keys) {\n    const value = transform(props[key], key);\n\n    if (!is.und(value)) {\n      defaults[key] = value;\n    }\n  }\n\n  return defaults;\n};\nconst DEFAULT_PROPS = ['config', 'onProps', 'onStart', 'onChange', 'onPause', 'onResume', 'onRest'];\nconst RESERVED_PROPS = {\n  config: 1,\n  from: 1,\n  to: 1,\n  ref: 1,\n  loop: 1,\n  reset: 1,\n  pause: 1,\n  cancel: 1,\n  reverse: 1,\n  immediate: 1,\n  default: 1,\n  delay: 1,\n  onProps: 1,\n  onStart: 1,\n  onChange: 1,\n  onPause: 1,\n  onResume: 1,\n  onRest: 1,\n  onResolve: 1,\n  items: 1,\n  trail: 1,\n  sort: 1,\n  expires: 1,\n  initial: 1,\n  enter: 1,\n  update: 1,\n  leave: 1,\n  children: 1,\n  onDestroyed: 1,\n  keys: 1,\n  callId: 1,\n  parentId: 1\n};\n\nfunction getForwardProps(props) {\n  const forward = {};\n  let count = 0;\n  eachProp(props, (value, prop) => {\n    if (!RESERVED_PROPS[prop]) {\n      forward[prop] = value;\n      count++;\n    }\n  });\n\n  if (count) {\n    return forward;\n  }\n}\n\nfunction inferTo(props) {\n  const to = getForwardProps(props);\n\n  if (to) {\n    const out = {\n      to\n    };\n    eachProp(props, (val, key) => key in to || (out[key] = val));\n    return out;\n  }\n\n  return _extends({}, props);\n}\nfunction computeGoal(value) {\n  value = getFluidValue(value);\n  return is.arr(value) ? value.map(computeGoal) : isAnimatedString(value) ? Globals.createStringInterpolator({\n    range: [0, 1],\n    output: [value, value]\n  })(1) : value;\n}\nfunction hasProps(props) {\n  for (const _ in props) return true;\n\n  return false;\n}\nfunction isAsyncTo(to) {\n  return is.fun(to) || is.arr(to) && is.obj(to[0]);\n}\nfunction detachRefs(ctrl, ref) {\n  var _ctrl$ref;\n\n  (_ctrl$ref = ctrl.ref) == null ? void 0 : _ctrl$ref.delete(ctrl);\n  ref == null ? void 0 : ref.delete(ctrl);\n}\nfunction replaceRef(ctrl, ref) {\n  if (ref && ctrl.ref !== ref) {\n    var _ctrl$ref2;\n\n    (_ctrl$ref2 = ctrl.ref) == null ? void 0 : _ctrl$ref2.delete(ctrl);\n    ref.add(ctrl);\n    ctrl.ref = ref;\n  }\n}\n\nfunction useChain(refs, timeSteps, timeFrame = 1000) {\n  useIsomorphicLayoutEffect(() => {\n    if (timeSteps) {\n      let prevDelay = 0;\n      each(refs, (ref, i) => {\n        const controllers = ref.current;\n\n        if (controllers.length) {\n          let delay = timeFrame * timeSteps[i];\n          if (isNaN(delay)) delay = prevDelay;else prevDelay = delay;\n          each(controllers, ctrl => {\n            each(ctrl.queue, props => {\n              const memoizedDelayProp = props.delay;\n\n              props.delay = key => delay + callProp(memoizedDelayProp || 0, key);\n            });\n          });\n          ref.start();\n        }\n      });\n    } else {\n      let p = Promise.resolve();\n      each(refs, ref => {\n        const controllers = ref.current;\n\n        if (controllers.length) {\n          const queues = controllers.map(ctrl => {\n            const q = ctrl.queue;\n            ctrl.queue = [];\n            return q;\n          });\n          p = p.then(() => {\n            each(controllers, (ctrl, i) => each(queues[i] || [], update => ctrl.queue.push(update)));\n            return Promise.all(ref.start());\n          });\n        }\n      });\n    }\n  });\n}\n\nconst config = {\n  default: {\n    tension: 170,\n    friction: 26\n  },\n  gentle: {\n    tension: 120,\n    friction: 14\n  },\n  wobbly: {\n    tension: 180,\n    friction: 12\n  },\n  stiff: {\n    tension: 210,\n    friction: 20\n  },\n  slow: {\n    tension: 280,\n    friction: 60\n  },\n  molasses: {\n    tension: 280,\n    friction: 120\n  }\n};\nconst c1 = 1.70158;\nconst c2 = c1 * 1.525;\nconst c3 = c1 + 1;\nconst c4 = 2 * Math.PI / 3;\nconst c5 = 2 * Math.PI / 4.5;\n\nconst bounceOut = x => {\n  const n1 = 7.5625;\n  const d1 = 2.75;\n\n  if (x < 1 / d1) {\n    return n1 * x * x;\n  } else if (x < 2 / d1) {\n    return n1 * (x -= 1.5 / d1) * x + 0.75;\n  } else if (x < 2.5 / d1) {\n    return n1 * (x -= 2.25 / d1) * x + 0.9375;\n  } else {\n    return n1 * (x -= 2.625 / d1) * x + 0.984375;\n  }\n};\n\nconst easings = {\n  linear: x => x,\n  easeInQuad: x => x * x,\n  easeOutQuad: x => 1 - (1 - x) * (1 - x),\n  easeInOutQuad: x => x < 0.5 ? 2 * x * x : 1 - Math.pow(-2 * x + 2, 2) / 2,\n  easeInCubic: x => x * x * x,\n  easeOutCubic: x => 1 - Math.pow(1 - x, 3),\n  easeInOutCubic: x => x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2,\n  easeInQuart: x => x * x * x * x,\n  easeOutQuart: x => 1 - Math.pow(1 - x, 4),\n  easeInOutQuart: x => x < 0.5 ? 8 * x * x * x * x : 1 - Math.pow(-2 * x + 2, 4) / 2,\n  easeInQuint: x => x * x * x * x * x,\n  easeOutQuint: x => 1 - Math.pow(1 - x, 5),\n  easeInOutQuint: x => x < 0.5 ? 16 * x * x * x * x * x : 1 - Math.pow(-2 * x + 2, 5) / 2,\n  easeInSine: x => 1 - Math.cos(x * Math.PI / 2),\n  easeOutSine: x => Math.sin(x * Math.PI / 2),\n  easeInOutSine: x => -(Math.cos(Math.PI * x) - 1) / 2,\n  easeInExpo: x => x === 0 ? 0 : Math.pow(2, 10 * x - 10),\n  easeOutExpo: x => x === 1 ? 1 : 1 - Math.pow(2, -10 * x),\n  easeInOutExpo: x => x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? Math.pow(2, 20 * x - 10) / 2 : (2 - Math.pow(2, -20 * x + 10)) / 2,\n  easeInCirc: x => 1 - Math.sqrt(1 - Math.pow(x, 2)),\n  easeOutCirc: x => Math.sqrt(1 - Math.pow(x - 1, 2)),\n  easeInOutCirc: x => x < 0.5 ? (1 - Math.sqrt(1 - Math.pow(2 * x, 2))) / 2 : (Math.sqrt(1 - Math.pow(-2 * x + 2, 2)) + 1) / 2,\n  easeInBack: x => c3 * x * x * x - c1 * x * x,\n  easeOutBack: x => 1 + c3 * Math.pow(x - 1, 3) + c1 * Math.pow(x - 1, 2),\n  easeInOutBack: x => x < 0.5 ? Math.pow(2 * x, 2) * ((c2 + 1) * 2 * x - c2) / 2 : (Math.pow(2 * x - 2, 2) * ((c2 + 1) * (x * 2 - 2) + c2) + 2) / 2,\n  easeInElastic: x => x === 0 ? 0 : x === 1 ? 1 : -Math.pow(2, 10 * x - 10) * Math.sin((x * 10 - 10.75) * c4),\n  easeOutElastic: x => x === 0 ? 0 : x === 1 ? 1 : Math.pow(2, -10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1,\n  easeInOutElastic: x => x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? -(Math.pow(2, 20 * x - 10) * Math.sin((20 * x - 11.125) * c5)) / 2 : Math.pow(2, -20 * x + 10) * Math.sin((20 * x - 11.125) * c5) / 2 + 1,\n  easeInBounce: x => 1 - bounceOut(1 - x),\n  easeOutBounce: bounceOut,\n  easeInOutBounce: x => x < 0.5 ? (1 - bounceOut(1 - 2 * x)) / 2 : (1 + bounceOut(2 * x - 1)) / 2\n};\n\nconst defaults = _extends({}, config.default, {\n  mass: 1,\n  damping: 1,\n  easing: easings.linear,\n  clamp: false\n});\n\nclass AnimationConfig {\n  constructor() {\n    this.tension = void 0;\n    this.friction = void 0;\n    this.frequency = void 0;\n    this.damping = void 0;\n    this.mass = void 0;\n    this.velocity = 0;\n    this.restVelocity = void 0;\n    this.precision = void 0;\n    this.progress = void 0;\n    this.duration = void 0;\n    this.easing = void 0;\n    this.clamp = void 0;\n    this.bounce = void 0;\n    this.decay = void 0;\n    this.round = void 0;\n    Object.assign(this, defaults);\n  }\n\n}\nfunction mergeConfig(config, newConfig, defaultConfig) {\n  if (defaultConfig) {\n    defaultConfig = _extends({}, defaultConfig);\n    sanitizeConfig(defaultConfig, newConfig);\n    newConfig = _extends({}, defaultConfig, newConfig);\n  }\n\n  sanitizeConfig(config, newConfig);\n  Object.assign(config, newConfig);\n\n  for (const key in defaults) {\n    if (config[key] == null) {\n      config[key] = defaults[key];\n    }\n  }\n\n  let {\n    mass,\n    frequency,\n    damping\n  } = config;\n\n  if (!is.und(frequency)) {\n    if (frequency < 0.01) frequency = 0.01;\n    if (damping < 0) damping = 0;\n    config.tension = Math.pow(2 * Math.PI / frequency, 2) * mass;\n    config.friction = 4 * Math.PI * damping * mass / frequency;\n  }\n\n  return config;\n}\n\nfunction sanitizeConfig(config, props) {\n  if (!is.und(props.decay)) {\n    config.duration = undefined;\n  } else {\n    const isTensionConfig = !is.und(props.tension) || !is.und(props.friction);\n\n    if (isTensionConfig || !is.und(props.frequency) || !is.und(props.damping) || !is.und(props.mass)) {\n      config.duration = undefined;\n      config.decay = undefined;\n    }\n\n    if (isTensionConfig) {\n      config.frequency = undefined;\n    }\n  }\n}\n\nconst emptyArray = [];\nclass Animation {\n  constructor() {\n    this.changed = false;\n    this.values = emptyArray;\n    this.toValues = null;\n    this.fromValues = emptyArray;\n    this.to = void 0;\n    this.from = void 0;\n    this.config = new AnimationConfig();\n    this.immediate = false;\n  }\n\n}\n\nfunction scheduleProps(callId, {\n  key,\n  props,\n  defaultProps,\n  state,\n  actions\n}) {\n  return new Promise((resolve, reject) => {\n    var _props$cancel;\n\n    let delay;\n    let timeout;\n    let cancel = matchProp((_props$cancel = props.cancel) != null ? _props$cancel : defaultProps == null ? void 0 : defaultProps.cancel, key);\n\n    if (cancel) {\n      onStart();\n    } else {\n      if (!is.und(props.pause)) {\n        state.paused = matchProp(props.pause, key);\n      }\n\n      let pause = defaultProps == null ? void 0 : defaultProps.pause;\n\n      if (pause !== true) {\n        pause = state.paused || matchProp(pause, key);\n      }\n\n      delay = callProp(props.delay || 0, key);\n\n      if (pause) {\n        state.resumeQueue.add(onResume);\n        actions.pause();\n      } else {\n        actions.resume();\n        onResume();\n      }\n    }\n\n    function onPause() {\n      state.resumeQueue.add(onResume);\n      state.timeouts.delete(timeout);\n      timeout.cancel();\n      delay = timeout.time - raf.now();\n    }\n\n    function onResume() {\n      if (delay > 0 && !Globals.skipAnimation) {\n        state.delayed = true;\n        timeout = raf.setTimeout(onStart, delay);\n        state.pauseQueue.add(onPause);\n        state.timeouts.add(timeout);\n      } else {\n        onStart();\n      }\n    }\n\n    function onStart() {\n      if (state.delayed) {\n        state.delayed = false;\n      }\n\n      state.pauseQueue.delete(onPause);\n      state.timeouts.delete(timeout);\n\n      if (callId <= (state.cancelId || 0)) {\n        cancel = true;\n      }\n\n      try {\n        actions.start(_extends({}, props, {\n          callId,\n          cancel\n        }), resolve);\n      } catch (err) {\n        reject(err);\n      }\n    }\n  });\n}\n\nconst getCombinedResult = (target, results) => results.length == 1 ? results[0] : results.some(result => result.cancelled) ? getCancelledResult(target.get()) : results.every(result => result.noop) ? getNoopResult(target.get()) : getFinishedResult(target.get(), results.every(result => result.finished));\nconst getNoopResult = value => ({\n  value,\n  noop: true,\n  finished: true,\n  cancelled: false\n});\nconst getFinishedResult = (value, finished, cancelled = false) => ({\n  value,\n  finished,\n  cancelled\n});\nconst getCancelledResult = value => ({\n  value,\n  cancelled: true,\n  finished: false\n});\n\nfunction runAsync(to, props, state, target) {\n  const {\n    callId,\n    parentId,\n    onRest\n  } = props;\n  const {\n    asyncTo: prevTo,\n    promise: prevPromise\n  } = state;\n\n  if (!parentId && to === prevTo && !props.reset) {\n    return prevPromise;\n  }\n\n  return state.promise = (async () => {\n    state.asyncId = callId;\n    state.asyncTo = to;\n    const defaultProps = getDefaultProps(props, (value, key) => key === 'onRest' ? undefined : value);\n    let preventBail;\n    let bail;\n    const bailPromise = new Promise((resolve, reject) => (preventBail = resolve, bail = reject));\n\n    const bailIfEnded = bailSignal => {\n      const bailResult = callId <= (state.cancelId || 0) && getCancelledResult(target) || callId !== state.asyncId && getFinishedResult(target, false);\n\n      if (bailResult) {\n        bailSignal.result = bailResult;\n        bail(bailSignal);\n        throw bailSignal;\n      }\n    };\n\n    const animate = (arg1, arg2) => {\n      const bailSignal = new BailSignal();\n      const skipAnimationSignal = new SkipAniamtionSignal();\n      return (async () => {\n        if (Globals.skipAnimation) {\n          stopAsync(state);\n          skipAnimationSignal.result = getFinishedResult(target, false);\n          bail(skipAnimationSignal);\n          throw skipAnimationSignal;\n        }\n\n        bailIfEnded(bailSignal);\n        const props = is.obj(arg1) ? _extends({}, arg1) : _extends({}, arg2, {\n          to: arg1\n        });\n        props.parentId = callId;\n        eachProp(defaultProps, (value, key) => {\n          if (is.und(props[key])) {\n            props[key] = value;\n          }\n        });\n        const result = await target.start(props);\n        bailIfEnded(bailSignal);\n\n        if (state.paused) {\n          await new Promise(resume => {\n            state.resumeQueue.add(resume);\n          });\n        }\n\n        return result;\n      })();\n    };\n\n    let result;\n\n    if (Globals.skipAnimation) {\n      stopAsync(state);\n      return getFinishedResult(target, false);\n    }\n\n    try {\n      let animating;\n\n      if (is.arr(to)) {\n        animating = (async queue => {\n          for (const props of queue) {\n            await animate(props);\n          }\n        })(to);\n      } else {\n        animating = Promise.resolve(to(animate, target.stop.bind(target)));\n      }\n\n      await Promise.all([animating.then(preventBail), bailPromise]);\n      result = getFinishedResult(target.get(), true, false);\n    } catch (err) {\n      if (err instanceof BailSignal) {\n        result = err.result;\n      } else if (err instanceof SkipAniamtionSignal) {\n        result = err.result;\n      } else {\n        throw err;\n      }\n    } finally {\n      if (callId == state.asyncId) {\n        state.asyncId = parentId;\n        state.asyncTo = parentId ? prevTo : undefined;\n        state.promise = parentId ? prevPromise : undefined;\n      }\n    }\n\n    if (is.fun(onRest)) {\n      raf.batchedUpdates(() => {\n        onRest(result, target, target.item);\n      });\n    }\n\n    return result;\n  })();\n}\nfunction stopAsync(state, cancelId) {\n  flush(state.timeouts, t => t.cancel());\n  state.pauseQueue.clear();\n  state.resumeQueue.clear();\n  state.asyncId = state.asyncTo = state.promise = undefined;\n  if (cancelId) state.cancelId = cancelId;\n}\nclass BailSignal extends Error {\n  constructor() {\n    super('An async animation has been interrupted. You see this error because you ' + 'forgot to use `await` or `.catch(...)` on its returned promise.');\n    this.result = void 0;\n  }\n\n}\nclass SkipAniamtionSignal extends Error {\n  constructor() {\n    super('SkipAnimationSignal');\n    this.result = void 0;\n  }\n\n}\n\nconst isFrameValue = value => value instanceof FrameValue;\nlet nextId$1 = 1;\nclass FrameValue extends FluidValue {\n  constructor(...args) {\n    super(...args);\n    this.id = nextId$1++;\n    this.key = void 0;\n    this._priority = 0;\n  }\n\n  get priority() {\n    return this._priority;\n  }\n\n  set priority(priority) {\n    if (this._priority != priority) {\n      this._priority = priority;\n\n      this._onPriorityChange(priority);\n    }\n  }\n\n  get() {\n    const node = getAnimated(this);\n    return node && node.getValue();\n  }\n\n  to(...args) {\n    return Globals.to(this, args);\n  }\n\n  interpolate(...args) {\n    deprecateInterpolate();\n    return Globals.to(this, args);\n  }\n\n  toJSON() {\n    return this.get();\n  }\n\n  observerAdded(count) {\n    if (count == 1) this._attach();\n  }\n\n  observerRemoved(count) {\n    if (count == 0) this._detach();\n  }\n\n  _attach() {}\n\n  _detach() {}\n\n  _onChange(value, idle = false) {\n    callFluidObservers(this, {\n      type: 'change',\n      parent: this,\n      value,\n      idle\n    });\n  }\n\n  _onPriorityChange(priority) {\n    if (!this.idle) {\n      frameLoop.sort(this);\n    }\n\n    callFluidObservers(this, {\n      type: 'priority',\n      parent: this,\n      priority\n    });\n  }\n\n}\n\nconst $P = Symbol.for('SpringPhase');\nconst HAS_ANIMATED = 1;\nconst IS_ANIMATING = 2;\nconst IS_PAUSED = 4;\nconst hasAnimated = target => (target[$P] & HAS_ANIMATED) > 0;\nconst isAnimating = target => (target[$P] & IS_ANIMATING) > 0;\nconst isPaused = target => (target[$P] & IS_PAUSED) > 0;\nconst setActiveBit = (target, active) => active ? target[$P] |= IS_ANIMATING | HAS_ANIMATED : target[$P] &= ~IS_ANIMATING;\nconst setPausedBit = (target, paused) => paused ? target[$P] |= IS_PAUSED : target[$P] &= ~IS_PAUSED;\n\nclass SpringValue extends FrameValue {\n  constructor(arg1, arg2) {\n    super();\n    this.key = void 0;\n    this.animation = new Animation();\n    this.queue = void 0;\n    this.defaultProps = {};\n    this._state = {\n      paused: false,\n      delayed: false,\n      pauseQueue: new Set(),\n      resumeQueue: new Set(),\n      timeouts: new Set()\n    };\n    this._pendingCalls = new Set();\n    this._lastCallId = 0;\n    this._lastToId = 0;\n    this._memoizedDuration = 0;\n\n    if (!is.und(arg1) || !is.und(arg2)) {\n      const props = is.obj(arg1) ? _extends({}, arg1) : _extends({}, arg2, {\n        from: arg1\n      });\n\n      if (is.und(props.default)) {\n        props.default = true;\n      }\n\n      this.start(props);\n    }\n  }\n\n  get idle() {\n    return !(isAnimating(this) || this._state.asyncTo) || isPaused(this);\n  }\n\n  get goal() {\n    return getFluidValue(this.animation.to);\n  }\n\n  get velocity() {\n    const node = getAnimated(this);\n    return node instanceof AnimatedValue ? node.lastVelocity || 0 : node.getPayload().map(node => node.lastVelocity || 0);\n  }\n\n  get hasAnimated() {\n    return hasAnimated(this);\n  }\n\n  get isAnimating() {\n    return isAnimating(this);\n  }\n\n  get isPaused() {\n    return isPaused(this);\n  }\n\n  get isDelayed() {\n    return this._state.delayed;\n  }\n\n  advance(dt) {\n    let idle = true;\n    let changed = false;\n    const anim = this.animation;\n    let {\n      config,\n      toValues\n    } = anim;\n    const payload = getPayload(anim.to);\n\n    if (!payload && hasFluidValue(anim.to)) {\n      toValues = toArray(getFluidValue(anim.to));\n    }\n\n    anim.values.forEach((node, i) => {\n      if (node.done) return;\n      const to = node.constructor == AnimatedString ? 1 : payload ? payload[i].lastPosition : toValues[i];\n      let finished = anim.immediate;\n      let position = to;\n\n      if (!finished) {\n        position = node.lastPosition;\n\n        if (config.tension <= 0) {\n          node.done = true;\n          return;\n        }\n\n        let elapsed = node.elapsedTime += dt;\n        const from = anim.fromValues[i];\n        const v0 = node.v0 != null ? node.v0 : node.v0 = is.arr(config.velocity) ? config.velocity[i] : config.velocity;\n        let velocity;\n        const precision = config.precision || (from == to ? 0.005 : Math.min(1, Math.abs(to - from) * 0.001));\n\n        if (!is.und(config.duration)) {\n          let p = 1;\n\n          if (config.duration > 0) {\n            if (this._memoizedDuration !== config.duration) {\n              this._memoizedDuration = config.duration;\n\n              if (node.durationProgress > 0) {\n                node.elapsedTime = config.duration * node.durationProgress;\n                elapsed = node.elapsedTime += dt;\n              }\n            }\n\n            p = (config.progress || 0) + elapsed / this._memoizedDuration;\n            p = p > 1 ? 1 : p < 0 ? 0 : p;\n            node.durationProgress = p;\n          }\n\n          position = from + config.easing(p) * (to - from);\n          velocity = (position - node.lastPosition) / dt;\n          finished = p == 1;\n        } else if (config.decay) {\n          const decay = config.decay === true ? 0.998 : config.decay;\n          const e = Math.exp(-(1 - decay) * elapsed);\n          position = from + v0 / (1 - decay) * (1 - e);\n          finished = Math.abs(node.lastPosition - position) <= precision;\n          velocity = v0 * e;\n        } else {\n          velocity = node.lastVelocity == null ? v0 : node.lastVelocity;\n          const restVelocity = config.restVelocity || precision / 10;\n          const bounceFactor = config.clamp ? 0 : config.bounce;\n          const canBounce = !is.und(bounceFactor);\n          const isGrowing = from == to ? node.v0 > 0 : from < to;\n          let isMoving;\n          let isBouncing = false;\n          const step = 1;\n          const numSteps = Math.ceil(dt / step);\n\n          for (let n = 0; n < numSteps; ++n) {\n            isMoving = Math.abs(velocity) > restVelocity;\n\n            if (!isMoving) {\n              finished = Math.abs(to - position) <= precision;\n\n              if (finished) {\n                break;\n              }\n            }\n\n            if (canBounce) {\n              isBouncing = position == to || position > to == isGrowing;\n\n              if (isBouncing) {\n                velocity = -velocity * bounceFactor;\n                position = to;\n              }\n            }\n\n            const springForce = -config.tension * 0.000001 * (position - to);\n            const dampingForce = -config.friction * 0.001 * velocity;\n            const acceleration = (springForce + dampingForce) / config.mass;\n            velocity = velocity + acceleration * step;\n            position = position + velocity * step;\n          }\n        }\n\n        node.lastVelocity = velocity;\n\n        if (Number.isNaN(position)) {\n          console.warn(`Got NaN while animating:`, this);\n          finished = true;\n        }\n      }\n\n      if (payload && !payload[i].done) {\n        finished = false;\n      }\n\n      if (finished) {\n        node.done = true;\n      } else {\n        idle = false;\n      }\n\n      if (node.setValue(position, config.round)) {\n        changed = true;\n      }\n    });\n    const node = getAnimated(this);\n    const currVal = node.getValue();\n\n    if (idle) {\n      const finalVal = getFluidValue(anim.to);\n\n      if ((currVal !== finalVal || changed) && !config.decay) {\n        node.setValue(finalVal);\n\n        this._onChange(finalVal);\n      } else if (changed && config.decay) {\n        this._onChange(currVal);\n      }\n\n      this._stop();\n    } else if (changed) {\n      this._onChange(currVal);\n    }\n  }\n\n  set(value) {\n    raf.batchedUpdates(() => {\n      this._stop();\n\n      this._focus(value);\n\n      this._set(value);\n    });\n    return this;\n  }\n\n  pause() {\n    this._update({\n      pause: true\n    });\n  }\n\n  resume() {\n    this._update({\n      pause: false\n    });\n  }\n\n  finish() {\n    if (isAnimating(this)) {\n      const {\n        to,\n        config\n      } = this.animation;\n      raf.batchedUpdates(() => {\n        this._onStart();\n\n        if (!config.decay) {\n          this._set(to, false);\n        }\n\n        this._stop();\n      });\n    }\n\n    return this;\n  }\n\n  update(props) {\n    const queue = this.queue || (this.queue = []);\n    queue.push(props);\n    return this;\n  }\n\n  start(to, arg2) {\n    let queue;\n\n    if (!is.und(to)) {\n      queue = [is.obj(to) ? to : _extends({}, arg2, {\n        to\n      })];\n    } else {\n      queue = this.queue || [];\n      this.queue = [];\n    }\n\n    return Promise.all(queue.map(props => {\n      const up = this._update(props);\n\n      return up;\n    })).then(results => getCombinedResult(this, results));\n  }\n\n  stop(cancel) {\n    const {\n      to\n    } = this.animation;\n\n    this._focus(this.get());\n\n    stopAsync(this._state, cancel && this._lastCallId);\n    raf.batchedUpdates(() => this._stop(to, cancel));\n    return this;\n  }\n\n  reset() {\n    this._update({\n      reset: true\n    });\n  }\n\n  eventObserved(event) {\n    if (event.type == 'change') {\n      this._start();\n    } else if (event.type == 'priority') {\n      this.priority = event.priority + 1;\n    }\n  }\n\n  _prepareNode(props) {\n    const key = this.key || '';\n    let {\n      to,\n      from\n    } = props;\n    to = is.obj(to) ? to[key] : to;\n\n    if (to == null || isAsyncTo(to)) {\n      to = undefined;\n    }\n\n    from = is.obj(from) ? from[key] : from;\n\n    if (from == null) {\n      from = undefined;\n    }\n\n    const range = {\n      to,\n      from\n    };\n\n    if (!hasAnimated(this)) {\n      if (props.reverse) [to, from] = [from, to];\n      from = getFluidValue(from);\n\n      if (!is.und(from)) {\n        this._set(from);\n      } else if (!getAnimated(this)) {\n        this._set(to);\n      }\n    }\n\n    return range;\n  }\n\n  _update(_ref, isLoop) {\n    let props = _extends({}, _ref);\n\n    const {\n      key,\n      defaultProps\n    } = this;\n    if (props.default) Object.assign(defaultProps, getDefaultProps(props, (value, prop) => /^on/.test(prop) ? resolveProp(value, key) : value));\n    mergeActiveFn(this, props, 'onProps');\n    sendEvent(this, 'onProps', props, this);\n\n    const range = this._prepareNode(props);\n\n    if (Object.isFrozen(this)) {\n      throw Error('Cannot animate a `SpringValue` object that is frozen. ' + 'Did you forget to pass your component to `animated(...)` before animating its props?');\n    }\n\n    const state = this._state;\n    return scheduleProps(++this._lastCallId, {\n      key,\n      props,\n      defaultProps,\n      state,\n      actions: {\n        pause: () => {\n          if (!isPaused(this)) {\n            setPausedBit(this, true);\n            flushCalls(state.pauseQueue);\n            sendEvent(this, 'onPause', getFinishedResult(this, checkFinished(this, this.animation.to)), this);\n          }\n        },\n        resume: () => {\n          if (isPaused(this)) {\n            setPausedBit(this, false);\n\n            if (isAnimating(this)) {\n              this._resume();\n            }\n\n            flushCalls(state.resumeQueue);\n            sendEvent(this, 'onResume', getFinishedResult(this, checkFinished(this, this.animation.to)), this);\n          }\n        },\n        start: this._merge.bind(this, range)\n      }\n    }).then(result => {\n      if (props.loop && result.finished && !(isLoop && result.noop)) {\n        const nextProps = createLoopUpdate(props);\n\n        if (nextProps) {\n          return this._update(nextProps, true);\n        }\n      }\n\n      return result;\n    });\n  }\n\n  _merge(range, props, resolve) {\n    if (props.cancel) {\n      this.stop(true);\n      return resolve(getCancelledResult(this));\n    }\n\n    const hasToProp = !is.und(range.to);\n    const hasFromProp = !is.und(range.from);\n\n    if (hasToProp || hasFromProp) {\n      if (props.callId > this._lastToId) {\n        this._lastToId = props.callId;\n      } else {\n        return resolve(getCancelledResult(this));\n      }\n    }\n\n    const {\n      key,\n      defaultProps,\n      animation: anim\n    } = this;\n    const {\n      to: prevTo,\n      from: prevFrom\n    } = anim;\n    let {\n      to = prevTo,\n      from = prevFrom\n    } = range;\n\n    if (hasFromProp && !hasToProp && (!props.default || is.und(to))) {\n      to = from;\n    }\n\n    if (props.reverse) [to, from] = [from, to];\n    const hasFromChanged = !isEqual(from, prevFrom);\n\n    if (hasFromChanged) {\n      anim.from = from;\n    }\n\n    from = getFluidValue(from);\n    const hasToChanged = !isEqual(to, prevTo);\n\n    if (hasToChanged) {\n      this._focus(to);\n    }\n\n    const hasAsyncTo = isAsyncTo(props.to);\n    const {\n      config\n    } = anim;\n    const {\n      decay,\n      velocity\n    } = config;\n\n    if (hasToProp || hasFromProp) {\n      config.velocity = 0;\n    }\n\n    if (props.config && !hasAsyncTo) {\n      mergeConfig(config, callProp(props.config, key), props.config !== defaultProps.config ? callProp(defaultProps.config, key) : void 0);\n    }\n\n    let node = getAnimated(this);\n\n    if (!node || is.und(to)) {\n      return resolve(getFinishedResult(this, true));\n    }\n\n    const reset = is.und(props.reset) ? hasFromProp && !props.default : !is.und(from) && matchProp(props.reset, key);\n    const value = reset ? from : this.get();\n    const goal = computeGoal(to);\n    const isAnimatable = is.num(goal) || is.arr(goal) || isAnimatedString(goal);\n    const immediate = !hasAsyncTo && (!isAnimatable || matchProp(defaultProps.immediate || props.immediate, key));\n\n    if (hasToChanged) {\n      const nodeType = getAnimatedType(to);\n\n      if (nodeType !== node.constructor) {\n        if (immediate) {\n          node = this._set(goal);\n        } else throw Error(`Cannot animate between ${node.constructor.name} and ${nodeType.name}, as the \"to\" prop suggests`);\n      }\n    }\n\n    const goalType = node.constructor;\n    let started = hasFluidValue(to);\n    let finished = false;\n\n    if (!started) {\n      const hasValueChanged = reset || !hasAnimated(this) && hasFromChanged;\n\n      if (hasToChanged || hasValueChanged) {\n        finished = isEqual(computeGoal(value), goal);\n        started = !finished;\n      }\n\n      if (!isEqual(anim.immediate, immediate) && !immediate || !isEqual(config.decay, decay) || !isEqual(config.velocity, velocity)) {\n        started = true;\n      }\n    }\n\n    if (finished && isAnimating(this)) {\n      if (anim.changed && !reset) {\n        started = true;\n      } else if (!started) {\n        this._stop(prevTo);\n      }\n    }\n\n    if (!hasAsyncTo) {\n      if (started || hasFluidValue(prevTo)) {\n        anim.values = node.getPayload();\n        anim.toValues = hasFluidValue(to) ? null : goalType == AnimatedString ? [1] : toArray(goal);\n      }\n\n      if (anim.immediate != immediate) {\n        anim.immediate = immediate;\n\n        if (!immediate && !reset) {\n          this._set(prevTo);\n        }\n      }\n\n      if (started) {\n        const {\n          onRest\n        } = anim;\n        each(ACTIVE_EVENTS, type => mergeActiveFn(this, props, type));\n        const result = getFinishedResult(this, checkFinished(this, prevTo));\n        flushCalls(this._pendingCalls, result);\n\n        this._pendingCalls.add(resolve);\n\n        if (anim.changed) raf.batchedUpdates(() => {\n          anim.changed = !reset;\n          onRest == null ? void 0 : onRest(result, this);\n\n          if (reset) {\n            callProp(defaultProps.onRest, result);\n          } else {\n            anim.onStart == null ? void 0 : anim.onStart(result, this);\n          }\n        });\n      }\n    }\n\n    if (reset) {\n      this._set(value);\n    }\n\n    if (hasAsyncTo) {\n      resolve(runAsync(props.to, props, this._state, this));\n    } else if (started) {\n      this._start();\n    } else if (isAnimating(this) && !hasToChanged) {\n      this._pendingCalls.add(resolve);\n    } else {\n      resolve(getNoopResult(value));\n    }\n  }\n\n  _focus(value) {\n    const anim = this.animation;\n\n    if (value !== anim.to) {\n      if (getFluidObservers(this)) {\n        this._detach();\n      }\n\n      anim.to = value;\n\n      if (getFluidObservers(this)) {\n        this._attach();\n      }\n    }\n  }\n\n  _attach() {\n    let priority = 0;\n    const {\n      to\n    } = this.animation;\n\n    if (hasFluidValue(to)) {\n      addFluidObserver(to, this);\n\n      if (isFrameValue(to)) {\n        priority = to.priority + 1;\n      }\n    }\n\n    this.priority = priority;\n  }\n\n  _detach() {\n    const {\n      to\n    } = this.animation;\n\n    if (hasFluidValue(to)) {\n      removeFluidObserver(to, this);\n    }\n  }\n\n  _set(arg, idle = true) {\n    const value = getFluidValue(arg);\n\n    if (!is.und(value)) {\n      const oldNode = getAnimated(this);\n\n      if (!oldNode || !isEqual(value, oldNode.getValue())) {\n        const nodeType = getAnimatedType(value);\n\n        if (!oldNode || oldNode.constructor != nodeType) {\n          setAnimated(this, nodeType.create(value));\n        } else {\n          oldNode.setValue(value);\n        }\n\n        if (oldNode) {\n          raf.batchedUpdates(() => {\n            this._onChange(value, idle);\n          });\n        }\n      }\n    }\n\n    return getAnimated(this);\n  }\n\n  _onStart() {\n    const anim = this.animation;\n\n    if (!anim.changed) {\n      anim.changed = true;\n      sendEvent(this, 'onStart', getFinishedResult(this, checkFinished(this, anim.to)), this);\n    }\n  }\n\n  _onChange(value, idle) {\n    if (!idle) {\n      this._onStart();\n\n      callProp(this.animation.onChange, value, this);\n    }\n\n    callProp(this.defaultProps.onChange, value, this);\n\n    super._onChange(value, idle);\n  }\n\n  _start() {\n    const anim = this.animation;\n    getAnimated(this).reset(getFluidValue(anim.to));\n\n    if (!anim.immediate) {\n      anim.fromValues = anim.values.map(node => node.lastPosition);\n    }\n\n    if (!isAnimating(this)) {\n      setActiveBit(this, true);\n\n      if (!isPaused(this)) {\n        this._resume();\n      }\n    }\n  }\n\n  _resume() {\n    if (Globals.skipAnimation) {\n      this.finish();\n    } else {\n      frameLoop.start(this);\n    }\n  }\n\n  _stop(goal, cancel) {\n    if (isAnimating(this)) {\n      setActiveBit(this, false);\n      const anim = this.animation;\n      each(anim.values, node => {\n        node.done = true;\n      });\n\n      if (anim.toValues) {\n        anim.onChange = anim.onPause = anim.onResume = undefined;\n      }\n\n      callFluidObservers(this, {\n        type: 'idle',\n        parent: this\n      });\n      const result = cancel ? getCancelledResult(this.get()) : getFinishedResult(this.get(), checkFinished(this, goal != null ? goal : anim.to));\n      flushCalls(this._pendingCalls, result);\n\n      if (anim.changed) {\n        anim.changed = false;\n        sendEvent(this, 'onRest', result, this);\n      }\n    }\n  }\n\n}\n\nfunction checkFinished(target, to) {\n  const goal = computeGoal(to);\n  const value = computeGoal(target.get());\n  return isEqual(value, goal);\n}\n\nfunction createLoopUpdate(props, loop = props.loop, to = props.to) {\n  let loopRet = callProp(loop);\n\n  if (loopRet) {\n    const overrides = loopRet !== true && inferTo(loopRet);\n    const reverse = (overrides || props).reverse;\n    const reset = !overrides || overrides.reset;\n    return createUpdate(_extends({}, props, {\n      loop,\n      default: false,\n      pause: undefined,\n      to: !reverse || isAsyncTo(to) ? to : undefined,\n      from: reset ? props.from : undefined,\n      reset\n    }, overrides));\n  }\n}\nfunction createUpdate(props) {\n  const {\n    to,\n    from\n  } = props = inferTo(props);\n  const keys = new Set();\n  if (is.obj(to)) findDefined(to, keys);\n  if (is.obj(from)) findDefined(from, keys);\n  props.keys = keys.size ? Array.from(keys) : null;\n  return props;\n}\nfunction declareUpdate(props) {\n  const update = createUpdate(props);\n\n  if (is.und(update.default)) {\n    update.default = getDefaultProps(update);\n  }\n\n  return update;\n}\n\nfunction findDefined(values, keys) {\n  eachProp(values, (value, key) => value != null && keys.add(key));\n}\n\nconst ACTIVE_EVENTS = ['onStart', 'onRest', 'onChange', 'onPause', 'onResume'];\n\nfunction mergeActiveFn(target, props, type) {\n  target.animation[type] = props[type] !== getDefaultProp(props, type) ? resolveProp(props[type], target.key) : undefined;\n}\n\nfunction sendEvent(target, type, ...args) {\n  var _target$animation$typ, _target$animation, _target$defaultProps$, _target$defaultProps;\n\n  (_target$animation$typ = (_target$animation = target.animation)[type]) == null ? void 0 : _target$animation$typ.call(_target$animation, ...args);\n  (_target$defaultProps$ = (_target$defaultProps = target.defaultProps)[type]) == null ? void 0 : _target$defaultProps$.call(_target$defaultProps, ...args);\n}\n\nconst BATCHED_EVENTS = ['onStart', 'onChange', 'onRest'];\nlet nextId = 1;\nclass Controller {\n  constructor(props, flush) {\n    this.id = nextId++;\n    this.springs = {};\n    this.queue = [];\n    this.ref = void 0;\n    this._flush = void 0;\n    this._initialProps = void 0;\n    this._lastAsyncId = 0;\n    this._active = new Set();\n    this._changed = new Set();\n    this._started = false;\n    this._item = void 0;\n    this._state = {\n      paused: false,\n      pauseQueue: new Set(),\n      resumeQueue: new Set(),\n      timeouts: new Set()\n    };\n    this._events = {\n      onStart: new Map(),\n      onChange: new Map(),\n      onRest: new Map()\n    };\n    this._onFrame = this._onFrame.bind(this);\n\n    if (flush) {\n      this._flush = flush;\n    }\n\n    if (props) {\n      this.start(_extends({\n        default: true\n      }, props));\n    }\n  }\n\n  get idle() {\n    return !this._state.asyncTo && Object.values(this.springs).every(spring => {\n      return spring.idle && !spring.isDelayed && !spring.isPaused;\n    });\n  }\n\n  get item() {\n    return this._item;\n  }\n\n  set item(item) {\n    this._item = item;\n  }\n\n  get() {\n    const values = {};\n    this.each((spring, key) => values[key] = spring.get());\n    return values;\n  }\n\n  set(values) {\n    for (const key in values) {\n      const value = values[key];\n\n      if (!is.und(value)) {\n        this.springs[key].set(value);\n      }\n    }\n  }\n\n  update(props) {\n    if (props) {\n      this.queue.push(createUpdate(props));\n    }\n\n    return this;\n  }\n\n  start(props) {\n    let {\n      queue\n    } = this;\n\n    if (props) {\n      queue = toArray(props).map(createUpdate);\n    } else {\n      this.queue = [];\n    }\n\n    if (this._flush) {\n      return this._flush(this, queue);\n    }\n\n    prepareKeys(this, queue);\n    return flushUpdateQueue(this, queue);\n  }\n\n  stop(arg, keys) {\n    if (arg !== !!arg) {\n      keys = arg;\n    }\n\n    if (keys) {\n      const springs = this.springs;\n      each(toArray(keys), key => springs[key].stop(!!arg));\n    } else {\n      stopAsync(this._state, this._lastAsyncId);\n      this.each(spring => spring.stop(!!arg));\n    }\n\n    return this;\n  }\n\n  pause(keys) {\n    if (is.und(keys)) {\n      this.start({\n        pause: true\n      });\n    } else {\n      const springs = this.springs;\n      each(toArray(keys), key => springs[key].pause());\n    }\n\n    return this;\n  }\n\n  resume(keys) {\n    if (is.und(keys)) {\n      this.start({\n        pause: false\n      });\n    } else {\n      const springs = this.springs;\n      each(toArray(keys), key => springs[key].resume());\n    }\n\n    return this;\n  }\n\n  each(iterator) {\n    eachProp(this.springs, iterator);\n  }\n\n  _onFrame() {\n    const {\n      onStart,\n      onChange,\n      onRest\n    } = this._events;\n    const active = this._active.size > 0;\n    const changed = this._changed.size > 0;\n\n    if (active && !this._started || changed && !this._started) {\n      this._started = true;\n      flush(onStart, ([onStart, result]) => {\n        result.value = this.get();\n        onStart(result, this, this._item);\n      });\n    }\n\n    const idle = !active && this._started;\n    const values = changed || idle && onRest.size ? this.get() : null;\n\n    if (changed && onChange.size) {\n      flush(onChange, ([onChange, result]) => {\n        result.value = values;\n        onChange(result, this, this._item);\n      });\n    }\n\n    if (idle) {\n      this._started = false;\n      flush(onRest, ([onRest, result]) => {\n        result.value = values;\n        onRest(result, this, this._item);\n      });\n    }\n  }\n\n  eventObserved(event) {\n    if (event.type == 'change') {\n      this._changed.add(event.parent);\n\n      if (!event.idle) {\n        this._active.add(event.parent);\n      }\n    } else if (event.type == 'idle') {\n      this._active.delete(event.parent);\n    } else return;\n\n    raf.onFrame(this._onFrame);\n  }\n\n}\nfunction flushUpdateQueue(ctrl, queue) {\n  return Promise.all(queue.map(props => flushUpdate(ctrl, props))).then(results => getCombinedResult(ctrl, results));\n}\nasync function flushUpdate(ctrl, props, isLoop) {\n  const {\n    keys,\n    to,\n    from,\n    loop,\n    onRest,\n    onResolve\n  } = props;\n  const defaults = is.obj(props.default) && props.default;\n\n  if (loop) {\n    props.loop = false;\n  }\n\n  if (to === false) props.to = null;\n  if (from === false) props.from = null;\n  const asyncTo = is.arr(to) || is.fun(to) ? to : undefined;\n\n  if (asyncTo) {\n    props.to = undefined;\n    props.onRest = undefined;\n\n    if (defaults) {\n      defaults.onRest = undefined;\n    }\n  } else {\n    each(BATCHED_EVENTS, key => {\n      const handler = props[key];\n\n      if (is.fun(handler)) {\n        const queue = ctrl['_events'][key];\n\n        props[key] = ({\n          finished,\n          cancelled\n        }) => {\n          const result = queue.get(handler);\n\n          if (result) {\n            if (!finished) result.finished = false;\n            if (cancelled) result.cancelled = true;\n          } else {\n            queue.set(handler, {\n              value: null,\n              finished: finished || false,\n              cancelled: cancelled || false\n            });\n          }\n        };\n\n        if (defaults) {\n          defaults[key] = props[key];\n        }\n      }\n    });\n  }\n\n  const state = ctrl['_state'];\n\n  if (props.pause === !state.paused) {\n    state.paused = props.pause;\n    flushCalls(props.pause ? state.pauseQueue : state.resumeQueue);\n  } else if (state.paused) {\n    props.pause = true;\n  }\n\n  const promises = (keys || Object.keys(ctrl.springs)).map(key => ctrl.springs[key].start(props));\n  const cancel = props.cancel === true || getDefaultProp(props, 'cancel') === true;\n\n  if (asyncTo || cancel && state.asyncId) {\n    promises.push(scheduleProps(++ctrl['_lastAsyncId'], {\n      props,\n      state,\n      actions: {\n        pause: noop,\n        resume: noop,\n\n        start(props, resolve) {\n          if (cancel) {\n            stopAsync(state, ctrl['_lastAsyncId']);\n            resolve(getCancelledResult(ctrl));\n          } else {\n            props.onRest = onRest;\n            resolve(runAsync(asyncTo, props, state, ctrl));\n          }\n        }\n\n      }\n    }));\n  }\n\n  if (state.paused) {\n    await new Promise(resume => {\n      state.resumeQueue.add(resume);\n    });\n  }\n\n  const result = getCombinedResult(ctrl, await Promise.all(promises));\n\n  if (loop && result.finished && !(isLoop && result.noop)) {\n    const nextProps = createLoopUpdate(props, loop, to);\n\n    if (nextProps) {\n      prepareKeys(ctrl, [nextProps]);\n      return flushUpdate(ctrl, nextProps, true);\n    }\n  }\n\n  if (onResolve) {\n    raf.batchedUpdates(() => onResolve(result, ctrl, ctrl.item));\n  }\n\n  return result;\n}\nfunction getSprings(ctrl, props) {\n  const springs = _extends({}, ctrl.springs);\n\n  if (props) {\n    each(toArray(props), props => {\n      if (is.und(props.keys)) {\n        props = createUpdate(props);\n      }\n\n      if (!is.obj(props.to)) {\n        props = _extends({}, props, {\n          to: undefined\n        });\n      }\n\n      prepareSprings(springs, props, key => {\n        return createSpring(key);\n      });\n    });\n  }\n\n  setSprings(ctrl, springs);\n  return springs;\n}\nfunction setSprings(ctrl, springs) {\n  eachProp(springs, (spring, key) => {\n    if (!ctrl.springs[key]) {\n      ctrl.springs[key] = spring;\n      addFluidObserver(spring, ctrl);\n    }\n  });\n}\n\nfunction createSpring(key, observer) {\n  const spring = new SpringValue();\n  spring.key = key;\n\n  if (observer) {\n    addFluidObserver(spring, observer);\n  }\n\n  return spring;\n}\n\nfunction prepareSprings(springs, props, create) {\n  if (props.keys) {\n    each(props.keys, key => {\n      const spring = springs[key] || (springs[key] = create(key));\n      spring['_prepareNode'](props);\n    });\n  }\n}\n\nfunction prepareKeys(ctrl, queue) {\n  each(queue, props => {\n    prepareSprings(ctrl.springs, props, key => {\n      return createSpring(key, ctrl);\n    });\n  });\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nconst _excluded$3 = [\"children\"];\nconst SpringContext = _ref => {\n  let {\n    children\n  } = _ref,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$3);\n\n  const inherited = useContext(ctx);\n  const pause = props.pause || !!inherited.pause,\n        immediate = props.immediate || !!inherited.immediate;\n  props = useMemoOne(() => ({\n    pause,\n    immediate\n  }), [pause, immediate]);\n  const {\n    Provider\n  } = ctx;\n  return React.createElement(Provider, {\n    value: props\n  }, children);\n};\nconst ctx = makeContext(SpringContext, {});\nSpringContext.Provider = ctx.Provider;\nSpringContext.Consumer = ctx.Consumer;\n\nfunction makeContext(target, init) {\n  Object.assign(target, React.createContext(init));\n  target.Provider._context = target;\n  target.Consumer._context = target;\n  return target;\n}\n\nconst SpringRef = () => {\n  const current = [];\n\n  const SpringRef = function SpringRef(props) {\n    deprecateDirectCall();\n    const results = [];\n    each(current, (ctrl, i) => {\n      if (is.und(props)) {\n        results.push(ctrl.start());\n      } else {\n        const update = _getProps(props, ctrl, i);\n\n        if (update) {\n          results.push(ctrl.start(update));\n        }\n      }\n    });\n    return results;\n  };\n\n  SpringRef.current = current;\n\n  SpringRef.add = function (ctrl) {\n    if (!current.includes(ctrl)) {\n      current.push(ctrl);\n    }\n  };\n\n  SpringRef.delete = function (ctrl) {\n    const i = current.indexOf(ctrl);\n    if (~i) current.splice(i, 1);\n  };\n\n  SpringRef.pause = function () {\n    each(current, ctrl => ctrl.pause(...arguments));\n    return this;\n  };\n\n  SpringRef.resume = function () {\n    each(current, ctrl => ctrl.resume(...arguments));\n    return this;\n  };\n\n  SpringRef.set = function (values) {\n    each(current, ctrl => ctrl.set(values));\n  };\n\n  SpringRef.start = function (props) {\n    const results = [];\n    each(current, (ctrl, i) => {\n      if (is.und(props)) {\n        results.push(ctrl.start());\n      } else {\n        const update = this._getProps(props, ctrl, i);\n\n        if (update) {\n          results.push(ctrl.start(update));\n        }\n      }\n    });\n    return results;\n  };\n\n  SpringRef.stop = function () {\n    each(current, ctrl => ctrl.stop(...arguments));\n    return this;\n  };\n\n  SpringRef.update = function (props) {\n    each(current, (ctrl, i) => ctrl.update(this._getProps(props, ctrl, i)));\n    return this;\n  };\n\n  const _getProps = function _getProps(arg, ctrl, index) {\n    return is.fun(arg) ? arg(index, ctrl) : arg;\n  };\n\n  SpringRef._getProps = _getProps;\n  return SpringRef;\n};\n\nfunction useSprings(length, props, deps) {\n  const propsFn = is.fun(props) && props;\n  if (propsFn && !deps) deps = [];\n  const ref = useMemo(() => propsFn || arguments.length == 3 ? SpringRef() : void 0, []);\n  const layoutId = useRef(0);\n  const forceUpdate = useForceUpdate();\n  const state = useMemo(() => ({\n    ctrls: [],\n    queue: [],\n\n    flush(ctrl, updates) {\n      const springs = getSprings(ctrl, updates);\n      const canFlushSync = layoutId.current > 0 && !state.queue.length && !Object.keys(springs).some(key => !ctrl.springs[key]);\n      return canFlushSync ? flushUpdateQueue(ctrl, updates) : new Promise(resolve => {\n        setSprings(ctrl, springs);\n        state.queue.push(() => {\n          resolve(flushUpdateQueue(ctrl, updates));\n        });\n        forceUpdate();\n      });\n    }\n\n  }), []);\n  const ctrls = useRef([...state.ctrls]);\n  const updates = [];\n  const prevLength = usePrev(length) || 0;\n  useMemo(() => {\n    each(ctrls.current.slice(length, prevLength), ctrl => {\n      detachRefs(ctrl, ref);\n      ctrl.stop(true);\n    });\n    ctrls.current.length = length;\n    declareUpdates(prevLength, length);\n  }, [length]);\n  useMemo(() => {\n    declareUpdates(0, Math.min(prevLength, length));\n  }, deps);\n\n  function declareUpdates(startIndex, endIndex) {\n    for (let i = startIndex; i < endIndex; i++) {\n      const ctrl = ctrls.current[i] || (ctrls.current[i] = new Controller(null, state.flush));\n      const update = propsFn ? propsFn(i, ctrl) : props[i];\n\n      if (update) {\n        updates[i] = declareUpdate(update);\n      }\n    }\n  }\n\n  const springs = ctrls.current.map((ctrl, i) => getSprings(ctrl, updates[i]));\n  const context = useContext(SpringContext);\n  const prevContext = usePrev(context);\n  const hasContext = context !== prevContext && hasProps(context);\n  useIsomorphicLayoutEffect(() => {\n    layoutId.current++;\n    state.ctrls = ctrls.current;\n    const {\n      queue\n    } = state;\n\n    if (queue.length) {\n      state.queue = [];\n      each(queue, cb => cb());\n    }\n\n    each(ctrls.current, (ctrl, i) => {\n      ref == null ? void 0 : ref.add(ctrl);\n\n      if (hasContext) {\n        ctrl.start({\n          default: context\n        });\n      }\n\n      const update = updates[i];\n\n      if (update) {\n        replaceRef(ctrl, update.ref);\n\n        if (ctrl.ref) {\n          ctrl.queue.push(update);\n        } else {\n          ctrl.start(update);\n        }\n      }\n    });\n  });\n  useOnce(() => () => {\n    each(state.ctrls, ctrl => ctrl.stop(true));\n  });\n  const values = springs.map(x => _extends({}, x));\n  return ref ? [values, ref] : values;\n}\n\nfunction useSpring(props, deps) {\n  const isFn = is.fun(props);\n  const [[values], ref] = useSprings(1, isFn ? props : [props], isFn ? deps || [] : deps);\n  return isFn || arguments.length == 2 ? [values, ref] : values;\n}\n\nconst initSpringRef = () => SpringRef();\n\nconst useSpringRef = () => useState(initSpringRef)[0];\n\nfunction useTrail(length, propsArg, deps) {\n  var _passedRef;\n\n  const propsFn = is.fun(propsArg) && propsArg;\n  if (propsFn && !deps) deps = [];\n  let reverse = true;\n  let passedRef = undefined;\n  const result = useSprings(length, (i, ctrl) => {\n    const props = propsFn ? propsFn(i, ctrl) : propsArg;\n    passedRef = props.ref;\n    reverse = reverse && props.reverse;\n    return props;\n  }, deps || [{}]);\n  const ref = (_passedRef = passedRef) != null ? _passedRef : result[1];\n  useIsomorphicLayoutEffect(() => {\n    each(ref.current, (ctrl, i) => {\n      const parent = ref.current[i + (reverse ? 1 : -1)];\n\n      if (parent) {\n        ctrl.start({\n          to: parent.springs\n        });\n      } else {\n        ctrl.start();\n      }\n    });\n  }, deps);\n\n  if (propsFn || arguments.length == 3) {\n    ref['_getProps'] = (propsArg, ctrl, i) => {\n      const props = is.fun(propsArg) ? propsArg(i, ctrl) : propsArg;\n\n      if (props) {\n        const parent = ref.current[i + (props.reverse ? 1 : -1)];\n        if (parent) props.to = parent.springs;\n        return props;\n      }\n    };\n\n    return result;\n  }\n\n  ref['start'] = propsArg => {\n    const results = [];\n    each(ref.current, (ctrl, i) => {\n      const props = is.fun(propsArg) ? propsArg(i, ctrl) : propsArg;\n      const parent = ref.current[i + (reverse ? 1 : -1)];\n\n      if (parent) {\n        results.push(ctrl.start(_extends({}, props, {\n          to: parent.springs\n        })));\n      } else {\n        results.push(ctrl.start(_extends({}, props)));\n      }\n    });\n    return results;\n  };\n\n  return result[0];\n}\n\nlet TransitionPhase;\n\n(function (TransitionPhase) {\n  TransitionPhase[\"MOUNT\"] = \"mount\";\n  TransitionPhase[\"ENTER\"] = \"enter\";\n  TransitionPhase[\"UPDATE\"] = \"update\";\n  TransitionPhase[\"LEAVE\"] = \"leave\";\n})(TransitionPhase || (TransitionPhase = {}));\n\nfunction useTransition(data, props, deps) {\n  const propsFn = is.fun(props) && props;\n  const {\n    reset,\n    sort,\n    trail = 0,\n    expires = true,\n    exitBeforeEnter = false,\n    onDestroyed,\n    ref: propsRef,\n    config: propsConfig\n  } = propsFn ? propsFn() : props;\n  const ref = useMemo(() => propsFn || arguments.length == 3 ? SpringRef() : void 0, []);\n  const items = toArray(data);\n  const transitions = [];\n  const usedTransitions = useRef(null);\n  const prevTransitions = reset ? null : usedTransitions.current;\n  useIsomorphicLayoutEffect(() => {\n    usedTransitions.current = transitions;\n  });\n  useOnce(() => {\n    each(transitions, t => {\n      ref == null ? void 0 : ref.add(t.ctrl);\n      t.ctrl.ref = ref;\n    });\n    return () => {\n      each(usedTransitions.current, t => {\n        if (t.expired) {\n          clearTimeout(t.expirationId);\n        }\n\n        detachRefs(t.ctrl, ref);\n        t.ctrl.stop(true);\n      });\n    };\n  });\n  const keys = getKeys(items, propsFn ? propsFn() : props, prevTransitions);\n  const expired = reset && usedTransitions.current || [];\n  useIsomorphicLayoutEffect(() => each(expired, ({\n    ctrl,\n    item,\n    key\n  }) => {\n    detachRefs(ctrl, ref);\n    callProp(onDestroyed, item, key);\n  }));\n  const reused = [];\n  if (prevTransitions) each(prevTransitions, (t, i) => {\n    if (t.expired) {\n      clearTimeout(t.expirationId);\n      expired.push(t);\n    } else {\n      i = reused[i] = keys.indexOf(t.key);\n      if (~i) transitions[i] = t;\n    }\n  });\n  each(items, (item, i) => {\n    if (!transitions[i]) {\n      transitions[i] = {\n        key: keys[i],\n        item,\n        phase: TransitionPhase.MOUNT,\n        ctrl: new Controller()\n      };\n      transitions[i].ctrl.item = item;\n    }\n  });\n\n  if (reused.length) {\n    let i = -1;\n    const {\n      leave\n    } = propsFn ? propsFn() : props;\n    each(reused, (keyIndex, prevIndex) => {\n      const t = prevTransitions[prevIndex];\n\n      if (~keyIndex) {\n        i = transitions.indexOf(t);\n        transitions[i] = _extends({}, t, {\n          item: items[keyIndex]\n        });\n      } else if (leave) {\n        transitions.splice(++i, 0, t);\n      }\n    });\n  }\n\n  if (is.fun(sort)) {\n    transitions.sort((a, b) => sort(a.item, b.item));\n  }\n\n  let delay = -trail;\n  const forceUpdate = useForceUpdate();\n  const defaultProps = getDefaultProps(props);\n  const changes = new Map();\n  const exitingTransitions = useRef(new Map());\n  const forceChange = useRef(false);\n  each(transitions, (t, i) => {\n    const key = t.key;\n    const prevPhase = t.phase;\n    const p = propsFn ? propsFn() : props;\n    let to;\n    let phase;\n    let propsDelay = callProp(p.delay || 0, key);\n\n    if (prevPhase == TransitionPhase.MOUNT) {\n      to = p.enter;\n      phase = TransitionPhase.ENTER;\n    } else {\n      const isLeave = keys.indexOf(key) < 0;\n\n      if (prevPhase != TransitionPhase.LEAVE) {\n        if (isLeave) {\n          to = p.leave;\n          phase = TransitionPhase.LEAVE;\n        } else if (to = p.update) {\n          phase = TransitionPhase.UPDATE;\n        } else return;\n      } else if (!isLeave) {\n        to = p.enter;\n        phase = TransitionPhase.ENTER;\n      } else return;\n    }\n\n    to = callProp(to, t.item, i);\n    to = is.obj(to) ? inferTo(to) : {\n      to\n    };\n\n    if (!to.config) {\n      const config = propsConfig || defaultProps.config;\n      to.config = callProp(config, t.item, i, phase);\n    }\n\n    delay += trail;\n\n    const payload = _extends({}, defaultProps, {\n      delay: propsDelay + delay,\n      ref: propsRef,\n      immediate: p.immediate,\n      reset: false\n    }, to);\n\n    if (phase == TransitionPhase.ENTER && is.und(payload.from)) {\n      const _p = propsFn ? propsFn() : props;\n\n      const from = is.und(_p.initial) || prevTransitions ? _p.from : _p.initial;\n      payload.from = callProp(from, t.item, i);\n    }\n\n    const {\n      onResolve\n    } = payload;\n\n    payload.onResolve = result => {\n      callProp(onResolve, result);\n      const transitions = usedTransitions.current;\n      const t = transitions.find(t => t.key === key);\n      if (!t) return;\n\n      if (result.cancelled && t.phase != TransitionPhase.UPDATE) {\n        return;\n      }\n\n      if (t.ctrl.idle) {\n        const idle = transitions.every(t => t.ctrl.idle);\n\n        if (t.phase == TransitionPhase.LEAVE) {\n          const expiry = callProp(expires, t.item);\n\n          if (expiry !== false) {\n            const expiryMs = expiry === true ? 0 : expiry;\n            t.expired = true;\n\n            if (!idle && expiryMs > 0) {\n              if (expiryMs <= 0x7fffffff) t.expirationId = setTimeout(forceUpdate, expiryMs);\n              return;\n            }\n          }\n        }\n\n        if (idle && transitions.some(t => t.expired)) {\n          exitingTransitions.current.delete(t);\n\n          if (exitBeforeEnter) {\n            forceChange.current = true;\n          }\n\n          forceUpdate();\n        }\n      }\n    };\n\n    const springs = getSprings(t.ctrl, payload);\n\n    if (phase === TransitionPhase.LEAVE && exitBeforeEnter) {\n      exitingTransitions.current.set(t, {\n        phase,\n        springs,\n        payload\n      });\n    } else {\n      changes.set(t, {\n        phase,\n        springs,\n        payload\n      });\n    }\n  });\n  const context = useContext(SpringContext);\n  const prevContext = usePrev(context);\n  const hasContext = context !== prevContext && hasProps(context);\n  useIsomorphicLayoutEffect(() => {\n    if (hasContext) {\n      each(transitions, t => {\n        t.ctrl.start({\n          default: context\n        });\n      });\n    }\n  }, [context]);\n  each(changes, (_, t) => {\n    if (exitingTransitions.current.size) {\n      const ind = transitions.findIndex(state => state.key === t.key);\n      transitions.splice(ind, 1);\n    }\n  });\n  useIsomorphicLayoutEffect(() => {\n    each(exitingTransitions.current.size ? exitingTransitions.current : changes, ({\n      phase,\n      payload\n    }, t) => {\n      const {\n        ctrl\n      } = t;\n      t.phase = phase;\n      ref == null ? void 0 : ref.add(ctrl);\n\n      if (hasContext && phase == TransitionPhase.ENTER) {\n        ctrl.start({\n          default: context\n        });\n      }\n\n      if (payload) {\n        replaceRef(ctrl, payload.ref);\n\n        if ((ctrl.ref || ref) && !forceChange.current) {\n          ctrl.update(payload);\n        } else {\n          ctrl.start(payload);\n\n          if (forceChange.current) {\n            forceChange.current = false;\n          }\n        }\n      }\n    });\n  }, reset ? void 0 : deps);\n\n  const renderTransitions = render => React.createElement(React.Fragment, null, transitions.map((t, i) => {\n    const {\n      springs\n    } = changes.get(t) || t.ctrl;\n    const elem = render(_extends({}, springs), t.item, t, i);\n    return elem && elem.type ? React.createElement(elem.type, _extends({}, elem.props, {\n      key: is.str(t.key) || is.num(t.key) ? t.key : t.ctrl.id,\n      ref: elem.ref\n    })) : elem;\n  }));\n\n  return ref ? [renderTransitions, ref] : renderTransitions;\n}\nlet nextKey = 1;\n\nfunction getKeys(items, {\n  key,\n  keys = key\n}, prevTransitions) {\n  if (keys === null) {\n    const reused = new Set();\n    return items.map(item => {\n      const t = prevTransitions && prevTransitions.find(t => t.item === item && t.phase !== TransitionPhase.LEAVE && !reused.has(t));\n\n      if (t) {\n        reused.add(t);\n        return t.key;\n      }\n\n      return nextKey++;\n    });\n  }\n\n  return is.und(keys) ? items : is.fun(keys) ? items.map(keys) : toArray(keys);\n}\n\nconst _excluded$2 = [\"children\"];\nfunction Spring(_ref) {\n  let {\n    children\n  } = _ref,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n  return children(useSpring(props));\n}\n\nconst _excluded$1 = [\"items\", \"children\"];\nfunction Trail(_ref) {\n  let {\n    items,\n    children\n  } = _ref,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n  const trails = useTrail(items.length, props);\n  return items.map((item, index) => {\n    const result = children(item, index);\n    return is.fun(result) ? result(trails[index]) : result;\n  });\n}\n\nconst _excluded = [\"items\", \"children\"];\nfunction Transition(_ref) {\n  let {\n    items,\n    children\n  } = _ref,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n  return useTransition(items, props)(children);\n}\n\nclass Interpolation extends FrameValue {\n  constructor(source, args) {\n    super();\n    this.key = void 0;\n    this.idle = true;\n    this.calc = void 0;\n    this._active = new Set();\n    this.source = source;\n    this.calc = createInterpolator(...args);\n\n    const value = this._get();\n\n    const nodeType = getAnimatedType(value);\n    setAnimated(this, nodeType.create(value));\n  }\n\n  advance(_dt) {\n    const value = this._get();\n\n    const oldValue = this.get();\n\n    if (!isEqual(value, oldValue)) {\n      getAnimated(this).setValue(value);\n\n      this._onChange(value, this.idle);\n    }\n\n    if (!this.idle && checkIdle(this._active)) {\n      becomeIdle(this);\n    }\n  }\n\n  _get() {\n    const inputs = is.arr(this.source) ? this.source.map(getFluidValue) : toArray(getFluidValue(this.source));\n    return this.calc(...inputs);\n  }\n\n  _start() {\n    if (this.idle && !checkIdle(this._active)) {\n      this.idle = false;\n      each(getPayload(this), node => {\n        node.done = false;\n      });\n\n      if (Globals.skipAnimation) {\n        raf.batchedUpdates(() => this.advance());\n        becomeIdle(this);\n      } else {\n        frameLoop.start(this);\n      }\n    }\n  }\n\n  _attach() {\n    let priority = 1;\n    each(toArray(this.source), source => {\n      if (hasFluidValue(source)) {\n        addFluidObserver(source, this);\n      }\n\n      if (isFrameValue(source)) {\n        if (!source.idle) {\n          this._active.add(source);\n        }\n\n        priority = Math.max(priority, source.priority + 1);\n      }\n    });\n    this.priority = priority;\n\n    this._start();\n  }\n\n  _detach() {\n    each(toArray(this.source), source => {\n      if (hasFluidValue(source)) {\n        removeFluidObserver(source, this);\n      }\n    });\n\n    this._active.clear();\n\n    becomeIdle(this);\n  }\n\n  eventObserved(event) {\n    if (event.type == 'change') {\n      if (event.idle) {\n        this.advance();\n      } else {\n        this._active.add(event.parent);\n\n        this._start();\n      }\n    } else if (event.type == 'idle') {\n      this._active.delete(event.parent);\n    } else if (event.type == 'priority') {\n      this.priority = toArray(this.source).reduce((highest, parent) => Math.max(highest, (isFrameValue(parent) ? parent.priority : 0) + 1), 0);\n    }\n  }\n\n}\n\nfunction isIdle(source) {\n  return source.idle !== false;\n}\n\nfunction checkIdle(active) {\n  return !active.size || Array.from(active).every(isIdle);\n}\n\nfunction becomeIdle(self) {\n  if (!self.idle) {\n    self.idle = true;\n    each(getPayload(self), node => {\n      node.done = true;\n    });\n    callFluidObservers(self, {\n      type: 'idle',\n      parent: self\n    });\n  }\n}\n\nconst to = (source, ...args) => new Interpolation(source, args);\nconst interpolate = (source, ...args) => (deprecateInterpolate(), new Interpolation(source, args));\n\nGlobals.assign({\n  createStringInterpolator,\n  to: (source, args) => new Interpolation(source, args)\n});\nconst update = frameLoop.advance;\n\nexport { BailSignal, Controller, FrameValue, Interpolation, Spring, SpringContext, SpringRef, SpringValue, Trail, Transition, config, easings, inferTo, interpolate, to, update, useChain, useSpring, useSpringRef, useSprings, useTrail, useTransition };\n", "import { defineHidden, is, createInterpolator, eachProp, hasFluidValue, getFluidValue, each, isAnimatedString, useForceUpdate, useIsomorphicLayoutEffect, addFluidObserver, removeFluidObserver, raf, useOnce } from '@react-spring/shared';\nimport * as React from 'react';\nimport { forwardRef, useRef, useCallback, useEffect } from 'react';\n\nconst $node = Symbol.for('Animated:node');\nconst isAnimated = value => !!value && value[$node] === value;\nconst getAnimated = owner => owner && owner[$node];\nconst setAnimated = (owner, node) => defineHidden(owner, $node, node);\nconst getPayload = owner => owner && owner[$node] && owner[$node].getPayload();\nclass Animated {\n  constructor() {\n    this.payload = void 0;\n    setAnimated(this, this);\n  }\n\n  getPayload() {\n    return this.payload || [];\n  }\n\n}\n\nclass AnimatedValue extends Animated {\n  constructor(_value) {\n    super();\n    this.done = true;\n    this.elapsedTime = void 0;\n    this.lastPosition = void 0;\n    this.lastVelocity = void 0;\n    this.v0 = void 0;\n    this.durationProgress = 0;\n    this._value = _value;\n\n    if (is.num(this._value)) {\n      this.lastPosition = this._value;\n    }\n  }\n\n  static create(value) {\n    return new AnimatedValue(value);\n  }\n\n  getPayload() {\n    return [this];\n  }\n\n  getValue() {\n    return this._value;\n  }\n\n  setValue(value, step) {\n    if (is.num(value)) {\n      this.lastPosition = value;\n\n      if (step) {\n        value = Math.round(value / step) * step;\n\n        if (this.done) {\n          this.lastPosition = value;\n        }\n      }\n    }\n\n    if (this._value === value) {\n      return false;\n    }\n\n    this._value = value;\n    return true;\n  }\n\n  reset() {\n    const {\n      done\n    } = this;\n    this.done = false;\n\n    if (is.num(this._value)) {\n      this.elapsedTime = 0;\n      this.durationProgress = 0;\n      this.lastPosition = this._value;\n      if (done) this.lastVelocity = null;\n      this.v0 = null;\n    }\n  }\n\n}\n\nclass AnimatedString extends AnimatedValue {\n  constructor(value) {\n    super(0);\n    this._string = null;\n    this._toString = void 0;\n    this._toString = createInterpolator({\n      output: [value, value]\n    });\n  }\n\n  static create(value) {\n    return new AnimatedString(value);\n  }\n\n  getValue() {\n    let value = this._string;\n    return value == null ? this._string = this._toString(this._value) : value;\n  }\n\n  setValue(value) {\n    if (is.str(value)) {\n      if (value == this._string) {\n        return false;\n      }\n\n      this._string = value;\n      this._value = 1;\n    } else if (super.setValue(value)) {\n      this._string = null;\n    } else {\n      return false;\n    }\n\n    return true;\n  }\n\n  reset(goal) {\n    if (goal) {\n      this._toString = createInterpolator({\n        output: [this.getValue(), goal]\n      });\n    }\n\n    this._value = 0;\n    super.reset();\n  }\n\n}\n\nconst TreeContext = {\n  dependencies: null\n};\n\nclass AnimatedObject extends Animated {\n  constructor(source) {\n    super();\n    this.source = source;\n    this.setValue(source);\n  }\n\n  getValue(animated) {\n    const values = {};\n    eachProp(this.source, (source, key) => {\n      if (isAnimated(source)) {\n        values[key] = source.getValue(animated);\n      } else if (hasFluidValue(source)) {\n        values[key] = getFluidValue(source);\n      } else if (!animated) {\n        values[key] = source;\n      }\n    });\n    return values;\n  }\n\n  setValue(source) {\n    this.source = source;\n    this.payload = this._makePayload(source);\n  }\n\n  reset() {\n    if (this.payload) {\n      each(this.payload, node => node.reset());\n    }\n  }\n\n  _makePayload(source) {\n    if (source) {\n      const payload = new Set();\n      eachProp(source, this._addToPayload, payload);\n      return Array.from(payload);\n    }\n  }\n\n  _addToPayload(source) {\n    if (TreeContext.dependencies && hasFluidValue(source)) {\n      TreeContext.dependencies.add(source);\n    }\n\n    const payload = getPayload(source);\n\n    if (payload) {\n      each(payload, node => this.add(node));\n    }\n  }\n\n}\n\nclass AnimatedArray extends AnimatedObject {\n  constructor(source) {\n    super(source);\n  }\n\n  static create(source) {\n    return new AnimatedArray(source);\n  }\n\n  getValue() {\n    return this.source.map(node => node.getValue());\n  }\n\n  setValue(source) {\n    const payload = this.getPayload();\n\n    if (source.length == payload.length) {\n      return payload.map((node, i) => node.setValue(source[i])).some(Boolean);\n    }\n\n    super.setValue(source.map(makeAnimated));\n    return true;\n  }\n\n}\n\nfunction makeAnimated(value) {\n  const nodeType = isAnimatedString(value) ? AnimatedString : AnimatedValue;\n  return nodeType.create(value);\n}\n\nfunction getAnimatedType(value) {\n  const parentNode = getAnimated(value);\n  return parentNode ? parentNode.constructor : is.arr(value) ? AnimatedArray : isAnimatedString(value) ? AnimatedString : AnimatedValue;\n}\n\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\n\nconst withAnimated = (Component, host) => {\n  const hasInstance = !is.fun(Component) || Component.prototype && Component.prototype.isReactComponent;\n  return forwardRef((givenProps, givenRef) => {\n    const instanceRef = useRef(null);\n    const ref = hasInstance && useCallback(value => {\n      instanceRef.current = updateRef(givenRef, value);\n    }, [givenRef]);\n    const [props, deps] = getAnimatedState(givenProps, host);\n    const forceUpdate = useForceUpdate();\n\n    const callback = () => {\n      const instance = instanceRef.current;\n\n      if (hasInstance && !instance) {\n        return;\n      }\n\n      const didUpdate = instance ? host.applyAnimatedValues(instance, props.getValue(true)) : false;\n\n      if (didUpdate === false) {\n        forceUpdate();\n      }\n    };\n\n    const observer = new PropsObserver(callback, deps);\n    const observerRef = useRef();\n    useIsomorphicLayoutEffect(() => {\n      observerRef.current = observer;\n      each(deps, dep => addFluidObserver(dep, observer));\n      return () => {\n        if (observerRef.current) {\n          each(observerRef.current.deps, dep => removeFluidObserver(dep, observerRef.current));\n          raf.cancel(observerRef.current.update);\n        }\n      };\n    });\n    useEffect(callback, []);\n    useOnce(() => () => {\n      const observer = observerRef.current;\n      each(observer.deps, dep => removeFluidObserver(dep, observer));\n    });\n    const usedProps = host.getComponentProps(props.getValue());\n    return React.createElement(Component, _extends({}, usedProps, {\n      ref: ref\n    }));\n  });\n};\n\nclass PropsObserver {\n  constructor(update, deps) {\n    this.update = update;\n    this.deps = deps;\n  }\n\n  eventObserved(event) {\n    if (event.type == 'change') {\n      raf.write(this.update);\n    }\n  }\n\n}\n\nfunction getAnimatedState(props, host) {\n  const dependencies = new Set();\n  TreeContext.dependencies = dependencies;\n  if (props.style) props = _extends({}, props, {\n    style: host.createAnimatedStyle(props.style)\n  });\n  props = new AnimatedObject(props);\n  TreeContext.dependencies = null;\n  return [props, dependencies];\n}\n\nfunction updateRef(ref, value) {\n  if (ref) {\n    if (is.fun(ref)) ref(value);else ref.current = value;\n  }\n\n  return value;\n}\n\nconst cacheKey = Symbol.for('AnimatedComponent');\nconst createHost = (components, {\n  applyAnimatedValues: _applyAnimatedValues = () => false,\n  createAnimatedStyle: _createAnimatedStyle = style => new AnimatedObject(style),\n  getComponentProps: _getComponentProps = props => props\n} = {}) => {\n  const hostConfig = {\n    applyAnimatedValues: _applyAnimatedValues,\n    createAnimatedStyle: _createAnimatedStyle,\n    getComponentProps: _getComponentProps\n  };\n\n  const animated = Component => {\n    const displayName = getDisplayName(Component) || 'Anonymous';\n\n    if (is.str(Component)) {\n      Component = animated[Component] || (animated[Component] = withAnimated(Component, hostConfig));\n    } else {\n      Component = Component[cacheKey] || (Component[cacheKey] = withAnimated(Component, hostConfig));\n    }\n\n    Component.displayName = `Animated(${displayName})`;\n    return Component;\n  };\n\n  eachProp(components, (Component, key) => {\n    if (is.arr(components)) {\n      key = getDisplayName(Component);\n    }\n\n    animated[key] = animated(Component);\n  });\n  return {\n    animated\n  };\n};\n\nconst getDisplayName = arg => is.str(arg) ? arg : arg && is.str(arg.displayName) ? arg.displayName : is.fun(arg) && arg.name || null;\n\nexport { Animated, AnimatedArray, AnimatedObject, AnimatedString, AnimatedValue, createHost, getAnimated, getAnimatedType, getPayload, isAnimated, setAnimated };\n", "import { Globals } from '@react-spring/core';\nexport * from '@react-spring/core';\nimport { unstable_batchedUpdates } from 'react-dom';\nimport { eachProp, is, toArray, FluidValue, each, getFluidValue, hasFluidValue, addFluidObserver, removeFluidObserver, callFluidObservers, createStringInterpolator, colors } from '@react-spring/shared';\nimport { AnimatedObject, createHost } from '@react-spring/animated';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nconst _excluded$2 = [\"style\", \"children\", \"scrollTop\", \"scrollLeft\"];\nconst isCustomPropRE = /^--/;\n\nfunction dangerousStyleValue(name, value) {\n  if (value == null || typeof value === 'boolean' || value === '') return '';\n  if (typeof value === 'number' && value !== 0 && !isCustomPropRE.test(name) && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) return value + 'px';\n  return ('' + value).trim();\n}\n\nconst attributeCache = {};\nfunction applyAnimatedValues(instance, props) {\n  if (!instance.nodeType || !instance.setAttribute) {\n    return false;\n  }\n\n  const isFilterElement = instance.nodeName === 'filter' || instance.parentNode && instance.parentNode.nodeName === 'filter';\n\n  const _ref = props,\n        {\n    style,\n    children,\n    scrollTop,\n    scrollLeft\n  } = _ref,\n        attributes = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n  const values = Object.values(attributes);\n  const names = Object.keys(attributes).map(name => isFilterElement || instance.hasAttribute(name) ? name : attributeCache[name] || (attributeCache[name] = name.replace(/([A-Z])/g, n => '-' + n.toLowerCase())));\n\n  if (children !== void 0) {\n    instance.textContent = children;\n  }\n\n  for (let name in style) {\n    if (style.hasOwnProperty(name)) {\n      const value = dangerousStyleValue(name, style[name]);\n\n      if (isCustomPropRE.test(name)) {\n        instance.style.setProperty(name, value);\n      } else {\n        instance.style[name] = value;\n      }\n    }\n  }\n\n  names.forEach((name, i) => {\n    instance.setAttribute(name, values[i]);\n  });\n\n  if (scrollTop !== void 0) {\n    instance.scrollTop = scrollTop;\n  }\n\n  if (scrollLeft !== void 0) {\n    instance.scrollLeft = scrollLeft;\n  }\n}\nlet isUnitlessNumber = {\n  animationIterationCount: true,\n  borderImageOutset: true,\n  borderImageSlice: true,\n  borderImageWidth: true,\n  boxFlex: true,\n  boxFlexGroup: true,\n  boxOrdinalGroup: true,\n  columnCount: true,\n  columns: true,\n  flex: true,\n  flexGrow: true,\n  flexPositive: true,\n  flexShrink: true,\n  flexNegative: true,\n  flexOrder: true,\n  gridRow: true,\n  gridRowEnd: true,\n  gridRowSpan: true,\n  gridRowStart: true,\n  gridColumn: true,\n  gridColumnEnd: true,\n  gridColumnSpan: true,\n  gridColumnStart: true,\n  fontWeight: true,\n  lineClamp: true,\n  lineHeight: true,\n  opacity: true,\n  order: true,\n  orphans: true,\n  tabSize: true,\n  widows: true,\n  zIndex: true,\n  zoom: true,\n  fillOpacity: true,\n  floodOpacity: true,\n  stopOpacity: true,\n  strokeDasharray: true,\n  strokeDashoffset: true,\n  strokeMiterlimit: true,\n  strokeOpacity: true,\n  strokeWidth: true\n};\n\nconst prefixKey = (prefix, key) => prefix + key.charAt(0).toUpperCase() + key.substring(1);\n\nconst prefixes = ['Webkit', 'Ms', 'Moz', 'O'];\nisUnitlessNumber = Object.keys(isUnitlessNumber).reduce((acc, prop) => {\n  prefixes.forEach(prefix => acc[prefixKey(prefix, prop)] = acc[prop]);\n  return acc;\n}, isUnitlessNumber);\n\nconst _excluded$1 = [\"x\", \"y\", \"z\"];\nconst domTransforms = /^(matrix|translate|scale|rotate|skew)/;\nconst pxTransforms = /^(translate)/;\nconst degTransforms = /^(rotate|skew)/;\n\nconst addUnit = (value, unit) => is.num(value) && value !== 0 ? value + unit : value;\n\nconst isValueIdentity = (value, id) => is.arr(value) ? value.every(v => isValueIdentity(v, id)) : is.num(value) ? value === id : parseFloat(value) === id;\n\nclass AnimatedStyle extends AnimatedObject {\n  constructor(_ref) {\n    let {\n      x,\n      y,\n      z\n    } = _ref,\n        style = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n    const inputs = [];\n    const transforms = [];\n\n    if (x || y || z) {\n      inputs.push([x || 0, y || 0, z || 0]);\n      transforms.push(xyz => [`translate3d(${xyz.map(v => addUnit(v, 'px')).join(',')})`, isValueIdentity(xyz, 0)]);\n    }\n\n    eachProp(style, (value, key) => {\n      if (key === 'transform') {\n        inputs.push([value || '']);\n        transforms.push(transform => [transform, transform === '']);\n      } else if (domTransforms.test(key)) {\n        delete style[key];\n        if (is.und(value)) return;\n        const unit = pxTransforms.test(key) ? 'px' : degTransforms.test(key) ? 'deg' : '';\n        inputs.push(toArray(value));\n        transforms.push(key === 'rotate3d' ? ([x, y, z, deg]) => [`rotate3d(${x},${y},${z},${addUnit(deg, unit)})`, isValueIdentity(deg, 0)] : input => [`${key}(${input.map(v => addUnit(v, unit)).join(',')})`, isValueIdentity(input, key.startsWith('scale') ? 1 : 0)]);\n      }\n    });\n\n    if (inputs.length) {\n      style.transform = new FluidTransform(inputs, transforms);\n    }\n\n    super(style);\n  }\n\n}\n\nclass FluidTransform extends FluidValue {\n  constructor(inputs, transforms) {\n    super();\n    this._value = null;\n    this.inputs = inputs;\n    this.transforms = transforms;\n  }\n\n  get() {\n    return this._value || (this._value = this._get());\n  }\n\n  _get() {\n    let transform = '';\n    let identity = true;\n    each(this.inputs, (input, i) => {\n      const arg1 = getFluidValue(input[0]);\n      const [t, id] = this.transforms[i](is.arr(arg1) ? arg1 : input.map(getFluidValue));\n      transform += ' ' + t;\n      identity = identity && id;\n    });\n    return identity ? 'none' : transform;\n  }\n\n  observerAdded(count) {\n    if (count == 1) each(this.inputs, input => each(input, value => hasFluidValue(value) && addFluidObserver(value, this)));\n  }\n\n  observerRemoved(count) {\n    if (count == 0) each(this.inputs, input => each(input, value => hasFluidValue(value) && removeFluidObserver(value, this)));\n  }\n\n  eventObserved(event) {\n    if (event.type == 'change') {\n      this._value = null;\n    }\n\n    callFluidObservers(this, event);\n  }\n\n}\n\nconst primitives = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', 'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nconst _excluded = [\"scrollTop\", \"scrollLeft\"];\nGlobals.assign({\n  batchedUpdates: unstable_batchedUpdates,\n  createStringInterpolator,\n  colors\n});\nconst host = createHost(primitives, {\n  applyAnimatedValues,\n  createAnimatedStyle: style => new AnimatedStyle(style),\n  getComponentProps: _ref => {\n    let props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n    return props;\n  }\n});\nconst animated = host.animated;\n\nexport { animated as a, animated };\n", "/**\n * External dependencies\n */\nimport { Controller, easings } from '@react-spring/web';\n\n/**\n * WordPress dependencies\n */\nimport { useLayoutEffect, useMemo, useRef } from '@wordpress/element';\n\nfunction getAbsolutePosition( element ) {\n\treturn {\n\t\ttop: element.offsetTop,\n\t\tleft: element.offsetLeft,\n\t};\n}\n\nconst ANIMATION_DURATION = 400;\n\n/**\n * Hook used to compute the styles required to move a div into a new position.\n *\n * The way this animation works is the following:\n *  - It first renders the element as if there was no animation.\n *  - It takes a snapshot of the position of the block to use it\n *    as a destination point for the animation.\n *  - It restores the element to the previous position using a CSS transform\n *  - It uses the \"resetAnimation\" flag to reset the animation\n *    from the beginning in order to animate to the new destination point.\n *\n * @param {Object} $1                          Options\n * @param {*}      $1.triggerAnimationOnChange Variable used to trigger the animation if it changes.\n */\nfunction useMovingAnimation( { triggerAnimationOnChange } ) {\n\tconst ref = useRef();\n\n\t// Whenever the trigger changes, we need to take a snapshot of the current\n\t// position of the block to use it as a destination point for the animation.\n\tconst { previous, prevRect } = useMemo(\n\t\t() => ( {\n\t\t\tprevious: ref.current && getAbsolutePosition( ref.current ),\n\t\t\tprevRect: ref.current && ref.current.getBoundingClientRect(),\n\t\t} ),\n\t\t[ triggerAnimationOnChange ]\n\t);\n\n\tuseLayoutEffect( () => {\n\t\tif ( ! previous || ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// We disable the animation if the user has a preference for reduced\n\t\t// motion.\n\t\tconst disableAnimation = window.matchMedia(\n\t\t\t'(prefers-reduced-motion: reduce)'\n\t\t).matches;\n\n\t\tif ( disableAnimation ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst controller = new Controller( {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth: prevRect.width,\n\t\t\theight: prevRect.height,\n\t\t\tconfig: {\n\t\t\t\tduration: ANIMATION_DURATION,\n\t\t\t\teasing: easings.easeInOutQuint,\n\t\t\t},\n\t\t\tonChange( { value } ) {\n\t\t\t\tif ( ! ref.current ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet { x, y, width, height } = value;\n\t\t\t\tx = Math.round( x );\n\t\t\t\ty = Math.round( y );\n\t\t\t\twidth = Math.round( width );\n\t\t\t\theight = Math.round( height );\n\t\t\t\tconst finishedMoving = x === 0 && y === 0;\n\t\t\t\tref.current.style.transformOrigin = 'center center';\n\t\t\t\tref.current.style.transform = finishedMoving\n\t\t\t\t\t? null // Set to `null` to explicitly remove the transform.\n\t\t\t\t\t: `translate3d(${ x }px,${ y }px,0)`;\n\t\t\t\tref.current.style.width = finishedMoving\n\t\t\t\t\t? null\n\t\t\t\t\t: `${ width }px`;\n\t\t\t\tref.current.style.height = finishedMoving\n\t\t\t\t\t? null\n\t\t\t\t\t: `${ height }px`;\n\t\t\t},\n\t\t} );\n\n\t\tref.current.style.transform = undefined;\n\t\tconst destination = ref.current.getBoundingClientRect();\n\n\t\tconst x = Math.round( prevRect.left - destination.left );\n\t\tconst y = Math.round( prevRect.top - destination.top );\n\t\tconst width = destination.width;\n\t\tconst height = destination.height;\n\n\t\tcontroller.start( {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth,\n\t\t\theight,\n\t\t\tfrom: { x, y, width: prevRect.width, height: prevRect.height },\n\t\t} );\n\n\t\treturn () => {\n\t\t\tcontroller.stop();\n\t\t\tcontroller.set( {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\twidth: prevRect.width,\n\t\t\t\theight: prevRect.height,\n\t\t\t} );\n\t\t};\n\t}, [ previous, prevRect ] );\n\n\treturn ref;\n}\n\nexport default useMovingAnimation;\n", "/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { __experimentalHStack as HStack } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { check } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport SaveButton from '../save-button';\nimport { isPreviewingTheme } from '../../utils/is-previewing-theme';\n\nexport default function SaveHub() {\n\tconst { isDisabled, isSaving } = useSelect( ( select ) => {\n\t\tconst { __experimentalGetDirtyEntityRecords, isSavingEntityRecord } =\n\t\t\tselect( coreStore );\n\t\tconst dirtyEntityRecords = __experimentalGetDirtyEntityRecords();\n\t\tconst _isSaving = dirtyEntityRecords.some( ( record ) =>\n\t\t\tisSavingEntityRecord( record.kind, record.name, record.key )\n\t\t);\n\t\treturn {\n\t\t\tisSaving: _isSaving,\n\t\t\tisDisabled:\n\t\t\t\t_isSaving ||\n\t\t\t\t( ! dirtyEntityRecords.length && ! isPreviewingTheme() ),\n\t\t};\n\t}, [] );\n\treturn (\n\t\t<HStack className=\"edit-site-save-hub\" alignment=\"right\" spacing={ 4 }>\n\t\t\t<SaveButton\n\t\t\t\tclassName=\"edit-site-save-hub__button\"\n\t\t\t\tvariant={ isDisabled ? null : 'primary' }\n\t\t\t\tshowTooltip={ false }\n\t\t\t\ticon={ isDisabled && ! isSaving ? check : null }\n\t\t\t\tshowReviewMessage\n\t\t\t\t__next40pxDefaultSize\n\t\t\t/>\n\t\t</HStack>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { Button } from '@wordpress/components';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { displayShortcut } from '@wordpress/keycodes';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport {\n\tuseEntitiesSavedStatesIsDirty,\n\tstore as editorStore,\n} from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport {\n\tcurrentlyPreviewingTheme,\n\tisPreviewingTheme,\n} from '../../utils/is-previewing-theme';\nimport { unlock } from '../../lock-unlock';\n\nconst { useLocation } = unlock( routerPrivateApis );\n\nexport default function SaveButton( {\n\tclassName = 'edit-site-save-button__button',\n\tvariant = 'primary',\n\tshowTooltip = true,\n\tshowReviewMessage,\n\ticon,\n\tsize,\n\t__next40pxDefaultSize = false,\n} ) {\n\tconst { params } = useLocation();\n\tconst { setIsSaveViewOpened } = useDispatch( editSiteStore );\n\tconst { saveDirtyEntities } = unlock( useDispatch( editorStore ) );\n\tconst { dirtyEntityRecords } = useEntitiesSavedStatesIsDirty();\n\tconst { isSaving, isSaveViewOpen, previewingThemeName } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { isSavingEntityRecord, isResolving } = select( coreStore );\n\t\t\tconst { isSaveViewOpened } = select( editSiteStore );\n\t\t\tconst isActivatingTheme = isResolving( 'activateTheme' );\n\t\t\tconst currentlyPreviewingThemeId = currentlyPreviewingTheme();\n\t\t\treturn {\n\t\t\t\tisSaving:\n\t\t\t\t\tdirtyEntityRecords.some( ( record ) =>\n\t\t\t\t\t\tisSavingEntityRecord(\n\t\t\t\t\t\t\trecord.kind,\n\t\t\t\t\t\t\trecord.name,\n\t\t\t\t\t\t\trecord.key\n\t\t\t\t\t\t)\n\t\t\t\t\t) || isActivatingTheme,\n\t\t\t\tisSaveViewOpen: isSaveViewOpened(),\n\t\t\t\t// Do not call `getTheme` with null, it will cause a request to\n\t\t\t\t// the server.\n\t\t\t\tpreviewingThemeName: currentlyPreviewingThemeId\n\t\t\t\t\t? select( coreStore ).getTheme( currentlyPreviewingThemeId )\n\t\t\t\t\t\t\t?.name?.rendered\n\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t},\n\t\t[ dirtyEntityRecords ]\n\t);\n\tconst hasDirtyEntities = !! dirtyEntityRecords.length;\n\tlet isOnlyCurrentEntityDirty;\n\t// Check if the current entity is the only entity with changes.\n\t// We have some extra logic for `wp_global_styles` for now, that\n\t// is used in navigation sidebar.\n\tif ( dirtyEntityRecords.length === 1 ) {\n\t\tif ( params.postId ) {\n\t\t\tisOnlyCurrentEntityDirty =\n\t\t\t\t`${ dirtyEntityRecords[ 0 ].key }` === params.postId &&\n\t\t\t\tdirtyEntityRecords[ 0 ].name === params.postType;\n\t\t} else if ( params.path?.includes( 'wp_global_styles' ) ) {\n\t\t\tisOnlyCurrentEntityDirty =\n\t\t\t\tdirtyEntityRecords[ 0 ].name === 'globalStyles';\n\t\t}\n\t}\n\tconst disabled =\n\t\tisSaving || ( ! hasDirtyEntities && ! isPreviewingTheme() );\n\tconst getLabel = () => {\n\t\tif ( isPreviewingTheme() ) {\n\t\t\tif ( isSaving ) {\n\t\t\t\treturn sprintf(\n\t\t\t\t\t/* translators: %s: The name of theme to be activated. */\n\t\t\t\t\t__( 'Activating %s' ),\n\t\t\t\t\tpreviewingThemeName\n\t\t\t\t);\n\t\t\t} else if ( disabled ) {\n\t\t\t\treturn __( 'Saved' );\n\t\t\t} else if ( hasDirtyEntities ) {\n\t\t\t\treturn sprintf(\n\t\t\t\t\t/* translators: %s: The name of theme to be activated. */\n\t\t\t\t\t__( 'Activate %s & Save' ),\n\t\t\t\t\tpreviewingThemeName\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn sprintf(\n\t\t\t\t/* translators: %s: The name of theme to be activated. */\n\t\t\t\t__( 'Activate %s' ),\n\t\t\t\tpreviewingThemeName\n\t\t\t);\n\t\t}\n\t\tif ( isSaving ) {\n\t\t\treturn __( 'Saving' );\n\t\t}\n\t\tif ( disabled ) {\n\t\t\treturn __( 'Saved' );\n\t\t}\n\t\tif ( ! isOnlyCurrentEntityDirty && showReviewMessage ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: %d: number of unsaved changes (number).\n\t\t\t\t_n(\n\t\t\t\t\t'Review %d change\u2026',\n\t\t\t\t\t'Review %d changes\u2026',\n\t\t\t\t\tdirtyEntityRecords.length\n\t\t\t\t),\n\t\t\t\tdirtyEntityRecords.length\n\t\t\t);\n\t\t}\n\t\treturn __( 'Save' );\n\t};\n\tconst label = getLabel();\n\tconst onClick = isOnlyCurrentEntityDirty\n\t\t? () => saveDirtyEntities( { dirtyEntityRecords } )\n\t\t: () => setIsSaveViewOpened( true );\n\treturn (\n\t\t<Button\n\t\t\tvariant={ variant }\n\t\t\tclassName={ className }\n\t\t\taria-disabled={ disabled }\n\t\t\taria-expanded={ isSaveViewOpen }\n\t\t\tisBusy={ isSaving }\n\t\t\tonClick={ disabled ? undefined : onClick }\n\t\t\tlabel={ label }\n\t\t\t/*\n\t\t\t * We want the tooltip to show the keyboard shortcut only when the\n\t\t\t * button does something, i.e. when it's not disabled.\n\t\t\t */\n\t\t\tshortcut={ disabled ? undefined : displayShortcut.primary( 's' ) }\n\t\t\t/*\n\t\t\t * Displaying the keyboard shortcut conditionally makes the tooltip\n\t\t\t * itself show conditionally. This would trigger a full-rerendering\n\t\t\t * of the button that we want to avoid. By setting `showTooltip`,\n\t\t\t * the tooltip is always rendered even when there's no keyboard shortcut.\n\t\t\t */\n\t\t\tshowTooltip={ showTooltip }\n\t\t\ticon={ icon }\n\t\t\t__next40pxDefaultSize={ __next40pxDefaultSize }\n\t\t\tsize={ size }\n\t\t>\n\t\t\t{ label }\n\t\t</Button>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { getQueryArg } from '@wordpress/url';\n\nexport function isPreviewingTheme() {\n\treturn !! getQueryArg( window.location.href, 'wp_theme_preview' );\n}\n\nexport function currentlyPreviewingTheme() {\n\tif ( isPreviewingTheme() ) {\n\t\treturn getQueryArg( window.location.href, 'wp_theme_preview' );\n\t}\n\treturn null;\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { NavigableRegion } from '@wordpress/admin-ui';\nimport { Button, Modal } from '@wordpress/components';\nimport {\n\tEntitiesSavedStates,\n\tuseEntitiesSavedStatesIsDirty,\n\tprivateApis,\n} from '@wordpress/editor';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport { useActivateTheme } from '../../utils/use-activate-theme';\nimport { useActualCurrentTheme } from '../../utils/use-actual-current-theme';\nimport { isPreviewingTheme } from '../../utils/is-previewing-theme';\n\nconst { EntitiesSavedStatesExtensible } = unlock( privateApis );\nconst { useLocation } = unlock( routerPrivateApis );\n\nconst EntitiesSavedStatesForPreview = ( {\n\tonClose,\n\trenderDialog,\n\tvariant,\n} ) => {\n\tconst isDirtyProps = useEntitiesSavedStatesIsDirty();\n\tlet activateSaveLabel;\n\tif ( isDirtyProps.isDirty ) {\n\t\tactivateSaveLabel = __( 'Activate & Save' );\n\t} else {\n\t\tactivateSaveLabel = __( 'Activate' );\n\t}\n\n\tconst currentTheme = useActualCurrentTheme();\n\n\tconst previewingTheme = useSelect(\n\t\t( select ) => select( coreStore ).getCurrentTheme(),\n\t\t[]\n\t);\n\n\tconst additionalPrompt = (\n\t\t<p>\n\t\t\t{ sprintf(\n\t\t\t\t/* translators: 1: The name of active theme, 2: The name of theme to be activated. */\n\t\t\t\t__(\n\t\t\t\t\t'Saving your changes will change your active theme from %1$s to %2$s.'\n\t\t\t\t),\n\t\t\t\tcurrentTheme?.name?.rendered ?? '...',\n\t\t\t\tpreviewingTheme?.name?.rendered ?? '...'\n\t\t\t) }\n\t\t</p>\n\t);\n\n\tconst activateTheme = useActivateTheme();\n\tconst onSave = async ( values ) => {\n\t\tawait activateTheme();\n\t\treturn values;\n\t};\n\n\treturn (\n\t\t<EntitiesSavedStatesExtensible\n\t\t\t{ ...{\n\t\t\t\t...isDirtyProps,\n\t\t\t\tadditionalPrompt,\n\t\t\t\tclose: onClose,\n\t\t\t\tonSave,\n\t\t\t\tsaveEnabled: true,\n\t\t\t\tsaveLabel: activateSaveLabel,\n\t\t\t\trenderDialog,\n\t\t\t\tvariant,\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nconst _EntitiesSavedStates = ( { onClose, renderDialog, variant } ) => {\n\tif ( isPreviewingTheme() ) {\n\t\treturn (\n\t\t\t<EntitiesSavedStatesForPreview\n\t\t\t\tonClose={ onClose }\n\t\t\t\trenderDialog={ renderDialog }\n\t\t\t\tvariant={ variant }\n\t\t\t/>\n\t\t);\n\t}\n\treturn (\n\t\t<EntitiesSavedStates\n\t\t\tclose={ onClose }\n\t\t\trenderDialog={ renderDialog }\n\t\t\tvariant={ variant }\n\t\t/>\n\t);\n};\n\nexport default function SavePanel() {\n\tconst { query } = useLocation();\n\tconst { canvas = 'view' } = query;\n\tconst { isSaveViewOpen, isDirty, isSaving } = useSelect( ( select ) => {\n\t\tconst {\n\t\t\t__experimentalGetDirtyEntityRecords,\n\t\t\tisSavingEntityRecord,\n\t\t\tisResolving,\n\t\t} = select( coreStore );\n\t\tconst dirtyEntityRecords = __experimentalGetDirtyEntityRecords();\n\t\tconst isActivatingTheme = isResolving( 'activateTheme' );\n\t\tconst { isSaveViewOpened } = unlock( select( editSiteStore ) );\n\n\t\t// The currently selected entity to display.\n\t\t// Typically template or template part in the site editor.\n\t\treturn {\n\t\t\tisSaveViewOpen: isSaveViewOpened(),\n\t\t\tisDirty: dirtyEntityRecords.length > 0,\n\t\t\tisSaving:\n\t\t\t\tdirtyEntityRecords.some( ( record ) =>\n\t\t\t\t\tisSavingEntityRecord( record.kind, record.name, record.key )\n\t\t\t\t) || isActivatingTheme,\n\t\t};\n\t}, [] );\n\tconst { setIsSaveViewOpened } = useDispatch( editSiteStore );\n\tconst onClose = () => setIsSaveViewOpened( false );\n\tuseEffect( () => {\n\t\tsetIsSaveViewOpened( false );\n\t}, [ canvas, setIsSaveViewOpened ] );\n\n\tif ( canvas === 'view' ) {\n\t\treturn isSaveViewOpen ? (\n\t\t\t<Modal\n\t\t\t\tclassName=\"edit-site-save-panel__modal\"\n\t\t\t\tonRequestClose={ onClose }\n\t\t\t\ttitle={ __( 'Review changes' ) }\n\t\t\t\tsize=\"small\"\n\t\t\t>\n\t\t\t\t<_EntitiesSavedStates onClose={ onClose } variant=\"inline\" />\n\t\t\t</Modal>\n\t\t) : null;\n\t}\n\tconst activateSaveEnabled = isPreviewingTheme() || isDirty;\n\tconst disabled = isSaving || ! activateSaveEnabled;\n\treturn (\n\t\t<NavigableRegion\n\t\t\tclassName={ clsx( 'edit-site-layout__actions', {\n\t\t\t\t'is-entity-save-view-open': isSaveViewOpen,\n\t\t\t} ) }\n\t\t\tariaLabel={ __( 'Save panel' ) }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={ clsx( 'edit-site-editor__toggle-save-panel', {\n\t\t\t\t\t'screen-reader-text': isSaveViewOpen,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tclassName=\"edit-site-editor__toggle-save-panel-button\"\n\t\t\t\t\tonClick={ () => setIsSaveViewOpened( true ) }\n\t\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Open save panel' ) }\n\t\t\t\t</Button>\n\t\t\t</div>\n\t\t\t{ isSaveViewOpen && (\n\t\t\t\t<_EntitiesSavedStates onClose={ onClose } renderDialog />\n\t\t\t) }\n\t\t</NavigableRegion>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\nimport {\n\tisPreviewingTheme,\n\tcurrentlyPreviewingTheme,\n} from './is-previewing-theme';\n\nconst { useHistory, useLocation } = unlock( routerPrivateApis );\n\n/**\n * This should be refactored to use the REST API, once the REST API can activate themes.\n *\n * @return {Function} A function that activates the theme.\n */\nexport function useActivateTheme() {\n\tconst history = useHistory();\n\tconst { path } = useLocation();\n\tconst { startResolution, finishResolution } = useDispatch( coreStore );\n\n\treturn async () => {\n\t\tif ( isPreviewingTheme() ) {\n\t\t\tconst activationURL =\n\t\t\t\t'themes.php?action=activate&stylesheet=' +\n\t\t\t\tcurrentlyPreviewingTheme() +\n\t\t\t\t'&_wpnonce=' +\n\t\t\t\twindow.WP_BLOCK_THEME_ACTIVATE_NONCE;\n\t\t\tstartResolution( 'activateTheme' );\n\t\t\tawait window.fetch( activationURL );\n\t\t\tfinishResolution( 'activateTheme' );\n\t\t\t// Remove the wp_theme_preview query param: we've finished activating\n\t\t\t// the queue and are switching to normal Site Editor.\n\t\t\thistory.navigate( addQueryArgs( path, { wp_theme_preview: '' } ) );\n\t\t}\n\t};\n}\n", "/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { useState, useEffect } from '@wordpress/element';\nimport { addQueryArgs } from '@wordpress/url';\n\nconst ACTIVE_THEMES_URL = '/wp/v2/themes?status=active';\n\nexport function useActualCurrentTheme() {\n\tconst [ currentTheme, setCurrentTheme ] = useState();\n\n\tuseEffect( () => {\n\t\t// Set the `wp_theme_preview` to empty string to bypass the createThemePreviewMiddleware.\n\t\tconst path = addQueryArgs( ACTIVE_THEMES_URL, {\n\t\t\tcontext: 'edit',\n\t\t\twp_theme_preview: '',\n\t\t} );\n\n\t\tapiFetch( { path } )\n\t\t\t.then( ( activeThemes ) => setCurrentTheme( activeThemes[ 0 ] ) )\n\t\t\t// Do nothing\n\t\t\t.catch( () => {} );\n\t}, [] );\n\n\treturn currentTheme;\n}\n", "/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, isRTL } from '@wordpress/i18n';\nimport { rotateLeft, rotateRight, help, backup } from '@wordpress/icons';\nimport { useCommandLoader } from '@wordpress/commands';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { store as coreStore } from '@wordpress/core-data';\nimport {\n\tstore as editorStore,\n\tprivateApis as editorPrivateApis,\n} from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as editSiteStore } from '../../store';\n\nconst { useHistory, useLocation } = unlock( routerPrivateApis );\nconst { useGlobalStyles } = unlock( editorPrivateApis );\n\nconst getGlobalStylesToggleWelcomeGuideCommands = () =>\n\tfunction useGlobalStylesToggleWelcomeGuideCommands() {\n\t\tconst { openGeneralSidebar } = unlock( useDispatch( editSiteStore ) );\n\t\tconst { params } = useLocation();\n\t\tconst { canvas = 'view' } = params;\n\t\tconst { set } = useDispatch( preferencesStore );\n\n\t\tconst history = useHistory();\n\t\tconst isBlockBasedTheme = useSelect( ( select ) => {\n\t\t\treturn select( coreStore ).getCurrentTheme().is_block_theme;\n\t\t}, [] );\n\n\t\tconst commands = useMemo( () => {\n\t\t\tif ( ! isBlockBasedTheme ) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tname: 'core/edit-site/toggle-styles-welcome-guide',\n\t\t\t\t\tlabel: __( 'Learn about styles' ),\n\t\t\t\t\tcallback: ( { close } ) => {\n\t\t\t\t\t\tclose();\n\t\t\t\t\t\tif ( canvas !== 'edit' ) {\n\t\t\t\t\t\t\thistory.navigate( '/styles?canvas=edit', {\n\t\t\t\t\t\t\t\ttransition: 'canvas-mode-edit-transition',\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t\topenGeneralSidebar( 'edit-site/global-styles' );\n\t\t\t\t\t\tset( 'core/edit-site', 'welcomeGuideStyles', true );\n\t\t\t\t\t\t// sometimes there's a focus loss that happens after some time\n\t\t\t\t\t\t// that closes the modal, we need to force reopening it.\n\t\t\t\t\t\tsetTimeout( () => {\n\t\t\t\t\t\t\tset( 'core/edit-site', 'welcomeGuideStyles', true );\n\t\t\t\t\t\t}, 500 );\n\t\t\t\t\t},\n\t\t\t\t\ticon: help,\n\t\t\t\t},\n\t\t\t];\n\t\t}, [ history, openGeneralSidebar, canvas, isBlockBasedTheme, set ] );\n\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tcommands,\n\t\t};\n\t};\n\nconst getGlobalStylesResetCommands = () =>\n\tfunction useGlobalStylesResetCommands() {\n\t\tconst { user, setUser } = useGlobalStyles();\n\n\t\t// Check if there are user customizations that can be reset\n\t\tconst canReset =\n\t\t\t!! user &&\n\t\t\t( Object.keys( user?.styles ?? {} ).length > 0 ||\n\t\t\t\tObject.keys( user?.settings ?? {} ).length > 0 );\n\n\t\tconst commands = useMemo( () => {\n\t\t\tif ( ! canReset ) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tname: 'core/edit-site/reset-global-styles',\n\t\t\t\t\tlabel: __( 'Reset styles' ),\n\t\t\t\t\ticon: isRTL() ? rotateRight : rotateLeft,\n\t\t\t\t\tcallback: ( { close } ) => {\n\t\t\t\t\t\tclose();\n\t\t\t\t\t\tsetUser( { styles: {}, settings: {} } );\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t];\n\t\t}, [ canReset, setUser ] );\n\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tcommands,\n\t\t};\n\t};\n\nconst getGlobalStylesOpenRevisionsCommands = () =>\n\tfunction useGlobalStylesOpenRevisionsCommands() {\n\t\tconst { openGeneralSidebar } = unlock( useDispatch( editSiteStore ) );\n\t\tconst { setStylesPath } = unlock( useDispatch( editorStore ) );\n\t\tconst { params } = useLocation();\n\t\tconst { canvas = 'view' } = params;\n\t\tconst history = useHistory();\n\t\tconst hasRevisions = useSelect( ( select ) => {\n\t\t\tconst { getEntityRecord, __experimentalGetCurrentGlobalStylesId } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst globalStylesId = __experimentalGetCurrentGlobalStylesId();\n\t\t\tconst globalStyles = globalStylesId\n\t\t\t\t? getEntityRecord( 'root', 'globalStyles', globalStylesId )\n\t\t\t\t: undefined;\n\n\t\t\treturn !! globalStyles?._links?.[ 'version-history' ]?.[ 0 ]?.count;\n\t\t}, [] );\n\n\t\tconst commands = useMemo( () => {\n\t\t\tif ( ! hasRevisions ) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tname: 'core/edit-site/open-styles-revisions',\n\t\t\t\t\tlabel: __( 'Open style revisions' ),\n\t\t\t\t\ticon: backup,\n\t\t\t\t\tcallback: ( { close } ) => {\n\t\t\t\t\t\tclose();\n\t\t\t\t\t\tif ( canvas !== 'edit' ) {\n\t\t\t\t\t\t\thistory.navigate( '/styles?canvas=edit', {\n\t\t\t\t\t\t\t\ttransition: 'canvas-mode-edit-transition',\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t\topenGeneralSidebar( 'edit-site/global-styles' );\n\t\t\t\t\t\tsetStylesPath( '/revisions' );\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t];\n\t\t}, [\n\t\t\thistory,\n\t\t\topenGeneralSidebar,\n\t\t\tsetStylesPath,\n\t\t\thasRevisions,\n\t\t\tcanvas,\n\t\t] );\n\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tcommands,\n\t\t};\n\t};\n\nexport function useCommonCommands() {\n\tuseCommandLoader( {\n\t\tname: 'core/edit-site/toggle-styles-welcome-guide',\n\t\thook: getGlobalStylesToggleWelcomeGuideCommands(),\n\t} );\n\n\tuseCommandLoader( {\n\t\tname: 'core/edit-site/reset-global-styles',\n\t\thook: getGlobalStylesResetCommands(),\n\t} );\n\n\tuseCommandLoader( {\n\t\tname: 'core/edit-site/open-styles-revisions',\n\t\thook: getGlobalStylesOpenRevisionsCommands(),\n\t} );\n}\n", "/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { privateApis as commandsPrivateApis } from '@wordpress/commands';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { useCommandContext } = unlock( commandsPrivateApis );\nconst { useLocation } = unlock( routerPrivateApis );\n\n/**\n * React hook used to set the correct command context based on the current state.\n */\nexport default function useSetCommandContext() {\n\tconst { query = {} } = useLocation();\n\tconst { canvas = 'view' } = query;\n\tconst hasBlockSelected = useSelect( ( select ) => {\n\t\treturn select( blockEditorStore ).getBlockSelectionStart();\n\t}, [] );\n\n\t// Sets the right context for the command palette\n\tlet commandContext = 'site-editor';\n\tif ( canvas === 'edit' ) {\n\t\tcommandContext = 'entity-edit';\n\t}\n\tif ( hasBlockSelected ) {\n\t\tcommandContext = 'block-selection-edit';\n\t}\n\tuseCommandContext( commandContext );\n}\n", "/**\n * WordPress dependencies\n */\nimport { useRegistry, useDispatch } from '@wordpress/data';\nimport { useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as siteEditorStore } from '../../store';\nimport { homeRoute } from './home';\nimport { stylesRoute } from './styles';\nimport { navigationRoute } from './navigation';\nimport { navigationItemRoute } from './navigation-item';\nimport { patternsRoute } from './patterns';\nimport { patternItemRoute } from './pattern-item';\nimport { templatePartItemRoute } from './template-part-item';\nimport { templatesRoute } from './templates';\nimport { templateItemRoute } from './template-item';\nimport { pagesRoute } from './pages';\nimport { pageItemRoute } from './page-item';\nimport { stylebookRoute } from './stylebook';\nimport { notFoundRoute } from './notfound';\n\nconst routes = [\n\tpageItemRoute,\n\tpagesRoute,\n\ttemplateItemRoute,\n\ttemplatesRoute,\n\ttemplatePartItemRoute,\n\tpatternItemRoute,\n\tpatternsRoute,\n\tnavigationItemRoute,\n\tnavigationRoute,\n\tstylesRoute,\n\thomeRoute,\n\tstylebookRoute,\n\tnotFoundRoute,\n];\n\nexport function useRegisterSiteEditorRoutes() {\n\tconst registry = useRegistry();\n\tconst { registerRoute } = unlock( useDispatch( siteEditorStore ) );\n\tuseEffect( () => {\n\t\tregistry.batch( () => {\n\t\t\troutes.forEach( registerRoute );\n\t\t} );\n\t}, [ registry, registerRoute ] );\n}\n", "/**\n * WordPress dependencies\n */\nimport { __experimentalItemGroup as ItemGroup } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { layout, symbol, navigation, styles, page } from '@wordpress/icons';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport SidebarNavigationScreen from '../sidebar-navigation-screen';\nimport SidebarNavigationItem from '../sidebar-navigation-item';\nimport { SidebarNavigationItemGlobalStyles } from '../sidebar-navigation-screen-global-styles';\n\nexport function MainSidebarNavigationContent( { isBlockBasedTheme = true } ) {\n\treturn (\n\t\t<ItemGroup className=\"edit-site-sidebar-navigation-screen-main\">\n\t\t\t{ isBlockBasedTheme && (\n\t\t\t\t<>\n\t\t\t\t\t<SidebarNavigationItemGlobalStyles\n\t\t\t\t\t\tto=\"/styles\"\n\t\t\t\t\t\tuid=\"global-styles-navigation-item\"\n\t\t\t\t\t\ticon={ styles }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Styles' ) }\n\t\t\t\t\t</SidebarNavigationItemGlobalStyles>\n\t\t\t\t\t<SidebarNavigationItem\n\t\t\t\t\t\tuid=\"navigation-navigation-item\"\n\t\t\t\t\t\tto=\"/navigation\"\n\t\t\t\t\t\twithChevron\n\t\t\t\t\t\ticon={ navigation }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Navigation' ) }\n\t\t\t\t\t</SidebarNavigationItem>\n\t\t\t\t\t<SidebarNavigationItem\n\t\t\t\t\t\tuid=\"page-navigation-item\"\n\t\t\t\t\t\tto=\"/page\"\n\t\t\t\t\t\twithChevron\n\t\t\t\t\t\ticon={ page }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Pages' ) }\n\t\t\t\t\t</SidebarNavigationItem>\n\t\t\t\t\t<SidebarNavigationItem\n\t\t\t\t\t\tuid=\"template-navigation-item\"\n\t\t\t\t\t\tto=\"/template\"\n\t\t\t\t\t\twithChevron\n\t\t\t\t\t\ticon={ layout }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Templates' ) }\n\t\t\t\t\t</SidebarNavigationItem>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ ! isBlockBasedTheme && (\n\t\t\t\t<SidebarNavigationItem\n\t\t\t\t\tuid=\"stylebook-navigation-item\"\n\t\t\t\t\tto=\"/stylebook\"\n\t\t\t\t\twithChevron\n\t\t\t\t\ticon={ styles }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Styles' ) }\n\t\t\t\t</SidebarNavigationItem>\n\t\t\t) }\n\t\t\t<SidebarNavigationItem\n\t\t\t\tuid=\"patterns-navigation-item\"\n\t\t\t\tto=\"/pattern\"\n\t\t\t\twithChevron\n\t\t\t\ticon={ symbol }\n\t\t\t>\n\t\t\t\t{ __( 'Patterns' ) }\n\t\t\t</SidebarNavigationItem>\n\t\t</ItemGroup>\n\t);\n}\n\nexport default function SidebarNavigationScreenMain( { customDescription } ) {\n\tconst isBlockBasedTheme = useSelect(\n\t\t( select ) => select( coreStore ).getCurrentTheme()?.is_block_theme,\n\t\t[]\n\t);\n\n\tlet description;\n\tif ( customDescription ) {\n\t\tdescription = customDescription;\n\t} else if ( isBlockBasedTheme ) {\n\t\tdescription = __(\n\t\t\t'Customize the appearance of your website using the block editor.'\n\t\t);\n\t} else {\n\t\tdescription = __(\n\t\t\t'Explore block styles and patterns to refine your site.'\n\t\t);\n\t}\n\n\treturn (\n\t\t<SidebarNavigationScreen\n\t\t\tisRoot\n\t\t\ttitle={ __( 'Design' ) }\n\t\t\tdescription={ description }\n\t\t\tcontent={\n\t\t\t\t<MainSidebarNavigationContent\n\t\t\t\t\tisBlockBasedTheme={ isBlockBasedTheme }\n\t\t\t\t/>\n\t\t\t}\n\t\t/>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalHeading as Heading,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { isRTL, __, sprintf } from '@wordpress/i18n';\nimport { chevronRight, chevronLeft } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport SidebarButton from '../sidebar-button';\nimport {\n\tisPreviewingTheme,\n\tcurrentlyPreviewingTheme,\n} from '../../utils/is-previewing-theme';\nimport { SidebarNavigationContext } from '../sidebar';\n\nconst { useHistory, useLocation } = unlock( routerPrivateApis );\n\nexport default function SidebarNavigationScreen( {\n\tisRoot,\n\ttitle,\n\tactions,\n\tcontent,\n\tfooter,\n\tdescription,\n\tbackPath: backPathProp,\n} ) {\n\tconst { dashboardLink, dashboardLinkText, previewingThemeName } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings } = unlock( select( editSiteStore ) );\n\t\t\tconst currentlyPreviewingThemeId = currentlyPreviewingTheme();\n\t\t\treturn {\n\t\t\t\tdashboardLink: getSettings().__experimentalDashboardLink,\n\t\t\t\tdashboardLinkText:\n\t\t\t\t\tgetSettings().__experimentalDashboardLinkText,\n\t\t\t\t// Do not call `getTheme` with null, it will cause a request to\n\t\t\t\t// the server.\n\t\t\t\tpreviewingThemeName: currentlyPreviewingThemeId\n\t\t\t\t\t? select( coreStore ).getTheme( currentlyPreviewingThemeId )\n\t\t\t\t\t\t\t?.name?.rendered\n\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst location = useLocation();\n\tconst history = useHistory();\n\tconst { navigate } = useContext( SidebarNavigationContext );\n\tconst backPath = backPathProp ?? location.state?.backPath;\n\tconst icon = isRTL() ? chevronRight : chevronLeft;\n\n\treturn (\n\t\t<>\n\t\t\t<VStack\n\t\t\t\tclassName={ clsx( 'edit-site-sidebar-navigation-screen__main', {\n\t\t\t\t\t'has-footer': !! footer,\n\t\t\t\t} ) }\n\t\t\t\tspacing={ 0 }\n\t\t\t\tjustify=\"flex-start\"\n\t\t\t>\n\t\t\t\t<HStack\n\t\t\t\t\tspacing={ 3 }\n\t\t\t\t\talignment=\"flex-start\"\n\t\t\t\t\tclassName=\"edit-site-sidebar-navigation-screen__title-icon\"\n\t\t\t\t>\n\t\t\t\t\t{ ! isRoot && (\n\t\t\t\t\t\t<SidebarButton\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\thistory.navigate( backPath );\n\t\t\t\t\t\t\t\tnavigate( 'back' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\tlabel={ __( 'Back' ) }\n\t\t\t\t\t\t\tshowTooltip={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isRoot && (\n\t\t\t\t\t\t<SidebarButton\n\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\tdashboardLinkText || __( 'Go to the Dashboard' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thref={ dashboardLink }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<Heading\n\t\t\t\t\t\tclassName=\"edit-site-sidebar-navigation-screen__title\"\n\t\t\t\t\t\tcolor={ '#e0e0e0' /* $gray-200 */ }\n\t\t\t\t\t\tlevel={ 1 }\n\t\t\t\t\t\tsize={ 20 }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ! isPreviewingTheme()\n\t\t\t\t\t\t\t? title\n\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: 1: theme name. 2: title */\n\t\t\t\t\t\t\t\t\t__( 'Previewing %1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\tpreviewingThemeName,\n\t\t\t\t\t\t\t\t\ttitle\n\t\t\t\t\t\t\t  ) }\n\t\t\t\t\t</Heading>\n\t\t\t\t\t{ actions && (\n\t\t\t\t\t\t<div className=\"edit-site-sidebar-navigation-screen__actions\">\n\t\t\t\t\t\t\t{ actions }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</HStack>\n\t\t\t\t<div className=\"edit-site-sidebar-navigation-screen__content\">\n\t\t\t\t\t{ description && (\n\t\t\t\t\t\t<div className=\"edit-site-sidebar-navigation-screen__description\">\n\t\t\t\t\t\t\t{ description }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t\t{ content }\n\t\t\t\t</div>\n\t\t\t</VStack>\n\t\t\t{ footer && (\n\t\t\t\t<footer className=\"edit-site-sidebar-navigation-screen__footer\">\n\t\t\t\t\t{ footer }\n\t\t\t\t</footer>\n\t\t\t) }\n\t\t</>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\n\nexport default function SidebarButton( props ) {\n\treturn (\n\t\t<Button\n\t\t\tsize=\"compact\"\n\t\t\t{ ...props }\n\t\t\tclassName={ clsx( 'edit-site-sidebar-button', props.className ) }\n\t\t/>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\tFlexBlock,\n} from '@wordpress/components';\nimport { isRTL } from '@wordpress/i18n';\nimport { chevronRightSmall, chevronLeftSmall, Icon } from '@wordpress/icons';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { SidebarNavigationContext } from '../sidebar';\n\nconst { useHistory, useLink } = unlock( routerPrivateApis );\n\nexport default function SidebarNavigationItem( {\n\tclassName,\n\ticon,\n\twithChevron = false,\n\tsuffix,\n\tuid,\n\tto,\n\tonClick,\n\tchildren,\n\t...props\n} ) {\n\tconst history = useHistory();\n\tconst { navigate } = useContext( SidebarNavigationContext );\n\t// If there is no custom click handler, create one that navigates to `params`.\n\tfunction handleClick( e ) {\n\t\tif ( onClick ) {\n\t\t\tonClick( e );\n\t\t\tnavigate( 'forward' );\n\t\t} else if ( to ) {\n\t\t\te.preventDefault();\n\t\t\thistory.navigate( to );\n\t\t\tnavigate( 'forward', `[id=\"${ uid }\"]` );\n\t\t}\n\t}\n\tconst linkProps = useLink( to );\n\n\treturn (\n\t\t<Item\n\t\t\tclassName={ clsx(\n\t\t\t\t'edit-site-sidebar-navigation-item',\n\t\t\t\t{ 'with-suffix': ! withChevron && suffix },\n\t\t\t\tclassName\n\t\t\t) }\n\t\t\tid={ uid }\n\t\t\tonClick={ handleClick }\n\t\t\thref={ to ? linkProps.href : undefined }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t<HStack justify=\"flex-start\">\n\t\t\t\t{ icon && (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tstyle={ { fill: 'currentcolor' } }\n\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\tsize={ 24 }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<FlexBlock>{ children }</FlexBlock>\n\t\t\t\t{ withChevron && (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={ isRTL() ? chevronLeftSmall : chevronRightSmall }\n\t\t\t\t\t\tclassName=\"edit-site-sidebar-navigation-item__drilldown-indicator\"\n\t\t\t\t\t\tsize={ 24 }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ ! withChevron && suffix }\n\t\t\t</HStack>\n\t\t</Item>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useDispatch } from '@wordpress/data';\nimport { useCallback } from '@wordpress/element';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { store as editorStore } from '@wordpress/editor';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport SidebarNavigationScreen from '../sidebar-navigation-screen';\nimport { unlock } from '../../lock-unlock';\nimport { store as editSiteStore } from '../../store';\nimport SidebarNavigationItem from '../sidebar-navigation-item';\nimport { useGlobalStylesRevisions } from '@wordpress/global-styles-ui';\nimport SidebarNavigationScreenDetailsFooter from '../sidebar-navigation-screen-details-footer';\nimport { MainSidebarNavigationContent } from '../sidebar-navigation-screen-main';\n\nconst { useLocation, useHistory } = unlock( routerPrivateApis );\n\nexport function SidebarNavigationItemGlobalStyles( props ) {\n\tconst { name } = useLocation();\n\treturn (\n\t\t<SidebarNavigationItem\n\t\t\t{ ...props }\n\t\t\taria-current={ name === 'styles' }\n\t\t/>\n\t);\n}\n\nexport default function SidebarNavigationScreenGlobalStyles() {\n\tconst history = useHistory();\n\tconst { path } = useLocation();\n\tconst {\n\t\trevisions,\n\t\tisLoading: isLoadingRevisions,\n\t\trevisionsCount,\n\t} = useGlobalStylesRevisions();\n\tconst { openGeneralSidebar } = useDispatch( editSiteStore );\n\tconst { setStylesPath } = unlock( useDispatch( editorStore ) );\n\tconst { set: setPreference } = useDispatch( preferencesStore );\n\n\tconst openGlobalStyles = useCallback( async () => {\n\t\thistory.navigate( addQueryArgs( path, { canvas: 'edit' } ), {\n\t\t\ttransition: 'canvas-mode-edit-transition',\n\t\t} );\n\t\treturn Promise.all( [\n\t\t\tsetPreference( 'core', 'distractionFree', false ),\n\t\t\topenGeneralSidebar( 'edit-site/global-styles' ),\n\t\t] );\n\t}, [ path, history, openGeneralSidebar, setPreference ] );\n\n\tconst openRevisions = useCallback( async () => {\n\t\tawait openGlobalStyles();\n\t\t// Open the global styles revisions once the canvas mode is set to edit,\n\t\t// and the global styles sidebar is open. Set the path to revisions.\n\t\tsetStylesPath( '/revisions' );\n\t}, [ openGlobalStyles, setStylesPath ] );\n\n\t// If there are no revisions, do not render a footer.\n\tconst shouldShowGlobalStylesFooter =\n\t\t!! revisionsCount && ! isLoadingRevisions;\n\n\treturn (\n\t\t<>\n\t\t\t<SidebarNavigationScreen\n\t\t\t\ttitle={ __( 'Design' ) }\n\t\t\t\tisRoot\n\t\t\t\tdescription={ __(\n\t\t\t\t\t'Customize the appearance of your website using the block editor.'\n\t\t\t\t) }\n\t\t\t\tcontent={\n\t\t\t\t\t<MainSidebarNavigationContent activeItem=\"styles-navigation-item\" />\n\t\t\t\t}\n\t\t\t\tfooter={\n\t\t\t\t\tshouldShowGlobalStylesFooter && (\n\t\t\t\t\t\t<SidebarNavigationScreenDetailsFooter\n\t\t\t\t\t\t\trecord={ revisions?.[ 0 ] }\n\t\t\t\t\t\t\trevisionsCount={ revisionsCount }\n\t\t\t\t\t\t\tonClick={ openRevisions }\n\t\t\t\t\t\t/>\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t/>\n\t\t</>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { Navigator, useNavigator } from '@wordpress/components';\n// @ts-expect-error: Not typed yet.\nimport { getBlockTypes, store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\n// @ts-expect-error: Not typed yet.\nimport { BlockEditorProvider } from '@wordpress/block-editor';\nimport { useMemo, useEffect, Fragment } from '@wordpress/element';\nimport { usePrevious } from '@wordpress/compose';\nimport {\n\tgenerateGlobalStyles,\n\tmergeGlobalStyles,\n} from '@wordpress/global-styles-engine';\nimport type {\n\tGlobalStylesConfig,\n\tBlockType,\n} from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { GlobalStylesProvider } from './provider';\nimport ScreenRoot from './screen-root';\nimport ScreenBlockList from './screen-block-list';\nimport ScreenBlock from './screen-block';\nimport ScreenTypography from './screen-typography';\nimport ScreenTypographyElement from './screen-typography-element';\nimport ScreenColors from './screen-colors';\nimport ScreenColorPalette from './screen-color-palette';\nimport ScreenBackground from './screen-background';\nimport { ScreenShadows, ScreenShadowsEdit } from './screen-shadows';\nimport ScreenLayout from './screen-layout';\nimport ScreenStyleVariations from './screen-style-variations';\nimport ScreenCSS from './screen-css';\nimport ScreenRevisions from './screen-revisions';\nimport FontSizes from './font-sizes/font-sizes';\nimport FontSize from './font-sizes/font-size';\ninterface BlockStylesNavigationScreensProps {\n\tparentMenu: string;\n\tblockStyles: any[];\n\tblockName: string;\n}\n\nfunction BlockStylesNavigationScreens( {\n\tparentMenu,\n\tblockStyles,\n\tblockName,\n}: BlockStylesNavigationScreensProps ) {\n\treturn (\n\t\t<>\n\t\t\t{ blockStyles.map( ( style, index ) => (\n\t\t\t\t<Navigator.Screen\n\t\t\t\t\tkey={ index }\n\t\t\t\t\tpath={ parentMenu + '/variations/' + style.name }\n\t\t\t\t>\n\t\t\t\t\t<ScreenBlock name={ blockName } variation={ style.name } />\n\t\t\t\t</Navigator.Screen>\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n\ninterface ContextScreensProps {\n\tname?: string;\n\tparentMenu?: string;\n}\n\ninterface GlobalStylesNavigationScreenProps {\n\tpath: string;\n\tchildren: React.ReactNode;\n}\n\nfunction ContextScreens( { name, parentMenu = '' }: ContextScreensProps ) {\n\tconst blockStyleVariations = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! name ) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tconst { getBlockStyles } = select( blocksStore );\n\t\t\treturn getBlockStyles( name );\n\t\t},\n\t\t[ name ]\n\t);\n\n\tif ( ! blockStyleVariations?.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockStylesNavigationScreens\n\t\t\tparentMenu={ parentMenu }\n\t\t\tblockStyles={ blockStyleVariations }\n\t\t\tblockName={ name || '' }\n\t\t/>\n\t);\n}\n\ninterface GlobalStylesUIProps {\n\t/** User global styles object (what gets edited) */\n\tvalue: GlobalStylesConfig;\n\t/** Base global styles object (theme default) */\n\tbaseValue: GlobalStylesConfig;\n\t/** Callback when global styles change */\n\tonChange: ( newValue: GlobalStylesConfig ) => void;\n\t/** Current navigation path (optional) */\n\tpath?: string;\n\t/** Callback when navigation path changes (optional) */\n\tonPathChange?: ( path: string ) => void;\n\t/** Whether font library is enabled (optional) */\n\tfontLibraryEnabled?: boolean;\n\t/** Server CSS styles for BlockEditorProvider (optional) */\n\tserverCSS?: { isGlobalStyles?: boolean }[];\n\t/** Server settings for BlockEditorProvider (optional) */\n\tserverSettings?: { __unstableResolvedAssets: Record< string, unknown > };\n}\n\nexport function GlobalStylesUI( {\n\tvalue,\n\tbaseValue,\n\tonChange,\n\tpath,\n\tonPathChange,\n\tfontLibraryEnabled = false,\n\tserverCSS,\n\tserverSettings,\n}: GlobalStylesUIProps ) {\n\tconst blocks = getBlockTypes();\n\n\t// Compute merged value for CSS generation\n\tconst mergedValue = useMemo( () => {\n\t\treturn mergeGlobalStyles( baseValue, value );\n\t}, [ baseValue, value ] );\n\n\tconst [ globalStylesCSS, globalSettings ] = generateGlobalStyles(\n\t\tmergedValue,\n\t\t[],\n\t\t{\n\t\t\tstyleOptions: { variationStyles: true },\n\t\t}\n\t);\n\tconst styles = useMemo(\n\t\t() => [ ...( serverCSS ?? [] ), ...( globalStylesCSS ?? [] ) ],\n\t\t[ serverCSS, globalStylesCSS ]\n\t);\n\n\tconst settings = useMemo( () => {\n\t\treturn {\n\t\t\t...serverSettings,\n\t\t\t__experimentalFeatures: globalSettings,\n\t\t\tstyles,\n\t\t};\n\t}, [ globalSettings, serverSettings, styles ] );\n\n\treturn (\n\t\t<GlobalStylesProvider\n\t\t\tvalue={ value }\n\t\t\tbaseValue={ baseValue }\n\t\t\tonChange={ onChange }\n\t\t\tfontLibraryEnabled={ fontLibraryEnabled }\n\t\t>\n\t\t\t<BlockEditorProvider settings={ settings }>\n\t\t\t\t<Navigator\n\t\t\t\t\tclassName=\"global-styles-ui-sidebar__navigator-provider\"\n\t\t\t\t\tinitialPath={ path || '/' }\n\t\t\t\t>\n\t\t\t\t\t{ ( path || onPathChange ) && (\n\t\t\t\t\t\t<PathSynchronizer\n\t\t\t\t\t\t\tpath={ path }\n\t\t\t\t\t\t\tonPathChange={ onPathChange }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/\">\n\t\t\t\t\t\t<ScreenRoot />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/colors\">\n\t\t\t\t\t\t<ScreenColors />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/typography\">\n\t\t\t\t\t\t<ScreenTypography />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/typography/font-sizes\">\n\t\t\t\t\t\t<FontSizes />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/typography/font-sizes/:origin/:slug\">\n\t\t\t\t\t\t<FontSize />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/layout\">\n\t\t\t\t\t\t<ScreenLayout />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/colors/palette\">\n\t\t\t\t\t\t<ScreenColorPalette />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/variations\">\n\t\t\t\t\t\t<ScreenStyleVariations />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/css\">\n\t\t\t\t\t\t<ScreenCSS />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/revisions/:revisionId?\">\n\t\t\t\t\t\t<ScreenRevisions />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/shadows\">\n\t\t\t\t\t\t<ScreenShadows />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/shadows/edit/:category/:slug\">\n\t\t\t\t\t\t<ScreenShadowsEdit />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/background\">\n\t\t\t\t\t\t<ScreenBackground />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/typography/text\">\n\t\t\t\t\t\t<ScreenTypographyElement element=\"text\" />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/typography/link\">\n\t\t\t\t\t\t<ScreenTypographyElement element=\"link\" />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/typography/heading\">\n\t\t\t\t\t\t<ScreenTypographyElement element=\"heading\" />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/typography/caption\">\n\t\t\t\t\t\t<ScreenTypographyElement element=\"caption\" />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/typography/button\">\n\t\t\t\t\t\t<ScreenTypographyElement element=\"button\" />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/blocks\">\n\t\t\t\t\t\t<ScreenBlockList />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t{ blocks.map( ( block: BlockType ) => (\n\t\t\t\t\t\t<Fragment key={ block.name }>\n\t\t\t\t\t\t\t<GlobalStylesNavigationScreen\n\t\t\t\t\t\t\t\tpath={\n\t\t\t\t\t\t\t\t\t'/blocks/' +\n\t\t\t\t\t\t\t\t\tencodeURIComponent( block.name )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ScreenBlock name={ block.name } />\n\t\t\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t\t\t<ContextScreens\n\t\t\t\t\t\t\t\tname={ block.name }\n\t\t\t\t\t\t\t\tparentMenu={\n\t\t\t\t\t\t\t\t\t'/blocks/' +\n\t\t\t\t\t\t\t\t\tencodeURIComponent( block.name )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t) ) }\n\t\t\t\t</Navigator>\n\t\t\t</BlockEditorProvider>\n\t\t</GlobalStylesProvider>\n\t);\n}\n\nfunction GlobalStylesNavigationScreen( {\n\tpath,\n\tchildren,\n}: GlobalStylesNavigationScreenProps ) {\n\treturn (\n\t\t<Navigator.Screen\n\t\t\tclassName=\"global-styles-ui-sidebar__navigator-screen\"\n\t\t\tpath={ path }\n\t\t>\n\t\t\t{ children }\n\t\t</Navigator.Screen>\n\t);\n}\n\n/*\n * Component that handles path synchronization between external path prop and Navigator's internal path.\n */\nfunction PathSynchronizer( {\n\tpath,\n\tonPathChange,\n}: {\n\tpath?: string;\n\tonPathChange?: ( path: string ) => void;\n} ) {\n\tconst navigator = useNavigator();\n\tconst { path: childPath } = navigator.location;\n\tconst previousParentPath = usePrevious( path );\n\tconst previousChildPath = usePrevious( childPath );\n\n\tuseEffect( () => {\n\t\t// Only sync when parent and child paths are out of sync\n\t\tif ( path && path !== childPath ) {\n\t\t\t// If parent path changed, update the Navigator\n\t\t\tif ( path !== previousParentPath ) {\n\t\t\t\tnavigator.goTo( path );\n\t\t\t}\n\t\t\t// If child path changed, notify parent via onPathChange\n\t\t\telse if ( childPath !== previousChildPath && onPathChange ) {\n\t\t\t\tonPathChange( childPath ?? '/' );\n\t\t\t}\n\t\t}\n\t}, [\n\t\tonPathChange,\n\t\tpath,\n\t\tpreviousChildPath,\n\t\tpreviousParentPath,\n\t\tchildPath,\n\t\tnavigator,\n\t] );\n\n\t// This component only handles synchronization logic. It doesn't render anything.\n\t// We use it to run the effect inside the Navigator context.\n\treturn null;\n}\n", "/**\n * Immutably sets a value inside an object. Like `lodash#set`, but returning a\n * new object. Treats nullish initial values as empty objects. Clones any\n * nested objects. Supports arrays, too.\n *\n * @param object Object to set a value in.\n * @param path   Path in the object to modify.\n * @param value  New value to set.\n * @return Cloned object with the new value set.\n */\nexport function setImmutably(\n\tobject: Object,\n\tpath: string | number | ( string | number )[],\n\tvalue: any\n) {\n\t// Normalize path\n\tpath = Array.isArray( path ) ? [ ...path ] : [ path ];\n\n\t// Shallowly clone the base of the object\n\tobject = Array.isArray( object ) ? [ ...object ] : { ...object };\n\n\tconst leaf = path.pop();\n\n\t// Traverse object from root to leaf, shallowly cloning at each level\n\tlet prev = object;\n\tfor ( const key of path ) {\n\t\t// @ts-expect-error\n\t\tconst lvl = prev[ key ];\n\t\t// @ts-expect-error\n\t\tprev = prev[ key ] = Array.isArray( lvl ) ? [ ...lvl ] : { ...lvl };\n\t}\n\t// @ts-expect-error\n\tprev[ leaf ] = value;\n\n\treturn object;\n}\n\n/**\n * Helper util to return a value from a certain path of the object.\n *\n * Path is specified as either:\n * - a string of properties, separated by dots, for example: \"x.y\".\n * - an array of properties, for example `[ 'x', 'y' ]`.\n *\n * You can also specify a default value in case the result is nullish.\n *\n * @param object       Input object.\n * @param path         Path to the object property.\n * @param defaultValue Default value if the value at the specified path is nullish.\n * @return Value of the object property at the specified path.\n */\nexport const getValueFromObjectPath = (\n\tobject: Object,\n\tpath: string | string[],\n\tdefaultValue?: any\n) => {\n\tconst arrayPath = Array.isArray( path ) ? path : path.split( '.' );\n\tlet value = object;\n\tarrayPath.forEach( ( fieldName ) => {\n\t\t// @ts-expect-error\n\t\tvalue = value?.[ fieldName ];\n\t} );\n\treturn value ?? defaultValue;\n};\n", "/**\n * Internal dependencies\n */\nimport { getValueFromObjectPath, setImmutably } from '../utils/object';\nimport type { GlobalStylesConfig } from '../types';\n\nconst VALID_SETTINGS = [\n\t'appearanceTools',\n\t'useRootPaddingAwareAlignments',\n\t'background.backgroundImage',\n\t'background.backgroundRepeat',\n\t'background.backgroundSize',\n\t'background.backgroundPosition',\n\t'border.color',\n\t'border.radius',\n\t'border.radiusSizes',\n\t'border.style',\n\t'border.width',\n\t'shadow.presets',\n\t'shadow.defaultPresets',\n\t'color.background',\n\t'color.button',\n\t'color.caption',\n\t'color.custom',\n\t'color.customDuotone',\n\t'color.customGradient',\n\t'color.defaultDuotone',\n\t'color.defaultGradients',\n\t'color.defaultPalette',\n\t'color.duotone',\n\t'color.gradients',\n\t'color.heading',\n\t'color.link',\n\t'color.palette',\n\t'color.text',\n\t'custom',\n\t'dimensions.aspectRatio',\n\t'dimensions.height',\n\t'dimensions.minHeight',\n\t'dimensions.width',\n\t'dimensions.dimensionSizes',\n\t'layout.contentSize',\n\t'layout.definitions',\n\t'layout.wideSize',\n\t'lightbox.enabled',\n\t'lightbox.allowEditing',\n\t'position.fixed',\n\t'position.sticky',\n\t'spacing.customSpacingSize',\n\t'spacing.defaultSpacingSizes',\n\t'spacing.spacingSizes',\n\t'spacing.spacingScale',\n\t'spacing.blockGap',\n\t'spacing.margin',\n\t'spacing.padding',\n\t'spacing.units',\n\t'typography.fluid',\n\t'typography.customFontSize',\n\t'typography.defaultFontSizes',\n\t'typography.dropCap',\n\t'typography.fontFamilies',\n\t'typography.fontSizes',\n\t'typography.fontStyle',\n\t'typography.fontWeight',\n\t'typography.letterSpacing',\n\t'typography.lineHeight',\n\t'typography.textAlign',\n\t'typography.textColumns',\n\t'typography.textDecoration',\n\t'typography.textTransform',\n\t'typography.writingMode',\n];\n\nexport function getSetting< T = any >(\n\tglobalStyles: GlobalStylesConfig,\n\tpath: string,\n\tblockName?: string\n): T {\n\tconst appendedBlockPath = blockName ? '.blocks.' + blockName : '';\n\tconst appendedPropertyPath = path ? '.' + path : '';\n\tconst contextualPath = `settings${ appendedBlockPath }${ appendedPropertyPath }`;\n\tconst globalPath = `settings${ appendedPropertyPath }`;\n\n\tif ( path ) {\n\t\treturn ( getValueFromObjectPath( globalStyles, contextualPath ) ??\n\t\t\tgetValueFromObjectPath( globalStyles, globalPath ) ) as T;\n\t}\n\n\tlet result = {};\n\tVALID_SETTINGS.forEach( ( setting ) => {\n\t\tconst value =\n\t\t\tgetValueFromObjectPath(\n\t\t\t\tglobalStyles,\n\t\t\t\t`settings${ appendedBlockPath }.${ setting }`\n\t\t\t) ??\n\t\t\tgetValueFromObjectPath( globalStyles, `settings.${ setting }` );\n\t\tif ( value !== undefined ) {\n\t\t\tresult = setImmutably( result, setting.split( '.' ), value );\n\t\t}\n\t} );\n\treturn result as T;\n}\n", "/**\n * Internal dependencies\n */\nimport { setImmutably } from '../utils/object';\nimport type { GlobalStylesConfig } from '../types';\n\nexport function setSetting< T = any >(\n\tglobalStyles: GlobalStylesConfig,\n\tpath: string,\n\tnewValue: T | undefined,\n\tblockName?: string\n): GlobalStylesConfig {\n\tconst appendedBlockPath = blockName ? '.blocks.' + blockName : '';\n\tconst appendedPropertyPath = path ? '.' + path : '';\n\tconst finalPath = `settings${ appendedBlockPath }${ appendedPropertyPath }`;\n\n\treturn setImmutably(\n\t\tglobalStyles,\n\t\tfinalPath.split( '.' ),\n\t\tnewValue\n\t) as GlobalStylesConfig;\n}\n", "/**\n * WordPress dependencies\n */\nimport { getCSSValueFromRawStyle } from '@wordpress/style-engine';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tGlobalStylesSettings,\n\tThemeFileLink,\n\tTypographyPreset,\n\tUnresolvedValue,\n\tGlobalStylesConfig,\n} from '../types';\nimport { getTypographyFontSizeValue } from './typography';\nimport { getValueFromObjectPath } from './object';\n\nexport const ROOT_BLOCK_SELECTOR = 'body';\nexport const ROOT_CSS_PROPERTIES_SELECTOR = ':root';\n\nexport const PRESET_METADATA = [\n\t{\n\t\tpath: [ 'color', 'palette' ],\n\t\tvalueKey: 'color',\n\t\tcssVarInfix: 'color',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'color', propertyName: 'color' },\n\t\t\t{\n\t\t\t\tclassSuffix: 'background-color',\n\t\t\t\tpropertyName: 'background-color',\n\t\t\t},\n\t\t\t{\n\t\t\t\tclassSuffix: 'border-color',\n\t\t\t\tpropertyName: 'border-color',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'color', 'gradients' ],\n\t\tvalueKey: 'gradient',\n\t\tcssVarInfix: 'gradient',\n\t\tclasses: [\n\t\t\t{\n\t\t\t\tclassSuffix: 'gradient-background',\n\t\t\t\tpropertyName: 'background',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'color', 'duotone' ],\n\t\tvalueKey: 'colors',\n\t\tcssVarInfix: 'duotone',\n\t\tvalueFunc: ( { slug }: { slug: string } ) =>\n\t\t\t`url( '#wp-duotone-${ slug }' )`,\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'shadow', 'presets' ],\n\t\tvalueKey: 'shadow',\n\t\tcssVarInfix: 'shadow',\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontSizes' ],\n\t\tvalueFunc: (\n\t\t\tpreset: TypographyPreset,\n\t\t\tsettings: GlobalStylesSettings\n\t\t) => getTypographyFontSizeValue( preset, settings ),\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'font-size',\n\t\tclasses: [ { classSuffix: 'font-size', propertyName: 'font-size' } ],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontFamilies' ],\n\t\tvalueKey: 'fontFamily',\n\t\tcssVarInfix: 'font-family',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'font-family', propertyName: 'font-family' },\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'spacing', 'spacingSizes' ],\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'spacing',\n\t\tvalueFunc: ( { size }: { size: string } ) => size,\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'border', 'radiusSizes' ],\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'border-radius',\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'dimensions', 'dimensionSizes' ],\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'dimension',\n\t\tclasses: [],\n\t},\n];\n\nexport const STYLE_PATH_TO_CSS_VAR_INFIX: Record< string, string > = {\n\t'color.background': 'color',\n\t'color.text': 'color',\n\t'filter.duotone': 'duotone',\n\t'elements.link.color.text': 'color',\n\t'elements.link.:hover.color.text': 'color',\n\t'elements.link.typography.fontFamily': 'font-family',\n\t'elements.link.typography.fontSize': 'font-size',\n\t'elements.button.color.text': 'color',\n\t'elements.button.color.background': 'color',\n\t'elements.caption.color.text': 'color',\n\t'elements.button.typography.fontFamily': 'font-family',\n\t'elements.button.typography.fontSize': 'font-size',\n\t'elements.heading.color': 'color',\n\t'elements.heading.color.background': 'color',\n\t'elements.heading.typography.fontFamily': 'font-family',\n\t'elements.heading.gradient': 'gradient',\n\t'elements.heading.color.gradient': 'gradient',\n\t'elements.h1.color': 'color',\n\t'elements.h1.color.background': 'color',\n\t'elements.h1.typography.fontFamily': 'font-family',\n\t'elements.h1.color.gradient': 'gradient',\n\t'elements.h2.color': 'color',\n\t'elements.h2.color.background': 'color',\n\t'elements.h2.typography.fontFamily': 'font-family',\n\t'elements.h2.color.gradient': 'gradient',\n\t'elements.h3.color': 'color',\n\t'elements.h3.color.background': 'color',\n\t'elements.h3.typography.fontFamily': 'font-family',\n\t'elements.h3.color.gradient': 'gradient',\n\t'elements.h4.color': 'color',\n\t'elements.h4.color.background': 'color',\n\t'elements.h4.typography.fontFamily': 'font-family',\n\t'elements.h4.color.gradient': 'gradient',\n\t'elements.h5.color': 'color',\n\t'elements.h5.color.background': 'color',\n\t'elements.h5.typography.fontFamily': 'font-family',\n\t'elements.h5.color.gradient': 'gradient',\n\t'elements.h6.color': 'color',\n\t'elements.h6.color.background': 'color',\n\t'elements.h6.typography.fontFamily': 'font-family',\n\t'elements.h6.color.gradient': 'gradient',\n\t'color.gradient': 'gradient',\n\tshadow: 'shadow',\n\t'typography.fontSize': 'font-size',\n\t'typography.fontFamily': 'font-family',\n};\n\n/**\n * Function that scopes a selector with another one. This works a bit like\n * SCSS nesting except the `&` operator isn't supported.\n *\n * @example\n * ```js\n * const scope = '.a, .b .c';\n * const selector = '> .x, .y';\n * const merged = scopeSelector( scope, selector );\n * // merged is '.a > .x, .a .y, .b .c > .x, .b .c .y'\n * ```\n *\n * @param scope    Selector to scope to.\n * @param selector Original selector.\n *\n * @return Scoped selector.\n */\nexport function scopeSelector( scope: string | undefined, selector: string ) {\n\tif ( ! scope || ! selector ) {\n\t\treturn selector;\n\t}\n\n\tconst scopes = scope.split( ',' );\n\tconst selectors = selector.split( ',' );\n\n\tconst selectorsScoped: string[] = [];\n\tscopes.forEach( ( outer ) => {\n\t\tselectors.forEach( ( inner ) => {\n\t\t\tselectorsScoped.push( `${ outer.trim() } ${ inner.trim() }` );\n\t\t} );\n\t} );\n\n\treturn selectorsScoped.join( ', ' );\n}\n\n/**\n * Scopes a collection of selectors for features and subfeatures.\n *\n * @example\n * ```js\n * const scope = '.custom-scope';\n * const selectors = {\n *     color: '.wp-my-block p',\n *     typography: { fontSize: '.wp-my-block caption' },\n * };\n * const result = scopeFeatureSelector( scope, selectors );\n * // result is {\n * //     color: '.custom-scope .wp-my-block p',\n * //     typography: { fonSize: '.custom-scope .wp-my-block caption' },\n * // }\n * ```\n *\n * @param scope     Selector to scope collection of selectors with.\n * @param selectors Collection of feature selectors e.g.\n *\n * @return Scoped collection of feature selectors.\n */\nexport function scopeFeatureSelectors(\n\tscope: string | undefined,\n\tselectors: string | Record< string, string | Record< string, string > >\n) {\n\tif ( ! scope || ! selectors ) {\n\t\treturn;\n\t}\n\n\tconst featureSelectors: Record<\n\t\tstring,\n\t\tstring | Record< string, string >\n\t> = {};\n\n\tObject.entries( selectors ).forEach( ( [ feature, selector ] ) => {\n\t\tif ( typeof selector === 'string' ) {\n\t\t\tfeatureSelectors[ feature ] = scopeSelector( scope, selector );\n\t\t}\n\n\t\tif ( typeof selector === 'object' ) {\n\t\t\tfeatureSelectors[ feature ] = {};\n\n\t\t\tObject.entries( selector ).forEach(\n\t\t\t\t( [ subfeature, subfeatureSelector ] ) => {\n\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\tfeatureSelectors[ feature ][ subfeature ] = scopeSelector(\n\t\t\t\t\t\tscope,\n\t\t\t\t\t\tsubfeatureSelector as string\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t} );\n\n\treturn featureSelectors;\n}\n\n/**\n * Appends a sub-selector to an existing one.\n *\n * Given the compounded `selector` \"h1, h2, h3\"\n * and the `toAppend` selector \".some-class\" the result will be\n * \"h1.some-class, h2.some-class, h3.some-class\".\n *\n * @param selector Original selector.\n * @param toAppend Selector to append.\n *\n * @return The new selector.\n */\nexport function appendToSelector( selector: string, toAppend: string ) {\n\tif ( ! selector.includes( ',' ) ) {\n\t\treturn selector + toAppend;\n\t}\n\tconst selectors = selector.split( ',' );\n\tconst newSelectors = selectors.map( ( sel ) => sel + toAppend );\n\treturn newSelectors.join( ',' );\n}\n\n/**\n * Generates the selector for a block style variation by creating the\n * appropriate CSS class and adding it to the ancestor portion of the block's\n * selector.\n *\n * For example, take the Button block which has a compound selector:\n * `.wp-block-button .wp-block-button__link`. With a variation named 'custom',\n * the class `.is-style-custom` should be added to the `.wp-block-button`\n * ancestor only.\n *\n * This function will take into account comma separated and complex selectors.\n *\n * @param variation     Name for the variation.\n * @param blockSelector CSS selector for the block.\n *\n * @return CSS selector for the block style variation.\n */\nexport function getBlockStyleVariationSelector(\n\tvariation: string,\n\tblockSelector: string\n) {\n\tconst variationClass = `.is-style-${ variation }`;\n\n\tif ( ! blockSelector ) {\n\t\treturn variationClass;\n\t}\n\n\tconst ancestorRegex = /((?::\\([^)]+\\))?\\s*)([^\\s:]+)/;\n\tconst addVariationClass = (\n\t\t_match: string,\n\t\tgroup1: string,\n\t\tgroup2: string\n\t) => {\n\t\treturn group1 + group2 + variationClass;\n\t};\n\n\tconst result = blockSelector\n\t\t.split( ',' )\n\t\t.map( ( part ) => part.replace( ancestorRegex, addVariationClass ) );\n\n\treturn result.join( ',' );\n}\n\n/**\n * Resolves ref values in theme JSON.\n *\n * @param ruleValue A block style value that may contain a reference to a theme.json value.\n * @param tree      A theme.json object.\n * @return The resolved value or incoming ruleValue.\n */\nexport function getResolvedRefValue(\n\truleValue: UnresolvedValue,\n\ttree?: GlobalStylesConfig\n): UnresolvedValue {\n\tif ( ! ruleValue || ! tree ) {\n\t\treturn ruleValue;\n\t}\n\n\t/*\n\t * Where the rule value is an object with a 'ref' property pointing\n\t * to a path, this converts that path into the value at that path.\n\t * For example: { \"ref\": \"style.color.background\" } => \"#fff\".\n\t */\n\tif (\n\t\ttypeof ruleValue === 'object' &&\n\t\t'ref' in ruleValue &&\n\t\truleValue?.ref\n\t) {\n\t\tconst resolvedRuleValue = getCSSValueFromRawStyle(\n\t\t\tgetValueFromObjectPath( tree, ruleValue.ref )\n\t\t) as UnresolvedValue;\n\n\t\t/*\n\t\t * Presence of another ref indicates a reference to another dynamic value.\n\t\t * Pointing to another dynamic value is not supported.\n\t\t */\n\t\tif (\n\t\t\ttypeof resolvedRuleValue === 'object' &&\n\t\t\tresolvedRuleValue !== null &&\n\t\t\t'ref' in resolvedRuleValue &&\n\t\t\tresolvedRuleValue?.ref\n\t\t) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( resolvedRuleValue === undefined ) {\n\t\t\treturn ruleValue;\n\t\t}\n\n\t\treturn resolvedRuleValue;\n\t}\n\treturn ruleValue;\n}\n\n/**\n * Looks up a theme file URI based on a relative path.\n *\n * @param file          A relative path.\n * @param themeFileURIs A collection of absolute theme file URIs and their corresponding file paths.\n * @return A resolved theme file URI, if one is found in the themeFileURIs collection.\n */\nexport function getResolvedThemeFilePath(\n\tfile: string,\n\tthemeFileURIs?: ThemeFileLink[]\n) {\n\tif ( ! file || ! themeFileURIs || ! Array.isArray( themeFileURIs ) ) {\n\t\treturn file;\n\t}\n\n\tconst uri = themeFileURIs.find(\n\t\t( themeFileUri ) => themeFileUri?.name === file\n\t);\n\n\tif ( ! uri?.href ) {\n\t\treturn file;\n\t}\n\n\treturn uri?.href;\n}\n\n/**\n * Resolves ref and relative path values in theme JSON.\n *\n * @param ruleValue A block style value that may contain a reference to a theme.json value.\n * @param tree      A theme.json object.\n * @return The resolved value or incoming ruleValue.\n */\nexport function getResolvedValue(\n\truleValue: UnresolvedValue,\n\ttree: GlobalStylesConfig | undefined\n) {\n\tif ( ! ruleValue || ! tree ) {\n\t\treturn ruleValue;\n\t}\n\n\t// Resolve ref values.\n\tconst resolvedValue = getResolvedRefValue( ruleValue, tree );\n\n\t// Resolve relative paths.\n\tif (\n\t\ttypeof resolvedValue === 'object' &&\n\t\tresolvedValue !== null &&\n\t\t'url' in resolvedValue &&\n\t\tresolvedValue?.url\n\t) {\n\t\tresolvedValue.url = getResolvedThemeFilePath(\n\t\t\tresolvedValue.url,\n\t\t\ttree?._links?.[ 'wp:theme-file' ]\n\t\t);\n\t}\n\n\treturn resolvedValue;\n}\n\nfunction findInPresetsBy(\n\tsettings: GlobalStylesSettings,\n\tblockName?: string,\n\tpresetPath: string[] = [],\n\tpresetProperty: string = 'slug',\n\tpresetValueValue?: string\n) {\n\t// Block presets take priority above root level presets.\n\tconst orderedPresetsByOrigin = [\n\t\tblockName\n\t\t\t? getValueFromObjectPath( settings, [\n\t\t\t\t\t'blocks',\n\t\t\t\t\tblockName,\n\t\t\t\t\t...presetPath,\n\t\t\t  ] )\n\t\t\t: undefined,\n\t\tgetValueFromObjectPath( settings, presetPath ),\n\t].filter( Boolean );\n\n\tfor ( const presetByOrigin of orderedPresetsByOrigin ) {\n\t\tif ( presetByOrigin ) {\n\t\t\t// Preset origins ordered by priority.\n\t\t\tconst origins = [ 'custom', 'theme', 'default' ];\n\t\t\tfor ( const origin of origins ) {\n\t\t\t\t// @ts-expect-error\n\t\t\t\tconst presets = presetByOrigin[ origin ];\n\t\t\t\tif ( presets ) {\n\t\t\t\t\tconst presetObject = presets.find(\n\t\t\t\t\t\t( preset: any ) =>\n\t\t\t\t\t\t\tpreset[ presetProperty ] === presetValueValue\n\t\t\t\t\t);\n\t\t\t\t\tif ( presetObject ) {\n\t\t\t\t\t\tif ( presetProperty === 'slug' ) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If there is a highest priority preset with the same slug but different value the preset we found was overwritten and should be ignored.\n\t\t\t\t\t\tconst highestPresetObjectWithSameSlug = findInPresetsBy(\n\t\t\t\t\t\t\tsettings,\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\tpresetPath,\n\t\t\t\t\t\t\t'slug',\n\t\t\t\t\t\t\tpresetObject.slug\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\thighestPresetObjectWithSameSlug[\n\t\t\t\t\t\t\t\tpresetProperty\n\t\t\t\t\t\t\t] === presetObject[ presetProperty ]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction getValueFromPresetVariable(\n\tfeatures: GlobalStylesConfig,\n\tblockName?: string,\n\tvariable?: string,\n\t[ presetType, slug ]: string[] = []\n) {\n\tconst metadata = PRESET_METADATA.find(\n\t\t( data ) => data.cssVarInfix === presetType\n\t);\n\tif ( ! metadata || ! features.settings ) {\n\t\treturn variable;\n\t}\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures.settings,\n\t\tblockName,\n\t\tmetadata.path,\n\t\t'slug',\n\t\tslug\n\t);\n\n\tif ( presetObject ) {\n\t\tconst { valueKey } = metadata;\n\t\tconst result = presetObject[ valueKey ];\n\t\treturn getValueFromVariable( features, blockName, result );\n\t}\n\n\treturn variable;\n}\n\nfunction getValueFromCustomVariable(\n\tfeatures: GlobalStylesConfig,\n\tblockName?: string,\n\tvariable?: string,\n\tpath: string[] = []\n): string | undefined {\n\tconst result =\n\t\t( blockName\n\t\t\t? getValueFromObjectPath( features?.settings ?? {}, [\n\t\t\t\t\t'blocks',\n\t\t\t\t\tblockName,\n\t\t\t\t\t'custom',\n\t\t\t\t\t...path,\n\t\t\t  ] )\n\t\t\t: undefined ) ??\n\t\tgetValueFromObjectPath( features?.settings ?? {}, [\n\t\t\t'custom',\n\t\t\t...path,\n\t\t] );\n\tif ( ! result ) {\n\t\treturn variable;\n\t}\n\t// A variable may reference another variable so we need recursion until we find the value.\n\treturn getValueFromVariable( features, blockName, result as string );\n}\n\n/**\n * Attempts to fetch the value of a theme.json CSS variable.\n *\n * This function resolves CSS variable references in two formats:\n * - User format: `var:preset|color|red` or `var:custom|spacing|small`\n * - Theme format: `var(--wp--preset--color--red)` or `var(--wp--custom--spacing--small)`\n *\n * It also handles ref-style variables in the format `{ ref: \"path.to.value\" }`.\n *\n * @param features  GlobalStylesContext config (user, base, or merged). Represents the theme.json tree.\n * @param blockName The name of a block as represented in the styles property. E.g., 'root' for root-level, and 'core/block-name' for blocks.\n * @param variable  An incoming style value. A CSS var value is expected, but it could be any value.\n * @return The value of the CSS var, if found. If not found, returns the original variable argument.\n */\nexport function getValueFromVariable(\n\tfeatures: GlobalStylesConfig,\n\tblockName?: string,\n\tvariable?: string | UnresolvedValue\n): any {\n\tif ( ! variable || typeof variable !== 'string' ) {\n\t\tif (\n\t\t\ttypeof variable === 'object' &&\n\t\t\tvariable !== null &&\n\t\t\t'ref' in variable &&\n\t\t\ttypeof variable.ref === 'string'\n\t\t) {\n\t\t\tconst resolvedVariable = getValueFromObjectPath(\n\t\t\t\tfeatures,\n\t\t\t\tvariable.ref\n\t\t\t);\n\t\t\t// Presence of another ref indicates a reference to another dynamic value.\n\t\t\t// Pointing to another dynamic value is not supported.\n\t\t\tif (\n\t\t\t\t! resolvedVariable ||\n\t\t\t\t( typeof resolvedVariable === 'object' &&\n\t\t\t\t\t'ref' in resolvedVariable )\n\t\t\t) {\n\t\t\t\treturn resolvedVariable;\n\t\t\t}\n\t\t\tvariable = resolvedVariable as string;\n\t\t} else {\n\t\t\treturn variable;\n\t\t}\n\t}\n\tconst USER_VALUE_PREFIX = 'var:';\n\tconst THEME_VALUE_PREFIX = 'var(--wp--';\n\tconst THEME_VALUE_SUFFIX = ')';\n\n\tlet parsedVar;\n\n\tif ( variable.startsWith( USER_VALUE_PREFIX ) ) {\n\t\tparsedVar = variable.slice( USER_VALUE_PREFIX.length ).split( '|' );\n\t} else if (\n\t\tvariable.startsWith( THEME_VALUE_PREFIX ) &&\n\t\tvariable.endsWith( THEME_VALUE_SUFFIX )\n\t) {\n\t\tparsedVar = variable\n\t\t\t.slice( THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length )\n\t\t\t.split( '--' );\n\t} else {\n\t\t// We don't know how to parse the value: either is raw of uses complex CSS such as `calc(1px * var(--wp--variable) )`\n\t\treturn variable;\n\t}\n\n\tconst [ type, ...path ] = parsedVar;\n\tif ( type === 'preset' ) {\n\t\treturn getValueFromPresetVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\tif ( type === 'custom' ) {\n\t\treturn getValueFromCustomVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\treturn variable;\n}\n\n/**\n * Encodes a value to a preset variable format if it matches a preset.\n * This is the inverse operation of getValueFromVariable().\n *\n * @example\n * ```js\n * const presetVar = getPresetVariableFromValue(\n *     globalStyles.settings,\n *     'core/paragraph',\n *     'color.text',\n *     '#ff0000'\n * );\n * // If #ff0000 is the 'red' preset color, returns 'var:preset|color|red'\n * // Otherwise returns '#ff0000'\n * ```\n *\n * @param features            GlobalStylesContext settings object.\n * @param blockName           The name of a block (e.g., 'core/paragraph').\n * @param variableStylePath   The style path (e.g., 'color.text', 'typography.fontSize').\n * @param presetPropertyValue The value to encode (e.g., '#ff0000').\n * @return The preset variable if found, otherwise the original value.\n */\nexport function getPresetVariableFromValue(\n\tfeatures: GlobalStylesSettings,\n\tblockName: string | undefined,\n\tvariableStylePath: string,\n\tpresetPropertyValue: any\n): any {\n\tif ( ! presetPropertyValue ) {\n\t\treturn presetPropertyValue;\n\t}\n\n\tconst cssVarInfix = STYLE_PATH_TO_CSS_VAR_INFIX[ variableStylePath ];\n\n\tconst metadata = PRESET_METADATA.find(\n\t\t( data ) => data.cssVarInfix === cssVarInfix\n\t);\n\n\tif ( ! metadata ) {\n\t\t// The property doesn't have preset data\n\t\t// so the value should be returned as it is.\n\t\treturn presetPropertyValue;\n\t}\n\tconst { valueKey, path } = metadata;\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures,\n\t\tblockName,\n\t\tpath,\n\t\tvalueKey,\n\t\tpresetPropertyValue\n\t);\n\n\tif ( ! presetObject ) {\n\t\t// Value wasn't found in the presets,\n\t\t// so it must be a custom value.\n\t\treturn presetPropertyValue;\n\t}\n\n\treturn `var:preset|${ cssVarInfix }|${ presetObject.slug }`;\n}\n", "/**\n * The fluid utilities must match the backend equivalent.\n * See: gutenberg_get_typography_font_size_value() in lib/block-supports/typography.php\n * ---------------------------------------------------------------\n */\n\n// Defaults.\nconst DEFAULT_MAXIMUM_VIEWPORT_WIDTH = '1600px';\nconst DEFAULT_MINIMUM_VIEWPORT_WIDTH = '320px';\nconst DEFAULT_SCALE_FACTOR = 1;\nconst DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MIN = 0.25;\nconst DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MAX = 0.75;\nconst DEFAULT_MINIMUM_FONT_SIZE_LIMIT = '14px';\n\n/**\n * Computes a fluid font-size value that uses clamp(). A minimum and maximum\n * font size OR a single font size can be specified.\n *\n * If a single font size is specified, it is scaled up and down using a logarithmic scale.\n *\n * @example\n * ```js\n * // Calculate fluid font-size value from a minimum and maximum value.\n * const fontSize = getComputedFluidTypographyValue( {\n *     minimumFontSize: '20px',\n *     maximumFontSize: '45px'\n * } );\n * // Calculate fluid font-size value from a single font size.\n * const fontSize = getComputedFluidTypographyValue( {\n *     fontSize: '30px',\n * } );\n * ```\n *\n * @param {Object}        args\n * @param {?string}       args.minimumViewportWidth Minimum viewport size from which type will have fluidity. Optional if fontSize is specified.\n * @param {?string}       args.maximumViewportWidth Maximum size up to which type will have fluidity. Optional if fontSize is specified.\n * @param {string|number} [args.fontSize]           Size to derive maximumFontSize and minimumFontSize from, if necessary. Optional if minimumFontSize and maximumFontSize are specified.\n * @param {?string}       args.maximumFontSize      Maximum font size for any clamp() calculation. Optional.\n * @param {?string}       args.minimumFontSize      Minimum font size for any clamp() calculation. Optional.\n * @param {?number}       args.scaleFactor          A scale factor to determine how fast a font scales within boundaries. Optional.\n * @param {?string}       args.minimumFontSizeLimit The smallest a calculated font size may be. Optional.\n *\n * @return {string|null} A font-size value using clamp().\n */\nexport function getComputedFluidTypographyValue( {\n\tminimumFontSize,\n\tmaximumFontSize,\n\tfontSize,\n\tminimumViewportWidth = DEFAULT_MINIMUM_VIEWPORT_WIDTH,\n\tmaximumViewportWidth = DEFAULT_MAXIMUM_VIEWPORT_WIDTH,\n\tscaleFactor = DEFAULT_SCALE_FACTOR,\n\tminimumFontSizeLimit,\n}: {\n\tminimumFontSize?: string;\n\tmaximumFontSize?: string;\n\tfontSize?: string | number;\n\tminimumViewportWidth?: string;\n\tmaximumViewportWidth?: string;\n\tscaleFactor?: number;\n\tminimumFontSizeLimit?: string;\n} ) {\n\t// Validate incoming settings and set defaults.\n\tminimumFontSizeLimit = !! getTypographyValueAndUnit( minimumFontSizeLimit )\n\t\t? minimumFontSizeLimit\n\t\t: DEFAULT_MINIMUM_FONT_SIZE_LIMIT;\n\n\t/*\n\t * Calculates missing minimumFontSize and maximumFontSize from\n\t * defaultFontSize if provided.\n\t */\n\tif ( fontSize ) {\n\t\t// Parses default font size.\n\t\tconst fontSizeParsed = getTypographyValueAndUnit( fontSize );\n\n\t\t// Protect against invalid units.\n\t\tif ( ! fontSizeParsed?.unit || ! fontSizeParsed?.value ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Parses the minimum font size limit, so we can perform checks using it.\n\t\tconst minimumFontSizeLimitParsed = getTypographyValueAndUnit(\n\t\t\tminimumFontSizeLimit,\n\t\t\t{\n\t\t\t\tcoerceTo: fontSizeParsed.unit,\n\t\t\t}\n\t\t);\n\n\t\t// Don't enforce minimum font size if a font size has explicitly set a min and max value.\n\t\tif (\n\t\t\t!! minimumFontSizeLimitParsed?.value &&\n\t\t\t! minimumFontSize &&\n\t\t\t! maximumFontSize\n\t\t) {\n\t\t\t/*\n\t\t\t * If a minimum size was not passed to this function\n\t\t\t * and the user-defined font size is lower than $minimum_font_size_limit,\n\t\t\t * do not calculate a fluid value.\n\t\t\t */\n\t\t\tif ( fontSizeParsed?.value <= minimumFontSizeLimitParsed?.value ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\t// If no fluid max font size is available use the incoming value.\n\t\tif ( ! maximumFontSize ) {\n\t\t\tmaximumFontSize = `${ fontSizeParsed.value }${ fontSizeParsed.unit }`;\n\t\t}\n\n\t\t/*\n\t\t * If no minimumFontSize is provided, create one using\n\t\t * the given font size multiplied by the min font size scale factor.\n\t\t */\n\t\tif ( ! minimumFontSize ) {\n\t\t\tconst fontSizeValueInPx =\n\t\t\t\tfontSizeParsed.unit === 'px'\n\t\t\t\t\t? fontSizeParsed.value\n\t\t\t\t\t: fontSizeParsed.value * 16;\n\n\t\t\t/*\n\t\t\t * The scale factor is a multiplier that affects how quickly the curve will move towards the minimum,\n\t\t\t * that is, how quickly the size factor reaches 0 given increasing font size values.\n\t\t\t * For a - b * log2(), lower values of b will make the curve move towards the minimum faster.\n\t\t\t * The scale factor is constrained between min and max values.\n\t\t\t */\n\t\t\tconst minimumFontSizeFactor = Math.min(\n\t\t\t\tMath.max(\n\t\t\t\t\t1 - 0.075 * Math.log2( fontSizeValueInPx ),\n\t\t\t\t\tDEFAULT_MINIMUM_FONT_SIZE_FACTOR_MIN\n\t\t\t\t),\n\t\t\t\tDEFAULT_MINIMUM_FONT_SIZE_FACTOR_MAX\n\t\t\t);\n\n\t\t\t// Calculates the minimum font size.\n\t\t\tconst calculatedMinimumFontSize = roundToPrecision(\n\t\t\t\tfontSizeParsed.value * minimumFontSizeFactor,\n\t\t\t\t3\n\t\t\t) as number;\n\n\t\t\t// Only use calculated min font size if it's > $minimum_font_size_limit value.\n\t\t\tif (\n\t\t\t\t!! minimumFontSizeLimitParsed?.value &&\n\t\t\t\tcalculatedMinimumFontSize < minimumFontSizeLimitParsed?.value\n\t\t\t) {\n\t\t\t\tminimumFontSize = `${ minimumFontSizeLimitParsed.value }${ minimumFontSizeLimitParsed.unit }`;\n\t\t\t} else {\n\t\t\t\tminimumFontSize = `${ calculatedMinimumFontSize }${ fontSizeParsed.unit }`;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Grab the minimum font size and normalize it in order to use the value for calculations.\n\tconst minimumFontSizeParsed = getTypographyValueAndUnit( minimumFontSize );\n\n\t// We get a 'preferred' unit to keep units consistent when calculating,\n\t// otherwise the result will not be accurate.\n\tconst fontSizeUnit = minimumFontSizeParsed?.unit || 'rem';\n\n\t// Grabs the maximum font size and normalize it in order to use the value for calculations.\n\tconst maximumFontSizeParsed = getTypographyValueAndUnit( maximumFontSize, {\n\t\tcoerceTo: fontSizeUnit,\n\t} );\n\n\t// Checks for mandatory min and max sizes, and protects against unsupported units.\n\tif ( ! minimumFontSizeParsed || ! maximumFontSizeParsed ) {\n\t\treturn null;\n\t}\n\n\t// Uses rem for accessible fluid target font scaling.\n\tconst minimumFontSizeRem = getTypographyValueAndUnit( minimumFontSize, {\n\t\tcoerceTo: 'rem',\n\t} );\n\n\t// Viewport widths defined for fluid typography. Normalize units\n\tconst maximumViewportWidthParsed = getTypographyValueAndUnit(\n\t\tmaximumViewportWidth,\n\t\t{ coerceTo: fontSizeUnit }\n\t);\n\tconst minimumViewportWidthParsed = getTypographyValueAndUnit(\n\t\tminimumViewportWidth,\n\t\t{ coerceTo: fontSizeUnit }\n\t);\n\n\t// Protect against unsupported units.\n\tif (\n\t\t! maximumViewportWidthParsed ||\n\t\t! minimumViewportWidthParsed ||\n\t\t! minimumFontSizeRem\n\t) {\n\t\treturn null;\n\t}\n\n\t// Calculates the linear factor denominator. If it's 0, we cannot calculate a fluid value.\n\tconst linearDenominator =\n\t\tmaximumViewportWidthParsed.value - minimumViewportWidthParsed.value;\n\tif ( ! linearDenominator ) {\n\t\treturn null;\n\t}\n\n\t// Build CSS rule.\n\t// Borrowed from https://websemantics.uk/tools/responsive-font-calculator/.\n\tconst minViewportWidthOffsetValue = roundToPrecision(\n\t\tminimumViewportWidthParsed.value / 100,\n\t\t3\n\t);\n\n\tconst viewportWidthOffset =\n\t\troundToPrecision( minViewportWidthOffsetValue, 3 ) + fontSizeUnit;\n\tconst linearFactor =\n\t\t100 *\n\t\t( ( maximumFontSizeParsed.value - minimumFontSizeParsed.value ) /\n\t\t\tlinearDenominator );\n\tconst linearFactorScaled = roundToPrecision(\n\t\t( linearFactor || 1 ) * scaleFactor,\n\t\t3\n\t);\n\tconst fluidTargetFontSize = `${ minimumFontSizeRem.value }${ minimumFontSizeRem.unit } + ((1vw - ${ viewportWidthOffset }) * ${ linearFactorScaled })`;\n\n\treturn `clamp(${ minimumFontSize }, ${ fluidTargetFontSize }, ${ maximumFontSize })`;\n}\n\n/**\n * Internal method that checks a string for a unit and value and returns an array consisting of `'value'` and `'unit'`, e.g., [ '42', 'rem' ].\n * A raw font size of `value + unit` is expected. If the value is an integer, it will convert to `value + 'px'`.\n *\n * @param rawValue Raw size value from theme.json.\n * @param options  Calculation options.\n *\n * @return An object consisting of `'value'` and `'unit'` properties.\n */\nexport function getTypographyValueAndUnit(\n\trawValue?: string | number,\n\toptions = {}\n) {\n\tif ( typeof rawValue !== 'string' && typeof rawValue !== 'number' ) {\n\t\treturn null;\n\t}\n\n\t// Converts numeric values to pixel values by default.\n\tif ( isFinite( rawValue as number ) ) {\n\t\trawValue = `${ rawValue }px`;\n\t}\n\n\tconst { coerceTo, rootSizeValue, acceptableUnits } = {\n\t\tcoerceTo: '',\n\t\t// Default browser font size. Later we could inject some JS to compute this `getComputedStyle( document.querySelector( \"html\" ) ).fontSize`.\n\t\trootSizeValue: 16,\n\t\tacceptableUnits: [ 'rem', 'px', 'em' ],\n\t\t...options,\n\t};\n\n\tconst acceptableUnitsGroup = acceptableUnits?.join( '|' );\n\tconst regexUnits = new RegExp(\n\t\t`^(\\\\d*\\\\.?\\\\d+)(${ acceptableUnitsGroup }){1,1}$`\n\t);\n\n\tconst matches = rawValue.toString().match( regexUnits );\n\n\t// We need a number value and a unit.\n\tif ( ! matches || matches.length < 3 ) {\n\t\treturn null;\n\t}\n\n\tlet [ , value, unit ] = matches;\n\n\tlet returnValue = parseFloat( value );\n\n\tif ( 'px' === coerceTo && ( 'em' === unit || 'rem' === unit ) ) {\n\t\treturnValue = returnValue * rootSizeValue;\n\t\tunit = coerceTo;\n\t}\n\n\tif ( 'px' === unit && ( 'em' === coerceTo || 'rem' === coerceTo ) ) {\n\t\treturnValue = returnValue / rootSizeValue;\n\t\tunit = coerceTo;\n\t}\n\n\t/*\n\t * No calculation is required if swapping between em and rem yet,\n\t * since we assume a root size value. Later we might like to differentiate between\n\t * :root font size (rem) and parent element font size (em) relativity.\n\t */\n\tif (\n\t\t( 'em' === coerceTo || 'rem' === coerceTo ) &&\n\t\t( 'em' === unit || 'rem' === unit )\n\t) {\n\t\tunit = coerceTo;\n\t}\n\n\tif ( ! unit ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tvalue: roundToPrecision( returnValue, 3 ),\n\t\tunit,\n\t};\n}\n\n/**\n * Returns a value rounded to defined precision.\n * Returns `undefined` if the value is not a valid finite number.\n *\n * @param value  Raw value.\n * @param digits The number of digits to appear after the decimal point\n *\n * @return Value rounded to standard precision.\n */\nexport function roundToPrecision( value: number, digits: number = 3 ) {\n\tconst base = Math.pow( 10, digits );\n\treturn Math.round( value * base ) / base;\n}\n", "/**\n * Internal dependencies\n */\nimport type {\n\tTypographyPreset,\n\tGlobalStylesSettings,\n\tFluidTypographySettings,\n\tTypographySettings,\n} from '../types';\nimport {\n\tgetTypographyValueAndUnit,\n\tgetComputedFluidTypographyValue,\n} from './fluid';\n\n/**\n * Checks if fluid typography is enabled in the given typography settings.\n *\n * Fluid typography is considered enabled if the fluid setting is explicitly set to true,\n * or if it's an object with properties (which would contain fluid typography configuration\n * like minViewportWidth, maxViewportWidth, etc.).\n *\n * @param typographySettings       Typography settings object that may contain fluid typography configuration.\n * @param typographySettings.fluid Fluid typography configuration. Can be:\n *                                 - `true` to enable with default settings\n *                                 - An object with fluid settings (minViewportWidth, maxViewportWidth, etc.)\n *                                 - `false` or `undefined` to disable\n *\n * @return True if fluid typography is enabled, false otherwise.\n */\nfunction isFluidTypographyEnabled(\n\ttypographySettings?: TypographySettings | TypographyPreset\n) {\n\tconst fluidSettings = typographySettings?.fluid;\n\treturn (\n\t\ttrue === fluidSettings ||\n\t\t( fluidSettings &&\n\t\t\ttypeof fluidSettings === 'object' &&\n\t\t\tObject.keys( fluidSettings ).length > 0 )\n\t);\n}\n\n/**\n * Returns fluid typography settings from theme.json setting object.\n *\n * @param settings            Theme.json settings\n * @param settings.typography Theme.json typography settings\n * @param settings.layout     Theme.json layout settings\n * @return Fluid typography settings\n */\nexport function getFluidTypographyOptionsFromSettings(\n\tsettings: GlobalStylesSettings\n): { fluid?: FluidTypographySettings | boolean | undefined } {\n\tconst typographySettings = settings?.typography ?? {};\n\tconst layoutSettings = settings?.layout;\n\tconst defaultMaxViewportWidth = getTypographyValueAndUnit(\n\t\tlayoutSettings?.wideSize\n\t)\n\t\t? layoutSettings?.wideSize\n\t\t: null;\n\treturn isFluidTypographyEnabled( typographySettings ) &&\n\t\tdefaultMaxViewportWidth\n\t\t? {\n\t\t\t\tfluid: {\n\t\t\t\t\tmaxViewportWidth: defaultMaxViewportWidth,\n\t\t\t\t\t...( typeof typographySettings.fluid === 'object'\n\t\t\t\t\t\t? typographySettings.fluid\n\t\t\t\t\t\t: {} ),\n\t\t\t\t},\n\t\t  }\n\t\t: {\n\t\t\t\tfluid: typographySettings?.fluid,\n\t\t  };\n}\n\n/**\n * Returns a font-size value based on a given font-size preset.\n * Takes into account fluid typography parameters and attempts to return a css formula depending on available, valid values.\n *\n * The Core PHP equivalent is wp_get_typography_font_size_value().\n *\n * @param preset   A typography preset object containing size and fluid properties.\n * @param settings Global styles settings object containing typography and layout settings.\n *\n * @return A font-size value or the value of preset.size.\n */\nexport function getTypographyFontSizeValue(\n\tpreset: TypographyPreset,\n\tsettings: GlobalStylesSettings\n) {\n\tconst { size: defaultSize } = preset;\n\n\t/*\n\t * Catch falsy values and 0/'0'. Fluid calculations cannot be performed on `0`.\n\t * Also return early when a preset font size explicitly disables fluid typography with `false`.\n\t */\n\tif ( ! defaultSize || '0' === defaultSize || false === preset?.fluid ) {\n\t\treturn defaultSize;\n\t}\n\n\t/*\n\t * Return early when fluid typography is disabled in the settings, and there\n\t * are no local settings to enable it for the individual preset.\n\t *\n\t * If this condition isn't met, either the settings or individual preset settings\n\t * have enabled fluid typography.\n\t */\n\tif (\n\t\t! isFluidTypographyEnabled( settings?.typography ) &&\n\t\t! isFluidTypographyEnabled( preset )\n\t) {\n\t\treturn defaultSize;\n\t}\n\n\tconst fluidTypographySettings =\n\t\tgetFluidTypographyOptionsFromSettings( settings )?.fluid ?? {};\n\n\tconst fluidFontSizeValue = getComputedFluidTypographyValue( {\n\t\tminimumFontSize:\n\t\t\ttypeof preset?.fluid === 'boolean' ? undefined : preset?.fluid?.min,\n\t\tmaximumFontSize:\n\t\t\ttypeof preset?.fluid === 'boolean' ? undefined : preset?.fluid?.max,\n\t\tfontSize: defaultSize,\n\t\tminimumFontSizeLimit:\n\t\t\ttypeof fluidTypographySettings === 'object'\n\t\t\t\t? fluidTypographySettings?.minFontSize\n\t\t\t\t: undefined,\n\t\tmaximumViewportWidth:\n\t\t\ttypeof fluidTypographySettings === 'object'\n\t\t\t\t? fluidTypographySettings?.maxViewportWidth\n\t\t\t\t: undefined,\n\t\tminimumViewportWidth:\n\t\t\ttypeof fluidTypographySettings === 'object'\n\t\t\t\t? fluidTypographySettings?.minViewportWidth\n\t\t\t\t: undefined,\n\t} );\n\n\tif ( !! fluidFontSizeValue ) {\n\t\treturn fluidFontSizeValue;\n\t}\n\n\treturn defaultSize;\n}\n", "/**\n * Internal dependencies\n */\nimport { getValueFromObjectPath } from '../utils/object';\nimport { getValueFromVariable } from '../utils/common';\nimport type { GlobalStylesConfig, UnresolvedValue } from '../types';\n\nexport function getStyle< T = any >(\n\tglobalStyles?: GlobalStylesConfig,\n\tpath?: string,\n\tblockName?: string,\n\tshouldDecodeEncode = true\n): T | undefined {\n\tconst appendedPath = path ? '.' + path : '';\n\tconst finalPath = ! blockName\n\t\t? `styles${ appendedPath }`\n\t\t: `styles.blocks.${ blockName }${ appendedPath }`;\n\tif ( ! globalStyles ) {\n\t\treturn undefined;\n\t}\n\n\tconst rawResult = getValueFromObjectPath( globalStyles, finalPath ) as\n\t\t| string\n\t\t| UnresolvedValue;\n\tconst result = shouldDecodeEncode\n\t\t? getValueFromVariable( globalStyles, blockName, rawResult )\n\t\t: rawResult;\n\treturn result as T | undefined;\n}\n", "/**\n * Internal dependencies\n */\nimport { setImmutably } from '../utils/object';\nimport type { GlobalStylesConfig } from '../types';\n\nexport function setStyle< T = any >(\n\tglobalStyles: GlobalStylesConfig,\n\tpath: string,\n\tnewValue: T | undefined,\n\tblockName?: string\n): GlobalStylesConfig {\n\tconst appendedPath = path ? '.' + path : '';\n\tconst finalPath = ! blockName\n\t\t? `styles${ appendedPath }`\n\t\t: `styles.blocks.${ blockName }${ appendedPath }`;\n\n\treturn setImmutably(\n\t\tglobalStyles,\n\t\tfinalPath.split( '.' ),\n\t\tnewValue\n\t) as GlobalStylesConfig;\n}\n", "/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6/index.js';\n\n/**\n * Internal dependencies\n */\nimport type { GlobalStylesConfig } from '../types';\n\n/**\n * Compares global style variations according to their styles and settings properties.\n *\n * @param original  A global styles object.\n * @param variation A global styles object.\n * @return Whether `original` and `variation` match.\n */\nexport function areGlobalStylesEqual(\n\toriginal: GlobalStylesConfig,\n\tvariation: GlobalStylesConfig\n): boolean {\n\tif ( typeof original !== 'object' || typeof variation !== 'object' ) {\n\t\treturn original === variation;\n\t}\n\treturn (\n\t\tfastDeepEqual( original?.styles, variation?.styles ) &&\n\t\tfastDeepEqual( original?.settings, variation?.settings )\n\t);\n}\n", "/**\n * External dependencies\n */\nimport deepmerge from 'deepmerge';\n// @ts-ignore - is-plain-object doesn't have proper types\nimport { isPlainObject } from 'is-plain-object';\n\n/**\n * Internal dependencies\n */\nimport type { GlobalStylesConfig } from '../types';\n\n/**\n * Merges base and user global styles configurations\n *\n * @param base Base global styles (theme + WordPress defaults)\n * @param user User customizations\n * @return Merged global styles configuration\n */\nexport function mergeGlobalStyles(\n\tbase: GlobalStylesConfig,\n\tuser: GlobalStylesConfig\n): GlobalStylesConfig {\n\treturn deepmerge( base, user, {\n\t\t/*\n\t\t * We only pass as arrays the presets,\n\t\t * in which case we want the new array of values\n\t\t * to override the old array (no merging).\n\t\t */\n\t\tisMergeableObject: isPlainObject,\n\t\t/*\n\t\t * Exceptions to the above rule.\n\t\t * Background images should be replaced, not merged,\n\t\t * as they themselves are specific object definitions for the style.\n\t\t */\n\t\tcustomMerge: ( key ) => {\n\t\t\tif ( key === 'backgroundImage' ) {\n\t\t\t\treturn ( baseConfig, userConfig ) => userConfig ?? baseConfig;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t} );\n}\n", "/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n  return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n  var ctor,prot;\n\n  if (isObject(o) === false) return false;\n\n  // If has modified constructor\n  ctor = o.constructor;\n  if (ctor === undefined) return true;\n\n  // If has modified prototype\n  prot = ctor.prototype;\n  if (isObject(prot) === false) return false;\n\n  // If constructor does not have an Object-specific method\n  if (prot.hasOwnProperty('isPrototypeOf') === false) {\n    return false;\n  }\n\n  // Most likely a plain Object\n  return true;\n}\n\nexport { isPlainObject };\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__EXPERIMENTAL_STYLE_PROPERTY as STYLE_PROPERTY,\n\t__EXPERIMENTAL_ELEMENTS as ELEMENTS,\n\tgetBlockSupport,\n\tgetBlockTypes,\n\tstore as blocksStore,\n\t// @ts-expect-error - @wordpress/blocks module doesn't have TypeScript declarations\n} from '@wordpress/blocks';\nimport { getCSSRules, getCSSValueFromRawStyle } from '@wordpress/style-engine';\nimport { select } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tPRESET_METADATA,\n\tROOT_BLOCK_SELECTOR,\n\tROOT_CSS_PROPERTIES_SELECTOR,\n\tscopeSelector,\n\tscopeFeatureSelectors,\n\tappendToSelector,\n\tgetBlockStyleVariationSelector,\n\tgetResolvedValue,\n} from '../utils/common';\nimport { getBlockSelector } from './selectors';\nimport { getTypographyFontSizeValue } from '../utils/typography';\nimport { getDuotoneFilter } from '../utils/duotone';\nimport { kebabCase } from '../utils/string';\nimport { getGapCSSValue } from '../utils/gap';\nimport { setBackgroundStyleDefaults } from '../utils/background';\nimport { LAYOUT_DEFINITIONS } from '../utils/layout';\nimport { getValueFromObjectPath, setImmutably } from '../utils/object';\nimport { getSetting } from '../settings/get-setting';\nimport type {\n\tBlockStyleVariation,\n\tBlockType,\n\tGlobalStylesConfig,\n\tGlobalStylesSettings,\n\tGlobalStylesStyles,\n} from '../types';\n\n// =============================================================================\n// LOCAL TYPE DEFINITIONS\n// =============================================================================\n\n/**\n * Preset metadata for CSS variable generation\n */\ninterface PresetMetadata {\n\tpath: string[];\n\tvalueKey?: string;\n\tvalueFunc?: ( preset: any, settings: any ) => string | number | null;\n\tcssVarInfix: string;\n\tclasses?: Array< {\n\t\tclassSuffix: string;\n\t\tpropertyName: string;\n\t} >;\n}\n\n/**\n * Preset collection by origin\n */\ninterface PresetsByOrigin {\n\t[ origin: string ]: any[];\n}\n\n/**\n * CSS class configuration\n */\ninterface CSSClassConfig {\n\tclassSuffix: string;\n\tpropertyName: string;\n}\n\n/**\n * Style property configuration from WordPress\n */\ninterface StylePropertyConfig {\n\tvalue: string[];\n\tproperties?: Record< string, string >;\n\tuseEngine?: boolean;\n\trootOnly?: boolean;\n}\n\n/**\n * Layout definition structure\n */\ninterface LayoutDefinition {\n\tclassName: string;\n\tname: string;\n\tdisplayMode?: string;\n\tspacingStyles?: Array< {\n\t\tselector?: string;\n\t\trules?: Record< string, any >;\n\t} >;\n\tbaseStyles?: Array< {\n\t\tselector?: string;\n\t\trules?: Record< string, any >;\n\t} >;\n}\n\n/**\n * CSS rule from style engine\n */\ninterface CSSRule {\n\tkey: string;\n\tvalue: any;\n}\n\n/**\n * Block variation in theme.json (different from BlockStyleVariation)\n */\ninterface BlockVariation {\n\tcss?: string;\n\telements?: Record< string, any >;\n\tblocks?: Record< string, any >;\n\t[ key: string ]: any; // For additional style properties\n}\n\n/**\n * Block node in theme.json\n */\ninterface BlockNode {\n\tvariations?: Record< string, BlockVariation >;\n\telements?: Record< string, any >;\n\t[ key: string ]: any; // For additional style properties\n}\n\nexport type BlockSelectors = Record<\n\tstring,\n\t{\n\t\tduotoneSelector?: string;\n\t\tselector: string;\n\t\tfallbackGapValue?: string;\n\t\thasLayoutSupport?: boolean;\n\t\tfeatureSelectors?:\n\t\t\t| string\n\t\t\t| Record< string, string | Record< string, string > >;\n\t\tname?: string;\n\t\tstyleVariationSelectors?: Record< string, string >;\n\t}\n>;\n\n// Elements that rely on class names in their selectors.\nconst ELEMENT_CLASS_NAMES = {\n\tbutton: 'wp-element-button',\n\tcaption: 'wp-element-caption',\n};\n\n// List of block support features that can have their related styles\n// generated under their own feature level selector rather than the block's.\nconst BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS = {\n\t__experimentalBorder: 'border',\n\tcolor: 'color',\n\tdimensions: 'dimensions',\n\tspacing: 'spacing',\n\ttypography: 'typography',\n};\n\n/**\n * Transform given preset tree into a set of style declarations.\n *\n * @param blockPresets   Block presets object\n * @param mergedSettings Merged theme.json settings\n * @return An array of style declarations\n */\nfunction getPresetsDeclarations(\n\tblockPresets: Record< string, any > = {},\n\tmergedSettings: GlobalStylesSettings\n): string[] {\n\treturn PRESET_METADATA.reduce(\n\t\t(\n\t\t\tdeclarations: string[],\n\t\t\t{ path, valueKey, valueFunc, cssVarInfix }: PresetMetadata\n\t\t) => {\n\t\t\tconst presetByOrigin = getValueFromObjectPath(\n\t\t\t\tblockPresets,\n\t\t\t\tpath,\n\t\t\t\t[]\n\t\t\t) as PresetsByOrigin;\n\t\t\t[ 'default', 'theme', 'custom' ].forEach( ( origin ) => {\n\t\t\t\tif ( presetByOrigin[ origin ] ) {\n\t\t\t\t\tpresetByOrigin[ origin ].forEach( ( value: any ) => {\n\t\t\t\t\t\tif ( valueKey && ! valueFunc ) {\n\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t`--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\t\tvalue.slug\n\t\t\t\t\t\t\t\t) }: ${ value[ valueKey ] }`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tvalueFunc &&\n\t\t\t\t\t\t\ttypeof valueFunc === 'function'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t`--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\t\tvalue.slug\n\t\t\t\t\t\t\t\t) }: ${ valueFunc( value, mergedSettings ) }`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn declarations;\n\t\t},\n\t\t[] as string[]\n\t);\n}\n\n/**\n * Transform given preset tree into a set of preset class declarations.\n *\n * @param blockSelector Block selector string\n * @param blockPresets  Block presets object\n * @return CSS declarations for the preset classes\n */\nfunction getPresetsClasses(\n\tblockSelector: string = '*',\n\tblockPresets: Record< string, any > = {}\n): string {\n\treturn PRESET_METADATA.reduce(\n\t\t(\n\t\t\tdeclarations: string,\n\t\t\t{ path, cssVarInfix, classes }: PresetMetadata\n\t\t) => {\n\t\t\tif ( ! classes ) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\n\t\t\tconst presetByOrigin = getValueFromObjectPath(\n\t\t\t\tblockPresets,\n\t\t\t\tpath,\n\t\t\t\t[]\n\t\t\t) as PresetsByOrigin;\n\t\t\t[ 'default', 'theme', 'custom' ].forEach( ( origin ) => {\n\t\t\t\tif ( presetByOrigin[ origin ] ) {\n\t\t\t\t\tpresetByOrigin[ origin ].forEach(\n\t\t\t\t\t\t( { slug }: { slug: string } ) => {\n\t\t\t\t\t\t\tclasses!.forEach(\n\t\t\t\t\t\t\t\t( {\n\t\t\t\t\t\t\t\t\tclassSuffix,\n\t\t\t\t\t\t\t\t\tpropertyName,\n\t\t\t\t\t\t\t\t}: CSSClassConfig ) => {\n\t\t\t\t\t\t\t\t\tconst classSelectorToUse = `.has-${ kebabCase(\n\t\t\t\t\t\t\t\t\t\tslug\n\t\t\t\t\t\t\t\t\t) }-${ classSuffix }`;\n\t\t\t\t\t\t\t\t\tconst selectorToUse = blockSelector\n\t\t\t\t\t\t\t\t\t\t.split( ',' ) // Selector can be \"h1, h2, h3\"\n\t\t\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t\t\t( selector ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t`${ selector }${ classSelectorToUse }`\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t.join( ',' );\n\t\t\t\t\t\t\t\t\tconst value = `var(--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\t\t\tslug\n\t\t\t\t\t\t\t\t\t) })`;\n\t\t\t\t\t\t\t\t\tdeclarations += `${ selectorToUse }{${ propertyName }: ${ value } !important;}`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} );\n\t\t\treturn declarations;\n\t\t},\n\t\t''\n\t);\n}\n\nfunction getPresetsSvgFilters(\n\tblockPresets: Record< string, any > = {}\n): string[] {\n\treturn PRESET_METADATA.filter(\n\t\t// Duotone are the only type of filters for now.\n\t\t( metadata: PresetMetadata ) => metadata.path.at( -1 ) === 'duotone'\n\t).flatMap( ( metadata: PresetMetadata ) => {\n\t\tconst presetByOrigin = getValueFromObjectPath(\n\t\t\tblockPresets,\n\t\t\tmetadata.path,\n\t\t\t{}\n\t\t) as PresetsByOrigin;\n\t\treturn [ 'default', 'theme' ]\n\t\t\t.filter( ( origin ) => presetByOrigin[ origin ] )\n\t\t\t.flatMap( ( origin ) =>\n\t\t\t\tpresetByOrigin[ origin ].map( ( preset: any ) =>\n\t\t\t\t\tgetDuotoneFilter(\n\t\t\t\t\t\t`wp-duotone-${ preset.slug }`,\n\t\t\t\t\t\tpreset.colors\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t\t.join( '' );\n\t} );\n}\n\nfunction flattenTree(\n\tinput: any = {},\n\tprefix: string,\n\ttoken: string\n): string[] {\n\tlet result: string[] = [];\n\tObject.keys( input ).forEach( ( key ) => {\n\t\tconst newKey = prefix + kebabCase( key.replace( '/', '-' ) );\n\t\tconst newLeaf = input[ key ];\n\n\t\tif ( newLeaf instanceof Object ) {\n\t\t\tconst newPrefix = newKey + token;\n\t\t\tresult = [ ...result, ...flattenTree( newLeaf, newPrefix, token ) ];\n\t\t} else {\n\t\t\tresult.push( `${ newKey }: ${ newLeaf }` );\n\t\t}\n\t} );\n\treturn result;\n}\n\n/**\n * Gets variation selector string from feature selector.\n *\n * @param featureSelector        The feature selector\n * @param styleVariationSelector The style variation selector\n * @return Combined selector string\n */\nfunction concatFeatureVariationSelectorString(\n\tfeatureSelector: string,\n\tstyleVariationSelector: string\n): string {\n\tconst featureSelectors = featureSelector.split( ',' );\n\tconst combinedSelectors: string[] = [];\n\tfeatureSelectors.forEach( ( selector ) => {\n\t\tcombinedSelectors.push(\n\t\t\t`${ styleVariationSelector.trim() }${ selector.trim() }`\n\t\t);\n\t} );\n\treturn combinedSelectors.join( ', ' );\n}\n\n/**\n * Generate style declarations for a block's custom feature and subfeature\n * selectors.\n *\n * NOTE: The passed `styles` object will be mutated by this function.\n *\n * @param selectors Custom selectors object for a block\n * @param styles    A block's styles object\n * @return Style declarations\n */\nconst getFeatureDeclarations = (\n\tselectors: Record< string, any >,\n\tstyles: Record< string, any >\n): Record< string, string[] > => {\n\tconst declarations: Record< string, string[] > = {};\n\n\tObject.entries( selectors ).forEach( ( [ feature, selector ] ) => {\n\t\t// We're only processing features/subfeatures that have styles.\n\t\tif ( feature === 'root' || ! styles?.[ feature ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isShorthand = typeof selector === 'string';\n\n\t\t// If we have a selector object instead of shorthand process it.\n\t\tif (\n\t\t\t! isShorthand &&\n\t\t\ttypeof selector === 'object' &&\n\t\t\tselector !== null\n\t\t) {\n\t\t\tObject.entries( selector as Record< string, string > ).forEach(\n\t\t\t\t( [ subfeature, subfeatureSelector ] ) => {\n\t\t\t\t\t// Don't process root feature selector yet or any\n\t\t\t\t\t// subfeature that doesn't have a style.\n\t\t\t\t\tif (\n\t\t\t\t\t\tsubfeature === 'root' ||\n\t\t\t\t\t\t! styles?.[ feature ][ subfeature ]\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Create a temporary styles object and build\n\t\t\t\t\t// declarations for subfeature.\n\t\t\t\t\tconst subfeatureStyles = {\n\t\t\t\t\t\t[ feature ]: {\n\t\t\t\t\t\t\t[ subfeature ]: styles[ feature ][ subfeature ],\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tconst newDeclarations =\n\t\t\t\t\t\tgetStylesDeclarations( subfeatureStyles );\n\n\t\t\t\t\t// Merge new declarations in with any others that\n\t\t\t\t\t// share the same selector.\n\t\t\t\t\tdeclarations[ subfeatureSelector ] = [\n\t\t\t\t\t\t...( declarations[ subfeatureSelector ] || [] ),\n\t\t\t\t\t\t...newDeclarations,\n\t\t\t\t\t];\n\n\t\t\t\t\t// Remove the subfeature's style now it will be\n\t\t\t\t\t// included under its own selector not the block's.\n\t\t\t\t\tdelete styles[ feature ][ subfeature ];\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\t// Now subfeatures have been processed and removed, we can\n\t\t// process root, or shorthand, feature selectors.\n\t\tif (\n\t\t\tisShorthand ||\n\t\t\t( typeof selector === 'object' &&\n\t\t\t\tselector !== null &&\n\t\t\t\t'root' in selector )\n\t\t) {\n\t\t\tconst featureSelector = isShorthand\n\t\t\t\t? ( selector as string )\n\t\t\t\t: ( selector as any ).root;\n\n\t\t\t// Create temporary style object and build declarations for feature.\n\t\t\tconst featureStyles = { [ feature ]: styles[ feature ] };\n\t\t\tconst newDeclarations = getStylesDeclarations( featureStyles );\n\n\t\t\t// Merge new declarations with any others that share the selector.\n\t\t\tdeclarations[ featureSelector ] = [\n\t\t\t\t...( declarations[ featureSelector ] || [] ),\n\t\t\t\t...newDeclarations,\n\t\t\t];\n\n\t\t\t// Remove the feature from the block's styles now as it will be\n\t\t\t// included under its own selector not the block's.\n\t\t\tdelete styles[ feature ];\n\t\t}\n\t} );\n\n\treturn declarations;\n};\n\n/**\n * Transform given style tree into a set of style declarations.\n *\n * @param blockStyles         Block styles\n * @param selector            The selector these declarations should attach to\n * @param useRootPaddingAlign Whether to use CSS custom properties in root selector\n * @param tree                A theme.json tree containing layout definitions\n * @param disableRootPadding  Whether to force disable the root padding styles\n * @return An array of style declarations\n */\nexport function getStylesDeclarations(\n\tblockStyles: any = {},\n\tselector: string = '',\n\tuseRootPaddingAlign?: boolean,\n\ttree: any = {},\n\tdisableRootPadding: boolean = false\n): string[] {\n\tconst isRoot = ROOT_BLOCK_SELECTOR === selector;\n\tconst output = Object.entries(\n\t\tSTYLE_PROPERTY as Record< string, StylePropertyConfig >\n\t).reduce(\n\t\t(\n\t\t\tdeclarations: string[],\n\t\t\t[ key, { value, properties, useEngine, rootOnly } ]: [\n\t\t\t\tstring,\n\t\t\t\tStylePropertyConfig,\n\t\t\t]\n\t\t) => {\n\t\t\tif ( rootOnly && ! isRoot ) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\t\t\tconst pathToValue = value;\n\t\t\tif ( pathToValue[ 0 ] === 'elements' || useEngine ) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\n\t\t\tconst styleValue = getValueFromObjectPath(\n\t\t\t\tblockStyles,\n\t\t\t\tpathToValue\n\t\t\t);\n\n\t\t\t// Root-level padding styles don't currently support strings with CSS shorthand values.\n\t\t\t// This may change: https://github.com/WordPress/gutenberg/issues/40132.\n\t\t\tif (\n\t\t\t\tkey === '--wp--style--root--padding' &&\n\t\t\t\t( typeof styleValue === 'string' || ! useRootPaddingAlign )\n\t\t\t) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\n\t\t\tif ( properties && typeof styleValue !== 'string' ) {\n\t\t\t\tObject.entries( properties ).forEach( ( entry ) => {\n\t\t\t\t\tconst [ name, prop ] = entry;\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t! getValueFromObjectPath( styleValue, [ prop ], false )\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Do not create a declaration\n\t\t\t\t\t\t// for sub-properties that don't have any value.\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst cssProperty = name.startsWith( '--' )\n\t\t\t\t\t\t? name\n\t\t\t\t\t\t: kebabCase( name );\n\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t`${ cssProperty }: ${ getCSSValueFromRawStyle(\n\t\t\t\t\t\t\tgetValueFromObjectPath( styleValue, [ prop ] )\n\t\t\t\t\t\t) }`\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t} else if (\n\t\t\t\tgetValueFromObjectPath( blockStyles, pathToValue, false )\n\t\t\t) {\n\t\t\t\tconst cssProperty = key.startsWith( '--' )\n\t\t\t\t\t? key\n\t\t\t\t\t: kebabCase( key );\n\t\t\t\tdeclarations.push(\n\t\t\t\t\t`${ cssProperty }: ${ getCSSValueFromRawStyle(\n\t\t\t\t\t\tgetValueFromObjectPath( blockStyles, pathToValue )\n\t\t\t\t\t) }`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn declarations;\n\t\t},\n\t\t[] as string[]\n\t);\n\n\t/*\n\t * Preprocess background image values.\n\t *\n\t * Note: As we absorb more and more styles into the engine, we could simplify this function.\n\t * A refactor is for the style engine to handle ref resolution (and possibly defaults)\n\t * via a public util used internally and externally. Theme.json tree and defaults could be passed\n\t * as options.\n\t */\n\tif ( !! blockStyles.background ) {\n\t\t/*\n\t\t * Resolve dynamic values before they are compiled by the style engine,\n\t\t * which doesn't (yet) resolve dynamic values.\n\t\t */\n\t\tif ( blockStyles.background?.backgroundImage ) {\n\t\t\tblockStyles.background.backgroundImage = getResolvedValue(\n\t\t\t\tblockStyles.background.backgroundImage,\n\t\t\t\ttree\n\t\t\t);\n\t\t}\n\n\t\t/*\n\t\t * Set default values for block background styles.\n\t\t * Top-level styles are an exception as they are applied to the body.\n\t\t */\n\t\tif ( ! isRoot && !! blockStyles.background?.backgroundImage?.id ) {\n\t\t\tblockStyles = {\n\t\t\t\t...blockStyles,\n\t\t\t\tbackground: {\n\t\t\t\t\t...blockStyles.background,\n\t\t\t\t\t...setBackgroundStyleDefaults( blockStyles.background ),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\n\tconst extraRules = getCSSRules( blockStyles );\n\textraRules.forEach( ( rule: CSSRule ) => {\n\t\t// Don't output padding properties if padding variables are set or if we're not editing a full template.\n\t\tif (\n\t\t\tisRoot &&\n\t\t\t( useRootPaddingAlign || disableRootPadding ) &&\n\t\t\trule.key.startsWith( 'padding' )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tconst cssProperty = rule.key.startsWith( '--' )\n\t\t\t? rule.key\n\t\t\t: kebabCase( rule.key );\n\n\t\tlet ruleValue = getResolvedValue( rule.value, tree );\n\n\t\t// Calculate fluid typography rules where available.\n\t\tif ( cssProperty === 'font-size' ) {\n\t\t\t/*\n\t\t\t * getTypographyFontSizeValue() will check\n\t\t\t * if fluid typography has been activated and also\n\t\t\t * whether the incoming value can be converted to a fluid value.\n\t\t\t * Values that already have a \"clamp()\" function will not pass the test,\n\t\t\t * and therefore the original $value will be returned.\n\t\t\t */\n\t\t\truleValue = getTypographyFontSizeValue(\n\t\t\t\t{ name: '', slug: '', size: ruleValue as string },\n\t\t\t\ttree?.settings\n\t\t\t);\n\t\t}\n\n\t\t// For aspect ratio to work, other dimensions rules (and Cover block defaults) must be unset.\n\t\t// This ensures that a fixed height does not override the aspect ratio.\n\t\tif ( cssProperty === 'aspect-ratio' ) {\n\t\t\toutput.push( 'min-height: unset' );\n\t\t}\n\n\t\toutput.push( `${ cssProperty }: ${ ruleValue }` );\n\t} );\n\n\treturn output;\n}\n\n/**\n * Get generated CSS for layout styles by looking up layout definitions provided\n * in theme.json, and outputting common layout styles, and specific blockGap values.\n *\n * @param props                       Layout styles configuration\n * @param props.layoutDefinitions     Layout definitions from theme.json\n * @param props.style                 Style object for the block\n * @param props.selector              Selector to apply the styles to\n * @param props.hasBlockGapSupport    Whether the block supports block gap styles\n * @param props.hasFallbackGapSupport Whether the block supports fallback gap styles\n * @param props.fallbackGapValue      Fallback gap value to use if block gap support is\n *\n * @return Generated CSS rules for the layout styles\n */\nexport function getLayoutStyles( {\n\tlayoutDefinitions = LAYOUT_DEFINITIONS,\n\tstyle,\n\tselector,\n\thasBlockGapSupport,\n\thasFallbackGapSupport,\n\tfallbackGapValue,\n}: {\n\tlayoutDefinitions?: Record< string, LayoutDefinition >;\n\tstyle?: GlobalStylesStyles;\n\tselector?: string;\n\thasBlockGapSupport?: boolean;\n\thasFallbackGapSupport?: boolean;\n\tfallbackGapValue?: string;\n} ): string {\n\tlet ruleset = '';\n\tlet gapValue = hasBlockGapSupport\n\t\t? getGapCSSValue( style?.spacing?.blockGap )\n\t\t: '';\n\n\t// Ensure a fallback gap value for the root layout definitions,\n\t// and use a fallback value if one is provided for the current block.\n\tif ( hasFallbackGapSupport ) {\n\t\tif ( selector === ROOT_BLOCK_SELECTOR ) {\n\t\t\tgapValue = ! gapValue ? '0.5em' : gapValue;\n\t\t} else if ( ! hasBlockGapSupport && fallbackGapValue ) {\n\t\t\tgapValue = fallbackGapValue;\n\t\t}\n\t}\n\n\tif ( gapValue && layoutDefinitions ) {\n\t\tObject.values( layoutDefinitions ).forEach(\n\t\t\t( { className, name, spacingStyles } ) => {\n\t\t\t\t// Allow outputting fallback gap styles for flex layout type when block gap support isn't available.\n\t\t\t\tif (\n\t\t\t\t\t! hasBlockGapSupport &&\n\t\t\t\t\t'flex' !== name &&\n\t\t\t\t\t'grid' !== name\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( spacingStyles?.length ) {\n\t\t\t\t\tspacingStyles.forEach( ( spacingStyle: any ) => {\n\t\t\t\t\t\tconst declarations: string[] = [];\n\n\t\t\t\t\t\tif ( spacingStyle.rules ) {\n\t\t\t\t\t\t\tObject.entries( spacingStyle.rules ).forEach(\n\t\t\t\t\t\t\t\t( [ cssProperty, cssValue ] ) => {\n\t\t\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t\t\t`${ cssProperty }: ${\n\t\t\t\t\t\t\t\t\t\t\tcssValue ? cssValue : gapValue\n\t\t\t\t\t\t\t\t\t\t}`\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( declarations.length ) {\n\t\t\t\t\t\t\tlet combinedSelector = '';\n\n\t\t\t\t\t\t\tif ( ! hasBlockGapSupport ) {\n\t\t\t\t\t\t\t\t// For fallback gap styles, use lower specificity, to ensure styles do not unintentionally override theme styles.\n\t\t\t\t\t\t\t\tcombinedSelector =\n\t\t\t\t\t\t\t\t\tselector === ROOT_BLOCK_SELECTOR\n\t\t\t\t\t\t\t\t\t\t? `:where(.${ className }${\n\t\t\t\t\t\t\t\t\t\t\t\tspacingStyle?.selector || ''\n\t\t\t\t\t\t\t\t\t\t  })`\n\t\t\t\t\t\t\t\t\t\t: `:where(${ selector }.${ className }${\n\t\t\t\t\t\t\t\t\t\t\t\tspacingStyle?.selector || ''\n\t\t\t\t\t\t\t\t\t\t  })`;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcombinedSelector =\n\t\t\t\t\t\t\t\t\tselector === ROOT_BLOCK_SELECTOR\n\t\t\t\t\t\t\t\t\t\t? `:root :where(.${ className })${\n\t\t\t\t\t\t\t\t\t\t\t\tspacingStyle?.selector || ''\n\t\t\t\t\t\t\t\t\t\t  }`\n\t\t\t\t\t\t\t\t\t\t: `:root :where(${ selector }-${ className })${\n\t\t\t\t\t\t\t\t\t\t\t\tspacingStyle?.selector || ''\n\t\t\t\t\t\t\t\t\t\t  }`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\truleset += `${ combinedSelector } { ${ declarations.join(\n\t\t\t\t\t\t\t\t'; '\n\t\t\t\t\t\t\t) }; }`;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\t// For backwards compatibility, ensure the legacy block gap CSS variable is still available.\n\t\tif ( selector === ROOT_BLOCK_SELECTOR && hasBlockGapSupport ) {\n\t\t\truleset += `${ ROOT_CSS_PROPERTIES_SELECTOR } { --wp--style--block-gap: ${ gapValue }; }`;\n\t\t}\n\t}\n\n\t// Output base styles\n\tif ( selector === ROOT_BLOCK_SELECTOR && layoutDefinitions ) {\n\t\tconst validDisplayModes = [ 'block', 'flex', 'grid' ];\n\t\tObject.values( layoutDefinitions ).forEach(\n\t\t\t( { className, displayMode, baseStyles }: LayoutDefinition ) => {\n\t\t\t\tif (\n\t\t\t\t\tdisplayMode &&\n\t\t\t\t\tvalidDisplayModes.includes( displayMode )\n\t\t\t\t) {\n\t\t\t\t\truleset += `${ selector } .${ className } { display:${ displayMode }; }`;\n\t\t\t\t}\n\n\t\t\t\tif ( baseStyles?.length ) {\n\t\t\t\t\tbaseStyles.forEach( ( baseStyle: any ) => {\n\t\t\t\t\t\tconst declarations: string[] = [];\n\n\t\t\t\t\t\tif ( baseStyle.rules ) {\n\t\t\t\t\t\t\tObject.entries( baseStyle.rules ).forEach(\n\t\t\t\t\t\t\t\t( [ cssProperty, cssValue ] ) => {\n\t\t\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t\t\t`${ cssProperty }: ${ cssValue }`\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( declarations.length ) {\n\t\t\t\t\t\t\tconst combinedSelector = `.${ className }${\n\t\t\t\t\t\t\t\tbaseStyle?.selector || ''\n\t\t\t\t\t\t\t}`;\n\t\t\t\t\t\t\truleset += `${ combinedSelector } { ${ declarations.join(\n\t\t\t\t\t\t\t\t'; '\n\t\t\t\t\t\t\t) }; }`;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\treturn ruleset;\n}\n\nconst STYLE_KEYS = [\n\t'border',\n\t'color',\n\t'dimensions',\n\t'spacing',\n\t'typography',\n\t'filter',\n\t'outline',\n\t'shadow',\n\t'background',\n];\n\nfunction pickStyleKeys( treeToPickFrom: any ): any {\n\tif ( ! treeToPickFrom ) {\n\t\treturn {};\n\t}\n\tconst entries = Object.entries( treeToPickFrom );\n\tconst pickedEntries = entries.filter( ( [ key ] ) =>\n\t\tSTYLE_KEYS.includes( key )\n\t);\n\t// clone the style objects so that `getFeatureDeclarations` can remove consumed keys from it\n\tconst clonedEntries = pickedEntries.map( ( [ key, style ] ) => [\n\t\tkey,\n\t\tJSON.parse( JSON.stringify( style ) ),\n\t] );\n\treturn Object.fromEntries( clonedEntries );\n}\n\nexport const getNodesWithStyles = (\n\ttree: GlobalStylesConfig,\n\tblockSelectors: string | BlockSelectors\n): any[] => {\n\tconst nodes: {\n\t\tstyles: Partial< Omit< GlobalStylesStyles, 'elements' | 'blocks' > >;\n\t\tselector: string;\n\t\tskipSelectorWrapper?: boolean;\n\t\tduotoneSelector?: string;\n\t\tfeatureSelectors?:\n\t\t\t| string\n\t\t\t| Record< string, string | Record< string, string > >;\n\t\tfallbackGapValue?: string;\n\t\thasLayoutSupport?: boolean;\n\t\tstyleVariationSelectors?: Record< string, string >;\n\t}[] = [];\n\n\tif ( ! tree?.styles ) {\n\t\treturn nodes;\n\t}\n\n\t// Top-level.\n\tconst styles = pickStyleKeys( tree.styles );\n\tif ( styles ) {\n\t\tnodes.push( {\n\t\t\tstyles,\n\t\t\tselector: ROOT_BLOCK_SELECTOR,\n\t\t\t// Root selector (body) styles should not be wrapped in `:root where()` to keep\n\t\t\t// specificity at (0,0,1) and maintain backwards compatibility.\n\t\t\tskipSelectorWrapper: true,\n\t\t} );\n\t}\n\n\tObject.entries( ELEMENTS ).forEach( ( [ name, selector ] ) => {\n\t\tif ( tree.styles?.elements?.[ name ] ) {\n\t\t\tnodes.push( {\n\t\t\t\tstyles: tree.styles?.elements?.[ name ] ?? {},\n\t\t\t\tselector: selector as string,\n\t\t\t\t// Top level elements that don't use a class name should not receive the\n\t\t\t\t// `:root :where()` wrapper to maintain backwards compatibility.\n\t\t\t\tskipSelectorWrapper: ! (\n\t\t\t\t\tELEMENT_CLASS_NAMES as Record< string, string >\n\t\t\t\t )[ name ],\n\t\t\t} );\n\t\t}\n\t} );\n\n\t// Iterate over blocks: they can have styles & elements.\n\tObject.entries( tree.styles?.blocks ?? {} ).forEach(\n\t\t( [ blockName, node ] ) => {\n\t\t\tconst blockStyles = pickStyleKeys( node );\n\t\t\tconst typedNode = node as BlockNode;\n\n\t\t\tif ( typedNode?.variations ) {\n\t\t\t\tconst variations: Record< string, any > = {};\n\t\t\t\tObject.entries( typedNode.variations ).forEach(\n\t\t\t\t\t( [ variationName, variation ] ) => {\n\t\t\t\t\t\tconst typedVariation = variation as BlockVariation;\n\t\t\t\t\t\tvariations[ variationName ] =\n\t\t\t\t\t\t\tpickStyleKeys( typedVariation );\n\t\t\t\t\t\tif ( typedVariation?.css ) {\n\t\t\t\t\t\t\tvariations[ variationName ].css =\n\t\t\t\t\t\t\t\ttypedVariation.css;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst variationSelector =\n\t\t\t\t\t\t\ttypeof blockSelectors !== 'string'\n\t\t\t\t\t\t\t\t? blockSelectors[ blockName ]\n\t\t\t\t\t\t\t\t\t\t?.styleVariationSelectors?.[\n\t\t\t\t\t\t\t\t\t\tvariationName\n\t\t\t\t\t\t\t\t  ]\n\t\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\t\t// Process the variation's inner element styles.\n\t\t\t\t\t\t// This comes before the inner block styles so the\n\t\t\t\t\t\t// element styles within the block type styles take\n\t\t\t\t\t\t// precedence over these.\n\t\t\t\t\t\tObject.entries(\n\t\t\t\t\t\t\ttypedVariation?.elements ?? {}\n\t\t\t\t\t\t).forEach( ( [ element, elementStyles ] ) => {\n\t\t\t\t\t\t\tif ( elementStyles && ELEMENTS[ element ] ) {\n\t\t\t\t\t\t\t\tnodes.push( {\n\t\t\t\t\t\t\t\t\tstyles: elementStyles,\n\t\t\t\t\t\t\t\t\tselector: scopeSelector(\n\t\t\t\t\t\t\t\t\t\tvariationSelector,\n\t\t\t\t\t\t\t\t\t\tELEMENTS[ element ]\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t// Process the variations inner block type styles.\n\t\t\t\t\t\tObject.entries( typedVariation?.blocks ?? {} ).forEach(\n\t\t\t\t\t\t\t( [\n\t\t\t\t\t\t\t\tvariationBlockName,\n\t\t\t\t\t\t\t\tvariationBlockStyles,\n\t\t\t\t\t\t\t] ) => {\n\t\t\t\t\t\t\t\tconst variationBlockSelector =\n\t\t\t\t\t\t\t\t\ttypeof blockSelectors !== 'string'\n\t\t\t\t\t\t\t\t\t\t? scopeSelector(\n\t\t\t\t\t\t\t\t\t\t\t\tvariationSelector,\n\t\t\t\t\t\t\t\t\t\t\t\tblockSelectors[\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariationBlockName\n\t\t\t\t\t\t\t\t\t\t\t\t]?.selector\n\t\t\t\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\t\t\tconst variationDuotoneSelector =\n\t\t\t\t\t\t\t\t\ttypeof blockSelectors !== 'string'\n\t\t\t\t\t\t\t\t\t\t? scopeSelector(\n\t\t\t\t\t\t\t\t\t\t\t\tvariationSelector,\n\t\t\t\t\t\t\t\t\t\t\t\tblockSelectors[\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariationBlockName\n\t\t\t\t\t\t\t\t\t\t\t\t]?.duotoneSelector as string\n\t\t\t\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\t\t\tconst variationFeatureSelectors =\n\t\t\t\t\t\t\t\t\ttypeof blockSelectors !== 'string'\n\t\t\t\t\t\t\t\t\t\t? scopeFeatureSelectors(\n\t\t\t\t\t\t\t\t\t\t\t\tvariationSelector,\n\t\t\t\t\t\t\t\t\t\t\t\tblockSelectors[\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariationBlockName\n\t\t\t\t\t\t\t\t\t\t\t\t]?.featureSelectors ?? {}\n\t\t\t\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\t\t\t\tconst variationBlockStyleNodes =\n\t\t\t\t\t\t\t\t\tpickStyleKeys( variationBlockStyles );\n\n\t\t\t\t\t\t\t\tif ( variationBlockStyles?.css ) {\n\t\t\t\t\t\t\t\t\tvariationBlockStyleNodes.css =\n\t\t\t\t\t\t\t\t\t\tvariationBlockStyles.css;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t! variationBlockSelector ||\n\t\t\t\t\t\t\t\t\ttypeof blockSelectors === 'string'\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tnodes.push( {\n\t\t\t\t\t\t\t\t\tselector: variationBlockSelector,\n\t\t\t\t\t\t\t\t\tduotoneSelector: variationDuotoneSelector,\n\t\t\t\t\t\t\t\t\tfeatureSelectors: variationFeatureSelectors,\n\t\t\t\t\t\t\t\t\tfallbackGapValue:\n\t\t\t\t\t\t\t\t\t\tblockSelectors[ variationBlockName ]\n\t\t\t\t\t\t\t\t\t\t\t?.fallbackGapValue,\n\t\t\t\t\t\t\t\t\thasLayoutSupport:\n\t\t\t\t\t\t\t\t\t\tblockSelectors[ variationBlockName ]\n\t\t\t\t\t\t\t\t\t\t\t?.hasLayoutSupport,\n\t\t\t\t\t\t\t\t\tstyles: variationBlockStyleNodes,\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\t// Process element styles for the inner blocks\n\t\t\t\t\t\t\t\t// of the variation.\n\t\t\t\t\t\t\t\tObject.entries(\n\t\t\t\t\t\t\t\t\tvariationBlockStyles.elements ?? {}\n\t\t\t\t\t\t\t\t).forEach(\n\t\t\t\t\t\t\t\t\t( [\n\t\t\t\t\t\t\t\t\t\tvariationBlockElement,\n\t\t\t\t\t\t\t\t\t\tvariationBlockElementStyles,\n\t\t\t\t\t\t\t\t\t] ) => {\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tvariationBlockElementStyles &&\n\t\t\t\t\t\t\t\t\t\t\tELEMENTS[ variationBlockElement ]\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tnodes.push( {\n\t\t\t\t\t\t\t\t\t\t\t\tstyles: variationBlockElementStyles,\n\t\t\t\t\t\t\t\t\t\t\t\tselector: scopeSelector(\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariationBlockSelector,\n\t\t\t\t\t\t\t\t\t\t\t\t\tELEMENTS[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariationBlockElement\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\tblockStyles.variations = variations;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ttypeof blockSelectors !== 'string' &&\n\t\t\t\tblockSelectors?.[ blockName ]?.selector\n\t\t\t) {\n\t\t\t\tnodes.push( {\n\t\t\t\t\tduotoneSelector:\n\t\t\t\t\t\tblockSelectors[ blockName ].duotoneSelector,\n\t\t\t\t\tfallbackGapValue:\n\t\t\t\t\t\tblockSelectors[ blockName ].fallbackGapValue,\n\t\t\t\t\thasLayoutSupport:\n\t\t\t\t\t\tblockSelectors[ blockName ].hasLayoutSupport,\n\t\t\t\t\tselector: blockSelectors[ blockName ].selector,\n\t\t\t\t\tstyles: blockStyles,\n\t\t\t\t\tfeatureSelectors:\n\t\t\t\t\t\tblockSelectors[ blockName ].featureSelectors,\n\t\t\t\t\tstyleVariationSelectors:\n\t\t\t\t\t\tblockSelectors[ blockName ].styleVariationSelectors,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tObject.entries( typedNode?.elements ?? {} ).forEach(\n\t\t\t\t( [ elementName, value ] ) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof blockSelectors !== 'string' &&\n\t\t\t\t\t\tvalue &&\n\t\t\t\t\t\tblockSelectors?.[ blockName ] &&\n\t\t\t\t\t\tELEMENTS[ elementName ]\n\t\t\t\t\t) {\n\t\t\t\t\t\tnodes.push( {\n\t\t\t\t\t\t\tstyles: value,\n\t\t\t\t\t\t\tselector: blockSelectors[ blockName ]?.selector\n\t\t\t\t\t\t\t\t.split( ',' )\n\t\t\t\t\t\t\t\t.map( ( sel: string ) => {\n\t\t\t\t\t\t\t\t\tconst elementSelectors =\n\t\t\t\t\t\t\t\t\t\tELEMENTS[ elementName ].split( ',' );\n\t\t\t\t\t\t\t\t\treturn elementSelectors.map(\n\t\t\t\t\t\t\t\t\t\t( elementSelector: string ) =>\n\t\t\t\t\t\t\t\t\t\t\tsel + ' ' + elementSelector\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t.join( ',' ),\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t);\n\n\treturn nodes;\n};\n\nexport const getNodesWithSettings = (\n\ttree: GlobalStylesConfig,\n\tblockSelectors: string | BlockSelectors\n): any[] => {\n\tconst nodes: {\n\t\tpresets: Record< string, any >;\n\t\tcustom?: Record< string, any >;\n\t\tselector?: string;\n\t\tduotoneSelector?: string;\n\t\tfallbackGapValue?: string;\n\t\thasLayoutSupport?: boolean;\n\t\tfeatureSelectors?: Record< string, string >;\n\t\tstyleVariationSelectors?: Record< string, string >;\n\t}[] = [];\n\n\tif ( ! tree?.settings ) {\n\t\treturn nodes;\n\t}\n\n\tconst pickPresets = ( treeToPickFrom: any ): any => {\n\t\tlet presets = {};\n\t\tPRESET_METADATA.forEach( ( { path } ) => {\n\t\t\tconst value = getValueFromObjectPath( treeToPickFrom, path, false );\n\t\t\tif ( value !== false ) {\n\t\t\t\tpresets = setImmutably( presets, path, value );\n\t\t\t}\n\t\t} );\n\t\treturn presets;\n\t};\n\n\t// Top-level.\n\tconst presets = pickPresets( tree.settings );\n\tconst custom = tree.settings?.custom;\n\tif ( Object.keys( presets ).length > 0 || custom ) {\n\t\tnodes.push( {\n\t\t\tpresets,\n\t\t\tcustom,\n\t\t\tselector: ROOT_CSS_PROPERTIES_SELECTOR,\n\t\t} );\n\t}\n\n\t// Blocks.\n\tObject.entries( tree.settings?.blocks ?? {} ).forEach(\n\t\t( [ blockName, node ] ) => {\n\t\t\tconst blockCustom = node.custom;\n\t\t\tif (\n\t\t\t\ttypeof blockSelectors === 'string' ||\n\t\t\t\t! blockSelectors[ blockName ]\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst blockPresets = pickPresets( node );\n\t\t\tif ( Object.keys( blockPresets ).length > 0 || blockCustom ) {\n\t\t\t\tnodes.push( {\n\t\t\t\t\tpresets: blockPresets,\n\t\t\t\t\tcustom: blockCustom,\n\t\t\t\t\tselector: blockSelectors[ blockName ]?.selector,\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t);\n\n\treturn nodes;\n};\n\nexport const generateCustomProperties = (\n\ttree: GlobalStylesConfig,\n\tblockSelectors: BlockSelectors\n): string => {\n\tconst settings = getNodesWithSettings( tree, blockSelectors );\n\tlet ruleset = '';\n\tsettings.forEach( ( { presets, custom, selector } ) => {\n\t\tconst declarations = tree?.settings\n\t\t\t? getPresetsDeclarations( presets, tree?.settings )\n\t\t\t: [];\n\t\tconst customProps = flattenTree( custom, '--wp--custom--', '--' );\n\t\tif ( customProps.length > 0 ) {\n\t\t\tdeclarations.push( ...customProps );\n\t\t}\n\n\t\tif ( declarations.length > 0 ) {\n\t\t\truleset += `${ selector }{${ declarations.join( ';' ) };}`;\n\t\t}\n\t} );\n\n\treturn ruleset;\n};\n\nexport const transformToStyles = (\n\ttree: GlobalStylesConfig,\n\tblockSelectors: string | BlockSelectors,\n\thasBlockGapSupport?: boolean,\n\thasFallbackGapSupport?: boolean,\n\tdisableLayoutStyles: boolean = false,\n\tdisableRootPadding: boolean = false,\n\tstyleOptions: Record< string, boolean > = {}\n): string => {\n\t// These allow opting out of certain sets of styles.\n\tconst options = {\n\t\tblockGap: true,\n\t\tblockStyles: true,\n\t\tlayoutStyles: true,\n\t\tmarginReset: true,\n\t\tpresets: true,\n\t\trootPadding: true,\n\t\tvariationStyles: false,\n\t\t...styleOptions,\n\t};\n\tconst nodesWithStyles = getNodesWithStyles( tree, blockSelectors );\n\tconst nodesWithSettings = getNodesWithSettings( tree, blockSelectors );\n\tconst useRootPaddingAlign = tree?.settings?.useRootPaddingAwareAlignments;\n\tconst { contentSize, wideSize } = tree?.settings?.layout || {};\n\tconst hasBodyStyles =\n\t\toptions.marginReset || options.rootPadding || options.layoutStyles;\n\n\tlet ruleset = '';\n\n\tif ( options.presets && ( contentSize || wideSize ) ) {\n\t\truleset += `${ ROOT_CSS_PROPERTIES_SELECTOR } {`;\n\t\truleset = contentSize\n\t\t\t? ruleset + ` --wp--style--global--content-size: ${ contentSize };`\n\t\t\t: ruleset;\n\t\truleset = wideSize\n\t\t\t? ruleset + ` --wp--style--global--wide-size: ${ wideSize };`\n\t\t\t: ruleset;\n\t\truleset += '}';\n\t}\n\n\tif ( hasBodyStyles ) {\n\t\t/*\n\t\t * Reset default browser margin on the body element.\n\t\t * This is set on the body selector **before** generating the ruleset\n\t\t * from the `theme.json`. This is to ensure that if the `theme.json` declares\n\t\t * `margin` in its `spacing` declaration for the `body` element then these\n\t\t * user-generated values take precedence in the CSS cascade.\n\t\t * @link https://github.com/WordPress/gutenberg/issues/36147.\n\t\t */\n\t\truleset += ':where(body) {margin: 0;';\n\n\t\t// Root padding styles should be output for full templates, patterns and template parts.\n\t\tif ( options.rootPadding && useRootPaddingAlign ) {\n\t\t\t/*\n\t\t\t * These rules reproduce the ones from https://github.com/WordPress/gutenberg/blob/79103f124925d1f457f627e154f52a56228ed5ad/lib/class-wp-theme-json-gutenberg.php#L2508\n\t\t\t * almost exactly, but for the selectors that target block wrappers in the front end. This code only runs in the editor, so it doesn't need those selectors.\n\t\t\t */\n\t\t\truleset += `padding-right: 0; padding-left: 0; padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom) }\n\t\t\t\t.has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }\n\t\t\t\t.has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); }\n\t\t\t\t.has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) { padding-right: 0; padding-left: 0; }\n\t\t\t\t.has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) > .alignfull { margin-left: 0; margin-right: 0;\n\t\t\t\t`;\n\t\t}\n\n\t\truleset += '}';\n\t}\n\n\tif ( options.blockStyles ) {\n\t\tnodesWithStyles.forEach(\n\t\t\t( {\n\t\t\t\tselector,\n\t\t\t\tduotoneSelector,\n\t\t\t\tstyles,\n\t\t\t\tfallbackGapValue,\n\t\t\t\thasLayoutSupport,\n\t\t\t\tfeatureSelectors,\n\t\t\t\tstyleVariationSelectors,\n\t\t\t\tskipSelectorWrapper,\n\t\t\t} ) => {\n\t\t\t\t// Process styles for block support features with custom feature level\n\t\t\t\t// CSS selectors set.\n\t\t\t\tif ( featureSelectors ) {\n\t\t\t\t\tconst featureDeclarations = getFeatureDeclarations(\n\t\t\t\t\t\tfeatureSelectors,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t);\n\n\t\t\t\t\tObject.entries( featureDeclarations ).forEach(\n\t\t\t\t\t\t( [ cssSelector, declarations ] ) => {\n\t\t\t\t\t\t\tif ( declarations.length ) {\n\t\t\t\t\t\t\t\tconst rules = declarations.join( ';' );\n\t\t\t\t\t\t\t\truleset += `:root :where(${ cssSelector }){${ rules };}`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Process duotone styles.\n\t\t\t\tif ( duotoneSelector ) {\n\t\t\t\t\tconst duotoneStyles: any = {};\n\t\t\t\t\tif ( styles?.filter ) {\n\t\t\t\t\t\tduotoneStyles.filter = styles.filter;\n\t\t\t\t\t\tdelete styles.filter;\n\t\t\t\t\t}\n\t\t\t\t\tconst duotoneDeclarations =\n\t\t\t\t\t\tgetStylesDeclarations( duotoneStyles );\n\t\t\t\t\tif ( duotoneDeclarations.length ) {\n\t\t\t\t\t\truleset += `${ duotoneSelector }{${ duotoneDeclarations.join(\n\t\t\t\t\t\t\t';'\n\t\t\t\t\t\t) };}`;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Process blockGap and layout styles.\n\t\t\t\tif (\n\t\t\t\t\t! disableLayoutStyles &&\n\t\t\t\t\t( ROOT_BLOCK_SELECTOR === selector || hasLayoutSupport )\n\t\t\t\t) {\n\t\t\t\t\truleset += getLayoutStyles( {\n\t\t\t\t\t\tstyle: styles,\n\t\t\t\t\t\tselector,\n\t\t\t\t\t\thasBlockGapSupport,\n\t\t\t\t\t\thasFallbackGapSupport,\n\t\t\t\t\t\tfallbackGapValue,\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t// Process the remaining block styles (they use either normal block class or __experimentalSelector).\n\t\t\t\tconst styleDeclarations = getStylesDeclarations(\n\t\t\t\t\tstyles,\n\t\t\t\t\tselector,\n\t\t\t\t\tuseRootPaddingAlign,\n\t\t\t\t\ttree,\n\t\t\t\t\tdisableRootPadding\n\t\t\t\t);\n\t\t\t\tif ( styleDeclarations?.length ) {\n\t\t\t\t\tconst generalSelector = skipSelectorWrapper\n\t\t\t\t\t\t? selector\n\t\t\t\t\t\t: `:root :where(${ selector })`;\n\t\t\t\t\truleset += `${ generalSelector }{${ styleDeclarations.join(\n\t\t\t\t\t\t';'\n\t\t\t\t\t) };}`;\n\t\t\t\t}\n\t\t\t\tif ( styles?.css ) {\n\t\t\t\t\truleset += processCSSNesting(\n\t\t\t\t\t\tstyles.css,\n\t\t\t\t\t\t`:root :where(${ selector })`\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif ( options.variationStyles && styleVariationSelectors ) {\n\t\t\t\t\tObject.entries( styleVariationSelectors ).forEach(\n\t\t\t\t\t\t( [ styleVariationName, styleVariationSelector ] ) => {\n\t\t\t\t\t\t\tconst styleVariations =\n\t\t\t\t\t\t\t\tstyles?.variations?.[ styleVariationName ];\n\t\t\t\t\t\t\tif ( styleVariations ) {\n\t\t\t\t\t\t\t\t// If the block uses any custom selectors for block support, add those first.\n\t\t\t\t\t\t\t\tif ( featureSelectors ) {\n\t\t\t\t\t\t\t\t\tconst featureDeclarations =\n\t\t\t\t\t\t\t\t\t\tgetFeatureDeclarations(\n\t\t\t\t\t\t\t\t\t\t\tfeatureSelectors,\n\t\t\t\t\t\t\t\t\t\t\tstyleVariations\n\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\tObject.entries(\n\t\t\t\t\t\t\t\t\t\tfeatureDeclarations\n\t\t\t\t\t\t\t\t\t).forEach(\n\t\t\t\t\t\t\t\t\t\t( [ baseSelector, declarations ]: [\n\t\t\t\t\t\t\t\t\t\t\tstring,\n\t\t\t\t\t\t\t\t\t\t\tstring[],\n\t\t\t\t\t\t\t\t\t\t] ) => {\n\t\t\t\t\t\t\t\t\t\t\tif ( declarations.length ) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst cssSelector =\n\t\t\t\t\t\t\t\t\t\t\t\t\tconcatFeatureVariationSelectorString(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbaseSelector,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyleVariationSelector as string\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tconst rules =\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeclarations.join( ';' );\n\t\t\t\t\t\t\t\t\t\t\t\truleset += `:root :where(${ cssSelector }){${ rules };}`;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Otherwise add regular selectors.\n\t\t\t\t\t\t\t\tconst styleVariationDeclarations =\n\t\t\t\t\t\t\t\t\tgetStylesDeclarations(\n\t\t\t\t\t\t\t\t\t\tstyleVariations,\n\t\t\t\t\t\t\t\t\t\tstyleVariationSelector as string,\n\t\t\t\t\t\t\t\t\t\tuseRootPaddingAlign,\n\t\t\t\t\t\t\t\t\t\ttree\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tif ( styleVariationDeclarations.length ) {\n\t\t\t\t\t\t\t\t\truleset += `:root :where(${ styleVariationSelector }){${ styleVariationDeclarations.join(\n\t\t\t\t\t\t\t\t\t\t';'\n\t\t\t\t\t\t\t\t\t) };}`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( styleVariations?.css ) {\n\t\t\t\t\t\t\t\t\truleset += processCSSNesting(\n\t\t\t\t\t\t\t\t\t\tstyleVariations.css,\n\t\t\t\t\t\t\t\t\t\t`:root :where(${ styleVariationSelector })`\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Check for pseudo selector in `styles` and handle separately.\n\t\t\t\tconst pseudoSelectorStyles = Object.entries( styles ).filter(\n\t\t\t\t\t( [ key ] ) => key.startsWith( ':' )\n\t\t\t\t);\n\n\t\t\t\tif ( pseudoSelectorStyles?.length ) {\n\t\t\t\t\tpseudoSelectorStyles.forEach(\n\t\t\t\t\t\t( [ pseudoKey, pseudoStyle ] ) => {\n\t\t\t\t\t\t\tconst pseudoDeclarations =\n\t\t\t\t\t\t\t\tgetStylesDeclarations( pseudoStyle );\n\n\t\t\t\t\t\t\tif ( ! pseudoDeclarations?.length ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// `selector` may be provided in a form\n\t\t\t\t\t\t\t// where block level selectors have sub element\n\t\t\t\t\t\t\t// selectors appended to them as a comma separated\n\t\t\t\t\t\t\t// string.\n\t\t\t\t\t\t\t// e.g. `h1 a,h2 a,h3 a,h4 a,h5 a,h6 a`;\n\t\t\t\t\t\t\t// Split and append pseudo selector to create\n\t\t\t\t\t\t\t// the proper rules to target the elements.\n\t\t\t\t\t\t\tconst _selector = selector\n\t\t\t\t\t\t\t\t.split( ',' )\n\t\t\t\t\t\t\t\t.map( ( sel: string ) => sel + pseudoKey )\n\t\t\t\t\t\t\t\t.join( ',' );\n\n\t\t\t\t\t\t\t// As pseudo classes such as :hover, :focus etc. have class-level\n\t\t\t\t\t\t\t// specificity, they must use the `:root :where()` wrapper. This.\n\t\t\t\t\t\t\t// caps the specificity at `0-1-0` to allow proper nesting of variations\n\t\t\t\t\t\t\t// and block type element styles.\n\t\t\t\t\t\t\tconst pseudoRule = `:root :where(${ _selector }){${ pseudoDeclarations.join(\n\t\t\t\t\t\t\t\t';'\n\t\t\t\t\t\t\t) };}`;\n\n\t\t\t\t\t\t\truleset += pseudoRule;\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\tif ( options.layoutStyles ) {\n\t\t/* Add alignment / layout styles */\n\t\truleset =\n\t\t\truleset +\n\t\t\t'.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }';\n\t\truleset =\n\t\t\truleset +\n\t\t\t'.wp-site-blocks > .alignright { float: right; margin-left: 2em; }';\n\t\truleset =\n\t\t\truleset +\n\t\t\t'.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }';\n\t}\n\n\tif ( options.blockGap && hasBlockGapSupport ) {\n\t\t// Use fallback of `0.5em` just in case, however if there is blockGap support, there should nearly always be a real value.\n\t\tconst gapValue =\n\t\t\tgetGapCSSValue( tree?.styles?.spacing?.blockGap ) || '0.5em';\n\t\truleset =\n\t\t\truleset +\n\t\t\t`:root :where(.wp-site-blocks) > * { margin-block-start: ${ gapValue }; margin-block-end: 0; }`;\n\t\truleset =\n\t\t\truleset +\n\t\t\t':root :where(.wp-site-blocks) > :first-child { margin-block-start: 0; }';\n\t\truleset =\n\t\t\truleset +\n\t\t\t':root :where(.wp-site-blocks) > :last-child { margin-block-end: 0; }';\n\t}\n\n\tif ( options.presets ) {\n\t\tnodesWithSettings.forEach( ( { selector, presets } ) => {\n\t\t\tif (\n\t\t\t\tROOT_BLOCK_SELECTOR === selector ||\n\t\t\t\tROOT_CSS_PROPERTIES_SELECTOR === selector\n\t\t\t) {\n\t\t\t\t// Do not add extra specificity for top-level classes.\n\t\t\t\tselector = '';\n\t\t\t}\n\n\t\t\tconst classes = getPresetsClasses( selector, presets );\n\t\t\tif ( classes.length > 0 ) {\n\t\t\t\truleset += classes;\n\t\t\t}\n\t\t} );\n\t}\n\n\treturn ruleset;\n};\n\nexport function generateSvgFilters(\n\ttree: GlobalStylesConfig,\n\tblockSelectors: BlockSelectors\n): string[] {\n\tconst nodesWithSettings = getNodesWithSettings( tree, blockSelectors );\n\treturn nodesWithSettings.flatMap( ( { presets } ) => {\n\t\treturn getPresetsSvgFilters( presets );\n\t} );\n}\n\nconst getSelectorsConfig = ( blockType: BlockType, rootSelector: string ) => {\n\tif (\n\t\tblockType?.selectors &&\n\t\tObject.keys( blockType.selectors ).length > 0\n\t) {\n\t\treturn blockType.selectors;\n\t}\n\n\tconst config: Record< string, string > = {\n\t\troot: rootSelector,\n\t};\n\tObject.entries( BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS ).forEach(\n\t\t( [ featureKey, featureName ] ) => {\n\t\t\tconst featureSelector = getBlockSelector( blockType, featureKey );\n\n\t\t\tif ( featureSelector ) {\n\t\t\t\tconfig[ featureName ] = featureSelector;\n\t\t\t}\n\t\t}\n\t);\n\n\treturn config;\n};\n\nexport const getBlockSelectors = (\n\tblockTypes: BlockType[],\n\tvariationInstanceId?: string\n) => {\n\tconst { getBlockStyles } = select( blocksStore );\n\tconst result: BlockSelectors = {};\n\tblockTypes.forEach( ( blockType ) => {\n\t\tconst name = blockType.name;\n\t\tconst selector = getBlockSelector( blockType );\n\n\t\tif ( ! selector ) {\n\t\t\treturn; // Skip blocks without valid selectors\n\t\t}\n\t\tlet duotoneSelector = getBlockSelector( blockType, 'filter.duotone' );\n\t\t// Keep backwards compatibility for support.color.__experimentalDuotone.\n\t\tif ( ! duotoneSelector ) {\n\t\t\tconst rootSelector = getBlockSelector( blockType );\n\t\t\tconst duotoneSupport = getBlockSupport(\n\t\t\t\tblockType,\n\t\t\t\t'color.__experimentalDuotone',\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tduotoneSelector =\n\t\t\t\tduotoneSupport &&\n\t\t\t\trootSelector &&\n\t\t\t\tscopeSelector( rootSelector, duotoneSupport );\n\t\t}\n\n\t\tconst hasLayoutSupport =\n\t\t\t!! blockType?.supports?.layout ||\n\t\t\t!! blockType?.supports?.__experimentalLayout;\n\t\tconst fallbackGapValue =\n\t\t\t// @ts-expect-error\n\t\t\tblockType?.supports?.spacing?.blockGap?.__experimentalDefault;\n\n\t\tconst blockStyleVariations = getBlockStyles( name );\n\t\tconst styleVariationSelectors: Record< string, string > = {};\n\t\tblockStyleVariations?.forEach( ( variation: BlockStyleVariation ) => {\n\t\t\tconst variationSuffix = variationInstanceId\n\t\t\t\t? `-${ variationInstanceId }`\n\t\t\t\t: '';\n\t\t\tconst variationName = `${ variation.name }${ variationSuffix }`;\n\t\t\tconst styleVariationSelector = getBlockStyleVariationSelector(\n\t\t\t\tvariationName,\n\t\t\t\tselector\n\t\t\t);\n\n\t\t\tstyleVariationSelectors[ variationName ] = styleVariationSelector;\n\t\t} );\n\n\t\t// For each block support feature add any custom selectors.\n\t\tconst featureSelectors = getSelectorsConfig( blockType, selector );\n\n\t\tresult[ name ] = {\n\t\t\tduotoneSelector: duotoneSelector ?? undefined,\n\t\t\tfallbackGapValue,\n\t\t\tfeatureSelectors: Object.keys( featureSelectors ).length\n\t\t\t\t? featureSelectors\n\t\t\t\t: undefined,\n\t\t\thasLayoutSupport,\n\t\t\tname,\n\t\t\tselector,\n\t\t\tstyleVariationSelectors: blockStyleVariations?.length\n\t\t\t\t? styleVariationSelectors\n\t\t\t\t: undefined,\n\t\t};\n\t} );\n\n\treturn result;\n};\n\n/**\n * If there is a separator block whose color is defined in theme.json via background,\n * update the separator color to the same value by using border color.\n *\n * @param config Theme.json configuration file object\n * @return Theme.json configuration file object updated\n */\nfunction updateConfigWithSeparator(\n\tconfig: GlobalStylesConfig\n): GlobalStylesConfig {\n\tconst blocks = config.styles?.blocks;\n\tconst separatorBlock = blocks?.[ 'core/separator' ];\n\tconst needsSeparatorStyleUpdate =\n\t\tseparatorBlock &&\n\t\tseparatorBlock.color?.background &&\n\t\t! separatorBlock.color?.text &&\n\t\t! separatorBlock.border?.color;\n\tif ( needsSeparatorStyleUpdate ) {\n\t\treturn {\n\t\t\t...config,\n\t\t\tstyles: {\n\t\t\t\t...config.styles,\n\t\t\t\tblocks: {\n\t\t\t\t\t...blocks,\n\t\t\t\t\t'core/separator': {\n\t\t\t\t\t\t...separatorBlock,\n\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t...separatorBlock.color,\n\t\t\t\t\t\t\ttext: separatorBlock.color?.background,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\treturn config;\n}\n\nexport function processCSSNesting( css: string, blockSelector: string ) {\n\tlet processedCSS = '';\n\n\tif ( ! css || css.trim() === '' ) {\n\t\treturn processedCSS;\n\t}\n\n\t// Split CSS nested rules.\n\tconst parts = css.split( '&' );\n\tparts.forEach( ( part: string ) => {\n\t\tif ( ! part || part.trim() === '' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isRootCss = ! part.includes( '{' );\n\t\tif ( isRootCss ) {\n\t\t\t// If the part doesn't contain braces, it applies to the root level.\n\t\t\tprocessedCSS += `:root :where(${ blockSelector }){${ part.trim() }}`;\n\t\t} else {\n\t\t\t// If the part contains braces, it's a nested CSS rule.\n\t\t\tconst splitPart = part.replace( '}', '' ).split( '{' );\n\t\t\tif ( splitPart.length !== 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst [ nestedSelector, cssValue ] = splitPart;\n\n\t\t\t// Handle pseudo elements such as ::before, ::after, etc. Regex will also\n\t\t\t// capture any leading combinator such as >, +, or ~, as well as spaces.\n\t\t\t// This allows pseudo elements as descendants e.g. `.parent ::before`.\n\t\t\tconst matches = nestedSelector.match( /([>+~\\s]*::[a-zA-Z-]+)/ );\n\t\t\tconst pseudoPart = matches ? matches[ 1 ] : '';\n\t\t\tconst withoutPseudoElement = matches\n\t\t\t\t? nestedSelector.replace( pseudoPart, '' ).trim()\n\t\t\t\t: nestedSelector.trim();\n\n\t\t\tlet combinedSelector;\n\t\t\tif ( withoutPseudoElement === '' ) {\n\t\t\t\t// Only contained a pseudo element to use the block selector to form\n\t\t\t\t// the final `:root :where()` selector.\n\t\t\t\tcombinedSelector = blockSelector;\n\t\t\t} else {\n\t\t\t\t// If the nested selector is a descendant of the block scope it with the\n\t\t\t\t// block selector. Otherwise append it to the block selector.\n\t\t\t\tcombinedSelector = nestedSelector.startsWith( ' ' )\n\t\t\t\t\t? scopeSelector( blockSelector, withoutPseudoElement )\n\t\t\t\t\t: appendToSelector( blockSelector, withoutPseudoElement );\n\t\t\t}\n\n\t\t\t// Build final rule, re-adding any pseudo element outside the `:where()`\n\t\t\t// to maintain valid CSS selector.\n\t\t\tprocessedCSS += `:root :where(${ combinedSelector })${ pseudoPart }{${ cssValue.trim() }}`;\n\t\t}\n\t} );\n\treturn processedCSS;\n}\n\nexport interface GlobalStylesRenderOptions {\n\thasBlockGapSupport?: boolean;\n\thasFallbackGapSupport?: boolean;\n\tdisableLayoutStyles?: boolean;\n\tdisableRootPadding?: boolean;\n\tgetBlockStyles?: ( blockName: string ) => any[];\n\tstyleOptions?: Record< string, boolean >;\n}\n\n/**\n * Returns the global styles output based on the current state of global styles config loaded in the editor context.\n *\n * @param config     Global styles configuration\n * @param blockTypes Array of block types from WordPress blocks store\n * @param options    Options for rendering global styles\n * @return Array of stylesheets and settings\n */\nexport function generateGlobalStyles(\n\tconfig: GlobalStylesConfig | undefined = {},\n\tblockTypes: any[] = [],\n\toptions: GlobalStylesRenderOptions = {}\n): [ any[], any ] {\n\tconst {\n\t\thasBlockGapSupport: hasBlockGapSupportOption,\n\t\thasFallbackGapSupport: hasFallbackGapSupportOption,\n\t\tdisableLayoutStyles = false,\n\t\tdisableRootPadding = false,\n\t\tstyleOptions = {},\n\t} = options;\n\n\t// Use provided block types or fall back to getBlockTypes()\n\tconst blocks = blockTypes.length > 0 ? blockTypes : getBlockTypes();\n\n\tconst blockGap = getSetting( config, 'spacing.blockGap' );\n\tconst hasBlockGapSupport = hasBlockGapSupportOption ?? blockGap !== null;\n\tconst hasFallbackGapSupport =\n\t\thasFallbackGapSupportOption ?? ! hasBlockGapSupport;\n\n\tif ( ! config?.styles || ! config?.settings ) {\n\t\treturn [ [], {} ];\n\t}\n\tconst updatedConfig = updateConfigWithSeparator( config );\n\tconst blockSelectors = getBlockSelectors( blocks );\n\tconst customProperties = generateCustomProperties(\n\t\tupdatedConfig,\n\t\tblockSelectors\n\t);\n\tconst globalStyles = transformToStyles(\n\t\tupdatedConfig,\n\t\tblockSelectors,\n\t\thasBlockGapSupport,\n\t\thasFallbackGapSupport,\n\t\tdisableLayoutStyles,\n\t\tdisableRootPadding,\n\t\tstyleOptions\n\t);\n\tconst svgs = generateSvgFilters( updatedConfig, blockSelectors );\n\tconst styles = [\n\t\t{\n\t\t\tcss: customProperties,\n\t\t\tisGlobalStyles: true,\n\t\t},\n\t\t{\n\t\t\tcss: globalStyles,\n\t\t\tisGlobalStyles: true,\n\t\t},\n\t\t// Load custom CSS in own stylesheet so that any invalid CSS entered in the input won't break all the global styles in the editor.\n\t\t{\n\t\t\tcss: updatedConfig?.styles?.css ?? '',\n\t\t\tisGlobalStyles: true,\n\t\t},\n\t\t{\n\t\t\tassets: svgs,\n\t\t\t__unstableType: 'svg',\n\t\t\tisGlobalStyles: true,\n\t\t},\n\t];\n\n\t// Loop through the blocks to check if there are custom CSS values.\n\t// If there are, get the block selector and push the selector together with\n\t// the CSS value to the 'stylesheets' array.\n\tblocks.forEach( ( blockType: BlockType ) => {\n\t\tconst blockStyles = updatedConfig?.styles?.blocks?.[ blockType.name ];\n\t\tif ( blockStyles?.css ) {\n\t\t\tconst selector = blockSelectors[ blockType.name ].selector;\n\t\t\tstyles.push( {\n\t\t\t\tcss: processCSSNesting( blockStyles.css, selector ),\n\t\t\t\tisGlobalStyles: true,\n\t\t\t} );\n\t\t}\n\t} );\n\n\treturn [ styles, updatedConfig.settings ];\n}\n", "/**\n * Internal dependencies\n */\nimport type { BlockType } from '../types';\nimport { scopeSelector } from '../utils/common';\nimport { getValueFromObjectPath } from '../utils/object';\n\n/**\n * Determine the CSS selector for the block type and target provided, returning\n * it if available.\n *\n * @param blockType        The block's type.\n * @param target           The desired selector's target e.g. `root`, delimited string, or array path.\n * @param options          Options object.\n * @param options.fallback Whether or not to fallback to broader selector.\n *\n * @return The CSS selector or `null` if no selector available.\n */\nexport function getBlockSelector(\n\tblockType: BlockType,\n\ttarget: string = 'root',\n\toptions: { fallback?: boolean } = {}\n): string | null {\n\tif ( ! target ) {\n\t\treturn null;\n\t}\n\n\tconst { fallback = false } = options;\n\tconst { name, selectors, supports } = blockType;\n\n\tconst hasSelectors = selectors && Object.keys( selectors ).length > 0;\n\tconst path = Array.isArray( target ) ? target.join( '.' ) : target;\n\n\t// Root selector.\n\n\t// Calculated before returning as it can be used as a fallback for feature\n\t// selectors later on.\n\tlet rootSelector: string | null = null;\n\n\tif ( hasSelectors && selectors.root ) {\n\t\t// Use the selectors API if available.\n\t\trootSelector = selectors?.root as string;\n\t} else if ( supports?.__experimentalSelector ) {\n\t\t// Use the old experimental selector supports property if set.\n\t\trootSelector = supports.__experimentalSelector;\n\t} else {\n\t\t// If no root selector found, generate default block class selector.\n\t\trootSelector =\n\t\t\t'.wp-block-' + name.replace( 'core/', '' ).replace( '/', '-' );\n\t}\n\n\t// Return selector if it's the root target we are looking for.\n\tif ( path === 'root' ) {\n\t\treturn rootSelector;\n\t}\n\n\t// If target is not `root` or `duotone` we have a feature or subfeature\n\t// as the target. If the target is a string convert to an array.\n\tconst pathArray = Array.isArray( target ) ? target : target.split( '.' );\n\n\t// Feature selectors ( may fallback to root selector );\n\tif ( pathArray.length === 1 ) {\n\t\tconst fallbackSelector = fallback ? rootSelector : null;\n\n\t\t// Prefer the selectors API if available.\n\t\tif ( hasSelectors ) {\n\t\t\t// Get selector from either `feature.root` or shorthand path.\n\t\t\tconst featureSelector =\n\t\t\t\t( getValueFromObjectPath(\n\t\t\t\t\tselectors,\n\t\t\t\t\t`${ path }.root`,\n\t\t\t\t\tnull\n\t\t\t\t) as string ) ||\n\t\t\t\t( getValueFromObjectPath( selectors, path, null ) as string );\n\n\t\t\t// Return feature selector if found or any available fallback.\n\t\t\treturn featureSelector || fallbackSelector;\n\t\t}\n\n\t\t// Try getting old experimental supports selector value.\n\t\tconst featureSelector = supports\n\t\t\t? ( getValueFromObjectPath(\n\t\t\t\t\tsupports,\n\t\t\t\t\t`${ path }.__experimentalSelector`,\n\t\t\t\t\tnull\n\t\t\t  ) as string | undefined )\n\t\t\t: undefined;\n\n\t\t// If nothing to work with, provide fallback selector if available.\n\t\tif ( ! featureSelector ) {\n\t\t\treturn fallbackSelector;\n\t\t}\n\n\t\t// Scope the feature selector by the block's root selector.\n\t\treturn scopeSelector( rootSelector, featureSelector );\n\t}\n\n\t// Subfeature selector.\n\t// This may fallback either to parent feature or root selector.\n\tlet subfeatureSelector;\n\n\t// Use selectors API if available.\n\tif ( hasSelectors ) {\n\t\tsubfeatureSelector = getValueFromObjectPath( selectors, path, null );\n\t}\n\n\t// Only return if we have a subfeature selector.\n\tif ( subfeatureSelector ) {\n\t\treturn subfeatureSelector as string;\n\t}\n\n\t// To this point we don't have a subfeature selector. If a fallback has been\n\t// requested, remove subfeature from target path and return results of a\n\t// call for the parent feature's selector.\n\tif ( fallback ) {\n\t\treturn getBlockSelector( blockType, pathArray[ 0 ], options );\n\t}\n\n\t// We tried.\n\treturn null;\n}\n", "var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return\"string\"==typeof r?r.length>0:\"number\"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},e=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},u=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},a=function(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}},o=function(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}},i=/^#([0-9a-f]{3,8})$/i,s=function(r){var t=r.toString(16);return t.length<2?\"0\"+t:t},h=function(r){var t=r.r,n=r.g,e=r.b,u=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e),i=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0;return{h:60*(i<0?i+6:i),s:a?o/a*100:0,v:a/255*100,a:u}},b=function(r){var t=r.h,n=r.s,e=r.v,u=r.a;t=t/360*6,n/=100,e/=100;var a=Math.floor(t),o=e*(1-n),i=e*(1-(t-a)*n),s=e*(1-(1-t+a)*n),h=a%6;return{r:255*[e,i,o,o,s,e][h],g:255*[s,e,e,i,o,o][h],b:255*[o,o,s,e,e,i][h],a:u}},g=function(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}},d=function(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}},f=function(r){return b((n=(t=r).s,{h:t.h,s:(n*=((e=t.l)<50?e:100-e)/100)>0?2*n/(e+n)*100:0,v:e+n,a:t.a}));var t,n,e},c=function(r){return{h:(t=h(r)).h,s:(u=(200-(n=t.s))*(e=t.v)/100)>0&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:t.a};var t,n,e,u},l=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,p=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s+([+-]?\\d*\\.?\\d+)%\\s+([+-]?\\d*\\.?\\d+)%\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,v=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,m=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},\"hex\"],[function(r){var t=v.exec(r)||m.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:a({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:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},\"rgb\"],[function(t){var n=l.exec(t)||p.exec(t);if(!n)return null;var e,u,a=g({h:(e=n[1],u=n[2],void 0===u&&(u=\"deg\"),Number(e)*(r[u]||1)),s:Number(n[3]),l:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return f(a)},\"hsl\"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,o=r.a,i=void 0===o?1:o;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(i)}):null},\"rgb\"],[function(r){var n=r.h,e=r.s,u=r.l,a=r.a,o=void 0===a?1:a;if(!t(n)||!t(e)||!t(u))return null;var i=g({h:Number(n),s:Number(e),l:Number(u),a:Number(o)});return f(i)},\"hsl\"],[function(r){var n=r.h,a=r.s,o=r.v,i=r.a,s=void 0===i?1:i;if(!t(n)||!t(a)||!t(o))return null;var h=function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(s)});return b(h)},\"hsv\"]]},N=function(r,t){for(var n=0;n<t.length;n++){var e=t[n][0](r);if(e)return[e,t[n][1]]}return[null,void 0]},x=function(r){return\"string\"==typeof r?N(r.trim(),y.string):\"object\"==typeof r&&null!==r?N(r,y.object):[null,void 0]},I=function(r){return x(r)[1]},M=function(r,t){var n=c(r);return{h:n.h,s:e(n.s+100*t,0,100),l:n.l,a:n.a}},H=function(r){return(299*r.r+587*r.g+114*r.b)/1e3/255},$=function(r,t){var n=c(r);return{h:n.h,s:n.s,l:e(n.l+100*t,0,100),a:n.a}},j=function(){function r(r){this.parsed=x(r)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return r.prototype.isValid=function(){return null!==this.parsed},r.prototype.brightness=function(){return n(H(this.rgba),2)},r.prototype.isDark=function(){return H(this.rgba)<.5},r.prototype.isLight=function(){return H(this.rgba)>=.5},r.prototype.toHex=function(){return r=o(this.rgba),t=r.r,e=r.g,u=r.b,i=(a=r.a)<1?s(n(255*a)):\"\",\"#\"+s(t)+s(e)+s(u)+i;var r,t,e,u,a,i},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return r=o(this.rgba),t=r.r,n=r.g,e=r.b,(u=r.a)<1?\"rgba(\"+t+\", \"+n+\", \"+e+\", \"+u+\")\":\"rgb(\"+t+\", \"+n+\", \"+e+\")\";var r,t,n,e,u},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return r=d(c(this.rgba)),t=r.h,n=r.s,e=r.l,(u=r.a)<1?\"hsla(\"+t+\", \"+n+\"%, \"+e+\"%, \"+u+\")\":\"hsl(\"+t+\", \"+n+\"%, \"+e+\"%)\";var r,t,n,e,u},r.prototype.toHsv=function(){return r=h(this.rgba),{h:n(r.h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,r))},r.prototype.desaturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,-r))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return void 0===r&&(r=.1),w($(this.rgba,r))},r.prototype.darken=function(r){return void 0===r&&(r=.1),w($(this.rgba,-r))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return\"number\"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return\"number\"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof j?r:new j(r)},S=[],k=function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(j,y),S.push(r))})},E=function(){return new j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})};export{j as Colord,w as colord,k as extend,I as getFormat,E as random};\n", "/**\n * External dependencies\n */\nimport { colord } from 'colord';\n\n/**\n * Convert a list of colors to an object of R, G, and B values.\n *\n * @param colors Array of RBG color strings.\n *\n * @return R, G, and B values.\n */\nexport function getValuesFromColors( colors: string[] = [] ) {\n\tconst values: { r: number[]; g: number[]; b: number[]; a: number[] } = {\n\t\tr: [],\n\t\tg: [],\n\t\tb: [],\n\t\ta: [],\n\t};\n\n\tcolors.forEach( ( color ) => {\n\t\tconst rgbColor = colord( color ).toRgb();\n\t\tvalues.r.push( rgbColor.r / 255 );\n\t\tvalues.g.push( rgbColor.g / 255 );\n\t\tvalues.b.push( rgbColor.b / 255 );\n\t\tvalues.a.push( rgbColor.a );\n\t} );\n\n\treturn values;\n}\n\n/**\n * Stylesheet for disabling a global styles duotone filter.\n *\n * @param selector Selector to disable the filter for.\n *\n * @return Filter none style.\n */\nexport function getDuotoneUnsetStylesheet( selector: string ) {\n\treturn `${ selector }{filter:none}`;\n}\n\n/**\n * SVG and stylesheet needed for rendering the duotone filter.\n *\n * @param {string} selector Selector to apply the filter to.\n * @param {string} id       Unique id for this duotone filter.\n *\n * @return {string} Duotone filter style.\n */\nexport function getDuotoneStylesheet( selector: string, id: string ) {\n\treturn `${ selector }{filter:url(#${ id })}`;\n}\n\n/**\n * The SVG part of the duotone filter.\n *\n * @param id     Unique id for this duotone filter.\n * @param colors Color strings from dark to light.\n *\n * @return Duotone SVG.\n */\nexport function getDuotoneFilter( id: string, colors: string[] ) {\n\tconst values = getValuesFromColors( colors );\n\treturn `\n<svg\n\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\tviewBox=\"0 0 0 0\"\n\twidth=\"0\"\n\theight=\"0\"\n\tfocusable=\"false\"\n\trole=\"none\"\n\taria-hidden=\"true\"\n\tstyle=\"visibility: hidden; position: absolute; left: -9999px; overflow: hidden;\"\n>\n\t<defs>\n\t\t<filter id=\"${ id }\">\n\t\t\t<!--\n\t\t\t\tUse sRGB instead of linearRGB so transparency looks correct.\n\t\t\t\tUse perceptual brightness to convert to grayscale.\n\t\t\t-->\n\t\t\t<feColorMatrix color-interpolation-filters=\"sRGB\" type=\"matrix\" values=\" .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 .299 .587 .114 0 0 \"></feColorMatrix>\n\t\t\t<!-- Use sRGB instead of linearRGB to be consistent with how CSS gradients work. -->\n\t\t\t<feComponentTransfer color-interpolation-filters=\"sRGB\">\n\t\t\t\t<feFuncR type=\"table\" tableValues=\"${ values.r.join( ' ' ) }\"></feFuncR>\n\t\t\t\t<feFuncG type=\"table\" tableValues=\"${ values.g.join( ' ' ) }\"></feFuncG>\n\t\t\t\t<feFuncB type=\"table\" tableValues=\"${ values.b.join( ' ' ) }\"></feFuncB>\n\t\t\t\t<feFuncA type=\"table\" tableValues=\"${ values.a.join( ' ' ) }\"></feFuncA>\n\t\t\t</feComponentTransfer>\n\t\t\t<!-- Re-mask the image with the original transparency since the feColorMatrix above loses that information. -->\n\t\t\t<feComposite in2=\"SourceGraphic\" operator=\"in\"></feComposite>\n\t\t</filter>\n\t</defs>\n</svg>`;\n}\n", "/**\n * Converts a string to kebab-case.\n * Matches WordPress kebabCase behavior.\n *\n * @param str The string to convert\n * @return The kebab-cased string\n */\nexport function kebabCase( str: string ): string {\n\treturn str\n\t\t.replace( /([a-z])([A-Z])/g, '$1-$2' ) // camelCase to kebab-case\n\t\t.replace( /([0-9])([a-zA-Z])/g, '$1-$2' ) // number followed by letter\n\t\t.replace( /([a-zA-Z])([0-9])/g, '$1-$2' ) // letter followed by number\n\t\t.replace( /[\\s_]+/g, '-' ) // spaces and underscores to hyphens\n\t\t.toLowerCase();\n}\n", "export function getSpacingPresetCssVar( value?: string ) {\n\tif ( ! value ) {\n\t\treturn;\n\t}\n\n\tconst slug = value.match( /var:preset\\|spacing\\|(.+)/ );\n\n\tif ( ! slug ) {\n\t\treturn value;\n\t}\n\n\treturn `var(--wp--preset--spacing--${ slug[ 1 ] })`;\n}\n", "/**\n * Internal dependencies\n */\nimport { getSpacingPresetCssVar } from './spacing';\n\n/**\n * Returns a BoxControl object value from a given blockGap style value.\n * The string check is for backwards compatibility before Gutenberg supported\n * split gap values (row and column) and the value was a string n + unit.\n *\n * @param blockGapValue A block gap string or axial object value, e.g., '10px' or { top: '10px', left: '10px'}.\n * @return A value to pass to the BoxControl component.\n */\nexport function getGapBoxControlValueFromStyle(\n\tblockGapValue?: string | { top: string; left: string }\n) {\n\tif ( ! blockGapValue ) {\n\t\treturn null;\n\t}\n\n\tconst isValueString = typeof blockGapValue === 'string';\n\treturn {\n\t\ttop: isValueString ? blockGapValue : blockGapValue?.top,\n\t\tleft: isValueString ? blockGapValue : blockGapValue?.left,\n\t};\n}\n\n/**\n * Returns a CSS value for the `gap` property from a given blockGap style.\n *\n * @param blockGapValue A block gap string or axial object value, e.g., '10px' or { top: '10px', left: '10px'}.\n * @param defaultValue  A default gap value.\n * @return The concatenated gap value (row and column).\n */\nexport function getGapCSSValue(\n\tblockGapValue?:\n\t\t| string\n\t\t| {\n\t\t\t\ttop: string;\n\t\t\t\tleft: string;\n\t\t  },\n\tdefaultValue: string = '0'\n) {\n\tconst blockGapBoxControlValue =\n\t\tgetGapBoxControlValueFromStyle( blockGapValue );\n\tif ( ! blockGapBoxControlValue ) {\n\t\treturn null;\n\t}\n\n\tconst row =\n\t\tgetSpacingPresetCssVar( blockGapBoxControlValue?.top ) || defaultValue;\n\tconst column =\n\t\tgetSpacingPresetCssVar( blockGapBoxControlValue?.left ) || defaultValue;\n\n\treturn row === column ? row : `${ row } ${ column }`;\n}\n", "/**\n * Internal dependencies\n */\nimport type { BackgroundStyle } from '../types';\n\nexport const BACKGROUND_BLOCK_DEFAULT_VALUES = {\n\tbackgroundSize: 'cover',\n\tbackgroundPosition: '50% 50%', // used only when backgroundSize is 'contain'.\n};\n\nexport function setBackgroundStyleDefaults( backgroundStyle: BackgroundStyle ) {\n\tif (\n\t\t! backgroundStyle ||\n\t\t// @ts-expect-error\n\t\t! backgroundStyle?.backgroundImage?.url\n\t) {\n\t\treturn;\n\t}\n\n\tlet backgroundStylesWithDefaults;\n\n\t// Set block background defaults.\n\tif ( ! backgroundStyle?.backgroundSize ) {\n\t\tbackgroundStylesWithDefaults = {\n\t\t\tbackgroundSize: BACKGROUND_BLOCK_DEFAULT_VALUES.backgroundSize,\n\t\t};\n\t}\n\n\tif (\n\t\t'contain' === backgroundStyle?.backgroundSize &&\n\t\t! backgroundStyle?.backgroundPosition\n\t) {\n\t\tbackgroundStylesWithDefaults = {\n\t\t\tbackgroundPosition:\n\t\t\t\tBACKGROUND_BLOCK_DEFAULT_VALUES.backgroundPosition,\n\t\t};\n\t}\n\treturn backgroundStylesWithDefaults;\n}\n", "// Layout definitions keyed by layout type.\n// Provides a common definition of slugs, classnames, base styles, and spacing styles for each layout type.\n// If making changes or additions to layout definitions, be sure to update the corresponding PHP definitions in\n// `block-supports/layout.php` so that the server-side and client-side definitions match.\nexport const LAYOUT_DEFINITIONS = {\n\tdefault: {\n\t\tname: 'default',\n\t\tslug: 'flow',\n\t\tclassName: 'is-layout-flow',\n\t\tbaseStyles: [\n\t\t\t{\n\t\t\t\tselector: ' > .alignleft',\n\t\t\t\trules: {\n\t\t\t\t\tfloat: 'left',\n\t\t\t\t\t'margin-inline-start': '0',\n\t\t\t\t\t'margin-inline-end': '2em',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tselector: ' > .alignright',\n\t\t\t\trules: {\n\t\t\t\t\tfloat: 'right',\n\t\t\t\t\t'margin-inline-start': '2em',\n\t\t\t\t\t'margin-inline-end': '0',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tselector: ' > .aligncenter',\n\t\t\t\trules: {\n\t\t\t\t\t'margin-left': 'auto !important',\n\t\t\t\t\t'margin-right': 'auto !important',\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tspacingStyles: [\n\t\t\t{\n\t\t\t\tselector: ' > :first-child',\n\t\t\t\trules: {\n\t\t\t\t\t'margin-block-start': '0',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tselector: ' > :last-child',\n\t\t\t\trules: {\n\t\t\t\t\t'margin-block-end': '0',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tselector: ' > *',\n\t\t\t\trules: {\n\t\t\t\t\t'margin-block-start': null,\n\t\t\t\t\t'margin-block-end': '0',\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\tconstrained: {\n\t\tname: 'constrained',\n\t\tslug: 'constrained',\n\t\tclassName: 'is-layout-constrained',\n\t\tbaseStyles: [\n\t\t\t{\n\t\t\t\tselector: ' > .alignleft',\n\t\t\t\trules: {\n\t\t\t\t\tfloat: 'left',\n\t\t\t\t\t'margin-inline-start': '0',\n\t\t\t\t\t'margin-inline-end': '2em',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tselector: ' > .alignright',\n\t\t\t\trules: {\n\t\t\t\t\tfloat: 'right',\n\t\t\t\t\t'margin-inline-start': '2em',\n\t\t\t\t\t'margin-inline-end': '0',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tselector: ' > .aligncenter',\n\t\t\t\trules: {\n\t\t\t\t\t'margin-left': 'auto !important',\n\t\t\t\t\t'margin-right': 'auto !important',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tselector:\n\t\t\t\t\t' > :where(:not(.alignleft):not(.alignright):not(.alignfull))',\n\t\t\t\trules: {\n\t\t\t\t\t'max-width': 'var(--wp--style--global--content-size)',\n\t\t\t\t\t'margin-left': 'auto !important',\n\t\t\t\t\t'margin-right': 'auto !important',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tselector: ' > .alignwide',\n\t\t\t\trules: {\n\t\t\t\t\t'max-width': 'var(--wp--style--global--wide-size)',\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tspacingStyles: [\n\t\t\t{\n\t\t\t\tselector: ' > :first-child',\n\t\t\t\trules: {\n\t\t\t\t\t'margin-block-start': '0',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tselector: ' > :last-child',\n\t\t\t\trules: {\n\t\t\t\t\t'margin-block-end': '0',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tselector: ' > *',\n\t\t\t\trules: {\n\t\t\t\t\t'margin-block-start': null,\n\t\t\t\t\t'margin-block-end': '0',\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\tflex: {\n\t\tname: 'flex',\n\t\tslug: 'flex',\n\t\tclassName: 'is-layout-flex',\n\t\tdisplayMode: 'flex',\n\t\tbaseStyles: [\n\t\t\t{\n\t\t\t\tselector: '',\n\t\t\t\trules: {\n\t\t\t\t\t'flex-wrap': 'wrap',\n\t\t\t\t\t'align-items': 'center',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tselector: ' > :is(*, div)', // :is(*, div) instead of just * increases the specificity by 001.\n\t\t\t\trules: {\n\t\t\t\t\tmargin: '0',\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tspacingStyles: [\n\t\t\t{\n\t\t\t\tselector: '',\n\t\t\t\trules: {\n\t\t\t\t\tgap: null,\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\tgrid: {\n\t\tname: 'grid',\n\t\tslug: 'grid',\n\t\tclassName: 'is-layout-grid',\n\t\tdisplayMode: 'grid',\n\t\tbaseStyles: [\n\t\t\t{\n\t\t\t\tselector: ' > :is(*, div)', // :is(*, div) instead of just * increases the specificity by 001.\n\t\t\t\trules: {\n\t\t\t\t\tmargin: '0',\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tspacingStyles: [\n\t\t\t{\n\t\t\t\tselector: '',\n\t\t\t\trules: {\n\t\t\t\t\tgap: null,\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n};\n", "/**\n * External dependencies\n */\nimport type { ReactNode } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport type { GlobalStylesConfig } from '@wordpress/global-styles-engine';\nimport { mergeGlobalStyles } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { GlobalStylesContext } from './context';\n\ninterface GlobalStylesProviderProps {\n\tchildren: ReactNode;\n\tvalue: GlobalStylesConfig;\n\tbaseValue: GlobalStylesConfig;\n\tonChange: ( newValue: GlobalStylesConfig ) => void;\n\tfontLibraryEnabled?: boolean;\n}\n\nexport function GlobalStylesProvider( {\n\tchildren,\n\tvalue,\n\tbaseValue,\n\tonChange,\n\tfontLibraryEnabled,\n}: GlobalStylesProviderProps ) {\n\t// Compute merged with memoization since merging can be expensive\n\tconst merged = useMemo( () => {\n\t\treturn mergeGlobalStyles( baseValue, value );\n\t}, [ baseValue, value ] );\n\n\tconst contextValue = useMemo(\n\t\t() => ( {\n\t\t\tuser: value,\n\t\t\tbase: baseValue,\n\t\t\tmerged,\n\t\t\tonChange,\n\t\t\tfontLibraryEnabled,\n\t\t} ),\n\t\t[ value, baseValue, merged, onChange, fontLibraryEnabled ]\n\t);\n\n\treturn (\n\t\t<GlobalStylesContext.Provider value={ contextValue }>\n\t\t\t{ children }\n\t\t</GlobalStylesContext.Provider>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { createContext } from '@wordpress/element';\nimport type { GlobalStylesConfig } from '@wordpress/global-styles-engine';\n\nexport interface GlobalStylesContextType {\n\tuser: GlobalStylesConfig;\n\tbase: GlobalStylesConfig;\n\tmerged: GlobalStylesConfig;\n\tonChange: ( newValue: GlobalStylesConfig ) => void;\n\tfontLibraryEnabled?: boolean;\n}\n\nexport const GlobalStylesContext = createContext< GlobalStylesContextType >( {\n\tuser: { styles: {}, settings: {} },\n\tbase: { styles: {}, settings: {} },\n\tmerged: { styles: {}, settings: {} },\n\tonChange: () => {},\n\tfontLibraryEnabled: false,\n} );\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalHStack as HStack,\n\t__experimentalSpacer as Spacer,\n\t__experimentalVStack as VStack,\n\tFlexItem,\n\tCardBody,\n\tCard,\n\tCardDivider,\n\tCardMedia,\n} from '@wordpress/components';\nimport { isRTL, __ } from '@wordpress/i18n';\nimport { chevronLeft, chevronRight } from '@wordpress/icons';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { IconWithCurrentColor } from './icon-with-current-color';\nimport { NavigationButtonAsItem } from './navigation-button';\nimport RootMenu from './root-menu';\nimport PreviewStyles from './preview-styles';\n\nfunction ScreenRoot() {\n\tconst hasVariations = useSelect( ( select ) => {\n\t\tconst { __experimentalGetCurrentThemeGlobalStylesVariations } =\n\t\t\tselect( coreStore );\n\t\treturn !! __experimentalGetCurrentThemeGlobalStylesVariations()?.length;\n\t}, [] );\n\n\treturn (\n\t\t<Card\n\t\t\tsize=\"small\"\n\t\t\tisBorderless\n\t\t\tclassName=\"global-styles-ui-screen-root\"\n\t\t\tisRounded={ false }\n\t\t>\n\t\t\t<CardBody>\n\t\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t\t<Card className=\"global-styles-ui-screen-root__active-style-tile\">\n\t\t\t\t\t\t<CardMedia className=\"global-styles-ui-screen-root__active-style-tile-preview\">\n\t\t\t\t\t\t\t<PreviewStyles />\n\t\t\t\t\t\t</CardMedia>\n\t\t\t\t\t</Card>\n\t\t\t\t\t{ hasVariations && (\n\t\t\t\t\t\t<ItemGroup>\n\t\t\t\t\t\t\t<NavigationButtonAsItem path=\"/variations\">\n\t\t\t\t\t\t\t\t<HStack justify=\"space-between\">\n\t\t\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Browse styles' ) }\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t<IconWithCurrentColor\n\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\tisRTL() ? chevronLeft : chevronRight\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t</NavigationButtonAsItem>\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t) }\n\t\t\t\t\t<RootMenu />\n\t\t\t\t</VStack>\n\t\t\t</CardBody>\n\n\t\t\t<CardDivider />\n\n\t\t\t<CardBody>\n\t\t\t\t<Spacer\n\t\t\t\t\tas=\"p\"\n\t\t\t\t\tpaddingTop={ 2 }\n\t\t\t\t\tpaddingX=\"13px\"\n\t\t\t\t\tmarginBottom={ 4 }\n\t\t\t\t>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Customize the appearance of specific blocks for the whole site.'\n\t\t\t\t\t) }\n\t\t\t\t</Spacer>\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t<NavigationButtonAsItem path=\"/blocks\">\n\t\t\t\t\t\t<HStack justify=\"space-between\">\n\t\t\t\t\t\t\t<FlexItem>{ __( 'Blocks' ) }</FlexItem>\n\t\t\t\t\t\t\t<IconWithCurrentColor\n\t\t\t\t\t\t\t\ticon={ isRTL() ? chevronLeft : chevronRight }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t</NavigationButtonAsItem>\n\t\t\t\t</ItemGroup>\n\t\t\t</CardBody>\n\t\t</Card>\n\t);\n}\n\nexport default ScreenRoot;\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { Icon } from '@wordpress/icons';\n\ninterface IconWithCurrentColorProps {\n\ticon: any;\n\tclassName?: string;\n\tsize?: number;\n\t[ key: string ]: any;\n}\n\nexport function IconWithCurrentColor( {\n\tclassName,\n\t...props\n}: IconWithCurrentColorProps ) {\n\treturn (\n\t\t<Icon\n\t\t\tclassName={ clsx(\n\t\t\t\tclassName,\n\t\t\t\t'global-styles-ui-icon-with-current-color'\n\t\t\t) }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\tNavigator,\n\t__experimentalItem as Item,\n\tFlexItem,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { IconWithCurrentColor } from './icon-with-current-color';\n\ninterface GenericNavigationButtonProps {\n\ticon?: any;\n\tchildren: React.ReactNode;\n\t[ key: string ]: any;\n}\n\nfunction GenericNavigationButton( {\n\ticon,\n\tchildren,\n\t...props\n}: GenericNavigationButtonProps ) {\n\treturn (\n\t\t<Item { ...props }>\n\t\t\t{ icon && (\n\t\t\t\t<HStack justify=\"flex-start\">\n\t\t\t\t\t<IconWithCurrentColor icon={ icon } size={ 24 } />\n\t\t\t\t\t<FlexItem>{ children }</FlexItem>\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t\t{ ! icon && children }\n\t\t</Item>\n\t);\n}\n\ninterface NavigationButtonProps {\n\tpath: string;\n\ticon?: any;\n\tchildren: React.ReactNode;\n\t[ key: string ]: any;\n}\n\nexport function NavigationButtonAsItem( props: NavigationButtonProps ) {\n\treturn <Navigator.Button as={ GenericNavigationButton } { ...props } />;\n}\n\nexport function NavigationBackButtonAsItem( props: NavigationButtonProps ) {\n\treturn <Navigator.BackButton as={ GenericNavigationButton } { ...props } />;\n}\n", "/**\n * WordPress dependencies\n */\nimport { __experimentalItemGroup as ItemGroup } from '@wordpress/components';\nimport {\n\tbackground,\n\ttypography,\n\tcolor,\n\tlayout,\n\tshadow as shadowIcon,\n} from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\n// @ts-expect-error: Not typed yet.\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport type { GlobalStylesSettings } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { NavigationButtonAsItem } from './navigation-button';\nimport { useSetting } from './hooks';\nimport { unlock } from './lock-unlock';\n\nconst {\n\tuseHasDimensionsPanel,\n\tuseHasTypographyPanel,\n\tuseHasColorPanel,\n\tuseSettingsForBlockElement,\n\tuseHasBackgroundPanel,\n} = unlock( blockEditorPrivateApis );\n\nfunction RootMenu() {\n\t// Get the raw settings from our custom hook\n\tconst [ rawSettings ] = useSetting< GlobalStylesSettings >( '' );\n\n\t// Process settings the same way as Gutenberg\n\tconst settings = useSettingsForBlockElement( rawSettings );\n\n\t// Use the same panel detection logic as Gutenberg\n\tconst hasBackgroundPanel = useHasBackgroundPanel( rawSettings );\n\tconst hasTypographyPanel = useHasTypographyPanel( settings );\n\tconst hasColorPanel = useHasColorPanel( settings );\n\tconst hasShadowPanel = true; // Same as Gutenberg\n\tconst hasDimensionsPanel = useHasDimensionsPanel( settings );\n\tconst hasLayoutPanel = hasDimensionsPanel;\n\n\treturn (\n\t\t<>\n\t\t\t<ItemGroup>\n\t\t\t\t{ hasTypographyPanel && (\n\t\t\t\t\t<NavigationButtonAsItem\n\t\t\t\t\t\ticon={ typography }\n\t\t\t\t\t\tpath=\"/typography\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Typography' ) }\n\t\t\t\t\t</NavigationButtonAsItem>\n\t\t\t\t) }\n\t\t\t\t{ hasColorPanel && (\n\t\t\t\t\t<NavigationButtonAsItem icon={ color } path=\"/colors\">\n\t\t\t\t\t\t{ __( 'Colors' ) }\n\t\t\t\t\t</NavigationButtonAsItem>\n\t\t\t\t) }\n\t\t\t\t{ hasBackgroundPanel && (\n\t\t\t\t\t<NavigationButtonAsItem\n\t\t\t\t\t\ticon={ background }\n\t\t\t\t\t\tpath=\"/background\"\n\t\t\t\t\t\taria-label={ __( 'Background styles' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Background' ) }\n\t\t\t\t\t</NavigationButtonAsItem>\n\t\t\t\t) }\n\t\t\t\t{ hasShadowPanel && (\n\t\t\t\t\t<NavigationButtonAsItem icon={ shadowIcon } path=\"/shadows\">\n\t\t\t\t\t\t{ __( 'Shadows' ) }\n\t\t\t\t\t</NavigationButtonAsItem>\n\t\t\t\t) }\n\t\t\t\t{ hasLayoutPanel && (\n\t\t\t\t\t<NavigationButtonAsItem icon={ layout } path=\"/layout\">\n\t\t\t\t\t\t{ __( 'Layout' ) }\n\t\t\t\t\t</NavigationButtonAsItem>\n\t\t\t\t) }\n\t\t\t</ItemGroup>\n\t\t</>\n\t);\n}\n\nexport default RootMenu;\n", "var o=function(o){var t=o/255;return t<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)},t=function(t){return.2126*o(t.r)+.7152*o(t.g)+.0722*o(t.b)};export default function(o){o.prototype.luminance=function(){return o=t(this.rgba),void 0===(r=2)&&(r=0),void 0===n&&(n=Math.pow(10,r)),Math.round(n*o)/n+0;var o,r,n},o.prototype.contrast=function(r){void 0===r&&(r=\"#FFF\");var n,a,i,e,v,u,d,c=r instanceof o?r:new o(r);return e=this.rgba,v=c.toRgb(),u=t(e),d=t(v),n=u>d?(u+.05)/(d+.05):(d+.05)/(u+.05),void 0===(a=2)&&(a=0),void 0===i&&(i=Math.pow(10,a)),Math.floor(i*n)/i+0},o.prototype.isReadable=function(o,t){return void 0===o&&(o=\"#FFF\"),void 0===t&&(t={}),this.contrast(o)>=(e=void 0===(i=(r=t).size)?\"normal\":i,\"AAA\"===(a=void 0===(n=r.level)?\"AA\":n)&&\"normal\"===e?7:\"AA\"===a&&\"large\"===e?3:4.5);var r,n,a,i,e}}\n", "/**\n * External dependencies\n */\nimport { colord, extend } from 'colord';\nimport a11yPlugin from 'colord/plugins/a11y';\n\n/**\n * WordPress dependencies\n */\nimport { useCallback, useContext, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tgetStyle,\n\tsetStyle,\n\tgetSetting,\n\tsetSetting,\n\tmergeGlobalStyles,\n} from '@wordpress/global-styles-engine';\nimport type { StyleVariation, Color } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { GlobalStylesContext } from './context';\nimport { removePropertiesFromObject, isVariationWithProperties } from './utils';\n\n// Enable colord's a11y plugin.\nextend( [ a11yPlugin ] );\n\n/**\n * Hook to get and set style values with memoization.\n *\n * @param path               The path to the style value.\n * @param blockName          The name of the block, if applicable.\n * @param readFrom           Which source to read from: \"base\" (theme), \"user\" (customizations), or \"merged\" (final result).\n * @param shouldDecodeEncode Whether to decode and encode the style value.\n * @return An array containing the style value and a function to set the style\n * value.\n *\n * @example\n * const [ color, setColor ] = useStyle<string>( 'color.text', 'core/button', 'merged' );\n */\nexport function useStyle< T = any >(\n\tpath: string,\n\tblockName?: string,\n\treadFrom: 'base' | 'user' | 'merged' = 'merged',\n\tshouldDecodeEncode: boolean = true\n) {\n\tconst { user, base, merged, onChange } = useContext( GlobalStylesContext );\n\n\tlet sourceValue = merged;\n\tif ( readFrom === 'base' ) {\n\t\tsourceValue = base;\n\t} else if ( readFrom === 'user' ) {\n\t\tsourceValue = user;\n\t}\n\n\tconst styleValue = useMemo(\n\t\t() => getStyle< T >( sourceValue, path, blockName, shouldDecodeEncode ),\n\t\t[ sourceValue, path, blockName, shouldDecodeEncode ]\n\t);\n\n\tconst setStyleValue = useCallback(\n\t\t( newValue: T | undefined ) => {\n\t\t\tconst newGlobalStyles = setStyle< T >(\n\t\t\t\tuser,\n\t\t\t\tpath,\n\t\t\t\tnewValue,\n\t\t\t\tblockName\n\t\t\t);\n\t\t\tonChange( newGlobalStyles );\n\t\t},\n\t\t[ user, onChange, path, blockName ]\n\t);\n\n\treturn [ styleValue, setStyleValue ] as const;\n}\n\n/**\n * Hook to get and set setting values with memoization.\n *\n * @param path      The path to the setting value.\n * @param blockName The name of the block, if applicable.\n * @param readFrom  Which source to read from: \"base\" (theme), \"user\" (customizations), or \"merged\" (final result).\n * @return An array containing the setting value and a function to set the\n * setting value.\n *\n * @example\n * const [ fontSize, setFontSize ] = useSetting<string>( 'fontSize', 'core/button', 'merged' );\n */\nexport function useSetting< T = any >(\n\tpath: string,\n\tblockName?: string,\n\treadFrom: 'base' | 'user' | 'merged' = 'merged'\n) {\n\tconst { user, base, merged, onChange } = useContext( GlobalStylesContext );\n\n\tlet sourceValue = merged;\n\tif ( readFrom === 'base' ) {\n\t\tsourceValue = base;\n\t} else if ( readFrom === 'user' ) {\n\t\tsourceValue = user;\n\t}\n\tconst settingValue = useMemo(\n\t\t() => getSetting< T >( sourceValue, path, blockName ),\n\t\t[ sourceValue, path, blockName ]\n\t);\n\n\tconst setSettingValue = useCallback(\n\t\t( newValue: T | undefined ) => {\n\t\t\tconst newGlobalStyles = setSetting< T >(\n\t\t\t\tuser,\n\t\t\t\tpath,\n\t\t\t\tnewValue,\n\t\t\t\tblockName\n\t\t\t);\n\t\t\tonChange( newGlobalStyles );\n\t\t},\n\t\t[ user, onChange, path, blockName ]\n\t);\n\n\treturn [ settingValue, setSettingValue ] as const;\n}\n\nconst EMPTY_ARRAY: StyleVariation[] = [];\n\n/**\n * Checks whether a style variation is empty.\n * @param root0\n * @param root0.title\n * @param root0.settings\n * @param root0.styles\n */\nfunction hasThemeVariation( {\n\ttitle,\n\tsettings,\n\tstyles,\n}: StyleVariation ): boolean {\n\treturn (\n\t\ttitle === __( 'Default' ) ||\n\t\tObject.keys( settings || {} ).length > 0 ||\n\t\tObject.keys( styles || {} ).length > 0\n\t);\n}\n\n/**\n * Fetches the current theme style variations that contain only the specified properties\n * and merges them with the user config.\n * @param properties\n */\nexport function useCurrentMergeThemeStyleVariationsWithUserConfig(\n\tproperties: string[] = []\n): StyleVariation[] {\n\tconst { variationsFromTheme } = useSelect( ( select ) => {\n\t\tconst _variationsFromTheme =\n\t\t\tselect(\n\t\t\t\tcoreStore\n\t\t\t).__experimentalGetCurrentThemeGlobalStylesVariations?.();\n\n\t\treturn {\n\t\t\tvariationsFromTheme: _variationsFromTheme || EMPTY_ARRAY,\n\t\t};\n\t}, [] );\n\n\tconst { user: userVariation } = useContext( GlobalStylesContext );\n\n\treturn useMemo( () => {\n\t\t// Create default variation from base, not user - this fixes the \"Default adapts\" issue\n\t\tconst clonedUserVariation = structuredClone( userVariation );\n\t\t// Get user variation and remove the settings for the given property.\n\t\tconst userVariationWithoutProperties = removePropertiesFromObject(\n\t\t\tclonedUserVariation,\n\t\t\tproperties\n\t\t);\n\t\tuserVariationWithoutProperties.title = __( 'Default' );\n\n\t\tconst variationsWithPropertiesAndBase = (\n\t\t\tvariationsFromTheme as StyleVariation[]\n\t\t )\n\t\t\t.filter( ( variation: StyleVariation ) => {\n\t\t\t\treturn isVariationWithProperties( variation, properties );\n\t\t\t} )\n\t\t\t.map( ( variation: StyleVariation ) => {\n\t\t\t\treturn mergeGlobalStyles(\n\t\t\t\t\tuserVariationWithoutProperties,\n\t\t\t\t\tvariation\n\t\t\t\t);\n\t\t\t} );\n\n\t\tconst variationsByProperties = [\n\t\t\tuserVariationWithoutProperties,\n\t\t\t...variationsWithPropertiesAndBase,\n\t\t];\n\n\t\treturn variationsByProperties?.length\n\t\t\t? variationsByProperties.filter( hasThemeVariation )\n\t\t\t: [];\n\t}, [ properties, userVariation, variationsFromTheme ] );\n}\n\nconst propertiesToFilter = [ 'color' ];\n\n/**\n * Hook to get color variations using the full Gutenberg implementation.\n */\nexport function useColorVariations(): StyleVariation[] {\n\treturn useCurrentMergeThemeStyleVariationsWithUserConfig(\n\t\tpropertiesToFilter\n\t);\n}\n\n/**\n * Hook to randomize theme colors using color rotation.\n *\n * @param blockName The name of the block, if applicable.\n * @return Array containing the randomize function if feature is enabled, empty array otherwise.\n */\nexport function useColorRandomizer( blockName?: string ): [ () => void ] | [] {\n\tconst [ themeColors, setThemeColors ] = useSetting< Color[] >(\n\t\t'color.palette.theme',\n\t\tblockName\n\t);\n\n\tconst randomizeColors = useCallback( () => {\n\t\tif ( ! themeColors || ! themeColors.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst randomRotationValue = Math.floor( Math.random() * 225 );\n\n\t\tconst newColors = themeColors.map( ( colorObject ) => {\n\t\t\tconst { color } = colorObject;\n\t\t\tconst newColor = colord( color )\n\t\t\t\t.rotate( randomRotationValue )\n\t\t\t\t.toHex();\n\n\t\t\treturn {\n\t\t\t\t...colorObject,\n\t\t\t\tcolor: newColor,\n\t\t\t};\n\t\t} );\n\n\t\tsetThemeColors( newColors );\n\t}, [ themeColors, setThemeColors ] );\n\n\treturn ( window as any ).__experimentalEnableColorRandomizer\n\t\t? [ randomizeColors ]\n\t\t: [];\n}\n", "/**\n * WordPress dependencies\n */\nimport { areGlobalStylesEqual } from '@wordpress/global-styles-engine';\nimport type { GlobalStylesConfig } from '@wordpress/global-styles-engine';\n\n/**\n * Removes all instances of properties from an object.\n *\n * @param object     The object to remove the properties from.\n * @param properties The properties to remove.\n * @return The modified object.\n */\nexport function removePropertiesFromObject(\n\tobject: any,\n\tproperties: string[]\n): any {\n\tif ( ! properties?.length ) {\n\t\treturn object;\n\t}\n\n\tif (\n\t\ttypeof object !== 'object' ||\n\t\t! object ||\n\t\t! Object.keys( object ).length\n\t) {\n\t\treturn object;\n\t}\n\n\tfor ( const key in object ) {\n\t\tif ( properties.includes( key ) ) {\n\t\t\tdelete object[ key ];\n\t\t} else if ( typeof object[ key ] === 'object' ) {\n\t\t\tremovePropertiesFromObject( object[ key ], properties );\n\t\t}\n\t}\n\treturn object;\n}\n\n/**\n * Returns a new object, with properties specified in `properties` array.,\n * maintain the original object tree structure.\n * The function is recursive, so it will perform a deep search for the given properties.\n * E.g., the function will return `{ a: { b: { c: { test: 1 } } } }` if the properties are  `[ 'test' ]`.\n *\n * @param object     The object to filter\n * @param properties The properties to filter by\n * @return The merged object.\n */\nexport const filterObjectByProperties = (\n\tobject: any,\n\tproperties: string[]\n): any => {\n\tif ( ! object || ! properties?.length ) {\n\t\treturn {};\n\t}\n\n\tconst newObject: any = {};\n\tObject.keys( object ).forEach( ( key ) => {\n\t\tif ( properties.includes( key ) ) {\n\t\t\tnewObject[ key ] = object[ key ];\n\t\t} else if ( typeof object[ key ] === 'object' ) {\n\t\t\tconst newFilter = filterObjectByProperties(\n\t\t\t\tobject[ key ],\n\t\t\t\tproperties\n\t\t\t);\n\t\t\tif ( Object.keys( newFilter ).length ) {\n\t\t\t\tnewObject[ key ] = newFilter;\n\t\t\t}\n\t\t}\n\t} );\n\treturn newObject;\n};\n\n/**\n * Compares a style variation to the same variation filtered by the specified properties.\n * Returns true if the variation contains only the properties specified.\n *\n * @param variation  The variation to compare.\n * @param properties The properties to compare.\n * @return Whether the variation contains only the specified properties.\n */\nexport function isVariationWithProperties(\n\tvariation: GlobalStylesConfig,\n\tproperties: string[]\n): boolean {\n\tconst variationWithProperties = filterObjectByProperties(\n\t\tstructuredClone( variation ),\n\t\tproperties\n\t);\n\n\treturn areGlobalStylesEqual( variationWithProperties, variation );\n}\n\nfunction getFontFamilyFromSetting( fontFamilies: any[], setting: string ): any {\n\tif ( ! Array.isArray( fontFamilies ) || ! setting ) {\n\t\treturn null;\n\t}\n\n\tconst fontFamilyVariable = setting.replace( 'var(', '' ).replace( ')', '' );\n\tconst fontFamilySlug = fontFamilyVariable?.split( '--' ).slice( -1 )[ 0 ];\n\n\treturn fontFamilies.find(\n\t\t( fontFamily ) => fontFamily.slug === fontFamilySlug\n\t);\n}\n\n/**\n * Extracts font families from a theme JSON configuration.\n *\n * @param themeJson The theme JSON configuration\n * @return Array containing [bodyFontFamily, headingFontFamily]\n */\nexport function getFontFamilies( themeJson: any ): [ any, any ] {\n\tconst themeFontFamilies =\n\t\tthemeJson?.settings?.typography?.fontFamilies?.theme;\n\tconst customFontFamilies =\n\t\tthemeJson?.settings?.typography?.fontFamilies?.custom;\n\n\tlet fontFamilies: any[] = [];\n\tif ( themeFontFamilies && customFontFamilies ) {\n\t\tfontFamilies = [ ...themeFontFamilies, ...customFontFamilies ];\n\t} else if ( themeFontFamilies ) {\n\t\tfontFamilies = themeFontFamilies;\n\t} else if ( customFontFamilies ) {\n\t\tfontFamilies = customFontFamilies;\n\t}\n\tconst bodyFontFamilySetting = themeJson?.styles?.typography?.fontFamily;\n\tconst bodyFontFamily = getFontFamilyFromSetting(\n\t\tfontFamilies,\n\t\tbodyFontFamilySetting\n\t);\n\n\tconst headingFontFamilySetting =\n\t\tthemeJson?.styles?.elements?.heading?.typography?.fontFamily;\n\n\tlet headingFontFamily;\n\tif ( ! headingFontFamilySetting ) {\n\t\theadingFontFamily = bodyFontFamily;\n\t} else {\n\t\theadingFontFamily = getFontFamilyFromSetting(\n\t\t\tfontFamilies,\n\t\t\tthemeJson?.styles?.elements?.heading?.typography?.fontFamily\n\t\t);\n\t}\n\n\treturn [ bodyFontFamily, headingFontFamily ];\n}\n\nfunction findNearest( input: number, numbers: number[] ): number | null {\n\t// If the numbers array is empty, return null\n\tif ( numbers.length === 0 ) {\n\t\treturn null;\n\t}\n\t// Sort the array based on the absolute difference with the input\n\tnumbers.sort( ( a, b ) => Math.abs( input - a ) - Math.abs( input - b ) );\n\t// Return the first element (which will be the nearest) from the sorted array\n\treturn numbers[ 0 ];\n}\n\nfunction extractFontWeights( fontFaces: any[] ): number[] {\n\tconst result: number[] = [];\n\n\tfontFaces.forEach( ( face ) => {\n\t\tconst weights = String( face.fontWeight ).split( ' ' );\n\n\t\tif ( weights.length === 2 ) {\n\t\t\tconst start = parseInt( weights[ 0 ] );\n\t\t\tconst end = parseInt( weights[ 1 ] );\n\n\t\t\tfor ( let i = start; i <= end; i += 100 ) {\n\t\t\t\tresult.push( i );\n\t\t\t}\n\t\t} else if ( weights.length === 1 ) {\n\t\t\tresult.push( parseInt( weights[ 0 ] ) );\n\t\t}\n\t} );\n\n\treturn result;\n}\n\n/*\n * Format the font family to use in the CSS font-family property of a CSS rule.\n *\n * The input can be a string with the font family name or a string with multiple font family names separated by commas.\n * It follows the recommendations from the CSS Fonts Module Level 4.\n * https://www.w3.org/TR/css-fonts-4/#font-family-prop\n *\n * @param input - The font family.\n * @return The formatted font family.\n */\nexport function formatFontFamily( input: string ): string {\n\t// Matches strings that are not exclusively alphabetic characters or hyphens, and do not exactly follow the pattern generic(alphabetic characters or hyphens).\n\tconst regex = /^(?!generic\\([ a-zA-Z\\-]+\\)$)(?!^[a-zA-Z\\-]+$).+/;\n\tconst output = input.trim();\n\n\tconst formatItem = ( item: string ) => {\n\t\titem = item.trim();\n\t\tif ( item.match( regex ) ) {\n\t\t\t// removes leading and trailing quotes.\n\t\t\titem = item.replace( /^[\"']|[\"']$/g, '' );\n\t\t\treturn `\"${ item }\"`;\n\t\t}\n\t\treturn item;\n\t};\n\n\tif ( output.includes( ',' ) ) {\n\t\treturn output\n\t\t\t.split( ',' )\n\t\t\t.map( formatItem )\n\t\t\t.filter( ( item ) => item !== '' )\n\t\t\t.join( ', ' );\n\t}\n\n\treturn formatItem( output );\n}\n\n/**\n * Gets the preview style for a font family.\n *\n * @param family The font family object\n * @return CSS style object for the font family\n */\nexport function getFamilyPreviewStyle( family: any ): React.CSSProperties {\n\tconst style: React.CSSProperties = {\n\t\tfontFamily: formatFontFamily( family.fontFamily ),\n\t};\n\n\tif ( ! Array.isArray( family.fontFace ) ) {\n\t\tstyle.fontWeight = '400';\n\t\tstyle.fontStyle = 'normal';\n\t\treturn style;\n\t}\n\n\tif ( family.fontFace ) {\n\t\t//get all the font faces with normal style\n\t\tconst normalFaces = family.fontFace.filter(\n\t\t\t( face: any ) =>\n\t\t\t\tface?.fontStyle && face.fontStyle.toLowerCase() === 'normal'\n\t\t);\n\t\tif ( normalFaces.length > 0 ) {\n\t\t\tstyle.fontStyle = 'normal';\n\t\t\tconst normalWeights = extractFontWeights( normalFaces );\n\t\t\tconst nearestWeight = findNearest( 400, normalWeights );\n\t\t\tstyle.fontWeight = String( nearestWeight ) || '400';\n\t\t} else {\n\t\t\tstyle.fontStyle =\n\t\t\t\t( family.fontFace.length && family.fontFace[ 0 ].fontStyle ) ||\n\t\t\t\t'normal';\n\t\t\tstyle.fontWeight =\n\t\t\t\t( family.fontFace.length &&\n\t\t\t\t\tString( family.fontFace[ 0 ].fontWeight ) ) ||\n\t\t\t\t'400';\n\t\t}\n\t}\n\n\treturn style;\n}\n\n/**\n * Iterates through the presets array and searches for slugs that start with the specified\n * slugPrefix followed by a numerical suffix. It identifies the highest numerical suffix found\n * and returns one greater than the highest found suffix, ensuring that the new index is unique.\n *\n * @param presets    The array of preset objects, each potentially containing a slug property.\n * @param slugPrefix The prefix to look for in the preset slugs.\n *\n * @return The next available index for a preset with the specified slug prefix, or 1 if no matching slugs are found.\n */\n/**\n * Gets the variation class name for a block style variation.\n *\n * @param variation The variation name.\n * @return The variation class name.\n */\nexport function getVariationClassName( variation: string ): string {\n\tif ( ! variation ) {\n\t\treturn '';\n\t}\n\treturn `is-style-${ variation }`;\n}\n\nexport function getNewIndexFromPresets(\n\tpresets: any[],\n\tslugPrefix: string\n): number {\n\tconst nameRegex = new RegExp( `^${ slugPrefix }([\\\\d]+)$` );\n\tconst highestPresetValue = presets.reduce( ( currentHighest, preset ) => {\n\t\tif ( typeof preset?.slug === 'string' ) {\n\t\t\tconst matches = preset?.slug.match( nameRegex );\n\t\t\tif ( matches ) {\n\t\t\t\tconst id = parseInt( matches[ 1 ], 10 );\n\t\t\t\tif ( id > currentHighest ) {\n\t\t\t\t\treturn id;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn currentHighest;\n\t}, 0 );\n\treturn highestPresetValue + 1;\n}\n", "/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\n\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.',\n\t\t'@wordpress/global-styles-ui'\n\t);\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__unstableMotion as motion,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useStyle } from './hooks';\nimport { useStylesPreviewColors } from './preview-hooks';\nimport TypographyExample from './typography-example';\nimport HighlightedColors from './highlighted-colors';\nimport PreviewWrapper from './preview-wrapper';\n\nconst firstFrameVariants = {\n\tstart: {\n\t\tscale: 1,\n\t\topacity: 1,\n\t},\n\thover: {\n\t\tscale: 0,\n\t\topacity: 0,\n\t},\n};\n\nconst midFrameVariants = {\n\thover: {\n\t\topacity: 1,\n\t},\n\tstart: {\n\t\topacity: 0.5,\n\t},\n};\n\nconst secondFrameVariants = {\n\thover: {\n\t\tscale: 1,\n\t\topacity: 1,\n\t},\n\tstart: {\n\t\tscale: 0,\n\t\topacity: 0,\n\t},\n};\n\ninterface PreviewStylesProps {\n\tlabel?: string;\n\tisFocused?: boolean;\n\twithHoverView?: boolean;\n\tvariation?: any;\n}\n\nfunction PreviewStyles( {\n\tlabel,\n\tisFocused,\n\twithHoverView,\n\tvariation,\n}: PreviewStylesProps ) {\n\tconst [ fontWeight ] = useStyle< string >( 'typography.fontWeight' );\n\tconst [ fontFamily = 'serif' ] = useStyle< string >(\n\t\t'typography.fontFamily'\n\t);\n\tconst [ headingFontFamily = fontFamily ] = useStyle< string >(\n\t\t'elements.h1.typography.fontFamily'\n\t);\n\tconst [ headingFontWeight = fontWeight ] = useStyle< string >(\n\t\t'elements.h1.typography.fontWeight'\n\t);\n\tconst [ textColor = 'black' ] = useStyle< string >( 'color.text' );\n\tconst [ headingColor = textColor ] = useStyle< string >(\n\t\t'elements.h1.color.text'\n\t);\n\n\tconst { paletteColors } = useStylesPreviewColors();\n\n\treturn (\n\t\t<PreviewWrapper\n\t\t\tlabel={ label }\n\t\t\tisFocused={ isFocused }\n\t\t\twithHoverView={ withHoverView }\n\t\t>\n\t\t\t{ ( { ratio, key } ) => (\n\t\t\t\t<motion.div\n\t\t\t\t\tkey={ key }\n\t\t\t\t\tvariants={ firstFrameVariants }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tspacing={ 10 * ratio }\n\t\t\t\t\t\tjustify=\"center\"\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<TypographyExample\n\t\t\t\t\t\t\tfontSize={ 65 * ratio }\n\t\t\t\t\t\t\tvariation={ variation }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<VStack spacing={ 4 * ratio }>\n\t\t\t\t\t\t\t<HighlightedColors\n\t\t\t\t\t\t\t\tnormalizedColorSwatchSize={ 32 }\n\t\t\t\t\t\t\t\tratio={ ratio }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</VStack>\n\t\t\t\t\t</HStack>\n\t\t\t\t</motion.div>\n\t\t\t) }\n\t\t\t{ ( { key } ) => (\n\t\t\t\t<motion.div\n\t\t\t\t\tkey={ key }\n\t\t\t\t\tvariants={ withHoverView ? midFrameVariants : undefined }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\tfilter: 'blur(60px)',\n\t\t\t\t\t\topacity: 0.1,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tspacing={ 0 }\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ paletteColors\n\t\t\t\t\t\t\t.slice( 0, 4 )\n\t\t\t\t\t\t\t.map( ( { color }, index ) => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\t\t\t\t\tbackground: color,\n\t\t\t\t\t\t\t\t\t\tflexGrow: 1,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t</HStack>\n\t\t\t\t</motion.div>\n\t\t\t) }\n\t\t\t{ ( { ratio, key } ) => (\n\t\t\t\t<motion.div\n\t\t\t\t\tkey={ key }\n\t\t\t\t\tvariants={ secondFrameVariants }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tspacing={ 3 * ratio }\n\t\t\t\t\t\tjustify=\"center\"\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t\tpadding: 10 * ratio,\n\t\t\t\t\t\t\tboxSizing: 'border-box',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\tfontSize: 40 * ratio,\n\t\t\t\t\t\t\t\t\tfontFamily: headingFontFamily,\n\t\t\t\t\t\t\t\t\tcolor: headingColor,\n\t\t\t\t\t\t\t\t\tfontWeight: headingFontWeight,\n\t\t\t\t\t\t\t\t\tlineHeight: '1em',\n\t\t\t\t\t\t\t\t\ttextAlign: 'center',\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</VStack>\n\t\t\t\t</motion.div>\n\t\t\t) }\n\t\t</PreviewWrapper>\n\t);\n}\n\nexport default PreviewStyles;\n", "/**\n * WordPress dependencies\n */\nimport type { Color } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { useSetting, useStyle } from './hooks';\n\nexport function useStylesPreviewColors(): {\n\tpaletteColors: Color[];\n\thighlightedColors: Color[];\n} {\n\tconst [ textColor = 'black' ] = useStyle< string >( 'color.text' );\n\tconst [ backgroundColor = 'white' ] =\n\t\tuseStyle< string >( 'color.background' );\n\tconst [ headingColor = textColor ] = useStyle< string >(\n\t\t'elements.h1.color.text'\n\t);\n\tconst [ linkColor = headingColor ] = useStyle< string >(\n\t\t'elements.link.color.text'\n\t);\n\tconst [ buttonBackgroundColor = linkColor ] = useStyle< string >(\n\t\t'elements.button.color.background'\n\t);\n\n\tconst [ coreColors ] = useSetting< Color[] >( 'color.palette.core' ) || [];\n\tconst [ themeColors ] =\n\t\tuseSetting< Color[] >( 'color.palette.theme' ) || [];\n\tconst [ customColors ] =\n\t\tuseSetting< Color[] >( 'color.palette.custom' ) || [];\n\n\tconst paletteColors: Color[] = ( themeColors ?? [] )\n\t\t.concat( customColors ?? [] )\n\t\t.concat( coreColors ?? [] );\n\n\tconst textColorObject = paletteColors.filter(\n\t\t( { color } ) => color === textColor\n\t);\n\tconst buttonBackgroundColorObject = paletteColors.filter(\n\t\t( { color } ) => color === buttonBackgroundColor\n\t);\n\n\tconst highlightedColors = textColorObject\n\t\t.concat( buttonBackgroundColorObject )\n\t\t.concat( paletteColors )\n\t\t.filter(\n\t\t\t// we exclude these background color because it is already visible in the preview.\n\t\t\t( { color } ) => color !== backgroundColor\n\t\t)\n\t\t.slice( 0, 2 );\n\n\treturn {\n\t\tpaletteColors,\n\t\thighlightedColors,\n\t};\n}\n", "/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\nimport { __unstableMotion as motion } from '@wordpress/components';\nimport { _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { GlobalStylesContext } from './context';\nimport { getFamilyPreviewStyle } from './font-library/utils/preview-styles';\nimport { getFontFamilies } from './utils';\nimport { useStyle } from './hooks';\n\ninterface TypographyExampleProps {\n\tfontSize?: number;\n\tvariation?: any;\n}\n\nexport default function PreviewTypography( {\n\tfontSize,\n\tvariation,\n}: TypographyExampleProps ) {\n\tconst { base } = useContext( GlobalStylesContext );\n\tlet config = base;\n\tif ( variation ) {\n\t\tconfig = { ...base, ...variation };\n\t}\n\n\tconst [ textColor ] = useStyle( 'color.text' );\n\n\tconst [ bodyFontFamilies, headingFontFamilies ] = getFontFamilies( config );\n\tconst bodyPreviewStyle: React.CSSProperties = bodyFontFamilies\n\t\t? getFamilyPreviewStyle( bodyFontFamilies )\n\t\t: {};\n\tconst headingPreviewStyle: React.CSSProperties = headingFontFamilies\n\t\t? getFamilyPreviewStyle( headingFontFamilies )\n\t\t: {};\n\n\tif ( textColor ) {\n\t\tbodyPreviewStyle.color = textColor;\n\t\theadingPreviewStyle.color = textColor;\n\t}\n\n\tif ( fontSize ) {\n\t\tbodyPreviewStyle.fontSize = fontSize;\n\t\theadingPreviewStyle.fontSize = fontSize;\n\t}\n\n\treturn (\n\t\t<motion.div\n\t\t\tanimate={ {\n\t\t\t\tscale: 1,\n\t\t\t\topacity: 1,\n\t\t\t} }\n\t\t\tinitial={ {\n\t\t\t\tscale: 0.1,\n\t\t\t\topacity: 0,\n\t\t\t} }\n\t\t\ttransition={ {\n\t\t\t\tdelay: 0.3,\n\t\t\t\ttype: 'tween',\n\t\t\t} }\n\t\t\tstyle={ {\n\t\t\t\ttextAlign: 'center',\n\t\t\t\tlineHeight: 1,\n\t\t\t} }\n\t\t>\n\t\t\t<span style={ headingPreviewStyle }>\n\t\t\t\t{ _x( 'A', 'Uppercase letter A' ) }\n\t\t\t</span>\n\t\t\t<span style={ bodyPreviewStyle }>\n\t\t\t\t{ _x( 'a', 'Lowercase letter A' ) }\n\t\t\t</span>\n\t\t</motion.div>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport type { CSSProperties } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport type { FontFace, FontFamily } from '@wordpress/core-data';\n\nfunction findNearest( input: number, numbers: number[] ) {\n\t// If the numbers array is empty, return null\n\tif ( numbers.length === 0 ) {\n\t\treturn null;\n\t}\n\t// Sort the array based on the absolute difference with the input\n\tnumbers.sort( ( a, b ) => Math.abs( input - a ) - Math.abs( input - b ) );\n\t// Return the first element (which will be the nearest) from the sorted array\n\treturn numbers[ 0 ];\n}\n\nfunction extractFontWeights( fontFaces: FontFace[] ): number[] {\n\tconst result: number[] = [];\n\n\tfontFaces.forEach( ( face ) => {\n\t\tconst weights = String( face.fontWeight ).split( ' ' );\n\n\t\tif ( weights.length === 2 ) {\n\t\t\tconst start = parseInt( weights[ 0 ] );\n\t\t\tconst end = parseInt( weights[ 1 ] );\n\n\t\t\tfor ( let i = start; i <= end; i += 100 ) {\n\t\t\t\tresult.push( i );\n\t\t\t}\n\t\t} else if ( weights.length === 1 ) {\n\t\t\tresult.push( parseInt( weights[ 0 ] ) );\n\t\t}\n\t} );\n\n\treturn result;\n}\n\n/*\n * Format the font family to use in the CSS font-family property of a CSS rule.\n *\n * The input can be a string with the font family name or a string with multiple font family names separated by commas.\n * It follows the recommendations from the CSS Fonts Module Level 4.\n * https://www.w3.org/TR/css-fonts-4/#font-family-prop\n *\n * @param {string} input - The font family.\n * @return {string} The formatted font family.\n *\n * Example:\n * formatFontFamily( \"Open Sans, Font+Name, sans-serif\" ) => '\"Open Sans\", \"Font+Name\", sans-serif'\n * formatFontFamily( \"'Open Sans', generic(kai), sans-serif\" ) => '\"Open Sans\", sans-serif'\n * formatFontFamily( \"DotGothic16, Slabo 27px, serif\" ) => '\"DotGothic16\",\"Slabo 27px\",serif'\n * formatFontFamily( \"Mine's, Moe's Typography\" ) => `\"mine's\",\"Moe's Typography\"`\n */\nexport function formatFontFamily( input: string ) {\n\t// Matches strings that are not exclusively alphabetic characters or hyphens, and do not exactly follow the pattern generic(alphabetic characters or hyphens).\n\tconst regex = /^(?!generic\\([ a-zA-Z\\-]+\\)$)(?!^[a-zA-Z\\-]+$).+/;\n\tconst output = input.trim();\n\n\tconst formatItem = ( item: string ) => {\n\t\titem = item.trim();\n\t\tif ( item.match( regex ) ) {\n\t\t\t// removes leading and trailing quotes.\n\t\t\titem = item.replace( /^[\"']|[\"']$/g, '' );\n\t\t\treturn `\"${ item }\"`;\n\t\t}\n\t\treturn item;\n\t};\n\n\tif ( output.includes( ',' ) ) {\n\t\treturn output\n\t\t\t.split( ',' )\n\t\t\t.map( formatItem )\n\t\t\t.filter( ( item ) => item !== '' )\n\t\t\t.join( ', ' );\n\t}\n\n\treturn formatItem( output );\n}\n\n/*\n * Format the font face name to use in the font-family property of a font face.\n *\n * The input can be a string with the font face name or a string with multiple font face names separated by commas.\n * It removes the leading and trailing quotes from the font face name.\n *\n * @param {string} input - The font face name.\n * @return {string} The formatted font face name.\n *\n * Example:\n * formatFontFaceName(\"Open Sans\") => \"Open Sans\"\n * formatFontFaceName(\"'Open Sans', sans-serif\") => \"Open Sans\"\n * formatFontFaceName(\", 'Open Sans', 'Helvetica Neue', sans-serif\") => \"Open Sans\"\n */\nexport function formatFontFaceName( input: string ) {\n\tif ( ! input ) {\n\t\treturn '';\n\t}\n\n\tlet output = input.trim();\n\tif ( output.includes( ',' ) ) {\n\t\toutput = (\n\t\t\toutput\n\t\t\t\t.split( ',' )\n\t\t\t\t// finds the first item that is not an empty string.\n\t\t\t\t.find( ( item ) => item.trim() !== '' ) ?? ''\n\t\t).trim();\n\t}\n\t// removes leading and trailing quotes.\n\toutput = output.replace( /^[\"']|[\"']$/g, '' );\n\n\t// Firefox needs the font name to be wrapped in double quotes meanwhile other browsers don't.\n\tif ( window.navigator.userAgent.toLowerCase().includes( 'firefox' ) ) {\n\t\toutput = `\"${ output }\"`;\n\t}\n\treturn output;\n}\n\nexport function getFamilyPreviewStyle(\n\tfamily: FontFamily | FontFace\n): CSSProperties {\n\tconst style: CSSProperties = {\n\t\tfontFamily: formatFontFamily( family.fontFamily ),\n\t};\n\n\tif ( ! ( 'fontFace' in family ) || ! Array.isArray( family.fontFace ) ) {\n\t\tstyle.fontWeight = '400';\n\t\tstyle.fontStyle = 'normal';\n\t\treturn style;\n\t}\n\n\tif ( family.fontFace ) {\n\t\t//get all the font faces with normal style\n\t\tconst normalFaces = family.fontFace.filter(\n\t\t\t( face ) =>\n\t\t\t\tface?.fontStyle && face.fontStyle.toLowerCase() === 'normal'\n\t\t);\n\t\tif ( normalFaces.length > 0 ) {\n\t\t\tstyle.fontStyle = 'normal';\n\t\t\tconst normalWeights = extractFontWeights( normalFaces );\n\t\t\tconst nearestWeight = findNearest( 400, normalWeights );\n\t\t\tstyle.fontWeight = String( nearestWeight ) || '400';\n\t\t} else {\n\t\t\tstyle.fontStyle =\n\t\t\t\t( family.fontFace.length && family.fontFace[ 0 ].fontStyle ) ||\n\t\t\t\t'normal';\n\t\t\tstyle.fontWeight =\n\t\t\t\t( family.fontFace.length &&\n\t\t\t\t\tString( family.fontFace[ 0 ].fontWeight ) ) ||\n\t\t\t\t'400';\n\t\t}\n\t}\n\n\treturn style;\n}\n\nexport function getFacePreviewStyle( face: FontFace ): CSSProperties {\n\treturn {\n\t\tfontFamily: formatFontFamily( face.fontFamily ),\n\t\tfontStyle: face.fontStyle || 'normal',\n\t\tfontWeight: face.fontWeight || '400',\n\t};\n}\n", "/**\n * WordPress dependencies\n */\nimport { __unstableMotion as motion } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useStylesPreviewColors } from './preview-hooks';\n\ninterface HighlightedColorsProps {\n\tnormalizedColorSwatchSize: number;\n\tratio: number;\n}\n\nexport default function HighlightedColors( {\n\tnormalizedColorSwatchSize,\n\tratio,\n}: HighlightedColorsProps ) {\n\tconst { highlightedColors } = useStylesPreviewColors();\n\tconst scaledSwatchSize = normalizedColorSwatchSize * ratio;\n\treturn highlightedColors.map( ( { slug, color }, index ) => (\n\t\t<motion.div\n\t\t\tkey={ `${ slug }-${ index }` }\n\t\t\tstyle={ {\n\t\t\t\theight: scaledSwatchSize,\n\t\t\t\twidth: scaledSwatchSize,\n\t\t\t\tbackground: color,\n\t\t\t\tborderRadius: scaledSwatchSize / 2,\n\t\t\t} }\n\t\t\tanimate={ {\n\t\t\t\tscale: 1,\n\t\t\t\topacity: 1,\n\t\t\t} }\n\t\t\tinitial={ {\n\t\t\t\tscale: 0.1,\n\t\t\t\topacity: 0,\n\t\t\t} }\n\t\t\ttransition={ {\n\t\t\t\tdelay: index === 1 ? 0.2 : 0.1,\n\t\t\t} }\n\t\t/>\n\t) );\n}\n", "/**\n * WordPress dependencies\n */\nimport { __unstableMotion as motion } from '@wordpress/components';\nimport {\n\tuseThrottle,\n\tuseReducedMotion,\n\tuseResizeObserver,\n} from '@wordpress/compose';\nimport { useLayoutEffect, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { useStyle } from './hooks';\n\nconst normalizedWidth = 248;\nconst normalizedHeight = 152;\n\n// Throttle options for useThrottle. Must be defined outside of the component,\n// so that the object reference is the same on each render.\nconst THROTTLE_OPTIONS = {\n\tleading: true,\n\ttrailing: true,\n};\n\ninterface PreviewWrapperProps {\n\tchildren:\n\t\t| ( ( args: { ratio: number; key: number } ) => React.ReactNode )\n\t\t| ( ( args: { ratio: number; key: number } ) => React.ReactNode )[];\n\tlabel?: string;\n\tisFocused?: boolean;\n\twithHoverView?: boolean;\n}\n\nfunction PreviewWrapper( {\n\tchildren,\n\tlabel,\n\tisFocused,\n\twithHoverView,\n}: PreviewWrapperProps ) {\n\tconst [ backgroundColor = 'white' ] =\n\t\tuseStyle< string >( 'color.background' );\n\tconst [ gradientValue ] = useStyle< string >( 'color.gradient' );\n\tconst disableMotion = useReducedMotion();\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst [ containerResizeListener, { width } ] = useResizeObserver();\n\tconst [ throttledWidth, setThrottledWidthState ] = useState( width );\n\tconst [ ratioState, setRatioState ] = useState< number | undefined >();\n\n\tconst setThrottledWidth = useThrottle(\n\t\tsetThrottledWidthState,\n\t\t250,\n\t\tTHROTTLE_OPTIONS\n\t);\n\n\t// Must use useLayoutEffect to avoid a flash of the container  at the wrong\n\t// size before the width is set.\n\tuseLayoutEffect( () => {\n\t\tif ( width ) {\n\t\t\tsetThrottledWidth( width );\n\t\t}\n\t}, [ width, setThrottledWidth ] );\n\n\t// Must use useLayoutEffect to avoid a flash of the container at the wrong\n\t// size before the width is set.\n\tuseLayoutEffect( () => {\n\t\tconst newRatio = throttledWidth ? throttledWidth / normalizedWidth : 1;\n\t\tconst ratioDiff = newRatio - ( ratioState || 0 );\n\n\t\t// Only update the ratio state if the difference is big enough\n\t\t// or if the ratio state is not yet set. This is to avoid an\n\t\t// endless loop of updates at particular viewport heights when the\n\t\t// presence of a scrollbar causes the width to change slightly.\n\t\tconst isRatioDiffBigEnough = Math.abs( ratioDiff ) > 0.1;\n\n\t\tif ( isRatioDiffBigEnough || ! ratioState ) {\n\t\t\tsetRatioState( newRatio );\n\t\t}\n\t}, [ throttledWidth, ratioState ] );\n\n\t// Set a fallbackRatio to use before the throttled ratio has been set.\n\tconst fallbackRatio = width ? width / normalizedWidth : 1;\n\t/*\n\t * Use the throttled ratio if it has been calculated, otherwise\n\t * use the fallback ratio. The throttled ratio is used to avoid\n\t * an endless loop of updates at particular viewport heights.\n\t * See: https://github.com/WordPress/gutenberg/issues/55112\n\t */\n\tconst ratio = ratioState ? ratioState : fallbackRatio;\n\n\tconst isReady = !! width;\n\n\treturn (\n\t\t<>\n\t\t\t<div style={ { position: 'relative' } }>\n\t\t\t\t{ containerResizeListener }\n\t\t\t</div>\n\t\t\t{ isReady && (\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"global-styles-ui-preview__wrapper\"\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\theight: normalizedHeight * ratio,\n\t\t\t\t\t} }\n\t\t\t\t\tonMouseEnter={ () => setIsHovered( true ) }\n\t\t\t\t\tonMouseLeave={ () => setIsHovered( false ) }\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t>\n\t\t\t\t\t<motion.div\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\theight: normalizedHeight * ratio,\n\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\tbackground: gradientValue ?? backgroundColor,\n\t\t\t\t\t\t\tcursor: withHoverView ? 'pointer' : undefined,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tinitial=\"start\"\n\t\t\t\t\t\tanimate={\n\t\t\t\t\t\t\t( isHovered || isFocused ) &&\n\t\t\t\t\t\t\t! disableMotion &&\n\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t? 'hover'\n\t\t\t\t\t\t\t\t: 'start'\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{ []\n\t\t\t\t\t\t\t.concat( children as any ) // This makes sure children is always an array.\n\t\t\t\t\t\t\t.map( ( child: any, key: number ) =>\n\t\t\t\t\t\t\t\tchild( { ratio, key } )\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t</motion.div>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default PreviewWrapper;\n", "/**\n * WordPress dependencies\n */\n// @ts-expect-error: Not typed yet.\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { __, sprintf, _n } from '@wordpress/i18n';\nimport {\n\tFlexItem,\n\tSearchControl,\n\t__experimentalHStack as HStack,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tuseState,\n\tuseEffect,\n\tuseRef,\n\tuseDeferredValue,\n\tmemo,\n} from '@wordpress/element';\nimport {\n\tBlockIcon,\n\tprivateApis as blockEditorPrivateApis,\n\t// @ts-expect-error: Not typed yet.\n} from '@wordpress/block-editor';\nimport { useDebounce } from '@wordpress/compose';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport { useBlockVariations } from './variations/variations-panel';\nimport { ScreenHeader } from './screen-header';\nimport { NavigationButtonAsItem } from './navigation-button';\nimport { useSetting } from './hooks';\nimport { unlock } from './lock-unlock';\n\nconst {\n\tuseHasDimensionsPanel,\n\tuseHasTypographyPanel,\n\tuseHasBorderPanel,\n\tuseSettingsForBlockElement,\n\tuseHasColorPanel,\n} = unlock( blockEditorPrivateApis );\n\nfunction useSortedBlockTypes() {\n\tconst blockItems = useSelect(\n\t\t( select ) => select( blocksStore ).getBlockTypes(),\n\t\t[]\n\t);\n\t// Ensure core blocks are prioritized in the returned results,\n\t// because third party blocks can be registered earlier than\n\t// the core blocks (usually by using the `init` action),\n\t// thus affecting the display order.\n\t// We don't sort reusable blocks as they are handled differently.\n\tconst groupByType = ( blocks: any, block: any ) => {\n\t\tconst { core, noncore } = blocks;\n\t\tconst type = block.name.startsWith( 'core/' ) ? core : noncore;\n\t\ttype.push( block );\n\t\treturn blocks;\n\t};\n\tconst { core: coreItems, noncore: nonCoreItems } = blockItems.reduce(\n\t\tgroupByType,\n\t\t{ core: [], noncore: [] }\n\t);\n\treturn [ ...coreItems, ...nonCoreItems ];\n}\n\nexport function useBlockHasGlobalStyles( blockName: string ) {\n\tconst [ rawSettings ] = useSetting( '', blockName );\n\tconst settings = useSettingsForBlockElement( rawSettings, blockName );\n\tconst hasTypographyPanel = useHasTypographyPanel( settings );\n\tconst hasColorPanel = useHasColorPanel( settings );\n\tconst hasBorderPanel = useHasBorderPanel( settings );\n\tconst hasDimensionsPanel = useHasDimensionsPanel( settings );\n\tconst hasLayoutPanel = hasBorderPanel || hasDimensionsPanel;\n\tconst hasVariationsPanel = !! useBlockVariations( blockName )?.length;\n\tconst hasGlobalStyles =\n\t\thasTypographyPanel ||\n\t\thasColorPanel ||\n\t\thasLayoutPanel ||\n\t\thasVariationsPanel;\n\treturn hasGlobalStyles;\n}\n\ninterface BlockMenuItemProps {\n\tblock: any;\n}\n\nfunction BlockMenuItem( { block }: BlockMenuItemProps ) {\n\tconst hasBlockMenuItem = useBlockHasGlobalStyles( block.name );\n\tif ( ! hasBlockMenuItem ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<NavigationButtonAsItem\n\t\t\tpath={ '/blocks/' + encodeURIComponent( block.name ) }\n\t\t>\n\t\t\t<HStack justify=\"flex-start\">\n\t\t\t\t<BlockIcon icon={ block.icon } />\n\t\t\t\t<FlexItem>{ block.title }</FlexItem>\n\t\t\t</HStack>\n\t\t</NavigationButtonAsItem>\n\t);\n}\n\ninterface BlockListProps {\n\tfilterValue: string;\n}\n\nfunction BlockList( { filterValue }: BlockListProps ) {\n\tconst sortedBlockTypes = useSortedBlockTypes();\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\tconst { isMatchingSearchTerm } = useSelect( blocksStore );\n\n\tconst filteredBlockTypes = ! filterValue\n\t\t? sortedBlockTypes\n\t\t: sortedBlockTypes.filter( ( blockType ) =>\n\t\t\t\tisMatchingSearchTerm( blockType, filterValue )\n\t\t  );\n\n\tconst blockTypesListRef = useRef< HTMLDivElement >( null );\n\n\t// Announce search results on change\n\tuseEffect( () => {\n\t\tif ( ! filterValue ) {\n\t\t\treturn;\n\t\t}\n\t\t// We extract the results from the wrapper div's `ref` because\n\t\t// filtered items can contain items that will eventually not\n\t\t// render and there is no reliable way to detect when a child\n\t\t// will return `null`.\n\t\t// TODO: We should find a better way of handling this as it's\n\t\t// fragile and depends on the number of rendered elements of `BlockMenuItem`,\n\t\t// which is now one.\n\t\t// @see https://github.com/WordPress/gutenberg/pull/39117#discussion_r816022116\n\t\tconst count = blockTypesListRef.current?.childElementCount || 0;\n\t\tconst resultsFoundMessage = sprintf(\n\t\t\t/* translators: %d: number of results. */\n\t\t\t_n( '%d result found.', '%d results found.', count ),\n\t\t\tcount\n\t\t);\n\t\tdebouncedSpeak( resultsFoundMessage, 'polite' );\n\t}, [ filterValue, debouncedSpeak ] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ blockTypesListRef }\n\t\t\tclassName=\"global-styles-ui-block-types-item-list\"\n\t\t\t// By default, BlockMenuItem has a role=listitem so this div must have a list role.\n\t\t\trole=\"list\"\n\t\t>\n\t\t\t{ filteredBlockTypes.length === 0 ? (\n\t\t\t\t<Text align=\"center\" as=\"p\">\n\t\t\t\t\t{ __( 'No blocks found.' ) }\n\t\t\t\t</Text>\n\t\t\t) : (\n\t\t\t\tfilteredBlockTypes.map( ( block ) => (\n\t\t\t\t\t<BlockMenuItem\n\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\tkey={ 'menu-itemblock-' + block.name }\n\t\t\t\t\t/>\n\t\t\t\t) )\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nconst MemoizedBlockList = memo( BlockList );\n\nfunction ScreenBlockList() {\n\tconst [ filterValue, setFilterValue ] = useState( '' );\n\tconst deferredFilterValue = useDeferredValue( filterValue );\n\n\treturn (\n\t\t<>\n\t\t\t<ScreenHeader\n\t\t\t\ttitle={ __( 'Blocks' ) }\n\t\t\t\tdescription={ __(\n\t\t\t\t\t'Customize the appearance of specific blocks and for the whole site.'\n\t\t\t\t) }\n\t\t\t/>\n\t\t\t<SearchControl\n\t\t\t\tclassName=\"global-styles-ui-block-types-search\"\n\t\t\t\tonChange={ setFilterValue }\n\t\t\t\tvalue={ filterValue }\n\t\t\t\tlabel={ __( 'Search' ) }\n\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t/>\n\t\t\t<MemoizedBlockList filterValue={ deferredFilterValue } />\n\t\t</>\n\t);\n}\n\nexport default ScreenBlockList;\n", "/**\n * WordPress dependencies\n */\n// @ts-expect-error: Not typed yet.\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { __experimentalItemGroup as ItemGroup } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { NavigationButtonAsItem } from '../navigation-button';\nimport { useStyle } from '../hooks';\n\ninterface BlockStyle {\n\tname: string;\n\tlabel: string;\n\tsource?: string;\n\tisDefault?: boolean;\n}\n\ninterface VariationsPanelProps {\n\tname: string;\n}\n\n// Only core block styles (source === block) or block styles with a matching\n// theme.json style variation will be configurable via Global Styles.\nfunction getFilteredBlockStyles(\n\tblockStyles: BlockStyle[],\n\tvariations: string[]\n): BlockStyle[] {\n\treturn (\n\t\tblockStyles?.filter(\n\t\t\t( style ) =>\n\t\t\t\tstyle.source === 'block' || variations.includes( style.name )\n\t\t) || []\n\t);\n}\n\nexport function useBlockVariations( name: string ): BlockStyle[] {\n\tconst blockStyles = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockStyles } = select( blocksStore );\n\t\t\treturn getBlockStyles( name );\n\t\t},\n\t\t[ name ]\n\t);\n\tconst [ variations ] = useStyle( 'variations', name );\n\tconst variationNames = Object.keys( variations ?? {} );\n\n\treturn getFilteredBlockStyles( blockStyles, variationNames );\n}\n\nexport function VariationsPanel( { name }: VariationsPanelProps ) {\n\tconst coreBlockStyles = useBlockVariations( name );\n\n\treturn (\n\t\t<ItemGroup isBordered isSeparated>\n\t\t\t{ coreBlockStyles.map( ( style, index ) => {\n\t\t\t\tif ( style?.isDefault ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<NavigationButtonAsItem\n\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\tpath={\n\t\t\t\t\t\t\t'/blocks/' +\n\t\t\t\t\t\t\tencodeURIComponent( name ) +\n\t\t\t\t\t\t\t'/variations/' +\n\t\t\t\t\t\t\tencodeURIComponent( style.name )\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{ style.label }\n\t\t\t\t\t</NavigationButtonAsItem>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ItemGroup>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalSpacer as Spacer,\n\t__experimentalHeading as Heading,\n\t__experimentalView as View,\n\t__experimentalText as Text,\n\tNavigator,\n} from '@wordpress/components';\nimport { isRTL, __ } from '@wordpress/i18n';\nimport { chevronRight, chevronLeft } from '@wordpress/icons';\n\ninterface ScreenHeaderProps {\n\ttitle: string;\n\tdescription?: string | React.ReactElement;\n\tonBack?: () => void;\n}\n\nexport function ScreenHeader( {\n\ttitle,\n\tdescription,\n\tonBack,\n}: ScreenHeaderProps ) {\n\treturn (\n\t\t<VStack spacing={ 0 }>\n\t\t\t<View>\n\t\t\t\t<Spacer marginBottom={ 0 } paddingX={ 4 } paddingY={ 3 }>\n\t\t\t\t\t<VStack spacing={ 2 }>\n\t\t\t\t\t\t<HStack spacing={ 2 }>\n\t\t\t\t\t\t\t<Navigator.BackButton\n\t\t\t\t\t\t\t\ticon={ isRTL() ? chevronRight : chevronLeft }\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Back' ) }\n\t\t\t\t\t\t\t\tonClick={ onBack }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Spacer>\n\t\t\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\t\t\tclassName=\"global-styles-ui-header\"\n\t\t\t\t\t\t\t\t\tlevel={ 2 }\n\t\t\t\t\t\t\t\t\tsize={ 13 }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t\t</Spacer>\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t{ description && (\n\t\t\t\t\t\t\t<Text className=\"global-styles-ui-header__description\">\n\t\t\t\t\t\t\t\t{ description }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</VStack>\n\t\t\t\t</Spacer>\n\t\t\t</View>\n\t\t</VStack>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\n// @ts-expect-error: Not typed yet.\nimport { getBlockType } from '@wordpress/blocks';\n// @ts-expect-error: Not typed yet.\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport {\n\tPanelBody,\n\t__experimentalVStack as VStack,\n\t__experimentalHasSplitBorders as hasSplitBorders,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport type { GlobalStylesConfig } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { ScreenHeader } from './screen-header';\nimport BlockPreviewPanel from './block-preview-panel';\nimport { Subtitle } from './subtitle';\nimport {\n\tuseBlockVariations,\n\tVariationsPanel,\n} from './variations/variations-panel';\nimport { useStyle, useSetting } from './hooks';\nimport { unlock } from './lock-unlock';\n\n// Initial control values.\nconst BACKGROUND_BLOCK_DEFAULT_VALUES = {\n\tbackgroundSize: 'cover',\n\tbackgroundPosition: '50% 50%', // used only when backgroundSize is 'contain'.\n};\n\nfunction applyFallbackStyle( border: any ) {\n\tif ( ! border ) {\n\t\treturn border;\n\t}\n\n\tconst hasColorOrWidth = border.color || border.width;\n\n\tif ( ! border.style && hasColorOrWidth ) {\n\t\treturn { ...border, style: 'solid' };\n\t}\n\n\tif ( border.style && ! hasColorOrWidth ) {\n\t\treturn undefined;\n\t}\n\n\treturn border;\n}\n\nfunction applyAllFallbackStyles( border: any ) {\n\tif ( ! border ) {\n\t\treturn border;\n\t}\n\n\tif ( hasSplitBorders( border ) ) {\n\t\treturn {\n\t\t\ttop: applyFallbackStyle( border.top ),\n\t\t\tright: applyFallbackStyle( border.right ),\n\t\t\tbottom: applyFallbackStyle( border.bottom ),\n\t\t\tleft: applyFallbackStyle( border.left ),\n\t\t};\n\t}\n\n\treturn applyFallbackStyle( border );\n}\n\nconst {\n\tuseHasDimensionsPanel,\n\tuseHasTypographyPanel,\n\tuseHasBorderPanel,\n\tuseSettingsForBlockElement,\n\tuseHasColorPanel,\n\tuseHasFiltersPanel,\n\tuseHasImageSettingsPanel,\n\tuseHasBackgroundPanel,\n\tBackgroundPanel: StylesBackgroundPanel,\n\tBorderPanel: StylesBorderPanel,\n\tColorPanel: StylesColorPanel,\n\tTypographyPanel: StylesTypographyPanel,\n\tDimensionsPanel: StylesDimensionsPanel,\n\tFiltersPanel: StylesFiltersPanel,\n\tImageSettingsPanel,\n\tAdvancedPanel: StylesAdvancedPanel,\n} = unlock( blockEditorPrivateApis );\n\ninterface ScreenBlockProps {\n\tname: string;\n\tvariation?: string;\n}\n\nfunction ScreenBlock( { name, variation }: ScreenBlockProps ) {\n\tlet prefixParts: string[] = [];\n\tif ( variation ) {\n\t\tprefixParts = [ 'variations', variation ].concat( prefixParts );\n\t}\n\tconst prefix = prefixParts.join( '.' );\n\n\tconst [ style ] = useStyle( prefix, name, 'user', false );\n\tconst [ inheritedStyle, setStyle ] = useStyle(\n\t\tprefix,\n\t\tname,\n\t\t'merged',\n\t\tfalse\n\t);\n\tconst [ userSettings ] = useSetting( '', name, 'user' );\n\tconst [ rawSettings, setSettings ] = useSetting( '', name );\n\tconst settingsForBlockElement = useSettingsForBlockElement(\n\t\trawSettings,\n\t\tname\n\t);\n\tconst blockType = getBlockType( name );\n\n\t// Only allow `blockGap` support if serialization has not been skipped, to be sure global spacing can be applied.\n\tlet disableBlockGap = false;\n\tif (\n\t\tsettingsForBlockElement?.spacing?.blockGap &&\n\t\tblockType?.supports?.spacing?.blockGap &&\n\t\t( blockType?.supports?.spacing?.__experimentalSkipSerialization ===\n\t\t\ttrue ||\n\t\t\tblockType?.supports?.spacing?.__experimentalSkipSerialization?.some?.(\n\t\t\t\t( spacingType: string ) => spacingType === 'blockGap'\n\t\t\t) )\n\t) {\n\t\tdisableBlockGap = true;\n\t}\n\n\t// Only allow `aspectRatio` support if the block is not the grouping block.\n\t// The grouping block allows the user to use Group, Row and Stack variations,\n\t// and it is highly likely that the user will not want to set an aspect ratio\n\t// for all three at once. Until there is the ability to set a different aspect\n\t// ratio for each variation, we disable the aspect ratio controls for the\n\t// grouping block in global styles.\n\tlet disableAspectRatio = false;\n\tif (\n\t\tsettingsForBlockElement?.dimensions?.aspectRatio &&\n\t\tname === 'core/group'\n\t) {\n\t\tdisableAspectRatio = true;\n\t}\n\n\tconst settings = useMemo( () => {\n\t\tconst updatedSettings = structuredClone( settingsForBlockElement );\n\t\tif ( disableBlockGap ) {\n\t\t\tupdatedSettings.spacing.blockGap = false;\n\t\t}\n\t\tif ( disableAspectRatio ) {\n\t\t\tupdatedSettings.dimensions.aspectRatio = false;\n\t\t}\n\t\treturn updatedSettings;\n\t}, [ settingsForBlockElement, disableBlockGap, disableAspectRatio ] );\n\n\tconst blockVariations = useBlockVariations( name );\n\tconst hasBackgroundPanel = useHasBackgroundPanel( settings );\n\tconst hasTypographyPanel = useHasTypographyPanel( settings );\n\tconst hasColorPanel = useHasColorPanel( settings );\n\tconst hasBorderPanel = useHasBorderPanel( settings );\n\tconst hasDimensionsPanel = useHasDimensionsPanel( settings );\n\tconst hasFiltersPanel = useHasFiltersPanel( settings );\n\tconst hasImageSettingsPanel = useHasImageSettingsPanel(\n\t\tname,\n\t\tuserSettings,\n\t\tsettings\n\t);\n\tconst hasVariationsPanel = !! blockVariations?.length && ! variation;\n\tconst { canEditCSS } = useSelect( ( select ) => {\n\t\tconst { getEntityRecord, __experimentalGetCurrentGlobalStylesId } =\n\t\t\tselect( coreStore );\n\n\t\tconst globalStylesId = __experimentalGetCurrentGlobalStylesId();\n\t\tconst globalStyles = globalStylesId\n\t\t\t? getEntityRecord( 'root', 'globalStyles', globalStylesId )\n\t\t\t: undefined;\n\n\t\treturn {\n\t\t\tcanEditCSS: !! ( globalStyles as GlobalStylesConfig )?._links?.[\n\t\t\t\t'wp:action-edit-css'\n\t\t\t],\n\t\t};\n\t}, [] );\n\tconst currentBlockStyle = variation\n\t\t? blockVariations.find( ( s: any ) => s.name === variation )\n\t\t: null;\n\n\t// These intermediary objects are needed because the \"layout\" property is stored\n\t// in settings rather than styles.\n\tconst inheritedStyleWithLayout = useMemo( () => {\n\t\treturn {\n\t\t\t...inheritedStyle,\n\t\t\tlayout: settings.layout,\n\t\t};\n\t}, [ inheritedStyle, settings.layout ] );\n\tconst styleWithLayout = useMemo( () => {\n\t\treturn {\n\t\t\t...style,\n\t\t\tlayout: userSettings.layout,\n\t\t};\n\t}, [ style, userSettings.layout ] );\n\tconst onChangeDimensions = ( newStyle: any ) => {\n\t\tconst updatedStyle = { ...newStyle };\n\t\tdelete updatedStyle.layout;\n\t\tsetStyle( updatedStyle );\n\n\t\tif ( newStyle.layout !== userSettings.layout ) {\n\t\t\tsetSettings( {\n\t\t\t\t...userSettings,\n\t\t\t\tlayout: newStyle.layout,\n\t\t\t} );\n\t\t}\n\t};\n\tconst onChangeLightbox = ( newSetting: any ) => {\n\t\t// If the newSetting is undefined, this means that the user has deselected\n\t\t// (reset) the lightbox setting.\n\t\tif ( newSetting === undefined ) {\n\t\t\tsetSettings( {\n\t\t\t\t...rawSettings,\n\t\t\t\tlightbox: undefined,\n\t\t\t} );\n\n\t\t\t// Otherwise, we simply set the lightbox setting to the new value but\n\t\t\t// taking care of not overriding the other lightbox settings.\n\t\t} else {\n\t\t\tsetSettings( {\n\t\t\t\t...rawSettings,\n\t\t\t\tlightbox: {\n\t\t\t\t\t...rawSettings.lightbox,\n\t\t\t\t\t...newSetting,\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t};\n\tconst onChangeBorders = ( newStyle: any ) => {\n\t\tif ( ! newStyle?.border ) {\n\t\t\tsetStyle( newStyle );\n\t\t\treturn;\n\t\t}\n\n\t\t// As Global Styles can't conditionally generate styles based on if\n\t\t// other style properties have been set, we need to force split\n\t\t// border definitions for user set global border styles. Border\n\t\t// radius is derived from the same property i.e. `border.radius` if\n\t\t// it is a string that is used. The longhand border radii styles are\n\t\t// only generated if that property is an object.\n\t\t//\n\t\t// For borders (color, style, and width) those are all properties on\n\t\t// the `border` style property. This means if the theme.json defined\n\t\t// split borders and the user condenses them into a flat border or\n\t\t// vice-versa we'd get both sets of styles which would conflict.\n\t\tconst { radius, ...newBorder } = newStyle.border;\n\t\tconst border = applyAllFallbackStyles( newBorder );\n\t\tconst updatedBorder = ! hasSplitBorders( border )\n\t\t\t? {\n\t\t\t\t\ttop: border,\n\t\t\t\t\tright: border,\n\t\t\t\t\tbottom: border,\n\t\t\t\t\tleft: border,\n\t\t\t  }\n\t\t\t: {\n\t\t\t\t\tcolor: null,\n\t\t\t\t\tstyle: null,\n\t\t\t\t\twidth: null,\n\t\t\t\t\t...border,\n\t\t\t  };\n\n\t\tsetStyle( { ...newStyle, border: { ...updatedBorder, radius } } );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<ScreenHeader\n\t\t\t\ttitle={\n\t\t\t\t\tvariation ? currentBlockStyle?.label : blockType?.title\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<BlockPreviewPanel name={ name } variation={ variation } />\n\t\t\t{ hasVariationsPanel && (\n\t\t\t\t<div className=\"global-styles-ui-screen-variations\">\n\t\t\t\t\t<VStack spacing={ 3 }>\n\t\t\t\t\t\t<Subtitle>{ __( 'Style Variations' ) }</Subtitle>\n\t\t\t\t\t\t<VariationsPanel name={ name } />\n\t\t\t\t\t</VStack>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ hasColorPanel && (\n\t\t\t\t<StylesColorPanel\n\t\t\t\t\tinheritedValue={ inheritedStyle }\n\t\t\t\t\tvalue={ style }\n\t\t\t\t\tonChange={ setStyle }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBackgroundPanel && (\n\t\t\t\t<StylesBackgroundPanel\n\t\t\t\t\tinheritedValue={ inheritedStyle }\n\t\t\t\t\tvalue={ style }\n\t\t\t\t\tonChange={ setStyle }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t\tdefaultValues={ BACKGROUND_BLOCK_DEFAULT_VALUES }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasTypographyPanel && (\n\t\t\t\t<StylesTypographyPanel\n\t\t\t\t\tinheritedValue={ inheritedStyle }\n\t\t\t\t\tvalue={ style }\n\t\t\t\t\tonChange={ setStyle }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasDimensionsPanel && (\n\t\t\t\t<StylesDimensionsPanel\n\t\t\t\t\tinheritedValue={ inheritedStyleWithLayout }\n\t\t\t\t\tvalue={ styleWithLayout }\n\t\t\t\t\tonChange={ onChangeDimensions }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t\tincludeLayoutControls\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasBorderPanel && (\n\t\t\t\t<StylesBorderPanel\n\t\t\t\t\tinheritedValue={ inheritedStyle }\n\t\t\t\t\tvalue={ style }\n\t\t\t\t\tonChange={ onChangeBorders }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasFiltersPanel && (\n\t\t\t\t<StylesFiltersPanel\n\t\t\t\t\tinheritedValue={ inheritedStyleWithLayout }\n\t\t\t\t\tvalue={ styleWithLayout }\n\t\t\t\t\tonChange={ setStyle }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t\tincludeLayoutControls\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ hasImageSettingsPanel && (\n\t\t\t\t<ImageSettingsPanel\n\t\t\t\t\tonChange={ onChangeLightbox }\n\t\t\t\t\tvalue={ userSettings }\n\t\t\t\t\tinheritedValue={ settings }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ canEditCSS && (\n\t\t\t\t<PanelBody title={ __( 'Advanced' ) } initialOpen={ false }>\n\t\t\t\t\t<p>\n\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t// translators: %s: is the name of a block e.g., 'Image' or 'Table'.\n\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t'Add your own CSS to customize the appearance of the %s block. You do not need to include a CSS selector, just add the property and value.'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tblockType?.title\n\t\t\t\t\t\t) }\n\t\t\t\t\t</p>\n\t\t\t\t\t<StylesAdvancedPanel\n\t\t\t\t\t\tvalue={ style }\n\t\t\t\t\t\tonChange={ setStyle }\n\t\t\t\t\t\tinheritedValue={ inheritedStyle }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ScreenBlock;\n", "/**\n * WordPress dependencies\n */\n// @ts-expect-error: Not typed yet.\nimport { BlockPreview } from '@wordpress/block-editor';\n// @ts-expect-error: Not typed yet.\nimport { getBlockType, getBlockFromExample } from '@wordpress/blocks';\nimport { __experimentalSpacer as Spacer } from '@wordpress/components';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { getVariationClassName } from './utils';\n\ninterface BlockPreviewPanelProps {\n\tname: string;\n\tvariation?: string;\n}\n\nconst BlockPreviewPanel = ( {\n\tname,\n\tvariation = '',\n}: BlockPreviewPanelProps ) => {\n\tconst blockExample = getBlockType( name )?.example;\n\tconst blocks = useMemo( () => {\n\t\tif ( ! blockExample ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst example = {\n\t\t\t...blockExample,\n\t\t\tattributes: {\n\t\t\t\t...blockExample.attributes,\n\t\t\t\tstyle: undefined,\n\t\t\t\tclassName: variation\n\t\t\t\t\t? getVariationClassName( variation )\n\t\t\t\t\t: blockExample.attributes?.className,\n\t\t\t},\n\t\t};\n\n\t\treturn getBlockFromExample( name, example );\n\t}, [ name, blockExample, variation ] );\n\n\tconst viewportWidth = blockExample?.viewportWidth ?? 500;\n\t// Same as height of InserterPreviewPanel.\n\tconst previewHeight = 144;\n\tconst sidebarWidth = 235;\n\tconst scale = sidebarWidth / viewportWidth;\n\tconst minHeight =\n\t\tscale !== 0 && scale < 1 && previewHeight\n\t\t\t? previewHeight / scale\n\t\t\t: previewHeight;\n\n\tif ( ! blockExample ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Spacer marginX={ 4 } marginBottom={ 4 }>\n\t\t\t<div\n\t\t\t\tclassName=\"global-styles-ui__block-preview-panel\"\n\t\t\t\tstyle={ { maxHeight: previewHeight, boxSizing: 'initial' } }\n\t\t\t>\n\t\t\t\t<BlockPreview\n\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\tviewportWidth={ viewportWidth }\n\t\t\t\t\tminHeight={ previewHeight }\n\t\t\t\t\tadditionalStyles={\n\t\t\t\t\t\t//We want this CSS to be in sync with the one in InserterPreviewPanel.\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcss: `\n\t\t\t\t\t\t\t\tbody{\n\t\t\t\t\t\t\t\t\tpadding: 24px;\n\t\t\t\t\t\t\t\t\tmin-height:${ Math.round( minHeight ) }px;\n\t\t\t\t\t\t\t\t\tdisplay:flex;\n\t\t\t\t\t\t\t\t\talign-items:center;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t.is-root-container { width: 100%; }\n\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</Spacer>\n\t);\n};\n\nexport default BlockPreviewPanel;\n", "/**\n * WordPress dependencies\n */\nimport { __experimentalHeading as Heading } from '@wordpress/components';\n\ninterface SubtitleProps {\n\tchildren: React.ReactNode;\n\tlevel?: 1 | 2 | 3 | 4 | 5 | 6;\n}\n\nexport function Subtitle( { children, level = 2 }: SubtitleProps ) {\n\treturn (\n\t\t<Heading className=\"global-styles-ui-subtitle\" level={ level }>\n\t\t\t{ children }\n\t\t</Heading>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { __experimentalVStack as VStack } from '@wordpress/components';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { ScreenHeader } from './screen-header';\nimport { ScreenBody } from './screen-body';\nimport TypographyElements from './typography-elements';\nimport TypographyVariations from './variations/variations-typography';\nimport FontFamilies from './font-families';\nimport FontSizesCount from './font-sizes/font-sizes-count';\nimport { GlobalStylesContext } from './context';\n\nfunction ScreenTypography() {\n\tconst { fontLibraryEnabled } = useContext( GlobalStylesContext );\n\n\treturn (\n\t\t<>\n\t\t\t<ScreenHeader\n\t\t\t\ttitle={ __( 'Typography' ) }\n\t\t\t\tdescription={ __(\n\t\t\t\t\t'Available fonts, typographic styles, and the application of those styles.'\n\t\t\t\t) }\n\t\t\t/>\n\t\t\t<ScreenBody>\n\t\t\t\t<VStack spacing={ 7 }>\n\t\t\t\t\t<TypographyVariations title={ __( 'Typesets' ) } />\n\t\t\t\t\t{ fontLibraryEnabled && <FontFamilies /> }\n\t\t\t\t\t<TypographyElements />\n\t\t\t\t\t<FontSizesCount />\n\t\t\t\t</VStack>\n\t\t\t</ScreenBody>\n\t\t</>\n\t);\n}\n\nexport default ScreenTypography;\n", "/**\n * WordPress dependencies\n */\nimport { __experimentalSpacer as Spacer } from '@wordpress/components';\nimport clsx from 'clsx';\n\ninterface ScreenBodyProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n}\n\nexport function ScreenBody( { children, className }: ScreenBodyProps ) {\n\treturn (\n\t\t<Spacer\n\t\t\tclassName={ clsx( 'global-styles-ui-screen-body', className ) }\n\t\t\tpadding={ 4 } // 4 units = 16px. Could be made configurable via prop in the future if needed.\n\t\t>\n\t\t\t{ children }\n\t\t</Spacer>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n\tFlexItem,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { NavigationButtonAsItem } from './navigation-button';\nimport { Subtitle } from './subtitle';\nimport { useStyle } from './hooks';\n\ninterface ElementItemProps {\n\tparentMenu: string;\n\telement: string;\n\tlabel: string;\n}\n\nfunction ElementItem( { parentMenu, element, label }: ElementItemProps ) {\n\tconst prefix =\n\t\telement === 'text' || ! element ? '' : `elements.${ element }.`;\n\tconst extraStyles =\n\t\telement === 'link'\n\t\t\t? {\n\t\t\t\t\ttextDecoration: 'underline',\n\t\t\t  }\n\t\t\t: {};\n\n\tconst [ fontFamily ] = useStyle< string >(\n\t\tprefix + 'typography.fontFamily'\n\t);\n\tconst [ fontStyle ] = useStyle< string >( prefix + 'typography.fontStyle' );\n\tconst [ fontWeight ] = useStyle< string >(\n\t\tprefix + 'typography.fontWeight'\n\t);\n\tconst [ backgroundColor ] = useStyle< string >(\n\t\tprefix + 'color.background'\n\t);\n\tconst [ fallbackBackgroundColor ] =\n\t\tuseStyle< string >( 'color.background' );\n\tconst [ gradientValue ] = useStyle< string >( prefix + 'color.gradient' );\n\tconst [ color ] = useStyle< string >( prefix + 'color.text' );\n\n\treturn (\n\t\t<NavigationButtonAsItem path={ parentMenu + '/typography/' + element }>\n\t\t\t<HStack justify=\"flex-start\">\n\t\t\t\t<FlexItem\n\t\t\t\t\tclassName=\"global-styles-ui-screen-typography__indicator\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\tfontFamily: fontFamily ?? 'serif',\n\t\t\t\t\t\tbackground:\n\t\t\t\t\t\t\tgradientValue ??\n\t\t\t\t\t\t\tbackgroundColor ??\n\t\t\t\t\t\t\tfallbackBackgroundColor,\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\tfontStyle,\n\t\t\t\t\t\tfontWeight,\n\t\t\t\t\t\t...extraStyles,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Aa' ) }\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem>{ label }</FlexItem>\n\t\t\t</HStack>\n\t\t</NavigationButtonAsItem>\n\t);\n}\n\nfunction TypographyElements() {\n\tconst parentMenu = '';\n\n\treturn (\n\t\t<VStack spacing={ 3 }>\n\t\t\t<Subtitle level={ 3 }>{ __( 'Elements' ) }</Subtitle>\n\t\t\t<ItemGroup isBordered isSeparated>\n\t\t\t\t<ElementItem\n\t\t\t\t\tparentMenu={ parentMenu }\n\t\t\t\t\telement=\"text\"\n\t\t\t\t\tlabel={ __( 'Text' ) }\n\t\t\t\t/>\n\t\t\t\t<ElementItem\n\t\t\t\t\tparentMenu={ parentMenu }\n\t\t\t\t\telement=\"link\"\n\t\t\t\t\tlabel={ __( 'Links' ) }\n\t\t\t\t/>\n\t\t\t\t<ElementItem\n\t\t\t\t\tparentMenu={ parentMenu }\n\t\t\t\t\telement=\"heading\"\n\t\t\t\t\tlabel={ __( 'Headings' ) }\n\t\t\t\t/>\n\t\t\t\t<ElementItem\n\t\t\t\t\tparentMenu={ parentMenu }\n\t\t\t\t\telement=\"caption\"\n\t\t\t\t\tlabel={ __( 'Captions' ) }\n\t\t\t\t/>\n\t\t\t\t<ElementItem\n\t\t\t\t\tparentMenu={ parentMenu }\n\t\t\t\t\telement=\"button\"\n\t\t\t\t\tlabel={ __( 'Buttons' ) }\n\t\t\t\t/>\n\t\t\t</ItemGroup>\n\t\t</VStack>\n\t);\n}\n\nexport default TypographyElements;\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalGrid as Grid,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport StylesPreviewTypography from '../preview-typography';\nimport { useCurrentMergeThemeStyleVariationsWithUserConfig } from '../hooks';\nimport { Subtitle } from '../subtitle';\nimport Variation from './variation';\n\ninterface TypographyVariationsProps {\n\ttitle?: string;\n\tgap?: number;\n}\n\nconst propertiesToFilter = [ 'typography' ];\n\nexport default function TypographyVariations( {\n\ttitle,\n\tgap = 2,\n}: TypographyVariationsProps ) {\n\tconst typographyVariations =\n\t\tuseCurrentMergeThemeStyleVariationsWithUserConfig( propertiesToFilter );\n\n\t// Return null if there is only one variation (the default).\n\tif ( typographyVariations?.length <= 1 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<VStack spacing={ 3 }>\n\t\t\t{ title && <Subtitle level={ 3 }>{ title }</Subtitle> }\n\t\t\t<Grid\n\t\t\t\tcolumns={ 3 }\n\t\t\t\tgap={ gap }\n\t\t\t\tclassName=\"global-styles-ui-style-variations-container\"\n\t\t\t>\n\t\t\t\t{ typographyVariations.map(\n\t\t\t\t\t( variation: any, index: number ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Variation\n\t\t\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\t\t\tvariation={ variation }\n\t\t\t\t\t\t\t\tproperties={ propertiesToFilter }\n\t\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ () => (\n\t\t\t\t\t\t\t\t\t<StylesPreviewTypography\n\t\t\t\t\t\t\t\t\t\tvariation={ variation }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</Variation>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t</Grid>\n\t\t</VStack>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __experimentalHStack as HStack } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport TypographyExample from './typography-example';\nimport PreviewWrapper from './preview-wrapper';\n\ninterface StylesPreviewTypographyProps {\n\tvariation: any;\n\tisFocused?: boolean;\n\twithHoverView?: boolean;\n}\n\nconst StylesPreviewTypography = ( {\n\tvariation,\n\tisFocused,\n\twithHoverView,\n}: StylesPreviewTypographyProps ) => {\n\treturn (\n\t\t<PreviewWrapper\n\t\t\tlabel={ variation.title }\n\t\t\tisFocused={ isFocused }\n\t\t\twithHoverView={ withHoverView }\n\t\t>\n\t\t\t{ ( { ratio, key } ) => (\n\t\t\t\t<HStack\n\t\t\t\t\tkey={ key }\n\t\t\t\t\tspacing={ 10 * ratio }\n\t\t\t\t\tjustify=\"center\"\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<TypographyExample\n\t\t\t\t\t\tvariation={ variation }\n\t\t\t\t\t\tfontSize={ 85 * ratio }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t</PreviewWrapper>\n\t);\n};\n\nexport default StylesPreviewTypography;\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { Tooltip } from '@wordpress/components';\nimport { useMemo, useContext, useState } from '@wordpress/element';\nimport { ENTER } from '@wordpress/keycodes';\nimport { _x, sprintf } from '@wordpress/i18n';\nimport {\n\tareGlobalStylesEqual,\n\tmergeGlobalStyles,\n} from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { GlobalStylesContext } from '../context';\nimport { filterObjectByProperties } from '../utils';\n\ninterface VariationProps {\n\tvariation: any;\n\tchildren: ( isFocused: boolean ) => React.ReactNode;\n\tisPill?: boolean;\n\tproperties?: string[];\n\tshowTooltip?: boolean;\n}\n\nexport default function Variation( {\n\tvariation,\n\tchildren,\n\tisPill = false,\n\tproperties,\n\tshowTooltip = false,\n}: VariationProps ) {\n\tconst [ isFocused, setIsFocused ] = useState( false );\n\tconst {\n\t\tbase,\n\t\tuser,\n\t\tonChange: setUserConfig,\n\t} = useContext( GlobalStylesContext );\n\n\tconst context = useMemo( () => {\n\t\tlet merged = mergeGlobalStyles( base, variation );\n\t\tif ( properties ) {\n\t\t\tmerged = filterObjectByProperties( merged, properties );\n\t\t}\n\t\treturn {\n\t\t\tuser: variation,\n\t\t\tbase,\n\t\t\tmerged,\n\t\t\tonChange: () => {},\n\t\t};\n\t}, [ variation, base, properties ] );\n\n\tconst selectVariation = () => setUserConfig( variation );\n\n\tconst selectOnEnter = ( event: React.KeyboardEvent ) => {\n\t\tif ( event.keyCode === ENTER ) {\n\t\t\tevent.preventDefault();\n\t\t\tselectVariation();\n\t\t}\n\t};\n\n\tconst isActive = useMemo(\n\t\t() => areGlobalStylesEqual( user, variation ),\n\t\t[ user, variation ]\n\t);\n\n\tlet label = variation?.title;\n\tif ( variation?.description ) {\n\t\tlabel = sprintf(\n\t\t\t/* translators: 1: variation title. 2: variation description. */\n\t\t\t_x( '%1$s (%2$s)', 'variation label' ),\n\t\t\tvariation?.title,\n\t\t\tvariation?.description\n\t\t);\n\t}\n\n\tconst content = (\n\t\t<div\n\t\t\tclassName={ clsx( 'global-styles-ui-variations_item', {\n\t\t\t\t'is-active': isActive,\n\t\t\t} ) }\n\t\t\trole=\"button\"\n\t\t\tonClick={ selectVariation }\n\t\t\tonKeyDown={ selectOnEnter }\n\t\t\ttabIndex={ 0 }\n\t\t\taria-label={ label }\n\t\t\taria-current={ isActive }\n\t\t\tonFocus={ () => setIsFocused( true ) }\n\t\t\tonBlur={ () => setIsFocused( false ) }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={ clsx( 'global-styles-ui-variations_item-preview', {\n\t\t\t\t\t'is-pill': isPill,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ children( isFocused ) }\n\t\t\t</div>\n\t\t</div>\n\t);\n\n\treturn (\n\t\t<GlobalStylesContext.Provider value={ context }>\n\t\t\t{ showTooltip ? (\n\t\t\t\t<Tooltip text={ variation?.title }>{ content }</Tooltip>\n\t\t\t) : (\n\t\t\t\tcontent\n\t\t\t) }\n\t\t</GlobalStylesContext.Provider>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalText as Text,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n\tButton,\n} from '@wordpress/components';\nimport { settings } from '@wordpress/icons';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { Subtitle } from './subtitle';\nimport { useSetting } from './hooks';\nimport FontLibraryProvider, {\n\tFontLibraryContext,\n} from './font-library/context';\nimport FontLibraryModal from './font-library/modal';\nimport FontFamilyItem from './font-family-item';\nimport { setUIValuesNeeded } from './font-library/utils';\n\n/**\n * Maps the fonts with the source, if available.\n *\n * @param {Array}  fonts  The fonts to map.\n * @param {string} source The source of the fonts.\n * @return {Array} The mapped fonts.\n */\nfunction mapFontsWithSource( fonts: any[], source: string ) {\n\treturn fonts\n\t\t? fonts.map( ( f ) => setUIValuesNeeded( f, { source } ) )\n\t\t: [];\n}\n\nfunction FontFamiliesInner() {\n\tconst { baseCustomFonts, modalTabOpen, setModalTabOpen } =\n\t\tuseContext( FontLibraryContext );\n\tconst [ fontFamilies ] = useSetting( 'typography.fontFamilies' );\n\tconst [ baseFontFamilies ] = useSetting(\n\t\t'typography.fontFamilies',\n\t\tundefined,\n\t\t'base'\n\t);\n\tconst themeFonts = mapFontsWithSource( fontFamilies?.theme, 'theme' );\n\tconst customFonts = mapFontsWithSource( fontFamilies?.custom, 'custom' );\n\tconst activeFonts = [ ...themeFonts, ...customFonts ].sort( ( a, b ) =>\n\t\ta.name.localeCompare( b.name )\n\t);\n\tconst hasFonts = 0 < activeFonts.length;\n\tconst hasInstalledFonts =\n\t\thasFonts ||\n\t\tbaseFontFamilies?.theme?.length > 0 ||\n\t\t( baseCustomFonts?.length ?? 0 ) > 0;\n\n\treturn (\n\t\t<>\n\t\t\t{ !! modalTabOpen && (\n\t\t\t\t<FontLibraryModal\n\t\t\t\t\tonRequestClose={ () => setModalTabOpen?.( '' ) }\n\t\t\t\t\tdefaultTabId={ modalTabOpen }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<VStack spacing={ 2 }>\n\t\t\t\t<HStack justify=\"space-between\">\n\t\t\t\t\t<Subtitle level={ 3 }>{ __( 'Fonts' ) }</Subtitle>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ () => setModalTabOpen?.( 'installed-fonts' ) }\n\t\t\t\t\t\tlabel={ __( 'Manage fonts' ) }\n\t\t\t\t\t\ticon={ settings }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t\t{ activeFonts.length > 0 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ItemGroup size=\"large\" isBordered isSeparated>\n\t\t\t\t\t\t\t{ activeFonts.map( ( font ) => (\n\t\t\t\t\t\t\t\t<FontFamilyItem\n\t\t\t\t\t\t\t\t\tkey={ font.slug }\n\t\t\t\t\t\t\t\t\tfont={ font }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t\t{ ! hasFonts && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Text as=\"p\">\n\t\t\t\t\t\t\t{ hasInstalledFonts\n\t\t\t\t\t\t\t\t? __( 'No fonts activated.' )\n\t\t\t\t\t\t\t\t: __( 'No fonts installed.' ) }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"global-styles-ui-font-families__manage-fonts\"\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetModalTabOpen?.(\n\t\t\t\t\t\t\t\t\thasInstalledFonts\n\t\t\t\t\t\t\t\t\t\t? 'installed-fonts'\n\t\t\t\t\t\t\t\t\t\t: 'upload-fonts'\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ hasInstalledFonts\n\t\t\t\t\t\t\t\t? __( 'Manage fonts' )\n\t\t\t\t\t\t\t\t: __( 'Add fonts' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t</>\n\t);\n}\n\nexport default function FontFamilies( { ...props } ) {\n\treturn (\n\t\t<FontLibraryProvider>\n\t\t\t<FontFamiliesInner { ...props } />\n\t\t</FontLibraryProvider>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { createContext, useState, useEffect } from '@wordpress/element';\nimport {\n\tuseSelect,\n\tuseDispatch,\n\tresolveSelect,\n\tuseRegistry,\n} from '@wordpress/data';\nimport {\n\tuseEntityRecord,\n\tuseEntityRecords,\n\tstore as coreStore,\n} from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\nimport type {\n\tFontFamilyPreset,\n\tGlobalStylesConfig,\n} from '@wordpress/global-styles-engine';\nimport type {\n\tCollectionFontFace,\n\tCollectionFontFamily,\n\tFontFace,\n\tFontFamily,\n\tWpFontFamily,\n} from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { fetchInstallFontFamily } from './api';\nimport {\n\tsetUIValuesNeeded,\n\tmergeFontFamilies,\n\tloadFontFaceInBrowser,\n\tunloadFontFaceInBrowser,\n\tgetDisplaySrcFromFontFace,\n\tmakeFontFacesFormData,\n\tmakeFontFamilyFormData,\n\tbatchInstallFontFaces,\n\tcheckFontFaceInstalled,\n} from './utils';\nimport { setImmutably } from './utils/set-immutably';\nimport { toggleFont } from './utils/toggleFont';\nimport type { FontFamilyToUpload, FontLibraryState } from './types';\nimport { useSetting } from '../hooks';\n\nexport const FontLibraryContext = createContext< FontLibraryState >(\n\t{} as FontLibraryState\n);\nFontLibraryContext.displayName = 'FontLibraryContext';\n\nfunction FontLibraryProvider( { children }: { children: React.ReactNode } ) {\n\tconst registry = useRegistry();\n\tconst { saveEntityRecord, deleteEntityRecord } = useDispatch( coreStore );\n\tconst { globalStylesId } = useSelect( ( select ) => {\n\t\tconst { __experimentalGetCurrentGlobalStylesId } = select( coreStore );\n\t\treturn { globalStylesId: __experimentalGetCurrentGlobalStylesId() };\n\t}, [] );\n\n\tconst globalStyles = useEntityRecord< GlobalStylesConfig >(\n\t\t'root',\n\t\t'globalStyles',\n\t\tglobalStylesId\n\t);\n\n\tconst [ isInstalling, setIsInstalling ] = useState( false );\n\n\tconst { records: libraryPosts = [], isResolving: isResolvingLibrary } =\n\t\tuseEntityRecords< CollectionFontFamily >(\n\t\t\t'postType',\n\t\t\t'wp_font_family',\n\t\t\t{\n\t\t\t\t_embed: true,\n\t\t\t}\n\t\t);\n\n\tconst libraryFonts: FontFamilyPreset[] =\n\t\t( libraryPosts || [] ).map( ( fontFamilyPost ) => {\n\t\t\treturn {\n\t\t\t\tid: fontFamilyPost.id,\n\t\t\t\t...( fontFamilyPost.font_family_settings || {} ),\n\t\t\t\tfontFace:\n\t\t\t\t\tfontFamilyPost?._embedded?.font_faces?.map(\n\t\t\t\t\t\t( face ) => face.font_face_settings\n\t\t\t\t\t) || [],\n\t\t\t};\n\t\t} ) || [];\n\n\t// Global Styles (settings) font families\n\tconst [ fontFamilies, setFontFamilies ] = useSetting<\n\t\tRecord< string, FontFamilyPreset[] > | undefined\n\t>( 'typography.fontFamilies' );\n\n\t/*\n\t * Save the font families to the database.\n\n\t * This function is called when the user activates or deactivates a font family.\n\t * It only updates the global styles post content in the database for new font families.\n\t * This avoids saving other styles/settings changed by the user using other parts of the editor.\n\t *\n\t * It uses the font families from the param to avoid using the font families from an outdated state.\n\t *\n\t * @param {Array} fonts - The font families that will be saved to the database.\n\t */\n\tconst saveFontFamilies = async (\n\t\tfonts:\n\t\t\t| FontFamilyPreset[]\n\t\t\t| Record< string, FontFamilyPreset[] >\n\t\t\t| undefined\n\t) => {\n\t\tif ( ! globalStyles.record ) {\n\t\t\treturn;\n\t\t}\n\t\t// Gets the global styles database post content.\n\t\tconst updatedGlobalStyles = globalStyles.record;\n\n\t\t// Updates the database version of global styles with the edited font families in the client.\n\t\tconst finalGlobalStyles = setImmutably(\n\t\t\tupdatedGlobalStyles ?? {},\n\t\t\t[ 'settings', 'typography', 'fontFamilies' ],\n\t\t\tfonts\n\t\t);\n\n\t\t// Saves a new version of the global styles in the database.\n\t\tawait saveEntityRecord( 'root', 'globalStyles', finalGlobalStyles );\n\t};\n\n\t// Library Fonts\n\tconst [ modalTabOpen, setModalTabOpen ] = useState( '' );\n\tconst [ libraryFontSelected, setLibraryFontSelected ] = useState<\n\t\tFontFamily | undefined\n\t>( undefined );\n\n\t// Themes Fonts are the fonts defined in the global styles (database persisted theme.json data).\n\tconst themeFonts = fontFamilies?.theme\n\t\t? fontFamilies.theme\n\t\t\t\t.map( ( f ) => setUIValuesNeeded( f, { source: 'theme' } ) )\n\t\t\t\t.sort( ( a, b ) => a.name.localeCompare( b.name ) )\n\t\t: [];\n\n\tconst customFonts = fontFamilies?.custom\n\t\t? fontFamilies.custom\n\t\t\t\t.map( ( f ) => setUIValuesNeeded( f, { source: 'custom' } ) )\n\t\t\t\t.sort( ( a, b ) => a.name.localeCompare( b.name ) )\n\t\t: [];\n\n\tconst baseCustomFonts = libraryFonts\n\t\t? libraryFonts\n\t\t\t\t.map( ( f ) => setUIValuesNeeded( f, { source: 'custom' } ) )\n\t\t\t\t.sort( ( a, b ) => a.name.localeCompare( b.name ) )\n\t\t: [];\n\n\tuseEffect( () => {\n\t\tif ( ! modalTabOpen ) {\n\t\t\tsetLibraryFontSelected( undefined );\n\t\t}\n\t}, [ modalTabOpen ] );\n\n\tconst handleSetLibraryFontSelected = ( font?: FontFamily ) => {\n\t\t// If font is null, reset the selected font\n\t\tif ( ! font ) {\n\t\t\tsetLibraryFontSelected( undefined );\n\t\t\treturn;\n\t\t}\n\n\t\tconst fonts = font.source === 'theme' ? themeFonts : baseCustomFonts;\n\n\t\t// Tries to find the font in the installed fonts\n\t\tconst fontSelected = fonts.find( ( f ) => f.slug === font.slug );\n\t\t// If the font is not found (it is only defined in custom styles), use the font from custom styles\n\t\tsetLibraryFontSelected( {\n\t\t\t...( fontSelected || font ),\n\t\t\tsource: font.source,\n\t\t} );\n\t};\n\n\t// Demo\n\tconst [ loadedFontUrls ] = useState( new Set() );\n\n\tconst getAvailableFontsOutline = (\n\t\tavailableFontFamilies: FontFamily[]\n\t) => {\n\t\tconst outline: Record< string, string[] > =\n\t\t\tavailableFontFamilies.reduce(\n\t\t\t\t( acc: Record< string, string[] >, font ) => {\n\t\t\t\t\tconst availableFontFaces =\n\t\t\t\t\t\tfont?.fontFace && font.fontFace?.length > 0\n\t\t\t\t\t\t\t? font?.fontFace.map(\n\t\t\t\t\t\t\t\t\t( face ) =>\n\t\t\t\t\t\t\t\t\t\t`${ face.fontStyle ?? '' }${\n\t\t\t\t\t\t\t\t\t\t\tface.fontWeight ?? ''\n\t\t\t\t\t\t\t\t\t\t}`\n\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t: [ 'normal400' ]; // If the font doesn't have fontFace, we assume it is a system font and we add the defaults: normal 400\n\n\t\t\t\t\tacc[ font.slug ] = availableFontFaces;\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\t\treturn outline;\n\t};\n\n\tconst getActivatedFontsOutline = ( source?: string ) => {\n\t\tswitch ( source ) {\n\t\t\tcase 'theme':\n\t\t\t\treturn getAvailableFontsOutline( themeFonts );\n\t\t\tcase 'custom':\n\t\t\tdefault:\n\t\t\t\treturn getAvailableFontsOutline( customFonts );\n\t\t}\n\t};\n\n\tconst isFontActivated = (\n\t\tslug: string,\n\t\tstyle?: string,\n\t\tweight?: string | number,\n\t\tsource?: string\n\t) => {\n\t\tif ( ! style && ! weight ) {\n\t\t\treturn !! getActivatedFontsOutline( source )[ slug ];\n\t\t}\n\t\treturn !! getActivatedFontsOutline( source )[ slug ]?.includes(\n\t\t\t( style ?? '' ) + ( weight ?? '' )\n\t\t);\n\t};\n\n\tconst getFontFacesActivated = ( slug: string, source?: string ) => {\n\t\treturn getActivatedFontsOutline( source )[ slug ] || [];\n\t};\n\n\tasync function installFonts( fontFamiliesToInstall: FontFamilyToUpload[] ) {\n\t\tsetIsInstalling( true );\n\t\ttry {\n\t\t\tconst fontFamiliesToActivate = [];\n\t\t\tlet installationErrors: Array< {\n\t\t\t\tmessage: string;\n\t\t\t} > = [];\n\n\t\t\tfor ( const fontFamilyToInstall of fontFamiliesToInstall ) {\n\t\t\t\tlet isANewFontFamily = false;\n\n\t\t\t\t// Get the font family if it already exists.\n\t\t\t\tconst fontFamilyRecords = await resolveSelect(\n\t\t\t\t\tcoreStore\n\t\t\t\t).getEntityRecords< WpFontFamily >(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_font_family',\n\t\t\t\t\t{\n\t\t\t\t\t\tslug: fontFamilyToInstall.slug,\n\t\t\t\t\t\tper_page: 1,\n\t\t\t\t\t\t_embed: true,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tconst fontFamilyPost =\n\t\t\t\t\tfontFamilyRecords && fontFamilyRecords.length > 0\n\t\t\t\t\t\t? fontFamilyRecords[ 0 ]\n\t\t\t\t\t\t: null;\n\n\t\t\t\tlet installedFontFamily = fontFamilyPost\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tid: fontFamilyPost.id,\n\t\t\t\t\t\t\t...fontFamilyPost.font_family_settings,\n\t\t\t\t\t\t\tfontFace:\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\tfontFamilyPost?._embedded?.font_faces ?? []\n\t\t\t\t\t\t\t\t).map(\n\t\t\t\t\t\t\t\t\t( face: CollectionFontFace ) =>\n\t\t\t\t\t\t\t\t\t\tface.font_face_settings\n\t\t\t\t\t\t\t\t) || [],\n\t\t\t\t\t  }\n\t\t\t\t\t: null;\n\n\t\t\t\t// Otherwise create it.\n\t\t\t\tif ( ! installedFontFamily ) {\n\t\t\t\t\tisANewFontFamily = true;\n\t\t\t\t\t// Prepare font family form data to install.\n\t\t\t\t\tinstalledFontFamily = await fetchInstallFontFamily(\n\t\t\t\t\t\tmakeFontFamilyFormData( fontFamilyToInstall ),\n\t\t\t\t\t\tregistry\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Collect font faces that have already been installed (to be activated later)\n\t\t\t\tconst alreadyInstalledFontFaces =\n\t\t\t\t\tinstalledFontFamily.fontFace && fontFamilyToInstall.fontFace\n\t\t\t\t\t\t? installedFontFamily.fontFace.filter(\n\t\t\t\t\t\t\t\t( fontFaceToInstall: FontFace ) =>\n\t\t\t\t\t\t\t\t\tfontFaceToInstall &&\n\t\t\t\t\t\t\t\t\tfontFamilyToInstall.fontFace &&\n\t\t\t\t\t\t\t\t\tcheckFontFaceInstalled(\n\t\t\t\t\t\t\t\t\t\tfontFaceToInstall,\n\t\t\t\t\t\t\t\t\t\tfontFamilyToInstall.fontFace\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t  )\n\t\t\t\t\t\t: [];\n\n\t\t\t\t// Filter out Font Faces that have already been installed (so that they are not re-installed)\n\t\t\t\tif (\n\t\t\t\t\tinstalledFontFamily.fontFace &&\n\t\t\t\t\tfontFamilyToInstall.fontFace\n\t\t\t\t) {\n\t\t\t\t\tfontFamilyToInstall.fontFace =\n\t\t\t\t\t\tfontFamilyToInstall.fontFace.filter(\n\t\t\t\t\t\t\t( fontFaceToInstall ) =>\n\t\t\t\t\t\t\t\t! checkFontFaceInstalled(\n\t\t\t\t\t\t\t\t\tfontFaceToInstall,\n\t\t\t\t\t\t\t\t\tinstalledFontFamily.fontFace\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Install the fonts (upload the font files to the server and create the post in the database).\n\t\t\t\tlet successfullyInstalledFontFaces: FontFace[] = [];\n\t\t\t\tlet unsuccessfullyInstalledFontFaces: {\n\t\t\t\t\tmessage: string;\n\t\t\t\t}[] = [];\n\t\t\t\tif ( fontFamilyToInstall?.fontFace?.length ?? 0 > 0 ) {\n\t\t\t\t\tconst response = await batchInstallFontFaces(\n\t\t\t\t\t\t// @ts-expect-error - Type mismatch: WpFontFamily.id can be number | string, but batchInstallFontFaces expects only string.\n\t\t\t\t\t\tinstalledFontFamily.id,\n\t\t\t\t\t\tmakeFontFacesFormData(\n\t\t\t\t\t\t\tfontFamilyToInstall as FontFamily\n\t\t\t\t\t\t),\n\t\t\t\t\t\tregistry\n\t\t\t\t\t);\n\t\t\t\t\tsuccessfullyInstalledFontFaces = response?.successes;\n\t\t\t\t\tunsuccessfullyInstalledFontFaces = response?.errors;\n\t\t\t\t}\n\n\t\t\t\t// Use the successfully installed font faces\n\t\t\t\t// As well as any font faces that were already installed (those will be activated)\n\t\t\t\tif (\n\t\t\t\t\tsuccessfullyInstalledFontFaces?.length > 0 ||\n\t\t\t\t\talreadyInstalledFontFaces?.length > 0\n\t\t\t\t) {\n\t\t\t\t\t// Use font data from REST API not from client to ensure\n\t\t\t\t\t// correct font information is used.\n\t\t\t\t\tinstalledFontFamily.fontFace = [\n\t\t\t\t\t\t...successfullyInstalledFontFaces,\n\t\t\t\t\t];\n\n\t\t\t\t\tfontFamiliesToActivate.push( installedFontFamily );\n\t\t\t\t}\n\n\t\t\t\t// If it's a system font but was installed successfully, activate it.\n\t\t\t\tif (\n\t\t\t\t\tinstalledFontFamily &&\n\t\t\t\t\t! fontFamilyToInstall?.fontFace?.length\n\t\t\t\t) {\n\t\t\t\t\tfontFamiliesToActivate.push( installedFontFamily );\n\t\t\t\t}\n\n\t\t\t\t// If the font family is new and is not a system font, delete it to avoid having font families without font faces.\n\t\t\t\tif (\n\t\t\t\t\tisANewFontFamily &&\n\t\t\t\t\t( fontFamilyToInstall?.fontFace?.length ?? 0 ) > 0 &&\n\t\t\t\t\tsuccessfullyInstalledFontFaces?.length === 0\n\t\t\t\t) {\n\t\t\t\t\tawait deleteEntityRecord(\n\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t'wp_font_family',\n\t\t\t\t\t\tinstalledFontFamily.id,\n\t\t\t\t\t\t{ force: true }\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tinstallationErrors = installationErrors.concat(\n\t\t\t\t\tunsuccessfullyInstalledFontFaces\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst installationErrorMessages: string[] =\n\t\t\t\tinstallationErrors.reduce(\n\t\t\t\t\t( unique: string[], item ) =>\n\t\t\t\t\t\tunique.includes( item.message )\n\t\t\t\t\t\t\t? unique\n\t\t\t\t\t\t\t: [ ...unique, item.message ],\n\t\t\t\t\t[]\n\t\t\t\t);\n\n\t\t\tif ( fontFamiliesToActivate.length > 0 ) {\n\t\t\t\t// Activate the font family (add the font family to the global styles).\n\t\t\t\tconst activeFonts = activateCustomFontFamilies(\n\t\t\t\t\t// @ts-expect-error - Type mismatch: items may have id as number | string, but FontFamily.id should be string | undefined.\n\t\t\t\t\tfontFamiliesToActivate\n\t\t\t\t);\n\t\t\t\t// Save the global styles to the database.\n\t\t\t\tawait saveFontFamilies( activeFonts );\n\t\t\t}\n\n\t\t\tif ( installationErrorMessages.length > 0 ) {\n\t\t\t\tconst installError: Error & {\n\t\t\t\t\tinstallationErrors?: string[];\n\t\t\t\t} = new Error( __( 'There was an error installing fonts.' ) );\n\n\t\t\t\tinstallError.installationErrors = installationErrorMessages;\n\n\t\t\t\tthrow installError;\n\t\t\t}\n\t\t} finally {\n\t\t\tsetIsInstalling( false );\n\t\t}\n\t}\n\n\tasync function uninstallFontFamily( fontFamilyToUninstall: FontFamily ) {\n\t\tif ( ! fontFamilyToUninstall?.id ) {\n\t\t\tthrow new Error( __( 'Font family to uninstall is not defined.' ) );\n\t\t}\n\t\ttry {\n\t\t\t// Uninstall the font family.\n\t\t\t// (Removes the font files from the server and the posts from the database).\n\t\t\tawait deleteEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_font_family',\n\t\t\t\tfontFamilyToUninstall.id,\n\t\t\t\t{ force: true }\n\t\t\t);\n\n\t\t\t// Deactivate the font family (remove from global styles).\n\t\t\tconst activeFonts = deactivateFontFamily( fontFamilyToUninstall );\n\t\t\t// Save the global styles to the database.\n\t\t\tawait saveFontFamilies( activeFonts );\n\t\t\treturn { deleted: true };\n\t\t} catch ( error ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(\n\t\t\t\t`There was an error uninstalling the font family:`,\n\t\t\t\terror\n\t\t\t);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tconst deactivateFontFamily = ( font: FontFamily ) => {\n\t\t// If the user doesn't have custom fonts defined, include as custom fonts all the theme fonts\n\t\t// We want to save as active all the theme fonts at the beginning\n\t\tconst initialCustomFonts = fontFamilies?.[ font.source ?? '' ] ?? [];\n\t\tconst newCustomFonts = initialCustomFonts.filter(\n\t\t\t( f ) => f.slug !== font.slug\n\t\t);\n\t\tconst activeFonts = {\n\t\t\t...fontFamilies,\n\t\t\t[ font.source ?? '' ]: newCustomFonts,\n\t\t};\n\t\tsetFontFamilies( activeFonts );\n\n\t\tif ( font.fontFace ) {\n\t\t\tfont.fontFace.forEach( ( face ) => {\n\t\t\t\tunloadFontFaceInBrowser( face, 'all' );\n\t\t\t} );\n\t\t}\n\t\treturn activeFonts;\n\t};\n\n\tconst activateCustomFontFamilies = ( fontsToAdd: FontFamily[] ) => {\n\t\tconst fontsToActivate = cleanFontsForSave( fontsToAdd );\n\n\t\tconst activeFonts = {\n\t\t\t...fontFamilies,\n\t\t\t// Merge the existing custom fonts with the new fonts.\n\t\t\tcustom: mergeFontFamilies( fontFamilies?.custom, fontsToActivate ),\n\t\t};\n\n\t\t// Activate the fonts by set the new custom fonts array.\n\t\tsetFontFamilies( activeFonts );\n\n\t\tloadFontsInBrowser( fontsToActivate );\n\n\t\treturn activeFonts;\n\t};\n\n\t// Removes the id from the families and faces to avoid saving that to global styles post content.\n\tconst cleanFontsForSave = ( fonts: FontFamily[] ) => {\n\t\treturn fonts.map( ( { id: _familyDbId, fontFace, ...font } ) => ( {\n\t\t\t...font,\n\t\t\t...( fontFace && fontFace.length > 0\n\t\t\t\t? {\n\t\t\t\t\t\tfontFace: fontFace.map(\n\t\t\t\t\t\t\t( { id: _faceDbId, ...face } ) => face\n\t\t\t\t\t\t),\n\t\t\t\t  }\n\t\t\t\t: {} ),\n\t\t} ) );\n\t};\n\n\tconst loadFontsInBrowser = ( fonts: FontFamily[] ) => {\n\t\t// Add custom fonts to the browser.\n\t\tfonts.forEach( ( font ) => {\n\t\t\tif ( font.fontFace ) {\n\t\t\t\tfont.fontFace.forEach( ( face ) => {\n\t\t\t\t\tconst displaySrc = getDisplaySrcFromFontFace(\n\t\t\t\t\t\tface?.src ?? ''\n\t\t\t\t\t);\n\t\t\t\t\tif ( displaySrc ) {\n\t\t\t\t\t\t// Load font faces just in the iframe because they already are in the document.\n\t\t\t\t\t\tloadFontFaceInBrowser( face, displaySrc, 'all' );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t};\n\n\tconst toggleActivateFont = ( font: FontFamily, face?: FontFace ) => {\n\t\t// If the user doesn't have custom fonts defined, include as custom fonts all the theme fonts\n\t\t// We want to save as active all the theme fonts at the beginning\n\t\tconst initialFonts = fontFamilies?.[ font.source ?? '' ] ?? [];\n\t\t// Toggles the received font family or font face\n\t\tconst newFonts = toggleFont( font, face, initialFonts );\n\t\t// Updates the font families activated in global settings:\n\t\tsetFontFamilies( {\n\t\t\t...fontFamilies,\n\t\t\t[ font.source ?? '' ]: newFonts,\n\t\t} );\n\n\t\tconst isFaceActivated = isFontActivated(\n\t\t\tfont.slug,\n\t\t\tface?.fontStyle ?? '',\n\t\t\tface?.fontWeight ?? '',\n\t\t\tfont.source ?? 'custom'\n\t\t);\n\n\t\tif ( face && isFaceActivated ) {\n\t\t\tunloadFontFaceInBrowser( face, 'all' );\n\t\t} else {\n\t\t\tconst displaySrc = getDisplaySrcFromFontFace( face?.src ?? '' );\n\t\t\t// If the font doesn't have a src, don't load it.\n\t\t\tif ( face && displaySrc ) {\n\t\t\t\tloadFontFaceInBrowser( face, displaySrc, 'all' );\n\t\t\t}\n\t\t}\n\t};\n\n\tconst loadFontFaceAsset = async ( fontFace: FontFace ) => {\n\t\t// If the font doesn't have a src, don't load it.\n\t\tif ( ! fontFace.src ) {\n\t\t\treturn;\n\t\t}\n\t\t// Get the src of the font.\n\t\tconst src = getDisplaySrcFromFontFace( fontFace.src );\n\t\t// If the font is already loaded, don't load it again.\n\t\tif ( ! src || loadedFontUrls.has( src ) ) {\n\t\t\treturn;\n\t\t}\n\t\t// Load the font in the browser.\n\t\tloadFontFaceInBrowser( fontFace, src, 'document' );\n\t\t// Add the font to the loaded fonts list.\n\t\tloadedFontUrls.add( src );\n\t};\n\n\treturn (\n\t\t<FontLibraryContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tlibraryFontSelected,\n\t\t\t\thandleSetLibraryFontSelected,\n\t\t\t\tfontFamilies: fontFamilies ?? {},\n\t\t\t\tbaseCustomFonts,\n\t\t\t\tisFontActivated,\n\t\t\t\tgetFontFacesActivated,\n\t\t\t\tloadFontFaceAsset,\n\t\t\t\tinstallFonts,\n\t\t\t\tuninstallFontFamily,\n\t\t\t\ttoggleActivateFont,\n\t\t\t\tgetAvailableFontsOutline,\n\t\t\t\tmodalTabOpen,\n\t\t\t\tsetModalTabOpen,\n\t\t\t\tsaveFontFamilies,\n\t\t\t\tisResolvingLibrary,\n\t\t\t\tisInstalling,\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</FontLibraryContext.Provider>\n\t);\n}\n\nexport default FontLibraryProvider;\n", "/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport type {\n\tCollectionFontFace,\n\tCollectionFontFamily,\n\tFontFace,\n} from '@wordpress/core-data';\nimport type { DataRegistry } from '@wordpress/data';\n\nconst FONT_FAMILIES_URL = '/wp/v2/font-families';\n\n/**\n * Invalidates the cache for font family queries.\n * This should be called after installing fonts\n * to ensure the UI reflects the latest state.\n *\n * @param registry The data registry to use for dispatching actions.\n */\nfunction invalidateFontFamilyCache( registry: DataRegistry ) {\n\tconst { receiveEntityRecords } = registry.dispatch( coreDataStore );\n\n\t// Invalidate all font family queries\n\t// Ideally there should be a dedicated action to do this\n\t// \"invalide all cacches for this entity type\"\n\treceiveEntityRecords(\n\t\t'postType',\n\t\t'wp_font_family',\n\t\t[],\n\t\tundefined,\n\t\ttrue // invalidateCache\n\t);\n}\n\nexport async function fetchInstallFontFamily(\n\tdata: FormData,\n\tregistry: DataRegistry\n) {\n\tconst config = {\n\t\tpath: FONT_FAMILIES_URL,\n\t\tmethod: 'POST',\n\t\tbody: data,\n\t};\n\tconst response: CollectionFontFamily = await apiFetch( config );\n\tinvalidateFontFamilyCache( registry );\n\n\treturn {\n\t\tid: response.id as string,\n\t\t...response.font_family_settings,\n\t\tfontFace: [],\n\t};\n}\n\nexport async function fetchInstallFontFace(\n\tfontFamilyId: string,\n\tdata: FormData,\n\tregistry: DataRegistry\n): Promise< FontFace > {\n\tconst config = {\n\t\tpath: `${ FONT_FAMILIES_URL }/${ fontFamilyId }/font-faces`,\n\t\tmethod: 'POST',\n\t\tbody: data,\n\t};\n\tconst response = ( await apiFetch( config ) ) as CollectionFontFace;\n\tinvalidateFontFamilyCache( registry );\n\treturn {\n\t\tid: response.id,\n\t\t...response.font_face_settings,\n\t};\n}\n", "/**\n * WordPress dependencies\n */\nimport { privateApis as componentsPrivateApis } from '@wordpress/components';\nimport type { FontFamily, FontFace } from '@wordpress/core-data';\nimport type { DataRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { FONT_WEIGHTS, FONT_STYLES } from './constants';\nimport { fetchInstallFontFace } from '../api';\nimport { formatFontFaceName } from './preview-styles';\nimport type { FontFamilyToUpload, FontUploadResult } from '../types';\nimport { unlock } from '../../lock-unlock';\n\n/**\n * Browser dependencies\n */\nconst { File } = window;\nconst { kebabCase } = unlock( componentsPrivateApis );\n\nexport function setUIValuesNeeded(\n\tfont: FontFamily,\n\textraValues: Partial< FontFamily > = {}\n): FontFamily {\n\tif ( ! font.name && ( font.fontFamily || font.slug ) ) {\n\t\tfont.name = font.fontFamily || font.slug;\n\t}\n\treturn {\n\t\t...font,\n\t\t...extraValues,\n\t};\n}\n\nexport function isUrlEncoded( url: string ): boolean {\n\tif ( typeof url !== 'string' ) {\n\t\treturn false;\n\t}\n\treturn url !== decodeURIComponent( url );\n}\n\nexport function getFontFaceVariantName( face: FontFace ): string {\n\tconst weightName = FONT_WEIGHTS[ face.fontWeight ?? '' ] || face.fontWeight;\n\tconst styleName =\n\t\tface.fontStyle === 'normal'\n\t\t\t? ''\n\t\t\t: FONT_STYLES[ face.fontStyle ?? '' ] || face.fontStyle;\n\treturn `${ weightName } ${ styleName }`;\n}\n\nexport function mergeFontFaces(\n\texisting: FontFace[] = [],\n\tincoming: FontFace[] = []\n): FontFace[] {\n\tconst map = new Map();\n\tfor ( const face of existing ) {\n\t\tmap.set( `${ face.fontWeight }${ face.fontStyle }`, face );\n\t}\n\tfor ( const face of incoming ) {\n\t\t// This will overwrite if the src already exists, keeping it unique.\n\t\tmap.set( `${ face.fontWeight }${ face.fontStyle }`, face );\n\t}\n\treturn Array.from( map.values() );\n}\n\nexport function mergeFontFamilies(\n\texisting: FontFamily[] = [],\n\tincoming: FontFamily[] = []\n): FontFamily[] {\n\tconst map = new Map();\n\t// Add the existing array to the map.\n\tfor ( const font of existing ) {\n\t\tmap.set( font.slug, { ...font } );\n\t}\n\t// Add the incoming array to the map, overwriting existing values excepting fontFace that need to be merged.\n\tfor ( const font of incoming ) {\n\t\tif ( map.has( font.slug ) ) {\n\t\t\tconst { fontFace: incomingFontFaces, ...restIncoming } = font;\n\t\t\tconst existingFont = map.get( font.slug );\n\t\t\t// Merge the fontFaces existing with the incoming fontFaces.\n\t\t\tconst mergedFontFaces = mergeFontFaces(\n\t\t\t\texistingFont.fontFace,\n\t\t\t\tincomingFontFaces\n\t\t\t);\n\t\t\t// Except for the fontFace key all the other keys are overwritten with the incoming values.\n\t\t\tmap.set( font.slug, {\n\t\t\t\t...restIncoming,\n\t\t\t\tfontFace: mergedFontFaces,\n\t\t\t} );\n\t\t} else {\n\t\t\tmap.set( font.slug, { ...font } );\n\t\t}\n\t}\n\treturn Array.from( map.values() );\n}\n\n/*\n * Loads the font face from a URL and adds it to the browser.\n * It also adds it to the iframe document.\n */\nexport async function loadFontFaceInBrowser(\n\tfontFace: FontFace,\n\tsource: string | File,\n\taddTo: 'all' | 'document' | 'iframe' = 'all'\n): Promise< void > {\n\tlet dataSource;\n\n\tif ( typeof source === 'string' ) {\n\t\tdataSource = `url(${ source })`;\n\t} else if ( source instanceof File ) {\n\t\tdataSource = await source.arrayBuffer();\n\t} else {\n\t\treturn;\n\t}\n\n\tconst newFont = new window.FontFace(\n\t\tformatFontFaceName( fontFace.fontFamily ),\n\t\tdataSource,\n\t\t{\n\t\t\tstyle: fontFace.fontStyle,\n\t\t\tweight: String( fontFace.fontWeight ),\n\t\t}\n\t);\n\n\tconst loadedFace = await newFont.load();\n\n\tif ( addTo === 'document' || addTo === 'all' ) {\n\t\tdocument.fonts.add( loadedFace );\n\t}\n\n\tif ( addTo === 'iframe' || addTo === 'all' ) {\n\t\tconst iframe = document.querySelector(\n\t\t\t'iframe[name=\"editor-canvas\"]'\n\t\t) as HTMLIFrameElement;\n\t\tif ( iframe?.contentDocument ) {\n\t\t\tiframe.contentDocument.fonts.add( loadedFace );\n\t\t}\n\t}\n}\n\n/*\n * Unloads the font face and remove it from the browser.\n * It also removes it from the iframe document.\n *\n * Note that Font faces that were added to the set using the CSS @font-face rule\n * remain connected to the corresponding CSS, and cannot be deleted.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet/delete.\n */\nexport function unloadFontFaceInBrowser(\n\tfontFace: FontFace,\n\tremoveFrom: 'all' | 'document' | 'iframe' = 'all'\n): void {\n\tconst unloadFontFace = ( fonts: FontFaceSet ) => {\n\t\tfonts.forEach( ( f ) => {\n\t\t\tif (\n\t\t\t\tf.family === formatFontFaceName( fontFace?.fontFamily ) &&\n\t\t\t\tf.weight === fontFace?.fontWeight &&\n\t\t\t\tf.style === fontFace?.fontStyle\n\t\t\t) {\n\t\t\t\tfonts.delete( f );\n\t\t\t}\n\t\t} );\n\t};\n\n\tif ( removeFrom === 'document' || removeFrom === 'all' ) {\n\t\tunloadFontFace( document.fonts );\n\t}\n\n\tif ( removeFrom === 'iframe' || removeFrom === 'all' ) {\n\t\tconst iframe = document.querySelector(\n\t\t\t'iframe[name=\"editor-canvas\"]'\n\t\t) as HTMLIFrameElement;\n\t\tif ( iframe?.contentDocument ) {\n\t\t\tunloadFontFace( iframe.contentDocument.fonts );\n\t\t}\n\t}\n}\n\n/**\n * Retrieves the display source from a font face src.\n *\n * @param {string|string[]} input - The font face src.\n * @return {string|undefined} The display source or undefined if the input is invalid.\n */\nexport function getDisplaySrcFromFontFace(\n\tinput: string | string[]\n): string | undefined {\n\tif ( ! input ) {\n\t\treturn;\n\t}\n\n\tlet src;\n\tif ( Array.isArray( input ) ) {\n\t\tsrc = input[ 0 ];\n\t} else {\n\t\tsrc = input;\n\t}\n\t// It's expected theme fonts will already be loaded in the browser.\n\tif ( src.startsWith( 'file:.' ) ) {\n\t\treturn;\n\t}\n\tif ( ! isUrlEncoded( src ) ) {\n\t\tsrc = encodeURI( src );\n\t}\n\treturn src;\n}\n\nexport function makeFontFamilyFormData( fontFamily: FontFamily ): FormData {\n\tconst formData = new FormData();\n\n\tconst { fontFace, category, ...familyWithValidParameters } = fontFamily;\n\tconst fontFamilySettings = {\n\t\t...familyWithValidParameters,\n\t\tslug: kebabCase( fontFamily.slug ),\n\t};\n\n\tformData.append(\n\t\t'font_family_settings',\n\t\tJSON.stringify( fontFamilySettings )\n\t);\n\treturn formData;\n}\n\nexport function makeFontFacesFormData( font: FontFamilyToUpload ): FormData[] {\n\tconst fontFacesFormData = ( font?.fontFace ?? [] ).map(\n\t\t( item, faceIndex ) => {\n\t\t\tconst face = { ...item };\n\t\t\tconst formData = new FormData();\n\t\t\tif ( face.file ) {\n\t\t\t\t// Normalize to an array, since face.file may be a single file or an array of files.\n\t\t\t\tconst files = Array.isArray( face.file )\n\t\t\t\t\t? face.file\n\t\t\t\t\t: [ face.file ];\n\t\t\t\tconst src: string[] = [];\n\n\t\t\t\tfiles.forEach( ( file, key ) => {\n\t\t\t\t\t// Slugified file name because the it might contain spaces or characters treated differently on the server.\n\t\t\t\t\tconst fileId = `file-${ faceIndex }-${ key }`;\n\t\t\t\t\t// Add the files to the formData\n\t\t\t\t\tformData.append( fileId, file, file.name );\n\t\t\t\t\tsrc.push( fileId );\n\t\t\t\t} );\n\n\t\t\t\tface.src = src.length === 1 ? src[ 0 ] : src;\n\t\t\t\tdelete face.file;\n\n\t\t\t\tformData.append( 'font_face_settings', JSON.stringify( face ) );\n\t\t\t} else {\n\t\t\t\tformData.append( 'font_face_settings', JSON.stringify( face ) );\n\t\t\t}\n\t\t\treturn formData;\n\t\t}\n\t);\n\n\treturn fontFacesFormData;\n}\n\nexport async function batchInstallFontFaces(\n\tfontFamilyId: string,\n\tfontFacesData: FormData[],\n\tregistry: DataRegistry\n): Promise< FontUploadResult > {\n\tconst responses: {\n\t\tstatus: 'fulfilled' | 'rejected';\n\t\tvalue?: FontFace;\n\t\treason?: Error;\n\t}[] = [];\n\n\t/*\n\t * Uses the same response format as Promise.allSettled, but executes requests in sequence to work\n\t * around a race condition that can cause an error when the fonts directory doesn't exist yet.\n\t */\n\tfor ( const faceData of fontFacesData ) {\n\t\ttry {\n\t\t\tconst response = await fetchInstallFontFace(\n\t\t\t\tfontFamilyId,\n\t\t\t\tfaceData,\n\t\t\t\tregistry\n\t\t\t);\n\t\t\tresponses.push( { status: 'fulfilled', value: response } );\n\t\t} catch ( error ) {\n\t\t\tresponses.push( { status: 'rejected', reason: error as Error } );\n\t\t}\n\t}\n\n\tconst results: {\n\t\tsuccesses: FontFace[];\n\t\terrors: Array< {\n\t\t\tdata: FormData;\n\t\t\tmessage: string;\n\t\t} >;\n\t} = {\n\t\terrors: [],\n\t\tsuccesses: [],\n\t};\n\n\tresponses.forEach( ( result, index ) => {\n\t\tif ( result.status === 'fulfilled' && result.value ) {\n\t\t\tconst response = result.value;\n\t\t\tresults.successes.push( response );\n\t\t} else if ( result.reason ) {\n\t\t\t// Handle network errors or other fetch-related errors\n\t\t\tresults.errors.push( {\n\t\t\t\tdata: fontFacesData[ index ],\n\t\t\t\tmessage: result.reason.message,\n\t\t\t} );\n\t\t}\n\t} );\n\n\treturn results;\n}\n\n/*\n * Downloads a font face asset from a URL to the client and returns a File object.\n */\nexport async function downloadFontFaceAssets(\n\tsrc: string | string[]\n): Promise< File | File[] > {\n\t// Normalize to an array, since `src` could be a string or array.\n\tsrc = Array.isArray( src ) ? src : [ src ];\n\n\tconst files = await Promise.all(\n\t\tsrc.map( async ( url ) => {\n\t\t\treturn fetch( new Request( url ) )\n\t\t\t\t.then( ( response ) => {\n\t\t\t\t\tif ( ! response.ok ) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Error downloading font face asset from ${ url }. Server responded with status: ${ response.status }`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn response.blob();\n\t\t\t\t} )\n\t\t\t\t.then( ( blob ) => {\n\t\t\t\t\tconst filename = url.split( '/' ).pop() as string;\n\t\t\t\t\tconst file = new File( [ blob ], filename, {\n\t\t\t\t\t\ttype: blob.type,\n\t\t\t\t\t} );\n\t\t\t\t\treturn file;\n\t\t\t\t} );\n\t\t} )\n\t);\n\n\t// If we only have one file return it (not the array).  Otherwise return all of them in the array.\n\treturn files.length === 1 ? files[ 0 ] : files;\n}\n\n/*\n * Determine if a given Font Face is present in a given collection.\n * We determine that a font face has been installed by comparing the fontWeight and fontStyle\n *\n * @param {Object} fontFace The Font Face to seek\n * @param {Array} collection The Collection to seek in\n * @returns True if the font face is found in the collection.  Otherwise False.\n */\nexport function checkFontFaceInstalled(\n\tfontFace: FontFace,\n\tcollection: FontFace[]\n): boolean {\n\treturn (\n\t\t-1 !==\n\t\tcollection.findIndex( ( collectionFontFace ) => {\n\t\t\treturn (\n\t\t\t\tcollectionFontFace.fontWeight === fontFace.fontWeight &&\n\t\t\t\tcollectionFontFace.fontStyle === fontFace.fontStyle\n\t\t\t);\n\t\t} )\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { _x } from '@wordpress/i18n';\n\nexport const ALLOWED_FILE_EXTENSIONS = [ 'otf', 'ttf', 'woff', 'woff2' ];\n\nexport const FONT_WEIGHTS: Record< string, string > = {\n\t100: _x( 'Thin', 'font weight' ),\n\t200: _x( 'Extra-light', 'font weight' ),\n\t300: _x( 'Light', 'font weight' ),\n\t400: _x( 'Normal', 'font weight' ),\n\t500: _x( 'Medium', 'font weight' ),\n\t600: _x( 'Semi-bold', 'font weight' ),\n\t700: _x( 'Bold', 'font weight' ),\n\t800: _x( 'Extra-bold', 'font weight' ),\n\t900: _x( 'Black', 'font weight' ),\n};\n\nexport const FONT_STYLES: Record< string, string > = {\n\tnormal: _x( 'Normal', 'font style' ),\n\titalic: _x( 'Italic', 'font style' ),\n};\n", "/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\tModal,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { store as coreStore, useEntityRecords } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport type { FontCollection as FontCollectionType } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport InstalledFonts from './installed-fonts';\nimport FontCollection from './font-collection';\nimport UploadFonts from './upload-fonts';\nimport { unlock } from '../lock-unlock';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nconst DEFAULT_TAB = {\n\tid: 'installed-fonts',\n\ttitle: _x( 'Library', 'Font library' ),\n};\n\nconst UPLOAD_TAB = {\n\tid: 'upload-fonts',\n\ttitle: _x( 'Upload', 'noun' ),\n};\n\nconst tabsFromCollections = ( collections: FontCollectionType[] ) =>\n\tcollections.map( ( { slug, name } ) => ( {\n\t\tid: slug,\n\t\ttitle:\n\t\t\tcollections.length === 1 && slug === 'google-fonts'\n\t\t\t\t? __( 'Install Fonts' )\n\t\t\t\t: name,\n\t} ) );\n\nfunction FontLibraryModal( {\n\tonRequestClose,\n\tdefaultTabId = 'installed-fonts',\n}: {\n\tonRequestClose: () => void;\n\tdefaultTabId?: string;\n} ) {\n\tconst { records: collections = [] } =\n\t\tuseEntityRecords< FontCollectionType >( 'root', 'fontCollection', {\n\t\t\t_fields: 'slug,name,description',\n\t\t} );\n\tconst canUserCreate = useSelect( ( select ) => {\n\t\treturn select( coreStore ).canUser( 'create', {\n\t\t\tkind: 'postType',\n\t\t\tname: 'wp_font_family',\n\t\t} );\n\t}, [] );\n\n\tconst tabs: { id: string; title: string }[] = [ DEFAULT_TAB ];\n\n\tif ( canUserCreate ) {\n\t\ttabs.push( UPLOAD_TAB );\n\t\ttabs.push( ...tabsFromCollections( collections || [] ) );\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Fonts' ) }\n\t\t\tonRequestClose={ onRequestClose }\n\t\t\tisFullScreen\n\t\t\tclassName=\"font-library-modal\"\n\t\t>\n\t\t\t<Tabs defaultTabId={ defaultTabId }>\n\t\t\t\t<div className=\"font-library-modal__tablist-container\">\n\t\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t\t{ tabs.map( ( { id, title } ) => (\n\t\t\t\t\t\t\t<Tabs.Tab key={ id } tabId={ id }>\n\t\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Tabs.TabList>\n\t\t\t\t</div>\n\t\t\t\t{ tabs.map( ( { id } ) => {\n\t\t\t\t\tlet contents;\n\t\t\t\t\tswitch ( id ) {\n\t\t\t\t\t\tcase 'upload-fonts':\n\t\t\t\t\t\t\tcontents = <UploadFonts />;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'installed-fonts':\n\t\t\t\t\t\t\tcontents = <InstalledFonts />;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tcontents = <FontCollection slug={ id } />;\n\t\t\t\t\t}\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\t\ttabId={ id }\n\t\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\t\tclassName=\"font-library-modal__tab-panel\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ contents }\n\t\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</Tabs>\n\t\t</Modal>\n\t);\n}\n\nexport default FontLibraryModal;\n", "/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\t__experimentalConfirmDialog as ConfirmDialog,\n\t__experimentalHStack as HStack,\n\t__experimentalHeading as Heading,\n\tNavigator,\n\tuseNavigator,\n\t__experimentalSpacer as Spacer,\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n\tFlex,\n\tNotice,\n\tProgressBar,\n\tCheckboxControl,\n} from '@wordpress/components';\nimport { useEntityRecord, store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useEffect, useState } from '@wordpress/element';\nimport { __, _x, sprintf, isRTL } from '@wordpress/i18n';\nimport { chevronLeft, chevronRight } from '@wordpress/icons';\nimport type {\n\tFontFamilyPreset,\n\tGlobalStylesConfig,\n} from '@wordpress/global-styles-engine';\nimport type { FontFamily } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { FontLibraryContext } from './context';\nimport FontCard from './font-card';\nimport LibraryFontVariant from './library-font-variant';\nimport { sortFontFaces } from './utils/sort-font-faces';\nimport {\n\tsetUIValuesNeeded,\n\tloadFontFaceInBrowser,\n\tunloadFontFaceInBrowser,\n\tgetDisplaySrcFromFontFace,\n} from './utils';\nimport { useSetting } from '../hooks';\n\nfunction InstalledFonts() {\n\tconst {\n\t\tbaseCustomFonts,\n\t\tlibraryFontSelected,\n\t\thandleSetLibraryFontSelected,\n\t\tuninstallFontFamily,\n\t\tisResolvingLibrary,\n\t\tisInstalling,\n\t\tsaveFontFamilies,\n\t\tgetFontFacesActivated,\n\t} = useContext( FontLibraryContext );\n\n\tconst [ fontFamilies, setFontFamilies ] = useSetting<\n\t\tRecord< string, FontFamilyPreset[] > | undefined\n\t>( 'typography.fontFamilies' );\n\tconst [ isConfirmDeleteOpen, setIsConfirmDeleteOpen ] =\n\t\tuseState< boolean >( false );\n\tconst [ notice, setNotice ] = useState< {\n\t\ttype: 'success' | 'error' | 'info';\n\t\tmessage: string;\n\t} | null >( null );\n\tconst [ baseFontFamilies ] = useSetting<\n\t\tRecord< string, FontFamilyPreset[] > | undefined\n\t>( 'typography.fontFamilies', undefined, 'base' );\n\tconst globalStylesId = useSelect( ( select ) => {\n\t\tconst { __experimentalGetCurrentGlobalStylesId } = select( coreStore );\n\t\treturn __experimentalGetCurrentGlobalStylesId();\n\t}, [] );\n\tconst globalStyles = useEntityRecord< GlobalStylesConfig >(\n\t\t'root',\n\t\t'globalStyles',\n\t\tglobalStylesId\n\t);\n\tconst fontFamiliesHasChanges =\n\t\t!! globalStyles?.edits?.settings?.typography?.fontFamilies;\n\n\tconst themeFonts = fontFamilies?.theme\n\t\t? fontFamilies.theme\n\t\t\t\t.map( ( f ) => setUIValuesNeeded( f, { source: 'theme' } ) )\n\t\t\t\t.sort( ( a, b ) => a.name.localeCompare( b.name ) )\n\t\t: [];\n\tconst themeFontsSlugs = new Set( themeFonts.map( ( f ) => f.slug ) );\n\tconst baseThemeFonts = baseFontFamilies?.theme\n\t\t? themeFonts.concat(\n\t\t\t\tbaseFontFamilies.theme\n\t\t\t\t\t.filter( ( f ) => ! themeFontsSlugs.has( f.slug ) )\n\t\t\t\t\t.map( ( f ) => setUIValuesNeeded( f, { source: 'theme' } ) )\n\t\t\t\t\t.sort( ( a, b ) => a.name.localeCompare( b.name ) )\n\t\t  )\n\t\t: [];\n\n\tconst customFontFamilyId =\n\t\tlibraryFontSelected?.source === 'custom' && libraryFontSelected?.id;\n\n\tconst canUserDelete = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\treturn (\n\t\t\t\tcustomFontFamilyId &&\n\t\t\t\tcanUser( 'delete', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_font_family',\n\t\t\t\t\tid: customFontFamilyId,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\t[ customFontFamilyId ]\n\t);\n\n\tconst shouldDisplayDeleteButton =\n\t\t!! libraryFontSelected &&\n\t\tlibraryFontSelected?.source !== 'theme' &&\n\t\tcanUserDelete;\n\n\tconst handleUninstallClick = () => {\n\t\tsetIsConfirmDeleteOpen( true );\n\t};\n\n\tconst handleUpdate = async () => {\n\t\tsetNotice( null );\n\t\ttry {\n\t\t\tawait saveFontFamilies( fontFamilies );\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'success',\n\t\t\t\tmessage: __( 'Font family updated successfully.' ),\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'error',\n\t\t\t\tmessage: sprintf(\n\t\t\t\t\t/* translators: %s: error message */\n\t\t\t\t\t__( 'There was an error updating the font family. %s' ),\n\t\t\t\t\t( error as Error ).message\n\t\t\t\t),\n\t\t\t} );\n\t\t}\n\t};\n\n\tconst getFontFacesToDisplay = ( font: FontFamily ) => {\n\t\tif ( ! font ) {\n\t\t\treturn [];\n\t\t}\n\t\tif ( ! font.fontFace || ! font.fontFace.length ) {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tfontFamily: font.fontFamily,\n\t\t\t\t\tfontStyle: 'normal',\n\t\t\t\t\tfontWeight: '400',\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\t\treturn sortFontFaces( font.fontFace );\n\t};\n\n\tconst getFontCardVariantsText = ( font: FontFamily ) => {\n\t\tconst variantsInstalled =\n\t\t\tfont?.fontFace && ( font?.fontFace?.length ?? 0 ) > 0\n\t\t\t\t? font.fontFace.length\n\t\t\t\t: 1;\n\t\tconst variantsActive = getFontFacesActivated(\n\t\t\tfont.slug,\n\t\t\tfont.source\n\t\t).length;\n\t\treturn sprintf(\n\t\t\t/* translators: 1: Active font variants, 2: Total font variants. */\n\t\t\t__( '%1$d/%2$d variants active' ),\n\t\t\tvariantsActive,\n\t\t\tvariantsInstalled\n\t\t);\n\t};\n\n\tuseEffect( () => {\n\t\thandleSetLibraryFontSelected( libraryFontSelected );\n\t}, [] );\n\n\t// Get activated fonts count.\n\tconst activeFontsCount = libraryFontSelected\n\t\t? getFontFacesActivated(\n\t\t\t\tlibraryFontSelected.slug,\n\t\t\t\tlibraryFontSelected.source\n\t\t  ).length\n\t\t: 0;\n\n\tconst selectedFontsCount =\n\t\tlibraryFontSelected?.fontFace?.length ??\n\t\t( libraryFontSelected?.fontFamily ? 1 : 0 );\n\n\t// Check if any fonts are selected.\n\tconst isIndeterminate =\n\t\tactiveFontsCount > 0 && activeFontsCount !== selectedFontsCount;\n\n\t// Check if all fonts are selected.\n\tconst isSelectAllChecked = activeFontsCount === selectedFontsCount;\n\n\t// Toggle select all fonts.\n\tconst toggleSelectAll = () => {\n\t\tif ( ! libraryFontSelected || ! libraryFontSelected?.source ) {\n\t\t\treturn;\n\t\t}\n\t\tconst initialFonts =\n\t\t\tfontFamilies?.[ libraryFontSelected.source ]?.filter(\n\t\t\t\t( f ) => f.slug !== libraryFontSelected.slug\n\t\t\t) ?? [];\n\t\tconst newFonts = isSelectAllChecked\n\t\t\t? initialFonts\n\t\t\t: [ ...initialFonts, libraryFontSelected ];\n\n\t\tsetFontFamilies( {\n\t\t\t...fontFamilies,\n\t\t\t[ libraryFontSelected.source ]: newFonts,\n\t\t} );\n\n\t\tif ( libraryFontSelected.fontFace ) {\n\t\t\tlibraryFontSelected.fontFace.forEach( ( face ) => {\n\t\t\t\tif ( isSelectAllChecked ) {\n\t\t\t\t\tunloadFontFaceInBrowser( face, 'all' );\n\t\t\t\t} else {\n\t\t\t\t\tconst displaySrc = getDisplaySrcFromFontFace(\n\t\t\t\t\t\tface?.src ?? ''\n\t\t\t\t\t);\n\t\t\t\t\tif ( displaySrc ) {\n\t\t\t\t\t\tloadFontFaceInBrowser( face, displaySrc, 'all' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t};\n\n\tconst hasFonts = baseThemeFonts.length > 0 || baseCustomFonts.length > 0;\n\treturn (\n\t\t<div className=\"font-library__tabpanel-layout\">\n\t\t\t{ isResolvingLibrary && (\n\t\t\t\t<div className=\"font-library__loading\">\n\t\t\t\t\t<ProgressBar />\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ ! isResolvingLibrary && (\n\t\t\t\t<>\n\t\t\t\t\t<Navigator\n\t\t\t\t\t\tinitialPath={\n\t\t\t\t\t\t\tlibraryFontSelected ? '/fontFamily' : '/'\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Navigator.Screen path=\"/\">\n\t\t\t\t\t\t\t<VStack spacing=\"8\">\n\t\t\t\t\t\t\t\t{ notice && (\n\t\t\t\t\t\t\t\t\t<Notice\n\t\t\t\t\t\t\t\t\t\tstatus={ notice.type }\n\t\t\t\t\t\t\t\t\t\tonRemove={ () => setNotice( null ) }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ notice.message }\n\t\t\t\t\t\t\t\t\t</Notice>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ ! hasFonts && (\n\t\t\t\t\t\t\t\t\t<Text as=\"p\">\n\t\t\t\t\t\t\t\t\t\t{ __( 'No fonts installed.' ) }\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ baseThemeFonts.length > 0 && (\n\t\t\t\t\t\t\t\t\t<VStack>\n\t\t\t\t\t\t\t\t\t\t<h2 className=\"font-library__fonts-title\">\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t/* translators: Heading for a list of fonts provided by the theme. */\n\t\t\t\t\t\t\t\t\t\t\t\t_x( 'Theme', 'font source' )\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t</h2>\n\t\t\t\t\t\t\t\t\t\t{ /*\n\t\t\t\t\t\t\t\t\t\t * Disable reason: The `list` ARIA role is redundant but\n\t\t\t\t\t\t\t\t\t\t * Safari+VoiceOver won't announce the list otherwise.\n\t\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\t\t/* eslint-disable jsx-a11y/no-redundant-roles */ }\n\t\t\t\t\t\t\t\t\t\t<ul\n\t\t\t\t\t\t\t\t\t\t\trole=\"list\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"font-library__fonts-list\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ baseThemeFonts.map( ( font ) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ font.slug }\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"font-library__fonts-list-item\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<FontCard\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfont={ font }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnavigatorPath=\"/fontFamily\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariantsText={ getFontCardVariantsText(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfont\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetNotice( null );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleSetLibraryFontSelected(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfont\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t\t\t\t{ /* eslint-enable jsx-a11y/no-redundant-roles */ }\n\t\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ baseCustomFonts.length > 0 && (\n\t\t\t\t\t\t\t\t\t<VStack>\n\t\t\t\t\t\t\t\t\t\t<h2 className=\"font-library__fonts-title\">\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t/* translators: Heading for a list of fonts installed by the user. */\n\t\t\t\t\t\t\t\t\t\t\t\t_x( 'Custom', 'font source' )\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t</h2>\n\t\t\t\t\t\t\t\t\t\t{ /*\n\t\t\t\t\t\t\t\t\t\t * Disable reason: The `list` ARIA role is redundant but\n\t\t\t\t\t\t\t\t\t\t * Safari+VoiceOver won't announce the list otherwise.\n\t\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\t\t/* eslint-disable jsx-a11y/no-redundant-roles */ }\n\t\t\t\t\t\t\t\t\t\t<ul\n\t\t\t\t\t\t\t\t\t\t\trole=\"list\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"font-library__fonts-list\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ baseCustomFonts.map( ( font ) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ font.slug }\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"font-library__fonts-list-item\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<FontCard\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfont={ font }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnavigatorPath=\"/fontFamily\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariantsText={ getFontCardVariantsText(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfont\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetNotice( null );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleSetLibraryFontSelected(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfont\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t\t\t\t{ /* eslint-enable jsx-a11y/no-redundant-roles */ }\n\t\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t</Navigator.Screen>\n\n\t\t\t\t\t\t<Navigator.Screen path=\"/fontFamily\">\n\t\t\t\t\t\t\t{ libraryFontSelected && (\n\t\t\t\t\t\t\t\t<ConfirmDeleteDialog\n\t\t\t\t\t\t\t\t\tfont={ libraryFontSelected }\n\t\t\t\t\t\t\t\t\tisOpen={ isConfirmDeleteOpen }\n\t\t\t\t\t\t\t\t\tsetIsOpen={ setIsConfirmDeleteOpen }\n\t\t\t\t\t\t\t\t\tsetNotice={ setNotice }\n\t\t\t\t\t\t\t\t\tuninstallFontFamily={ uninstallFontFamily }\n\t\t\t\t\t\t\t\t\thandleSetLibraryFontSelected={\n\t\t\t\t\t\t\t\t\t\thandleSetLibraryFontSelected\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t\t<Flex justify=\"flex-start\">\n\t\t\t\t\t\t\t\t<Navigator.BackButton\n\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\tisRTL() ? chevronRight : chevronLeft\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\thandleSetLibraryFontSelected(\n\t\t\t\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\tsetNotice( null );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Back' ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\t\t\tlevel={ 2 }\n\t\t\t\t\t\t\t\t\tsize={ 13 }\n\t\t\t\t\t\t\t\t\tclassName=\"global-styles-ui-header\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ libraryFontSelected?.name }\n\t\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t{ notice && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<Spacer margin={ 1 } />\n\t\t\t\t\t\t\t\t\t<Notice\n\t\t\t\t\t\t\t\t\t\tstatus={ notice.type }\n\t\t\t\t\t\t\t\t\t\tonRemove={ () => setNotice( null ) }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ notice.message }\n\t\t\t\t\t\t\t\t\t</Notice>\n\t\t\t\t\t\t\t\t\t<Spacer margin={ 1 } />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<Spacer margin={ 4 } />\n\t\t\t\t\t\t\t<Text>\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'Choose font variants. Keep in mind that too many variants could make your site slower.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Spacer margin={ 4 } />\n\t\t\t\t\t\t\t<VStack spacing={ 0 }>\n\t\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\t\tclassName=\"font-library__select-all\"\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Select all' ) }\n\t\t\t\t\t\t\t\t\tchecked={ isSelectAllChecked }\n\t\t\t\t\t\t\t\t\tonChange={ toggleSelectAll }\n\t\t\t\t\t\t\t\t\tindeterminate={ isIndeterminate }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Spacer margin={ 8 } />\n\t\t\t\t\t\t\t\t{ /*\n\t\t\t\t\t\t\t\t * Disable reason: The `list` ARIA role is redundant but\n\t\t\t\t\t\t\t\t * Safari+VoiceOver won't announce the list otherwise.\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t/* eslint-disable jsx-a11y/no-redundant-roles */ }\n\t\t\t\t\t\t\t\t<ul\n\t\t\t\t\t\t\t\t\trole=\"list\"\n\t\t\t\t\t\t\t\t\tclassName=\"font-library__fonts-list\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ libraryFontSelected &&\n\t\t\t\t\t\t\t\t\t\tgetFontFacesToDisplay(\n\t\t\t\t\t\t\t\t\t\t\tlibraryFontSelected\n\t\t\t\t\t\t\t\t\t\t).map( ( face, i ) => (\n\t\t\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ `face${ i }` }\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"font-library__fonts-list-item\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<LibraryFontVariant\n\t\t\t\t\t\t\t\t\t\t\t\t\tfont={ libraryFontSelected }\n\t\t\t\t\t\t\t\t\t\t\t\t\tface={ face }\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ `face${ i }` }\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t\t{ /* eslint-enable jsx-a11y/no-redundant-roles */ }\n\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t</Navigator.Screen>\n\t\t\t\t\t</Navigator>\n\n\t\t\t\t\t<HStack justify=\"flex-end\" className=\"font-library__footer\">\n\t\t\t\t\t\t{ isInstalling && <ProgressBar /> }\n\t\t\t\t\t\t{ shouldDisplayDeleteButton && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tisDestructive\n\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\tonClick={ handleUninstallClick }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\tonClick={ handleUpdate }\n\t\t\t\t\t\t\tdisabled={ ! fontFamiliesHasChanges }\n\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Update' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nfunction ConfirmDeleteDialog( {\n\tfont,\n\tisOpen,\n\tsetIsOpen,\n\tsetNotice,\n\tuninstallFontFamily,\n\thandleSetLibraryFontSelected,\n}: {\n\tfont: FontFamily;\n\tisOpen: boolean;\n\tsetIsOpen: ( isOpen: boolean ) => void;\n\tsetNotice: (\n\t\tnotice: {\n\t\t\ttype: 'success' | 'error' | 'info';\n\t\t\tmessage: string;\n\t\t} | null\n\t) => void;\n\tuninstallFontFamily: (\n\t\tfontFamily: FontFamily\n\t) => Promise< { deleted: boolean } >;\n\thandleSetLibraryFontSelected: ( font?: FontFamily ) => void;\n} ) {\n\tconst navigator = useNavigator();\n\n\tconst handleConfirmUninstall = async () => {\n\t\tsetNotice( null );\n\t\tsetIsOpen( false );\n\t\ttry {\n\t\t\tawait uninstallFontFamily( font );\n\t\t\tnavigator.goBack();\n\t\t\thandleSetLibraryFontSelected( undefined );\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'success',\n\t\t\t\tmessage: __( 'Font family uninstalled successfully.' ),\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'error',\n\t\t\t\tmessage:\n\t\t\t\t\t__( 'There was an error uninstalling the font family.' ) +\n\t\t\t\t\t( error as Error ).message,\n\t\t\t} );\n\t\t}\n\t};\n\n\tconst handleCancelUninstall = () => {\n\t\tsetIsOpen( false );\n\t};\n\n\treturn (\n\t\t<ConfirmDialog\n\t\t\tisOpen={ isOpen }\n\t\t\tcancelButtonText={ __( 'Cancel' ) }\n\t\t\tconfirmButtonText={ __( 'Delete' ) }\n\t\t\tonCancel={ handleCancelUninstall }\n\t\t\tonConfirm={ handleConfirmUninstall }\n\t\t\tsize=\"medium\"\n\t\t>\n\t\t\t{ font &&\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: Name of the font. */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Are you sure you want to delete \"%s\" font and all its variants and assets?'\n\t\t\t\t\t),\n\t\t\t\t\tfont.name\n\t\t\t\t) }\n\t\t</ConfirmDialog>\n\t);\n}\n\nexport default InstalledFonts;\n", "/**\n * WordPress dependencies\n */\nimport { _n, sprintf, isRTL } from '@wordpress/i18n';\nimport {\n\tuseNavigator,\n\t__experimentalText as Text,\n\tButton,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { Icon, chevronLeft, chevronRight } from '@wordpress/icons';\nimport type { FontFamily } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport FontDemo from './font-demo';\n\nfunction FontCard( {\n\tfont,\n\tonClick,\n\tvariantsText,\n\tnavigatorPath,\n}: {\n\tfont: FontFamily;\n\tonClick: () => void;\n\tvariantsText?: string;\n\tnavigatorPath?: string;\n} ) {\n\tconst variantsCount = font.fontFace?.length || 1;\n\n\tconst style = {\n\t\tcursor: !! onClick ? 'pointer' : 'default',\n\t};\n\n\tconst navigator = useNavigator();\n\n\treturn (\n\t\t<Button\n\t\t\t__next40pxDefaultSize\n\t\t\tonClick={ () => {\n\t\t\t\tonClick();\n\t\t\t\tif ( navigatorPath ) {\n\t\t\t\t\tnavigator.goTo( navigatorPath );\n\t\t\t\t}\n\t\t\t} }\n\t\t\tstyle={ style }\n\t\t\tclassName=\"font-library__font-card\"\n\t\t>\n\t\t\t<Flex justify=\"space-between\" wrap={ false }>\n\t\t\t\t<FontDemo font={ font } />\n\t\t\t\t<Flex justify=\"flex-end\">\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Text className=\"font-library__font-card__count\">\n\t\t\t\t\t\t\t{ variantsText ||\n\t\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %d: Number of font variants. */\n\t\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t\t'%d variant',\n\t\t\t\t\t\t\t\t\t\t'%d variants',\n\t\t\t\t\t\t\t\t\t\tvariantsCount\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tvariantsCount\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Icon icon={ isRTL() ? chevronLeft : chevronRight } />\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</Flex>\n\t\t</Button>\n\t);\n}\n\nexport default FontCard;\n", "/**\n * WordPress dependencies\n */\nimport { __experimentalText as Text } from '@wordpress/components';\nimport { useContext, useEffect, useState, useRef } from '@wordpress/element';\nimport type { FontFamily, FontFace } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { FontLibraryContext } from './context';\nimport {\n\tgetFacePreviewStyle,\n\tgetFamilyPreviewStyle,\n} from './utils/preview-styles';\nimport type { FontDemoProps } from './types';\n\nfunction getPreviewUrl( fontFace: FontFace ): string | undefined {\n\tif ( fontFace.preview ) {\n\t\treturn fontFace.preview;\n\t}\n\tif ( fontFace.src ) {\n\t\treturn Array.isArray( fontFace.src ) ? fontFace.src[ 0 ] : fontFace.src;\n\t}\n\treturn undefined;\n}\n\nfunction getDisplayFontFace( font: FontFamily | FontFace ): FontFace {\n\t// if this IS a font face return it\n\tif (\n\t\t( 'fontStyle' in font && font.fontStyle ) ||\n\t\t( 'fontWeight' in font && font.fontWeight )\n\t) {\n\t\treturn font;\n\t}\n\t// if this is a font family with a collection of font faces\n\t// return the first one that is normal and 400 OR just the first one\n\tif ( 'fontFace' in font && font.fontFace && font.fontFace.length ) {\n\t\treturn (\n\t\t\tfont.fontFace.find(\n\t\t\t\t( face ) =>\n\t\t\t\t\tface.fontStyle === 'normal' && face.fontWeight === '400'\n\t\t\t) || font.fontFace[ 0 ]\n\t\t);\n\t}\n\t// This must be a font family with no font faces\n\t// return a fake font face\n\treturn {\n\t\tfontStyle: 'normal',\n\t\tfontWeight: '400',\n\t\tfontFamily: font.fontFamily,\n\t};\n}\n\nfunction FontDemo( { font, text }: FontDemoProps ) {\n\tconst ref = useRef< HTMLDivElement >( null );\n\n\tconst fontFace = getDisplayFontFace( font );\n\tconst style = getFamilyPreviewStyle( font );\n\ttext = text || ( 'name' in font ? font.name : '' );\n\tconst customPreviewUrl = font.preview;\n\n\tconst [ isIntersecting, setIsIntersecting ] = useState< boolean >( false );\n\tconst [ isAssetLoaded, setIsAssetLoaded ] = useState< boolean >( false );\n\tconst { loadFontFaceAsset } = useContext( FontLibraryContext );\n\n\tconst previewUrl = customPreviewUrl ?? getPreviewUrl( fontFace );\n\tconst isPreviewImage =\n\t\tpreviewUrl && previewUrl.match( /\\.(png|jpg|jpeg|gif|svg)$/i );\n\n\tconst faceStyles = getFacePreviewStyle( fontFace );\n\tconst textDemoStyle = {\n\t\tfontSize: '18px',\n\t\tlineHeight: 1,\n\t\topacity: isAssetLoaded ? '1' : '0',\n\t\t...style,\n\t\t...faceStyles,\n\t};\n\n\tuseEffect( () => {\n\t\tconst observer = new window.IntersectionObserver( ( [ entry ] ) => {\n\t\t\tsetIsIntersecting( entry.isIntersecting );\n\t\t}, {} );\n\t\tif ( ref.current ) {\n\t\t\tobserver.observe( ref.current );\n\t\t}\n\t\treturn () => observer.disconnect();\n\t}, [ ref ] );\n\n\tuseEffect( () => {\n\t\tconst loadAsset = async () => {\n\t\t\tif ( isIntersecting ) {\n\t\t\t\tif ( ! isPreviewImage && fontFace.src ) {\n\t\t\t\t\tawait loadFontFaceAsset( fontFace );\n\t\t\t\t}\n\t\t\t\tsetIsAssetLoaded( true );\n\t\t\t}\n\t\t};\n\t\tloadAsset();\n\t}, [ fontFace, isIntersecting, loadFontFaceAsset, isPreviewImage ] );\n\n\treturn (\n\t\t<div ref={ ref }>\n\t\t\t{ isPreviewImage ? (\n\t\t\t\t<img\n\t\t\t\t\tsrc={ previewUrl }\n\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t\talt={ text }\n\t\t\t\t\tclassName=\"font-library__font-variant_demo-image\"\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<Text\n\t\t\t\t\tstyle={ textDemoStyle }\n\t\t\t\t\tclassName=\"font-library__font-variant_demo-text\"\n\t\t\t\t>\n\t\t\t\t\t{ text }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default FontDemo;\n", "/**\n * WordPress dependencies\n */\nimport { useContext, useId } from '@wordpress/element';\nimport { CheckboxControl, Flex } from '@wordpress/components';\nimport type { FontFace, FontFamily } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { getFontFaceVariantName } from './utils';\nimport { FontLibraryContext } from './context';\nimport FontDemo from './font-demo';\n\nfunction LibraryFontVariant( {\n\tface,\n\tfont,\n}: {\n\tface: FontFace;\n\tfont: FontFamily;\n} ) {\n\tconst { isFontActivated, toggleActivateFont } =\n\t\tuseContext( FontLibraryContext );\n\n\tconst isInstalled =\n\t\t( font?.fontFace?.length ?? 0 ) > 0\n\t\t\t? isFontActivated(\n\t\t\t\t\tfont.slug,\n\t\t\t\t\tface.fontStyle,\n\t\t\t\t\tface.fontWeight,\n\t\t\t\t\tfont.source\n\t\t\t  )\n\t\t\t: isFontActivated( font.slug, undefined, undefined, font.source );\n\n\tconst handleToggleActivation = () => {\n\t\tif ( ( font?.fontFace?.length ?? 0 ) > 0 ) {\n\t\t\ttoggleActivateFont( font, face );\n\t\t\treturn;\n\t\t}\n\t\ttoggleActivateFont( font );\n\t};\n\n\tconst displayName = font.name + ' ' + getFontFaceVariantName( face );\n\tconst checkboxId = useId();\n\n\treturn (\n\t\t<div className=\"font-library__font-card\">\n\t\t\t<Flex justify=\"flex-start\" align=\"center\" gap=\"1rem\">\n\t\t\t\t<CheckboxControl\n\t\t\t\t\tchecked={ isInstalled }\n\t\t\t\t\tonChange={ handleToggleActivation }\n\t\t\t\t\tid={ checkboxId }\n\t\t\t\t/>\n\t\t\t\t<label htmlFor={ checkboxId }>\n\t\t\t\t\t<FontDemo\n\t\t\t\t\t\tfont={ face }\n\t\t\t\t\t\ttext={ displayName }\n\t\t\t\t\t\tonClick={ handleToggleActivation }\n\t\t\t\t\t/>\n\t\t\t\t</label>\n\t\t\t</Flex>\n\t\t</div>\n\t);\n}\n\nexport default LibraryFontVariant;\n", "/**\n * WordPress dependencies\n */\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseState,\n\tuseMemo,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport {\n\t__experimentalSpacer as Spacer,\n\t__experimentalText as Text,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tNavigator,\n\t__experimentalHeading as Heading,\n\tNotice,\n\tSelectControl,\n\tFlex,\n\tButton,\n\tDropdownMenu,\n\tSearchControl,\n\tProgressBar,\n\tCheckboxControl,\n} from '@wordpress/components';\nimport { debounce } from '@wordpress/compose';\nimport { sprintf, __, _x, isRTL } from '@wordpress/i18n';\nimport {\n\tmoreVertical,\n\tnext,\n\tprevious,\n\tchevronLeft,\n\tchevronRight,\n} from '@wordpress/icons';\nimport { useEntityRecord } from '@wordpress/core-data';\nimport type {\n\tFontCollection as FontCollectionType,\n\tFontFace,\n\tFontFamily,\n\tCollectionFontFamily,\n} from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { FontLibraryContext } from './context';\nimport FontCard from './font-card';\nimport filterFonts from './utils/filter-fonts';\nimport { toggleFont } from './utils/toggleFont';\nimport {\n\tgetFontsOutline,\n\tisFontFontFaceInOutline,\n} from './utils/fonts-outline';\nimport GoogleFontsConfirmDialog from './google-fonts-confirm-dialog';\nimport { downloadFontFaceAssets } from './utils';\nimport { sortFontFaces } from './utils/sort-font-faces';\nimport CollectionFontVariant from './collection-font-variant';\nimport type { FontFamilyToUpload } from './types';\n\nconst DEFAULT_CATEGORY = {\n\tslug: 'all',\n\tname: _x( 'All', 'font categories' ),\n};\n\nconst LOCAL_STORAGE_ITEM = 'wp-font-library-google-fonts-permission';\nconst MIN_WINDOW_HEIGHT = 500;\n\nfunction FontCollection( { slug }: { slug: string } ) {\n\tconst requiresPermission = slug === 'google-fonts';\n\n\tconst getGoogleFontsPermissionFromStorage = () => {\n\t\treturn window.localStorage.getItem( LOCAL_STORAGE_ITEM ) === 'true';\n\t};\n\n\tconst [ selectedFont, setSelectedFont ] = useState< FontFamily | null >(\n\t\tnull\n\t);\n\tconst [ notice, setNotice ] = useState< {\n\t\ttype: 'success' | 'error' | 'info';\n\t\tmessage: string;\n\t} | null >( null );\n\tconst [ fontsToInstall, setFontsToInstall ] = useState< FontFamily[] >(\n\t\t[]\n\t);\n\tconst [ page, setPage ] = useState( 1 );\n\tconst [ filters, setFilters ] = useState< {\n\t\tcategory?: string;\n\t\tsearch?: string;\n\t} >( {} );\n\tconst [ renderConfirmDialog, setRenderConfirmDialog ] = useState(\n\t\trequiresPermission && ! getGoogleFontsPermissionFromStorage()\n\t);\n\tconst { installFonts, isInstalling } = useContext( FontLibraryContext );\n\tconst { record: selectedCollection, isResolving: isLoading } =\n\t\tuseEntityRecord< FontCollectionType >( 'root', 'fontCollection', slug );\n\n\tuseEffect( () => {\n\t\tconst handleStorage = () => {\n\t\t\tsetRenderConfirmDialog(\n\t\t\t\trequiresPermission && ! getGoogleFontsPermissionFromStorage()\n\t\t\t);\n\t\t};\n\t\thandleStorage();\n\t\twindow.addEventListener( 'storage', handleStorage );\n\t\treturn () => window.removeEventListener( 'storage', handleStorage );\n\t}, [ slug, requiresPermission ] );\n\n\tconst revokeAccess = () => {\n\t\twindow.localStorage.setItem( LOCAL_STORAGE_ITEM, 'false' );\n\t\twindow.dispatchEvent( new Event( 'storage' ) );\n\t};\n\n\tuseEffect( () => {\n\t\tsetSelectedFont( null );\n\t}, [ slug ] );\n\n\tuseEffect( () => {\n\t\t// If the selected fonts change, reset the selected fonts to install\n\t\tsetFontsToInstall( [] );\n\t}, [ selectedFont ] );\n\n\tconst collectionFonts = useMemo(\n\t\t() =>\n\t\t\t( selectedCollection?.font_families as\n\t\t\t\t| CollectionFontFamily[]\n\t\t\t\t| undefined ) ?? [],\n\t\t[ selectedCollection ]\n\t);\n\tconst collectionCategories = selectedCollection?.categories ?? [];\n\n\tconst categories = [ DEFAULT_CATEGORY, ...collectionCategories ];\n\n\tconst fonts = useMemo(\n\t\t() => filterFonts( collectionFonts, filters ),\n\t\t[ collectionFonts, filters ]\n\t);\n\n\t// NOTE: The height of the font library modal unavailable to use for rendering font family items is roughly 417px\n\t// The height of each font family item is 61px.\n\tconst windowHeight = Math.max( window.innerHeight, MIN_WINDOW_HEIGHT );\n\tconst pageSize = Math.floor( ( windowHeight - 417 ) / 61 );\n\tconst totalPages = Math.ceil( fonts.length / pageSize );\n\tconst itemsStart = ( page - 1 ) * pageSize;\n\tconst itemsLimit = page * pageSize;\n\tconst items = fonts.slice( itemsStart, itemsLimit );\n\n\tconst handleCategoryFilter = ( category: string ) => {\n\t\tsetFilters( { ...filters, category } );\n\t\tsetPage( 1 );\n\t};\n\n\tconst handleUpdateSearchInput = ( value: string ) => {\n\t\tsetFilters( { ...filters, search: value } );\n\t\tsetPage( 1 );\n\t};\n\n\t// @ts-expect-error\n\tconst debouncedUpdateSearchInput = debounce( handleUpdateSearchInput, 300 );\n\n\tconst handleToggleVariant = ( font: FontFamily, face?: FontFace ) => {\n\t\tconst newFontsToInstall = toggleFont( font, face, fontsToInstall );\n\t\tsetFontsToInstall( newFontsToInstall );\n\t};\n\n\tconst fontToInstallOutline = getFontsOutline( fontsToInstall );\n\n\tconst resetFontsToInstall = () => {\n\t\tsetFontsToInstall( [] );\n\t};\n\n\tconst selectFontCount =\n\t\tfontsToInstall.length > 0\n\t\t\t? fontsToInstall[ 0 ]?.fontFace?.length ?? 0\n\t\t\t: 0;\n\n\t// Check if any fonts are selected.\n\tconst isIndeterminate =\n\t\tselectFontCount > 0 &&\n\t\tselectFontCount !== selectedFont?.fontFace?.length;\n\n\t// Check if all fonts are selected.\n\tconst isSelectAllChecked =\n\t\tselectFontCount === selectedFont?.fontFace?.length;\n\n\t// Toggle select all fonts.\n\tconst toggleSelectAll = () => {\n\t\tconst newFonts: FontFamily[] = [];\n\t\tif ( ! isSelectAllChecked && selectedFont ) {\n\t\t\tnewFonts.push( selectedFont );\n\t\t}\n\n\t\tsetFontsToInstall( newFonts );\n\t};\n\n\tconst handleInstall = async () => {\n\t\tsetNotice( null );\n\n\t\tconst fontFamily: FontFamilyToUpload = fontsToInstall[ 0 ];\n\n\t\ttry {\n\t\t\tif ( fontFamily?.fontFace ) {\n\t\t\t\tawait Promise.all(\n\t\t\t\t\tfontFamily.fontFace.map( async ( fontFace ) => {\n\t\t\t\t\t\tif ( fontFace.src ) {\n\t\t\t\t\t\t\tfontFace.file = await downloadFontFaceAssets(\n\t\t\t\t\t\t\t\tfontFace.src\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t}\n\t\t} catch ( error ) {\n\t\t\t// If any of the fonts fail to download,\n\t\t\t// show an error notice and stop the request from being sent.\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'error',\n\t\t\t\tmessage: __(\n\t\t\t\t\t'Error installing the fonts, could not be downloaded.'\n\t\t\t\t),\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tawait installFonts( [ fontFamily ] );\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'success',\n\t\t\t\tmessage: __( 'Fonts were installed successfully.' ),\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'error',\n\t\t\t\tmessage: ( error as Error ).message,\n\t\t\t} );\n\t\t}\n\t\tresetFontsToInstall();\n\t};\n\n\tconst getSortedFontFaces = ( fontFamily: FontFamily ) => {\n\t\tif ( ! fontFamily ) {\n\t\t\treturn [];\n\t\t}\n\t\tif ( ! fontFamily.fontFace || ! fontFamily.fontFace.length ) {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tfontFamily: fontFamily.fontFamily,\n\t\t\t\t\tfontStyle: 'normal',\n\t\t\t\t\tfontWeight: '400',\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\t\treturn sortFontFaces( fontFamily.fontFace );\n\t};\n\n\tif ( renderConfirmDialog ) {\n\t\treturn <GoogleFontsConfirmDialog />;\n\t}\n\n\tconst ActionsComponent = () => {\n\t\tif ( slug !== 'google-fonts' || renderConfirmDialog || selectedFont ) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (\n\t\t\t<DropdownMenu\n\t\t\t\ticon={ moreVertical }\n\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\tpopoverProps={ {\n\t\t\t\t\tposition: 'bottom left',\n\t\t\t\t} }\n\t\t\t\tcontrols={ [\n\t\t\t\t\t{\n\t\t\t\t\t\ttitle: __( 'Revoke access to Google Fonts' ),\n\t\t\t\t\t\tonClick: revokeAccess,\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t/>\n\t\t);\n\t};\n\n\treturn (\n\t\t<div className=\"font-library__tabpanel-layout\">\n\t\t\t{ isLoading && (\n\t\t\t\t<div className=\"font-library__loading\">\n\t\t\t\t\t<ProgressBar />\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ ! isLoading && selectedCollection && (\n\t\t\t\t<>\n\t\t\t\t\t<Navigator\n\t\t\t\t\t\tinitialPath=\"/\"\n\t\t\t\t\t\tclassName=\"font-library__tabpanel-layout\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Navigator.Screen path=\"/\">\n\t\t\t\t\t\t\t<HStack justify=\"space-between\">\n\t\t\t\t\t\t\t\t<VStack>\n\t\t\t\t\t\t\t\t\t<Heading level={ 2 } size={ 13 }>\n\t\t\t\t\t\t\t\t\t\t{ selectedCollection.name }\n\t\t\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t\t\t\t<Text>\n\t\t\t\t\t\t\t\t\t\t{ selectedCollection.description }\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t\t<ActionsComponent />\n\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t<Spacer margin={ 4 } />\n\t\t\t\t\t\t\t<HStack spacing={ 4 } justify=\"space-between\">\n\t\t\t\t\t\t\t\t<SearchControl\n\t\t\t\t\t\t\t\t\tvalue={ filters.search }\n\t\t\t\t\t\t\t\t\tplaceholder={ __( 'Font name\u2026' ) }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Search' ) }\n\t\t\t\t\t\t\t\t\tonChange={ debouncedUpdateSearchInput }\n\t\t\t\t\t\t\t\t\thideLabelFromVision={ false }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Category' ) }\n\t\t\t\t\t\t\t\t\tvalue={ filters.category }\n\t\t\t\t\t\t\t\t\tonChange={ handleCategoryFilter }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ categories &&\n\t\t\t\t\t\t\t\t\t\tcategories.map( ( category ) => (\n\t\t\t\t\t\t\t\t\t\t\t<option\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={ category.slug }\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ category.slug }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ category.name }\n\t\t\t\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t</SelectControl>\n\t\t\t\t\t\t\t</HStack>\n\n\t\t\t\t\t\t\t<Spacer margin={ 4 } />\n\n\t\t\t\t\t\t\t{ !! selectedCollection?.font_families?.length &&\n\t\t\t\t\t\t\t\t! fonts.length && (\n\t\t\t\t\t\t\t\t\t<Text>\n\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t'No fonts found. Try with a different search term.'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t\t<div className=\"font-library__fonts-grid__main\">\n\t\t\t\t\t\t\t\t{ /*\n\t\t\t\t\t\t\t\t * Disable reason: The `list` ARIA role is redundant but\n\t\t\t\t\t\t\t\t * Safari+VoiceOver won't announce the list otherwise.\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t/* eslint-disable jsx-a11y/no-redundant-roles */ }\n\t\t\t\t\t\t\t\t<ul\n\t\t\t\t\t\t\t\t\trole=\"list\"\n\t\t\t\t\t\t\t\t\tclassName=\"font-library__fonts-list\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ items.map( ( font ) => (\n\t\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\t\tkey={\n\t\t\t\t\t\t\t\t\t\t\t\tfont.font_family_settings.slug\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"font-library__fonts-list-item\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<FontCard\n\t\t\t\t\t\t\t\t\t\t\t\tfont={\n\t\t\t\t\t\t\t\t\t\t\t\t\tfont.font_family_settings\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tnavigatorPath=\"/fontFamily\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetSelectedFont(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfont.font_family_settings\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t\t{ /* eslint-enable jsx-a11y/no-redundant-roles */ }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</Navigator.Screen>\n\n\t\t\t\t\t\t<Navigator.Screen path=\"/fontFamily\">\n\t\t\t\t\t\t\t<Flex justify=\"flex-start\">\n\t\t\t\t\t\t\t\t<Navigator.BackButton\n\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\tisRTL() ? chevronRight : chevronLeft\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tsetSelectedFont( null );\n\t\t\t\t\t\t\t\t\t\tsetNotice( null );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Back' ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\t\t\tlevel={ 2 }\n\t\t\t\t\t\t\t\t\tsize={ 13 }\n\t\t\t\t\t\t\t\t\tclassName=\"global-styles-ui-header\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ selectedFont?.name }\n\t\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t{ notice && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<Spacer margin={ 1 } />\n\t\t\t\t\t\t\t\t\t<Notice\n\t\t\t\t\t\t\t\t\t\tstatus={ notice.type }\n\t\t\t\t\t\t\t\t\t\tonRemove={ () => setNotice( null ) }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ notice.message }\n\t\t\t\t\t\t\t\t\t</Notice>\n\t\t\t\t\t\t\t\t\t<Spacer margin={ 1 } />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<Spacer margin={ 4 } />\n\t\t\t\t\t\t\t<Text>\n\t\t\t\t\t\t\t\t{ __( 'Select font variants to install.' ) }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Spacer margin={ 4 } />\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\tclassName=\"font-library__select-all\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Select all' ) }\n\t\t\t\t\t\t\t\tchecked={ isSelectAllChecked }\n\t\t\t\t\t\t\t\tonChange={ toggleSelectAll }\n\t\t\t\t\t\t\t\tindeterminate={ isIndeterminate }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<VStack spacing={ 0 }>\n\t\t\t\t\t\t\t\t{ /*\n\t\t\t\t\t\t\t\t * Disable reason: The `list` ARIA role is redundant but\n\t\t\t\t\t\t\t\t * Safari+VoiceOver won't announce the list otherwise.\n\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t/* eslint-disable jsx-a11y/no-redundant-roles */ }\n\t\t\t\t\t\t\t\t<ul\n\t\t\t\t\t\t\t\t\trole=\"list\"\n\t\t\t\t\t\t\t\t\tclassName=\"font-library__fonts-list\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ selectedFont &&\n\t\t\t\t\t\t\t\t\t\tgetSortedFontFaces( selectedFont ).map(\n\t\t\t\t\t\t\t\t\t\t\t( face, i ) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ `face${ i }` }\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"font-library__fonts-list-item\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<CollectionFontVariant\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfont={ selectedFont }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tface={ face }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleToggleVariant={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleToggleVariant\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tselected={ isFontFontFaceInOutline(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tselectedFont.slug,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tselectedFont.fontFace\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? face\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null, // If the font has no fontFace, we want to check if the font is in the outline\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontToInstallOutline\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t\t{ /* eslint-enable jsx-a11y/no-redundant-roles */ }\n\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t<Spacer margin={ 16 } />\n\t\t\t\t\t\t</Navigator.Screen>\n\t\t\t\t\t</Navigator>\n\n\t\t\t\t\t{ selectedFont && (\n\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\t\t\tclassName=\"font-library__footer\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\tonClick={ handleInstall }\n\t\t\t\t\t\t\t\tisBusy={ isInstalling }\n\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\tfontsToInstall.length === 0 || isInstalling\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Install' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</Flex>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ ! selectedFont && (\n\t\t\t\t\t\t<HStack\n\t\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\t\tclassName=\"font-library__footer\"\n\t\t\t\t\t\t\tjustify=\"end\"\n\t\t\t\t\t\t\tspacing={ 6 }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<HStack\n\t\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\t\t\tspacing={ 1 }\n\t\t\t\t\t\t\t\tclassName=\"font-library__page-selection\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t\t\t// translators: 1: Current page number, 2: Total number of pages.\n\t\t\t\t\t\t\t\t\t\t_x(\n\t\t\t\t\t\t\t\t\t\t\t'<div>Page</div>%1$s<div>of %2$d</div>',\n\t\t\t\t\t\t\t\t\t\t\t'paging'\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t'<CurrentPage />',\n\t\t\t\t\t\t\t\t\t\ttotalPages\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tdiv: <div aria-hidden />,\n\t\t\t\t\t\t\t\t\t\tCurrentPage: (\n\t\t\t\t\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Current page'\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={ page.toString() }\n\t\t\t\t\t\t\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t\t\t\t\t\t\t...Array( totalPages ),\n\t\t\t\t\t\t\t\t\t\t\t\t].map( ( e, i ) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ti + 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t).toString(),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ti + 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t).toString(),\n\t\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={ ( newPage ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetPage(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tparseInt( newPage )\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"minimal\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t<HStack expanded={ false } spacing={ 1 }>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tonClick={ () => setPage( page - 1 ) }\n\t\t\t\t\t\t\t\t\tdisabled={ page === 1 }\n\t\t\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Previous page' ) }\n\t\t\t\t\t\t\t\t\ticon={ isRTL() ? next : previous }\n\t\t\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tonClick={ () => setPage( page + 1 ) }\n\t\t\t\t\t\t\t\t\tdisabled={ page === totalPages }\n\t\t\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Next page' ) }\n\t\t\t\t\t\t\t\t\ticon={ isRTL() ? previous : next }\n\t\t\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t</HStack>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default FontCollection;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tButton,\n\tCard,\n\tCardBody,\n\t__experimentalHeading as Heading,\n\t__experimentalText as Text,\n\t__experimentalSpacer as Spacer,\n} from '@wordpress/components';\n\nfunction GoogleFontsConfirmDialog(): JSX.Element {\n\tconst handleConfirm = (): void => {\n\t\twindow.localStorage.setItem(\n\t\t\t'wp-font-library-google-fonts-permission',\n\t\t\t'true'\n\t\t);\n\t\twindow.dispatchEvent( new Event( 'storage' ) );\n\t};\n\n\treturn (\n\t\t<div className=\"font-library__google-fonts-confirm\">\n\t\t\t<Card>\n\t\t\t\t<CardBody>\n\t\t\t\t\t<Heading level={ 2 }>\n\t\t\t\t\t\t{ __( 'Connect to Google Fonts' ) }\n\t\t\t\t\t</Heading>\n\t\t\t\t\t<Spacer margin={ 6 } />\n\t\t\t\t\t<Text as=\"p\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t\t<Spacer margin={ 3 } />\n\t\t\t\t\t<Text as=\"p\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'You can alternatively upload files directly on the Upload tab.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t\t<Spacer margin={ 6 } />\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ handleConfirm }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Allow access to Google Fonts' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</CardBody>\n\t\t\t</Card>\n\t\t</div>\n\t);\n}\n\nexport default GoogleFontsConfirmDialog;\n", "/**\n * WordPress dependencies\n */\nimport { useId } from '@wordpress/element';\nimport { CheckboxControl, Flex } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { getFontFaceVariantName } from './utils';\nimport FontDemo from './font-demo';\nimport type { CollectionFontVariantProps } from './types';\n\nfunction CollectionFontVariant( {\n\tface,\n\tfont,\n\thandleToggleVariant,\n\tselected,\n}: CollectionFontVariantProps ) {\n\tconst handleToggleActivation = () => {\n\t\tif ( font?.fontFace ) {\n\t\t\thandleToggleVariant( font, face );\n\t\t\treturn;\n\t\t}\n\t\thandleToggleVariant( font );\n\t};\n\n\tconst displayName = font.name + ' ' + getFontFaceVariantName( face );\n\tconst checkboxId = useId();\n\n\treturn (\n\t\t<div className=\"font-library__font-card\">\n\t\t\t<Flex justify=\"flex-start\" align=\"center\" gap=\"1rem\">\n\t\t\t\t<CheckboxControl\n\t\t\t\t\tchecked={ selected }\n\t\t\t\t\tonChange={ handleToggleActivation }\n\t\t\t\t\tid={ checkboxId }\n\t\t\t\t/>\n\t\t\t\t<label htmlFor={ checkboxId }>\n\t\t\t\t\t<FontDemo\n\t\t\t\t\t\tfont={ face }\n\t\t\t\t\t\ttext={ displayName }\n\t\t\t\t\t\tonClick={ handleToggleActivation }\n\t\t\t\t\t/>\n\t\t\t\t</label>\n\t\t\t</Flex>\n\t\t</div>\n\t);\n}\n\nexport default CollectionFontVariant;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n\tButton,\n\tDropZone,\n\tNotice,\n\tFormFileUpload,\n\tFlexItem,\n\tProgressBar,\n} from '@wordpress/components';\nimport { useContext, useState } from '@wordpress/element';\nimport type { FontFace } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { ALLOWED_FILE_EXTENSIONS } from './utils/constants';\nimport { FontLibraryContext } from './context';\nimport { Font } from './lib/lib-font.browser';\nimport makeFamiliesFromFaces from './utils/make-families-from-faces';\nimport { loadFontFaceInBrowser } from './utils';\n\nfunction UploadFonts() {\n\tconst { installFonts } = useContext( FontLibraryContext );\n\tconst [ isUploading, setIsUploading ] = useState( false );\n\tconst [ notice, setNotice ] = useState< {\n\t\ttype: 'success' | 'error';\n\t\tmessage: string;\n\t\terrors?: string[];\n\t} | null >( null );\n\n\tconst handleDropZone = ( files: File[] ) => {\n\t\thandleFilesUpload( files );\n\t};\n\tconst onFilesUpload = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\thandleFilesUpload( event.target.files );\n\t};\n\n\t/**\n\t * Filters the selected files to only allow the ones with the allowed extensions\n\t *\n\t * @param {Array} files The files to be filtered\n\t * @return {void}\n\t */\n\tconst handleFilesUpload = async ( files: FileList | File[] | null ) => {\n\t\tif ( ! files ) {\n\t\t\treturn;\n\t\t}\n\t\tsetNotice( null );\n\t\tsetIsUploading( true );\n\t\tconst uniqueFilenames = new Set();\n\t\tconst selectedFiles = [ ...files ];\n\t\tlet hasInvalidFiles = false;\n\n\t\t// Use map to create a promise for each file check, then filter with Promise.all.\n\t\tconst checkFilesPromises = selectedFiles.map( async ( file ) => {\n\t\t\tconst isFont = await isFontFile( file );\n\t\t\tif ( ! isFont ) {\n\t\t\t\thasInvalidFiles = true;\n\t\t\t\treturn null; // Return null for invalid files.\n\t\t\t}\n\t\t\t// Check for duplicates\n\t\t\tif ( uniqueFilenames.has( file.name ) ) {\n\t\t\t\treturn null; // Return null for duplicates.\n\t\t\t}\n\t\t\t// Check if the file extension is allowed.\n\t\t\tconst fileExtension = (\n\t\t\t\t( ( file.name ?? '' ).split( '.' ) ?? [] ).pop() ?? ''\n\t\t\t).toLowerCase();\n\t\t\tif ( ALLOWED_FILE_EXTENSIONS.includes( fileExtension ) ) {\n\t\t\t\tuniqueFilenames.add( file.name );\n\t\t\t\treturn file; // Return the file if it passes all checks.\n\t\t\t}\n\t\t\treturn null; // Return null for disallowed file extensions.\n\t\t} );\n\n\t\t// Filter out the nulls after all promises have resolved.\n\t\tconst allowedFiles: File[] = (\n\t\t\tawait Promise.all( checkFilesPromises )\n\t\t).filter( ( file ) => null !== file );\n\n\t\tif ( allowedFiles.length > 0 ) {\n\t\t\tloadFiles( allowedFiles );\n\t\t} else {\n\t\t\tconst message = hasInvalidFiles\n\t\t\t\t? __( 'Sorry, you are not allowed to upload this file type.' )\n\t\t\t\t: __( 'No fonts found to install.' );\n\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'error',\n\t\t\t\tmessage,\n\t\t\t} );\n\t\t\tsetIsUploading( false );\n\t\t}\n\t};\n\n\t/**\n\t * Loads the selected files and reads the font metadata\n\t *\n\t * @param {Array} files The files to be loaded\n\t * @return {void}\n\t */\n\tconst loadFiles = async ( files: File[] ) => {\n\t\tconst fontFacesLoaded = await Promise.all(\n\t\t\tfiles.map( async ( fontFile: File ) => {\n\t\t\t\tconst fontFaceData = await getFontFaceMetadata( fontFile );\n\t\t\t\tawait loadFontFaceInBrowser(\n\t\t\t\t\tfontFaceData,\n\t\t\t\t\tfontFaceData.file,\n\t\t\t\t\t'all'\n\t\t\t\t);\n\t\t\t\treturn fontFaceData;\n\t\t\t} )\n\t\t);\n\t\thandleInstall( fontFacesLoaded );\n\t};\n\n\t/**\n\t * Checks if a file is a valid Font file.\n\t *\n\t * @param {File} file The file to be checked.\n\t * @return {boolean} Whether the file is a valid font file.\n\t */\n\tasync function isFontFile( file: File ) {\n\t\tconst font = new Font( 'Uploaded Font' );\n\t\ttry {\n\t\t\tconst buffer = await readFileAsArrayBuffer( file );\n\t\t\tawait font.fromDataBuffer( buffer, 'font' );\n\t\t\treturn true;\n\t\t} catch ( error ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// Create a function to read the file as array buffer\n\tasync function readFileAsArrayBuffer( file: File ) {\n\t\treturn new Promise( ( resolve, reject ) => {\n\t\t\tconst reader = new window.FileReader();\n\t\t\treader.readAsArrayBuffer( file );\n\t\t\treader.onload = () => resolve( reader.result );\n\t\t\treader.onerror = reject;\n\t\t} );\n\t}\n\n\tconst getFontFaceMetadata = async ( fontFile: File ) => {\n\t\tconst buffer = await readFileAsArrayBuffer( fontFile );\n\t\tconst fontObj: Font & {\n\t\t\tonload?: ( val: { detail: { font: any } } ) => void;\n\t\t} = new Font( 'Uploaded Font' );\n\t\tfontObj.fromDataBuffer( buffer, fontFile.name );\n\t\t// Assuming that fromDataBuffer triggers onload event and returning a Promise\n\t\tconst onloadEvent: { detail: { font: any } } = await new Promise(\n\t\t\t( resolve ) => ( fontObj.onload = resolve )\n\t\t);\n\t\tconst font = onloadEvent.detail.font;\n\t\tconst { name } = font.opentype.tables;\n\t\tconst fontName = name.get( 16 ) || name.get( 1 );\n\t\tconst isItalic = name.get( 2 ).toLowerCase().includes( 'italic' );\n\t\tconst fontWeight =\n\t\t\tfont.opentype.tables[ 'OS/2' ].usWeightClass || 'normal';\n\t\tconst isVariable = !! font.opentype.tables.fvar;\n\t\tconst weightAxis =\n\t\t\tisVariable &&\n\t\t\tfont.opentype.tables.fvar.axes.find(\n\t\t\t\t( { tag }: { tag: string } ) => tag === 'wght'\n\t\t\t);\n\t\tconst weightRange = weightAxis\n\t\t\t? `${ weightAxis.minValue } ${ weightAxis.maxValue }`\n\t\t\t: null;\n\t\treturn {\n\t\t\tfile: fontFile,\n\t\t\tfontFamily: fontName,\n\t\t\tfontStyle: isItalic ? 'italic' : 'normal',\n\t\t\tfontWeight: weightRange || fontWeight,\n\t\t};\n\t};\n\n\t/**\n\t * Creates the font family definition and sends it to the server\n\t *\n\t * @param {Array} fontFaces The font faces to be installed\n\t * @return {void}\n\t */\n\tconst handleInstall = async ( fontFaces: FontFace[] ) => {\n\t\tconst fontFamilies = makeFamiliesFromFaces( fontFaces );\n\n\t\ttry {\n\t\t\tawait installFonts( fontFamilies );\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'success',\n\t\t\t\tmessage: __( 'Fonts were installed successfully.' ),\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tconst typedError = error as Error & {\n\t\t\t\tinstallationErrors?: string[];\n\t\t\t};\n\t\t\tsetNotice( {\n\t\t\t\ttype: 'error',\n\t\t\t\tmessage: typedError.message,\n\t\t\t\terrors: typedError?.installationErrors,\n\t\t\t} );\n\t\t}\n\n\t\tsetIsUploading( false );\n\t};\n\n\treturn (\n\t\t<div className=\"font-library__tabpanel-layout\">\n\t\t\t<DropZone onFilesDrop={ handleDropZone } />\n\t\t\t<VStack className=\"font-library__local-fonts\" justify=\"start\">\n\t\t\t\t{ notice && (\n\t\t\t\t\t<Notice\n\t\t\t\t\t\tstatus={ notice.type }\n\t\t\t\t\t\t__unstableHTML\n\t\t\t\t\t\tonRemove={ () => setNotice( null ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ notice.message }\n\t\t\t\t\t\t{ notice.errors && (\n\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t\t{ notice.errors.map( ( error, index ) => (\n\t\t\t\t\t\t\t\t\t<li key={ index }>{ error }</li>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Notice>\n\t\t\t\t) }\n\t\t\t\t{ isUploading && (\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<div className=\"font-library__upload-area\">\n\t\t\t\t\t\t\t<ProgressBar />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t) }\n\t\t\t\t{ ! isUploading && (\n\t\t\t\t\t<FormFileUpload\n\t\t\t\t\t\taccept={ ALLOWED_FILE_EXTENSIONS.map(\n\t\t\t\t\t\t\t( ext ) => `.${ ext }`\n\t\t\t\t\t\t).join( ',' ) }\n\t\t\t\t\t\tmultiple\n\t\t\t\t\t\tonChange={ onFilesUpload }\n\t\t\t\t\t\trender={ ( { openFileDialog } ) => (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tclassName=\"font-library__upload-area\"\n\t\t\t\t\t\t\t\tonClick={ openFileDialog }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Upload font' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<Text className=\"font-library__upload-area__text\">\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.'\n\t\t\t\t\t) }\n\t\t\t\t</Text>\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n\nexport default UploadFonts;\n", "/**\n * Credits:\n *\n * lib-font\n * https://github.com/Pomax/lib-font\n * https://github.com/Pomax/lib-font/blob/master/lib/unbrotli.js\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2020 pomax@nihongoresources.com\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/* eslint eslint-comments/no-unlimited-disable: 0 */\n/* eslint-disable */\nexport default ( function () {\n\tvar define, module, exports;\n\treturn ( function () {\n\t\tfunction r( e, n, t ) {\n\t\t\tfunction o( i, f ) {\n\t\t\t\tif ( ! n[ i ] ) {\n\t\t\t\t\tif ( ! e[ i ] ) {\n\t\t\t\t\t\tvar c = 'function' == typeof require && require;\n\t\t\t\t\t\tif ( ! f && c ) return c( i, ! 0 );\n\t\t\t\t\t\tif ( u ) return u( i, ! 0 );\n\t\t\t\t\t\tvar a = new Error( \"Cannot find module '\" + i + \"'\" );\n\t\t\t\t\t\tthrow ( ( a.code = 'MODULE_NOT_FOUND' ), a );\n\t\t\t\t\t}\n\t\t\t\t\tvar p = ( n[ i ] = { exports: {} } );\n\t\t\t\t\te[ i ][ 0 ].call(\n\t\t\t\t\t\tp.exports,\n\t\t\t\t\t\tfunction ( r ) {\n\t\t\t\t\t\t\tvar n = e[ i ][ 1 ][ r ];\n\t\t\t\t\t\t\treturn o( n || r );\n\t\t\t\t\t\t},\n\t\t\t\t\t\tp,\n\t\t\t\t\t\tp.exports,\n\t\t\t\t\t\tr,\n\t\t\t\t\t\te,\n\t\t\t\t\t\tn,\n\t\t\t\t\t\tt\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn n[ i ].exports;\n\t\t\t}\n\t\t\tfor (\n\t\t\t\tvar u = 'function' == typeof require && require, i = 0;\n\t\t\t\ti < t.length;\n\t\t\t\ti++\n\t\t\t)\n\t\t\t\to( t[ i ] );\n\t\t\treturn o;\n\t\t}\n\t\treturn r;\n\t} )()(\n\t\t{\n\t\t\t1: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\t/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n   Bit reading helpers\n*/\n\n\t\t\t\t\tvar BROTLI_READ_SIZE = 4096;\n\t\t\t\t\tvar BROTLI_IBUF_SIZE = 2 * BROTLI_READ_SIZE + 32;\n\t\t\t\t\tvar BROTLI_IBUF_MASK = 2 * BROTLI_READ_SIZE - 1;\n\n\t\t\t\t\tvar kBitMask = new Uint32Array( [\n\t\t\t\t\t\t0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095,\n\t\t\t\t\t\t8191, 16383, 32767, 65535, 131071, 262143, 524287,\n\t\t\t\t\t\t1048575, 2097151, 4194303, 8388607, 16777215,\n\t\t\t\t\t] );\n\n\t\t\t\t\t/* Input byte buffer, consist of a ringbuffer and a \"slack\" region where */\n\t\t\t\t\t/* bytes from the start of the ringbuffer are copied. */\n\t\t\t\t\tfunction BrotliBitReader( input ) {\n\t\t\t\t\t\tthis.buf_ = new Uint8Array( BROTLI_IBUF_SIZE );\n\t\t\t\t\t\tthis.input_ = input; /* input callback */\n\n\t\t\t\t\t\tthis.reset();\n\t\t\t\t\t}\n\n\t\t\t\t\tBrotliBitReader.READ_SIZE = BROTLI_READ_SIZE;\n\t\t\t\t\tBrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK;\n\n\t\t\t\t\tBrotliBitReader.prototype.reset = function () {\n\t\t\t\t\t\tthis.buf_ptr_ = 0; /* next input will write here */\n\t\t\t\t\t\tthis.val_ = 0; /* pre-fetched bits */\n\t\t\t\t\t\tthis.pos_ = 0; /* byte position in stream */\n\t\t\t\t\t\tthis.bit_pos_ = 0; /* current bit-reading position in val_ */\n\t\t\t\t\t\tthis.bit_end_pos_ = 0; /* bit-reading end position from LSB of val_ */\n\t\t\t\t\t\tthis.eos_ = 0; /* input stream is finished */\n\n\t\t\t\t\t\tthis.readMoreInput();\n\t\t\t\t\t\tfor ( var i = 0; i < 4; i++ ) {\n\t\t\t\t\t\t\tthis.val_ |= this.buf_[ this.pos_ ] << ( 8 * i );\n\t\t\t\t\t\t\t++this.pos_;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn this.bit_end_pos_ > 0;\n\t\t\t\t\t};\n\n\t\t\t\t\t/* Fills up the input ringbuffer by calling the input callback.\n\n   Does nothing if there are at least 32 bytes present after current position.\n\n   Returns 0 if either:\n    - the input callback returned an error, or\n    - there is no more input and the position is past the end of the stream.\n\n   After encountering the end of the input stream, 32 additional zero bytes are\n   copied to the ringbuffer, therefore it is safe to call this function after\n   every 32 bytes of input is read.\n*/\n\t\t\t\t\tBrotliBitReader.prototype.readMoreInput = function () {\n\t\t\t\t\t\tif ( this.bit_end_pos_ > 256 ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} else if ( this.eos_ ) {\n\t\t\t\t\t\t\tif ( this.bit_pos_ > this.bit_end_pos_ )\n\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t'Unexpected end of input ' +\n\t\t\t\t\t\t\t\t\t\tthis.bit_pos_ +\n\t\t\t\t\t\t\t\t\t\t' ' +\n\t\t\t\t\t\t\t\t\t\tthis.bit_end_pos_\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar dst = this.buf_ptr_;\n\t\t\t\t\t\t\tvar bytes_read = this.input_.read(\n\t\t\t\t\t\t\t\tthis.buf_,\n\t\t\t\t\t\t\t\tdst,\n\t\t\t\t\t\t\t\tBROTLI_READ_SIZE\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif ( bytes_read < 0 ) {\n\t\t\t\t\t\t\t\tthrow new Error( 'Unexpected end of input' );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( bytes_read < BROTLI_READ_SIZE ) {\n\t\t\t\t\t\t\t\tthis.eos_ = 1;\n\t\t\t\t\t\t\t\t/* Store 32 bytes of zero after the stream end. */\n\t\t\t\t\t\t\t\tfor ( var p = 0; p < 32; p++ )\n\t\t\t\t\t\t\t\t\tthis.buf_[ dst + bytes_read + p ] = 0;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( dst === 0 ) {\n\t\t\t\t\t\t\t\t/* Copy the head of the ringbuffer to the slack region. */\n\t\t\t\t\t\t\t\tfor ( var p = 0; p < 32; p++ )\n\t\t\t\t\t\t\t\t\tthis.buf_[ ( BROTLI_READ_SIZE << 1 ) + p ] =\n\t\t\t\t\t\t\t\t\t\tthis.buf_[ p ];\n\n\t\t\t\t\t\t\t\tthis.buf_ptr_ = BROTLI_READ_SIZE;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.buf_ptr_ = 0;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.bit_end_pos_ += bytes_read << 3;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t/* Guarantees that there are at least 24 bits in the buffer. */\n\t\t\t\t\tBrotliBitReader.prototype.fillBitWindow = function () {\n\t\t\t\t\t\twhile ( this.bit_pos_ >= 8 ) {\n\t\t\t\t\t\t\tthis.val_ >>>= 8;\n\t\t\t\t\t\t\tthis.val_ |=\n\t\t\t\t\t\t\t\tthis.buf_[ this.pos_ & BROTLI_IBUF_MASK ] << 24;\n\t\t\t\t\t\t\t++this.pos_;\n\t\t\t\t\t\t\tthis.bit_pos_ = ( this.bit_pos_ - 8 ) >>> 0;\n\t\t\t\t\t\t\tthis.bit_end_pos_ = ( this.bit_end_pos_ - 8 ) >>> 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\t/* Reads the specified number of bits from Read Buffer. */\n\t\t\t\t\tBrotliBitReader.prototype.readBits = function ( n_bits ) {\n\t\t\t\t\t\tif ( 32 - this.bit_pos_ < n_bits ) {\n\t\t\t\t\t\t\tthis.fillBitWindow();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar val =\n\t\t\t\t\t\t\t( this.val_ >>> this.bit_pos_ ) &\n\t\t\t\t\t\t\tkBitMask[ n_bits ];\n\t\t\t\t\t\tthis.bit_pos_ += n_bits;\n\t\t\t\t\t\treturn val;\n\t\t\t\t\t};\n\n\t\t\t\t\tmodule.exports = BrotliBitReader;\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t],\n\t\t\t2: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\t/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n   Lookup table to map the previous two bytes to a context id.\n\n   There are four different context modeling modes defined here:\n     CONTEXT_LSB6: context id is the least significant 6 bits of the last byte,\n     CONTEXT_MSB6: context id is the most significant 6 bits of the last byte,\n     CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text,\n     CONTEXT_SIGNED: second-order context model tuned for signed integers.\n\n   The context id for the UTF8 context model is calculated as follows. If p1\n   and p2 are the previous two bytes, we calcualte the context as\n\n     context = kContextLookup[p1] | kContextLookup[p2 + 256].\n\n   If the previous two bytes are ASCII characters (i.e. < 128), this will be\n   equivalent to\n\n     context = 4 * context1(p1) + context2(p2),\n\n   where context1 is based on the previous byte in the following way:\n\n     0  : non-ASCII control\n     1  : \\t, \\n, \\r\n     2  : space\n     3  : other punctuation\n     4  : \" '\n     5  : %\n     6  : ( < [ {\n     7  : ) > ] }\n     8  : , ; :\n     9  : .\n     10 : =\n     11 : number\n     12 : upper-case vowel\n     13 : upper-case consonant\n     14 : lower-case vowel\n     15 : lower-case consonant\n\n   and context2 is based on the second last byte:\n\n     0 : control, space\n     1 : punctuation\n     2 : upper-case letter, number\n     3 : lower-case letter\n\n   If the last byte is ASCII, and the second last byte is not (in a valid UTF8\n   stream it will be a continuation byte, value between 128 and 191), the\n   context is the same as if the second last byte was an ASCII control or space.\n\n   If the last byte is a UTF8 lead byte (value >= 192), then the next byte will\n   be a continuation byte and the context id is 2 or 3 depending on the LSB of\n   the last byte and to a lesser extent on the second last byte if it is ASCII.\n\n   If the last byte is a UTF8 continuation byte, the second last byte can be:\n     - continuation byte: the next byte is probably ASCII or lead byte (assuming\n       4-byte UTF8 characters are rare) and the context id is 0 or 1.\n     - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1\n     - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3\n\n   The possible value combinations of the previous two bytes, the range of\n   context ids and the type of the next byte is summarized in the table below:\n\n   |--------\\-----------------------------------------------------------------|\n   |         \\                         Last byte                              |\n   | Second   \\---------------------------------------------------------------|\n   | last byte \\    ASCII            |   cont. byte        |   lead byte      |\n   |            \\   (0-127)          |   (128-191)         |   (192-)         |\n   |=============|===================|=====================|==================|\n   |  ASCII      | next: ASCII/lead  |  not valid          |  next: cont.     |\n   |  (0-127)    | context: 4 - 63   |                     |  context: 2 - 3  |\n   |-------------|-------------------|---------------------|------------------|\n   |  cont. byte | next: ASCII/lead  |  next: ASCII/lead   |  next: cont.     |\n   |  (128-191)  | context: 4 - 63   |  context: 0 - 1     |  context: 2 - 3  |\n   |-------------|-------------------|---------------------|------------------|\n   |  lead byte  | not valid         |  next: ASCII/lead   |  not valid       |\n   |  (192-207)  |                   |  context: 0 - 1     |                  |\n   |-------------|-------------------|---------------------|------------------|\n   |  lead byte  | not valid         |  next: cont.        |  not valid       |\n   |  (208-)     |                   |  context: 2 - 3     |                  |\n   |-------------|-------------------|---------------------|------------------|\n\n   The context id for the signed context mode is calculated as:\n\n     context = (kContextLookup[512 + p1] << 3) | kContextLookup[512 + p2].\n\n   For any context modeling modes, the context ids can be calculated by |-ing\n   together two lookups from one table using context model dependent offsets:\n\n     context = kContextLookup[offset1 + p1] | kContextLookup[offset2 + p2].\n\n   where offset1 and offset2 are dependent on the context mode.\n*/\n\n\t\t\t\t\tvar CONTEXT_LSB6 = 0;\n\t\t\t\t\tvar CONTEXT_MSB6 = 1;\n\t\t\t\t\tvar CONTEXT_UTF8 = 2;\n\t\t\t\t\tvar CONTEXT_SIGNED = 3;\n\n\t\t\t\t\t/* Common context lookup table for all context modes. */\n\t\t\t\t\texports.lookup = new Uint8Array( [\n\t\t\t\t\t\t/* CONTEXT_UTF8, last byte. */\n\t\t\t\t\t\t/* ASCII range. */\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 12, 16, 12,\n\t\t\t\t\t\t12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12, 44, 44,\n\t\t\t\t\t\t44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12,\n\t\t\t\t\t\t12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52,\n\t\t\t\t\t\t52, 48, 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24,\n\t\t\t\t\t\t12, 28, 12, 12, 12, 56, 60, 60, 60, 56, 60, 60, 60, 56,\n\t\t\t\t\t\t60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56, 60, 60,\n\t\t\t\t\t\t60, 60, 60, 24, 12, 28, 12, 0,\n\t\t\t\t\t\t/* UTF8 continuation byte range. */\n\t\t\t\t\t\t0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,\n\t\t\t\t\t\t1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n\t\t\t\t\t\t0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,\n\t\t\t\t\t\t1, 0, 1, 0, 1, 0, 1 /* UTF8 lead byte range. */, 2, 3,\n\t\t\t\t\t\t2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2,\n\t\t\t\t\t\t3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n\t\t\t\t\t\t2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2,\n\t\t\t\t\t\t3, 2, 3, 2, 3 /* CONTEXT_UTF8 second last byte. */,\n\t\t\t\t\t\t/* ASCII range. */\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,\n\t\t\t\t\t\t1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n\t\t\t\t\t\t2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n\t\t\t\t\t\t2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,\n\t\t\t\t\t\t1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n\t\t\t\t\t\t3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,\n\t\t\t\t\t\t/* UTF8 continuation byte range. */\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0 /* UTF8 lead byte range. */, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2,\n\t\t\t\t\t\t2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n\t\t\t\t\t\t2, 2, 2, 2, 2 /* CONTEXT_SIGNED, second last byte. */,\n\t\t\t\t\t\t0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,\n\t\t\t\t\t\t2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n\t\t\t\t\t\t2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n\t\t\t\t\t\t2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n\t\t\t\t\t\t3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n\t\t\t\t\t\t3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n\t\t\t\t\t\t3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4,\n\t\t\t\t\t\t4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n\t\t\t\t\t\t4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n\t\t\t\t\t\t4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n\t\t\t\t\t\t4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n\t\t\t\t\t\t5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n\t\t\t\t\t\t5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,\n\t\t\t\t\t\t6, 6, 6, 6, 6, 6, 6, 6, 7,\n\t\t\t\t\t\t/* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16,\n\t\t\t\t\t\t16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n\t\t\t\t\t\t16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n\t\t\t\t\t\t16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n\t\t\t\t\t\t16, 16, 16, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n\t\t\t\t\t\t24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n\t\t\t\t\t\t24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n\t\t\t\t\t\t24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n\t\t\t\t\t\t24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 32, 32, 32,\n\t\t\t\t\t\t32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n\t\t\t\t\t\t32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n\t\t\t\t\t\t32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n\t\t\t\t\t\t32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n\t\t\t\t\t\t32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n\t\t\t\t\t\t40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n\t\t\t\t\t\t40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n\t\t\t\t\t\t40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 48, 48, 48,\n\t\t\t\t\t\t48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,\n\t\t\t\t\t\t/* CONTEXT_LSB6, last byte. */\n\t\t\t\t\t\t0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t\t\t\t\t\t16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,\n\t\t\t\t\t\t30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,\n\t\t\t\t\t\t44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,\n\t\t\t\t\t\t58, 59, 60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n\t\t\t\t\t\t10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,\n\t\t\t\t\t\t24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,\n\t\t\t\t\t\t38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,\n\t\t\t\t\t\t52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 1, 2,\n\t\t\t\t\t\t3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,\n\t\t\t\t\t\t19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,\n\t\t\t\t\t\t33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,\n\t\t\t\t\t\t47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,\n\t\t\t\t\t\t61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,\n\t\t\t\t\t\t13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,\n\t\t\t\t\t\t27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,\n\t\t\t\t\t\t41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,\n\t\t\t\t\t\t55, 56, 57, 58, 59, 60, 61, 62, 63,\n\t\t\t\t\t\t/* CONTEXT_MSB6, last byte. */\n\t\t\t\t\t\t0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4,\n\t\t\t\t\t\t4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9,\n\t\t\t\t\t\t9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12,\n\t\t\t\t\t\t13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16,\n\t\t\t\t\t\t16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19,\n\t\t\t\t\t\t20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23,\n\t\t\t\t\t\t23, 23, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26,\n\t\t\t\t\t\t27, 27, 27, 27, 28, 28, 28, 28, 29, 29, 29, 29, 30, 30,\n\t\t\t\t\t\t30, 30, 31, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 33,\n\t\t\t\t\t\t34, 34, 34, 34, 35, 35, 35, 35, 36, 36, 36, 36, 37, 37,\n\t\t\t\t\t\t37, 37, 38, 38, 38, 38, 39, 39, 39, 39, 40, 40, 40, 40,\n\t\t\t\t\t\t41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43, 44, 44,\n\t\t\t\t\t\t44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47,\n\t\t\t\t\t\t48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51,\n\t\t\t\t\t\t51, 51, 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54,\n\t\t\t\t\t\t55, 55, 55, 55, 56, 56, 56, 56, 57, 57, 57, 57, 58, 58,\n\t\t\t\t\t\t58, 58, 59, 59, 59, 59, 60, 60, 60, 60, 61, 61, 61, 61,\n\t\t\t\t\t\t62, 62, 62, 62, 63, 63, 63, 63,\n\t\t\t\t\t\t/* CONTEXT_{M,L}SB6, second last byte, */\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t\t\t\t\t0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t\t\t\t\t] );\n\n\t\t\t\t\texports.lookupOffsets = new Uint16Array( [\n\t\t\t\t\t\t/* CONTEXT_LSB6 */\n\t\t\t\t\t\t1024, 1536 /* CONTEXT_MSB6 */, 1280,\n\t\t\t\t\t\t1536 /* CONTEXT_UTF8 */, 0, 256 /* CONTEXT_SIGNED */,\n\t\t\t\t\t\t768, 512,\n\t\t\t\t\t] );\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t],\n\t\t\t3: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\t/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\n\t\t\t\t\tvar BrotliInput = require( './streams' ).BrotliInput;\n\t\t\t\t\tvar BrotliOutput = require( './streams' ).BrotliOutput;\n\t\t\t\t\tvar BrotliBitReader = require( './bit_reader' );\n\t\t\t\t\tvar BrotliDictionary = require( './dictionary' );\n\t\t\t\t\tvar HuffmanCode = require( './huffman' ).HuffmanCode;\n\t\t\t\t\tvar BrotliBuildHuffmanTable =\n\t\t\t\t\t\trequire( './huffman' ).BrotliBuildHuffmanTable;\n\t\t\t\t\tvar Context = require( './context' );\n\t\t\t\t\tvar Prefix = require( './prefix' );\n\t\t\t\t\tvar Transform = require( './transform' );\n\n\t\t\t\t\tvar kDefaultCodeLength = 8;\n\t\t\t\t\tvar kCodeLengthRepeatCode = 16;\n\t\t\t\t\tvar kNumLiteralCodes = 256;\n\t\t\t\t\tvar kNumInsertAndCopyCodes = 704;\n\t\t\t\t\tvar kNumBlockLengthCodes = 26;\n\t\t\t\t\tvar kLiteralContextBits = 6;\n\t\t\t\t\tvar kDistanceContextBits = 2;\n\n\t\t\t\t\tvar HUFFMAN_TABLE_BITS = 8;\n\t\t\t\t\tvar HUFFMAN_TABLE_MASK = 0xff;\n\t\t\t\t\t/* Maximum possible Huffman table size for an alphabet size of 704, max code\n\t\t\t\t\t * length 15 and root table bits 8. */\n\t\t\t\t\tvar HUFFMAN_MAX_TABLE_SIZE = 1080;\n\n\t\t\t\t\tvar CODE_LENGTH_CODES = 18;\n\t\t\t\t\tvar kCodeLengthCodeOrder = new Uint8Array( [\n\t\t\t\t\t\t1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13,\n\t\t\t\t\t\t14, 15,\n\t\t\t\t\t] );\n\n\t\t\t\t\tvar NUM_DISTANCE_SHORT_CODES = 16;\n\t\t\t\t\tvar kDistanceShortCodeIndexOffset = new Uint8Array( [\n\t\t\t\t\t\t3, 2, 1, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2,\n\t\t\t\t\t] );\n\n\t\t\t\t\tvar kDistanceShortCodeValueOffset = new Int8Array( [\n\t\t\t\t\t\t0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3,\n\t\t\t\t\t] );\n\n\t\t\t\t\tvar kMaxHuffmanTableSize = new Uint16Array( [\n\t\t\t\t\t\t256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694,\n\t\t\t\t\t\t726, 758, 790, 822, 854, 886, 920, 952, 984, 1016, 1048,\n\t\t\t\t\t\t1080,\n\t\t\t\t\t] );\n\n\t\t\t\t\tfunction DecodeWindowBits( br ) {\n\t\t\t\t\t\tvar n;\n\t\t\t\t\t\tif ( br.readBits( 1 ) === 0 ) {\n\t\t\t\t\t\t\treturn 16;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tn = br.readBits( 3 );\n\t\t\t\t\t\tif ( n > 0 ) {\n\t\t\t\t\t\t\treturn 17 + n;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tn = br.readBits( 3 );\n\t\t\t\t\t\tif ( n > 0 ) {\n\t\t\t\t\t\t\treturn 8 + n;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn 17;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* Decodes a number in the range [0..255], by reading 1 - 11 bits. */\n\t\t\t\t\tfunction DecodeVarLenUint8( br ) {\n\t\t\t\t\t\tif ( br.readBits( 1 ) ) {\n\t\t\t\t\t\t\tvar nbits = br.readBits( 3 );\n\t\t\t\t\t\t\tif ( nbits === 0 ) {\n\t\t\t\t\t\t\t\treturn 1;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn br.readBits( nbits ) + ( 1 << nbits );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction MetaBlockLength() {\n\t\t\t\t\t\tthis.meta_block_length = 0;\n\t\t\t\t\t\tthis.input_end = 0;\n\t\t\t\t\t\tthis.is_uncompressed = 0;\n\t\t\t\t\t\tthis.is_metadata = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction DecodeMetaBlockLength( br ) {\n\t\t\t\t\t\tvar out = new MetaBlockLength();\n\t\t\t\t\t\tvar size_nibbles;\n\t\t\t\t\t\tvar size_bytes;\n\t\t\t\t\t\tvar i;\n\n\t\t\t\t\t\tout.input_end = br.readBits( 1 );\n\t\t\t\t\t\tif ( out.input_end && br.readBits( 1 ) ) {\n\t\t\t\t\t\t\treturn out;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsize_nibbles = br.readBits( 2 ) + 4;\n\t\t\t\t\t\tif ( size_nibbles === 7 ) {\n\t\t\t\t\t\t\tout.is_metadata = true;\n\n\t\t\t\t\t\t\tif ( br.readBits( 1 ) !== 0 )\n\t\t\t\t\t\t\t\tthrow new Error( 'Invalid reserved bit' );\n\n\t\t\t\t\t\t\tsize_bytes = br.readBits( 2 );\n\t\t\t\t\t\t\tif ( size_bytes === 0 ) return out;\n\n\t\t\t\t\t\t\tfor ( i = 0; i < size_bytes; i++ ) {\n\t\t\t\t\t\t\t\tvar next_byte = br.readBits( 8 );\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\ti + 1 === size_bytes &&\n\t\t\t\t\t\t\t\t\tsize_bytes > 1 &&\n\t\t\t\t\t\t\t\t\tnext_byte === 0\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\tthrow new Error( 'Invalid size byte' );\n\n\t\t\t\t\t\t\t\tout.meta_block_length |= next_byte << ( i * 8 );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor ( i = 0; i < size_nibbles; ++i ) {\n\t\t\t\t\t\t\t\tvar next_nibble = br.readBits( 4 );\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\ti + 1 === size_nibbles &&\n\t\t\t\t\t\t\t\t\tsize_nibbles > 4 &&\n\t\t\t\t\t\t\t\t\tnext_nibble === 0\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\tthrow new Error( 'Invalid size nibble' );\n\n\t\t\t\t\t\t\t\tout.meta_block_length |=\n\t\t\t\t\t\t\t\t\tnext_nibble << ( i * 4 );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t++out.meta_block_length;\n\n\t\t\t\t\t\tif ( ! out.input_end && ! out.is_metadata ) {\n\t\t\t\t\t\t\tout.is_uncompressed = br.readBits( 1 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn out;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* Decodes the next Huffman code from bit-stream. */\n\t\t\t\t\tfunction ReadSymbol( table, index, br ) {\n\t\t\t\t\t\tvar start_index = index;\n\n\t\t\t\t\t\tvar nbits;\n\t\t\t\t\t\tbr.fillBitWindow();\n\t\t\t\t\t\tindex +=\n\t\t\t\t\t\t\t( br.val_ >>> br.bit_pos_ ) & HUFFMAN_TABLE_MASK;\n\t\t\t\t\t\tnbits = table[ index ].bits - HUFFMAN_TABLE_BITS;\n\t\t\t\t\t\tif ( nbits > 0 ) {\n\t\t\t\t\t\t\tbr.bit_pos_ += HUFFMAN_TABLE_BITS;\n\t\t\t\t\t\t\tindex += table[ index ].value;\n\t\t\t\t\t\t\tindex +=\n\t\t\t\t\t\t\t\t( br.val_ >>> br.bit_pos_ ) &\n\t\t\t\t\t\t\t\t( ( 1 << nbits ) - 1 );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbr.bit_pos_ += table[ index ].bits;\n\t\t\t\t\t\treturn table[ index ].value;\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction ReadHuffmanCodeLengths(\n\t\t\t\t\t\tcode_length_code_lengths,\n\t\t\t\t\t\tnum_symbols,\n\t\t\t\t\t\tcode_lengths,\n\t\t\t\t\t\tbr\n\t\t\t\t\t) {\n\t\t\t\t\t\tvar symbol = 0;\n\t\t\t\t\t\tvar prev_code_len = kDefaultCodeLength;\n\t\t\t\t\t\tvar repeat = 0;\n\t\t\t\t\t\tvar repeat_code_len = 0;\n\t\t\t\t\t\tvar space = 32768;\n\n\t\t\t\t\t\tvar table = [];\n\t\t\t\t\t\tfor ( var i = 0; i < 32; i++ )\n\t\t\t\t\t\t\ttable.push( new HuffmanCode( 0, 0 ) );\n\n\t\t\t\t\t\tBrotliBuildHuffmanTable(\n\t\t\t\t\t\t\ttable,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t5,\n\t\t\t\t\t\t\tcode_length_code_lengths,\n\t\t\t\t\t\t\tCODE_LENGTH_CODES\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\twhile ( symbol < num_symbols && space > 0 ) {\n\t\t\t\t\t\t\tvar p = 0;\n\t\t\t\t\t\t\tvar code_len;\n\n\t\t\t\t\t\t\tbr.readMoreInput();\n\t\t\t\t\t\t\tbr.fillBitWindow();\n\t\t\t\t\t\t\tp += ( br.val_ >>> br.bit_pos_ ) & 31;\n\t\t\t\t\t\t\tbr.bit_pos_ += table[ p ].bits;\n\t\t\t\t\t\t\tcode_len = table[ p ].value & 0xff;\n\t\t\t\t\t\t\tif ( code_len < kCodeLengthRepeatCode ) {\n\t\t\t\t\t\t\t\trepeat = 0;\n\t\t\t\t\t\t\t\tcode_lengths[ symbol++ ] = code_len;\n\t\t\t\t\t\t\t\tif ( code_len !== 0 ) {\n\t\t\t\t\t\t\t\t\tprev_code_len = code_len;\n\t\t\t\t\t\t\t\t\tspace -= 32768 >> code_len;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvar extra_bits = code_len - 14;\n\t\t\t\t\t\t\t\tvar old_repeat;\n\t\t\t\t\t\t\t\tvar repeat_delta;\n\t\t\t\t\t\t\t\tvar new_len = 0;\n\t\t\t\t\t\t\t\tif ( code_len === kCodeLengthRepeatCode ) {\n\t\t\t\t\t\t\t\t\tnew_len = prev_code_len;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( repeat_code_len !== new_len ) {\n\t\t\t\t\t\t\t\t\trepeat = 0;\n\t\t\t\t\t\t\t\t\trepeat_code_len = new_len;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\told_repeat = repeat;\n\t\t\t\t\t\t\t\tif ( repeat > 0 ) {\n\t\t\t\t\t\t\t\t\trepeat -= 2;\n\t\t\t\t\t\t\t\t\trepeat <<= extra_bits;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trepeat += br.readBits( extra_bits ) + 3;\n\t\t\t\t\t\t\t\trepeat_delta = repeat - old_repeat;\n\t\t\t\t\t\t\t\tif ( symbol + repeat_delta > num_symbols ) {\n\t\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t\t'[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols'\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tfor ( var x = 0; x < repeat_delta; x++ )\n\t\t\t\t\t\t\t\t\tcode_lengths[ symbol + x ] =\n\t\t\t\t\t\t\t\t\t\trepeat_code_len;\n\n\t\t\t\t\t\t\t\tsymbol += repeat_delta;\n\n\t\t\t\t\t\t\t\tif ( repeat_code_len !== 0 ) {\n\t\t\t\t\t\t\t\t\tspace -=\n\t\t\t\t\t\t\t\t\t\trepeat_delta <<\n\t\t\t\t\t\t\t\t\t\t( 15 - repeat_code_len );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( space !== 0 ) {\n\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t'[ReadHuffmanCodeLengths] space = ' + space\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( ; symbol < num_symbols; symbol++ )\n\t\t\t\t\t\t\tcode_lengths[ symbol ] = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction ReadHuffmanCode(\n\t\t\t\t\t\talphabet_size,\n\t\t\t\t\t\ttables,\n\t\t\t\t\t\ttable,\n\t\t\t\t\t\tbr\n\t\t\t\t\t) {\n\t\t\t\t\t\tvar table_size = 0;\n\t\t\t\t\t\tvar simple_code_or_skip;\n\t\t\t\t\t\tvar code_lengths = new Uint8Array( alphabet_size );\n\n\t\t\t\t\t\tbr.readMoreInput();\n\n\t\t\t\t\t\t/* simple_code_or_skip is used as follows:\n     1 for simple code;\n     0 for no skipping, 2 skips 2 code lengths, 3 skips 3 code lengths */\n\t\t\t\t\t\tsimple_code_or_skip = br.readBits( 2 );\n\t\t\t\t\t\tif ( simple_code_or_skip === 1 ) {\n\t\t\t\t\t\t\t/* Read symbols, codes & code lengths directly. */\n\t\t\t\t\t\t\tvar i;\n\t\t\t\t\t\t\tvar max_bits_counter = alphabet_size - 1;\n\t\t\t\t\t\t\tvar max_bits = 0;\n\t\t\t\t\t\t\tvar symbols = new Int32Array( 4 );\n\t\t\t\t\t\t\tvar num_symbols = br.readBits( 2 ) + 1;\n\t\t\t\t\t\t\twhile ( max_bits_counter ) {\n\t\t\t\t\t\t\t\tmax_bits_counter >>= 1;\n\t\t\t\t\t\t\t\t++max_bits;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor ( i = 0; i < num_symbols; ++i ) {\n\t\t\t\t\t\t\t\tsymbols[ i ] =\n\t\t\t\t\t\t\t\t\tbr.readBits( max_bits ) % alphabet_size;\n\t\t\t\t\t\t\t\tcode_lengths[ symbols[ i ] ] = 2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcode_lengths[ symbols[ 0 ] ] = 1;\n\t\t\t\t\t\t\tswitch ( num_symbols ) {\n\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tsymbols[ 0 ] === symbols[ 1 ] ||\n\t\t\t\t\t\t\t\t\t\tsymbols[ 0 ] === symbols[ 2 ] ||\n\t\t\t\t\t\t\t\t\t\tsymbols[ 1 ] === symbols[ 2 ]\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t\t\t'[ReadHuffmanCode] invalid symbols'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\tif ( symbols[ 0 ] === symbols[ 1 ] ) {\n\t\t\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t\t\t'[ReadHuffmanCode] invalid symbols'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tcode_lengths[ symbols[ 1 ] ] = 1;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tsymbols[ 0 ] === symbols[ 1 ] ||\n\t\t\t\t\t\t\t\t\t\tsymbols[ 0 ] === symbols[ 2 ] ||\n\t\t\t\t\t\t\t\t\t\tsymbols[ 0 ] === symbols[ 3 ] ||\n\t\t\t\t\t\t\t\t\t\tsymbols[ 1 ] === symbols[ 2 ] ||\n\t\t\t\t\t\t\t\t\t\tsymbols[ 1 ] === symbols[ 3 ] ||\n\t\t\t\t\t\t\t\t\t\tsymbols[ 2 ] === symbols[ 3 ]\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t\t\t'[ReadHuffmanCode] invalid symbols'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( br.readBits( 1 ) ) {\n\t\t\t\t\t\t\t\t\t\tcode_lengths[ symbols[ 2 ] ] = 3;\n\t\t\t\t\t\t\t\t\t\tcode_lengths[ symbols[ 3 ] ] = 3;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcode_lengths[ symbols[ 0 ] ] = 2;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t/* Decode Huffman-coded code lengths. */\n\t\t\t\t\t\t\tvar i;\n\t\t\t\t\t\t\tvar code_length_code_lengths = new Uint8Array(\n\t\t\t\t\t\t\t\tCODE_LENGTH_CODES\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tvar space = 32;\n\t\t\t\t\t\t\tvar num_codes = 0;\n\t\t\t\t\t\t\t/* Static Huffman code for the code length code lengths */\n\t\t\t\t\t\t\tvar huff = [\n\t\t\t\t\t\t\t\tnew HuffmanCode( 2, 0 ),\n\t\t\t\t\t\t\t\tnew HuffmanCode( 2, 4 ),\n\t\t\t\t\t\t\t\tnew HuffmanCode( 2, 3 ),\n\t\t\t\t\t\t\t\tnew HuffmanCode( 3, 2 ),\n\t\t\t\t\t\t\t\tnew HuffmanCode( 2, 0 ),\n\t\t\t\t\t\t\t\tnew HuffmanCode( 2, 4 ),\n\t\t\t\t\t\t\t\tnew HuffmanCode( 2, 3 ),\n\t\t\t\t\t\t\t\tnew HuffmanCode( 4, 1 ),\n\t\t\t\t\t\t\t\tnew HuffmanCode( 2, 0 ),\n\t\t\t\t\t\t\t\tnew HuffmanCode( 2, 4 ),\n\t\t\t\t\t\t\t\tnew HuffmanCode( 2, 3 ),\n\t\t\t\t\t\t\t\tnew HuffmanCode( 3, 2 ),\n\t\t\t\t\t\t\t\tnew HuffmanCode( 2, 0 ),\n\t\t\t\t\t\t\t\tnew HuffmanCode( 2, 4 ),\n\t\t\t\t\t\t\t\tnew HuffmanCode( 2, 3 ),\n\t\t\t\t\t\t\t\tnew HuffmanCode( 4, 5 ),\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\t\ti = simple_code_or_skip;\n\t\t\t\t\t\t\t\ti < CODE_LENGTH_CODES && space > 0;\n\t\t\t\t\t\t\t\t++i\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tvar code_len_idx = kCodeLengthCodeOrder[ i ];\n\t\t\t\t\t\t\t\tvar p = 0;\n\t\t\t\t\t\t\t\tvar v;\n\t\t\t\t\t\t\t\tbr.fillBitWindow();\n\t\t\t\t\t\t\t\tp += ( br.val_ >>> br.bit_pos_ ) & 15;\n\t\t\t\t\t\t\t\tbr.bit_pos_ += huff[ p ].bits;\n\t\t\t\t\t\t\t\tv = huff[ p ].value;\n\t\t\t\t\t\t\t\tcode_length_code_lengths[ code_len_idx ] = v;\n\t\t\t\t\t\t\t\tif ( v !== 0 ) {\n\t\t\t\t\t\t\t\t\tspace -= 32 >> v;\n\t\t\t\t\t\t\t\t\t++num_codes;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( ! ( num_codes === 1 || space === 0 ) )\n\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t'[ReadHuffmanCode] invalid num_codes or space'\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tReadHuffmanCodeLengths(\n\t\t\t\t\t\t\t\tcode_length_code_lengths,\n\t\t\t\t\t\t\t\talphabet_size,\n\t\t\t\t\t\t\t\tcode_lengths,\n\t\t\t\t\t\t\t\tbr\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttable_size = BrotliBuildHuffmanTable(\n\t\t\t\t\t\t\ttables,\n\t\t\t\t\t\t\ttable,\n\t\t\t\t\t\t\tHUFFMAN_TABLE_BITS,\n\t\t\t\t\t\t\tcode_lengths,\n\t\t\t\t\t\t\talphabet_size\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif ( table_size === 0 ) {\n\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t'[ReadHuffmanCode] BuildHuffmanTable failed: '\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn table_size;\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction ReadBlockLength( table, index, br ) {\n\t\t\t\t\t\tvar code;\n\t\t\t\t\t\tvar nbits;\n\t\t\t\t\t\tcode = ReadSymbol( table, index, br );\n\t\t\t\t\t\tnbits = Prefix.kBlockLengthPrefixCode[ code ].nbits;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tPrefix.kBlockLengthPrefixCode[ code ].offset +\n\t\t\t\t\t\t\tbr.readBits( nbits )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction TranslateShortCodes( code, ringbuffer, index ) {\n\t\t\t\t\t\tvar val;\n\t\t\t\t\t\tif ( code < NUM_DISTANCE_SHORT_CODES ) {\n\t\t\t\t\t\t\tindex += kDistanceShortCodeIndexOffset[ code ];\n\t\t\t\t\t\t\tindex &= 3;\n\t\t\t\t\t\t\tval =\n\t\t\t\t\t\t\t\tringbuffer[ index ] +\n\t\t\t\t\t\t\t\tkDistanceShortCodeValueOffset[ code ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tval = code - NUM_DISTANCE_SHORT_CODES + 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn val;\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction MoveToFront( v, index ) {\n\t\t\t\t\t\tvar value = v[ index ];\n\t\t\t\t\t\tvar i = index;\n\t\t\t\t\t\tfor ( ; i; --i ) v[ i ] = v[ i - 1 ];\n\t\t\t\t\t\tv[ 0 ] = value;\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction InverseMoveToFrontTransform( v, v_len ) {\n\t\t\t\t\t\tvar mtf = new Uint8Array( 256 );\n\t\t\t\t\t\tvar i;\n\t\t\t\t\t\tfor ( i = 0; i < 256; ++i ) {\n\t\t\t\t\t\t\tmtf[ i ] = i;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( i = 0; i < v_len; ++i ) {\n\t\t\t\t\t\t\tvar index = v[ i ];\n\t\t\t\t\t\t\tv[ i ] = mtf[ index ];\n\t\t\t\t\t\t\tif ( index ) MoveToFront( mtf, index );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t/* Contains a collection of huffman trees with the same alphabet size. */\n\t\t\t\t\tfunction HuffmanTreeGroup( alphabet_size, num_htrees ) {\n\t\t\t\t\t\tthis.alphabet_size = alphabet_size;\n\t\t\t\t\t\tthis.num_htrees = num_htrees;\n\t\t\t\t\t\tthis.codes = new Array(\n\t\t\t\t\t\t\tnum_htrees +\n\t\t\t\t\t\t\t\tnum_htrees *\n\t\t\t\t\t\t\t\t\tkMaxHuffmanTableSize[\n\t\t\t\t\t\t\t\t\t\t( alphabet_size + 31 ) >>> 5\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.htrees = new Uint32Array( num_htrees );\n\t\t\t\t\t}\n\n\t\t\t\t\tHuffmanTreeGroup.prototype.decode = function ( br ) {\n\t\t\t\t\t\tvar i;\n\t\t\t\t\t\tvar table_size;\n\t\t\t\t\t\tvar next = 0;\n\t\t\t\t\t\tfor ( i = 0; i < this.num_htrees; ++i ) {\n\t\t\t\t\t\t\tthis.htrees[ i ] = next;\n\t\t\t\t\t\t\ttable_size = ReadHuffmanCode(\n\t\t\t\t\t\t\t\tthis.alphabet_size,\n\t\t\t\t\t\t\t\tthis.codes,\n\t\t\t\t\t\t\t\tnext,\n\t\t\t\t\t\t\t\tbr\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tnext += table_size;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tfunction DecodeContextMap( context_map_size, br ) {\n\t\t\t\t\t\tvar out = { num_htrees: null, context_map: null };\n\t\t\t\t\t\tvar use_rle_for_zeros;\n\t\t\t\t\t\tvar max_run_length_prefix = 0;\n\t\t\t\t\t\tvar table;\n\t\t\t\t\t\tvar i;\n\n\t\t\t\t\t\tbr.readMoreInput();\n\t\t\t\t\t\tvar num_htrees = ( out.num_htrees =\n\t\t\t\t\t\t\tDecodeVarLenUint8( br ) + 1 );\n\n\t\t\t\t\t\tvar context_map = ( out.context_map = new Uint8Array(\n\t\t\t\t\t\t\tcontext_map_size\n\t\t\t\t\t\t) );\n\t\t\t\t\t\tif ( num_htrees <= 1 ) {\n\t\t\t\t\t\t\treturn out;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tuse_rle_for_zeros = br.readBits( 1 );\n\t\t\t\t\t\tif ( use_rle_for_zeros ) {\n\t\t\t\t\t\t\tmax_run_length_prefix = br.readBits( 4 ) + 1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttable = [];\n\t\t\t\t\t\tfor ( i = 0; i < HUFFMAN_MAX_TABLE_SIZE; i++ ) {\n\t\t\t\t\t\t\ttable[ i ] = new HuffmanCode( 0, 0 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tReadHuffmanCode(\n\t\t\t\t\t\t\tnum_htrees + max_run_length_prefix,\n\t\t\t\t\t\t\ttable,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\tbr\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tfor ( i = 0; i < context_map_size;  ) {\n\t\t\t\t\t\t\tvar code;\n\n\t\t\t\t\t\t\tbr.readMoreInput();\n\t\t\t\t\t\t\tcode = ReadSymbol( table, 0, br );\n\t\t\t\t\t\t\tif ( code === 0 ) {\n\t\t\t\t\t\t\t\tcontext_map[ i ] = 0;\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t} else if ( code <= max_run_length_prefix ) {\n\t\t\t\t\t\t\t\tvar reps =\n\t\t\t\t\t\t\t\t\t1 + ( 1 << code ) + br.readBits( code );\n\t\t\t\t\t\t\t\twhile ( --reps ) {\n\t\t\t\t\t\t\t\t\tif ( i >= context_map_size ) {\n\t\t\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t\t\t'[DecodeContextMap] i >= context_map_size'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcontext_map[ i ] = 0;\n\t\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcontext_map[ i ] = code - max_run_length_prefix;\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( br.readBits( 1 ) ) {\n\t\t\t\t\t\t\tInverseMoveToFrontTransform(\n\t\t\t\t\t\t\t\tcontext_map,\n\t\t\t\t\t\t\t\tcontext_map_size\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn out;\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction DecodeBlockType(\n\t\t\t\t\t\tmax_block_type,\n\t\t\t\t\t\ttrees,\n\t\t\t\t\t\ttree_type,\n\t\t\t\t\t\tblock_types,\n\t\t\t\t\t\tringbuffers,\n\t\t\t\t\t\tindexes,\n\t\t\t\t\t\tbr\n\t\t\t\t\t) {\n\t\t\t\t\t\tvar ringbuffer = tree_type * 2;\n\t\t\t\t\t\tvar index = tree_type;\n\t\t\t\t\t\tvar type_code = ReadSymbol(\n\t\t\t\t\t\t\ttrees,\n\t\t\t\t\t\t\ttree_type * HUFFMAN_MAX_TABLE_SIZE,\n\t\t\t\t\t\t\tbr\n\t\t\t\t\t\t);\n\t\t\t\t\t\tvar block_type;\n\t\t\t\t\t\tif ( type_code === 0 ) {\n\t\t\t\t\t\t\tblock_type =\n\t\t\t\t\t\t\t\tringbuffers[\n\t\t\t\t\t\t\t\t\tringbuffer + ( indexes[ index ] & 1 )\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t} else if ( type_code === 1 ) {\n\t\t\t\t\t\t\tblock_type =\n\t\t\t\t\t\t\t\tringbuffers[\n\t\t\t\t\t\t\t\t\tringbuffer +\n\t\t\t\t\t\t\t\t\t\t( ( indexes[ index ] - 1 ) & 1 )\n\t\t\t\t\t\t\t\t] + 1;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tblock_type = type_code - 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( block_type >= max_block_type ) {\n\t\t\t\t\t\t\tblock_type -= max_block_type;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tblock_types[ tree_type ] = block_type;\n\t\t\t\t\t\tringbuffers[ ringbuffer + ( indexes[ index ] & 1 ) ] =\n\t\t\t\t\t\t\tblock_type;\n\t\t\t\t\t\t++indexes[ index ];\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction CopyUncompressedBlockToOutput(\n\t\t\t\t\t\toutput,\n\t\t\t\t\t\tlen,\n\t\t\t\t\t\tpos,\n\t\t\t\t\t\tringbuffer,\n\t\t\t\t\t\tringbuffer_mask,\n\t\t\t\t\t\tbr\n\t\t\t\t\t) {\n\t\t\t\t\t\tvar rb_size = ringbuffer_mask + 1;\n\t\t\t\t\t\tvar rb_pos = pos & ringbuffer_mask;\n\t\t\t\t\t\tvar br_pos = br.pos_ & BrotliBitReader.IBUF_MASK;\n\t\t\t\t\t\tvar nbytes;\n\n\t\t\t\t\t\t/* For short lengths copy byte-by-byte */\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tlen < 8 ||\n\t\t\t\t\t\t\tbr.bit_pos_ + ( len << 3 ) < br.bit_end_pos_\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\twhile ( len-- > 0 ) {\n\t\t\t\t\t\t\t\tbr.readMoreInput();\n\t\t\t\t\t\t\t\tringbuffer[ rb_pos++ ] = br.readBits( 8 );\n\t\t\t\t\t\t\t\tif ( rb_pos === rb_size ) {\n\t\t\t\t\t\t\t\t\toutput.write( ringbuffer, rb_size );\n\t\t\t\t\t\t\t\t\trb_pos = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( br.bit_end_pos_ < 32 ) {\n\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t'[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* Copy remaining 0-4 bytes from br.val_ to ringbuffer. */\n\t\t\t\t\t\twhile ( br.bit_pos_ < 32 ) {\n\t\t\t\t\t\t\tringbuffer[ rb_pos ] = br.val_ >>> br.bit_pos_;\n\t\t\t\t\t\t\tbr.bit_pos_ += 8;\n\t\t\t\t\t\t\t++rb_pos;\n\t\t\t\t\t\t\t--len;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* Copy remaining bytes from br.buf_ to ringbuffer. */\n\t\t\t\t\t\tnbytes = ( br.bit_end_pos_ - br.bit_pos_ ) >> 3;\n\t\t\t\t\t\tif ( br_pos + nbytes > BrotliBitReader.IBUF_MASK ) {\n\t\t\t\t\t\t\tvar tail = BrotliBitReader.IBUF_MASK + 1 - br_pos;\n\t\t\t\t\t\t\tfor ( var x = 0; x < tail; x++ )\n\t\t\t\t\t\t\t\tringbuffer[ rb_pos + x ] =\n\t\t\t\t\t\t\t\t\tbr.buf_[ br_pos + x ];\n\n\t\t\t\t\t\t\tnbytes -= tail;\n\t\t\t\t\t\t\trb_pos += tail;\n\t\t\t\t\t\t\tlen -= tail;\n\t\t\t\t\t\t\tbr_pos = 0;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( var x = 0; x < nbytes; x++ )\n\t\t\t\t\t\t\tringbuffer[ rb_pos + x ] = br.buf_[ br_pos + x ];\n\n\t\t\t\t\t\trb_pos += nbytes;\n\t\t\t\t\t\tlen -= nbytes;\n\n\t\t\t\t\t\t/* If we wrote past the logical end of the ringbuffer, copy the tail of the\n     ringbuffer to its beginning and flush the ringbuffer to the output. */\n\t\t\t\t\t\tif ( rb_pos >= rb_size ) {\n\t\t\t\t\t\t\toutput.write( ringbuffer, rb_size );\n\t\t\t\t\t\t\trb_pos -= rb_size;\n\t\t\t\t\t\t\tfor ( var x = 0; x < rb_pos; x++ )\n\t\t\t\t\t\t\t\tringbuffer[ x ] = ringbuffer[ rb_size + x ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* If we have more to copy than the remaining size of the ringbuffer, then we\n     first fill the ringbuffer from the input and then flush the ringbuffer to\n     the output */\n\t\t\t\t\t\twhile ( rb_pos + len >= rb_size ) {\n\t\t\t\t\t\t\tnbytes = rb_size - rb_pos;\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tbr.input_.read( ringbuffer, rb_pos, nbytes ) <\n\t\t\t\t\t\t\t\tnbytes\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t'[CopyUncompressedBlockToOutput] not enough bytes'\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\toutput.write( ringbuffer, rb_size );\n\t\t\t\t\t\t\tlen -= nbytes;\n\t\t\t\t\t\t\trb_pos = 0;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* Copy straight from the input onto the ringbuffer. The ringbuffer will be\n     flushed to the output at a later time. */\n\t\t\t\t\t\tif ( br.input_.read( ringbuffer, rb_pos, len ) < len ) {\n\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t'[CopyUncompressedBlockToOutput] not enough bytes'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* Restore the state of the bit reader. */\n\t\t\t\t\t\tbr.reset();\n\t\t\t\t\t}\n\n\t\t\t\t\t/* Advances the bit reader position to the next byte boundary and verifies\n   that any skipped bits are set to zero. */\n\t\t\t\t\tfunction JumpToByteBoundary( br ) {\n\t\t\t\t\t\tvar new_bit_pos = ( br.bit_pos_ + 7 ) & ~7;\n\t\t\t\t\t\tvar pad_bits = br.readBits( new_bit_pos - br.bit_pos_ );\n\t\t\t\t\t\treturn pad_bits == 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction BrotliDecompressedSize( buffer ) {\n\t\t\t\t\t\tvar input = new BrotliInput( buffer );\n\t\t\t\t\t\tvar br = new BrotliBitReader( input );\n\t\t\t\t\t\tDecodeWindowBits( br );\n\t\t\t\t\t\tvar out = DecodeMetaBlockLength( br );\n\t\t\t\t\t\treturn out.meta_block_length;\n\t\t\t\t\t}\n\n\t\t\t\t\texports.BrotliDecompressedSize = BrotliDecompressedSize;\n\n\t\t\t\t\tfunction BrotliDecompressBuffer( buffer, output_size ) {\n\t\t\t\t\t\tvar input = new BrotliInput( buffer );\n\n\t\t\t\t\t\tif ( output_size == null ) {\n\t\t\t\t\t\t\toutput_size = BrotliDecompressedSize( buffer );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar output_buffer = new Uint8Array( output_size );\n\t\t\t\t\t\tvar output = new BrotliOutput( output_buffer );\n\n\t\t\t\t\t\tBrotliDecompress( input, output );\n\n\t\t\t\t\t\tif ( output.pos < output.buffer.length ) {\n\t\t\t\t\t\t\toutput.buffer = output.buffer.subarray(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\toutput.pos\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn output.buffer;\n\t\t\t\t\t}\n\n\t\t\t\t\texports.BrotliDecompressBuffer = BrotliDecompressBuffer;\n\n\t\t\t\t\tfunction BrotliDecompress( input, output ) {\n\t\t\t\t\t\tvar i;\n\t\t\t\t\t\tvar pos = 0;\n\t\t\t\t\t\tvar input_end = 0;\n\t\t\t\t\t\tvar window_bits = 0;\n\t\t\t\t\t\tvar max_backward_distance;\n\t\t\t\t\t\tvar max_distance = 0;\n\t\t\t\t\t\tvar ringbuffer_size;\n\t\t\t\t\t\tvar ringbuffer_mask;\n\t\t\t\t\t\tvar ringbuffer;\n\t\t\t\t\t\tvar ringbuffer_end;\n\t\t\t\t\t\t/* This ring buffer holds a few past copy distances that will be used by */\n\t\t\t\t\t\t/* some special distance codes. */\n\t\t\t\t\t\tvar dist_rb = [ 16, 15, 11, 4 ];\n\t\t\t\t\t\tvar dist_rb_idx = 0;\n\t\t\t\t\t\t/* The previous 2 bytes used for context. */\n\t\t\t\t\t\tvar prev_byte1 = 0;\n\t\t\t\t\t\tvar prev_byte2 = 0;\n\t\t\t\t\t\tvar hgroup = [\n\t\t\t\t\t\t\tnew HuffmanTreeGroup( 0, 0 ),\n\t\t\t\t\t\t\tnew HuffmanTreeGroup( 0, 0 ),\n\t\t\t\t\t\t\tnew HuffmanTreeGroup( 0, 0 ),\n\t\t\t\t\t\t];\n\t\t\t\t\t\tvar block_type_trees;\n\t\t\t\t\t\tvar block_len_trees;\n\t\t\t\t\t\tvar br;\n\n\t\t\t\t\t\t/* We need the slack region for the following reasons:\n       - always doing two 8-byte copies for fast backward copying\n       - transforms\n       - flushing the input ringbuffer when decoding uncompressed blocks */\n\t\t\t\t\t\tvar kRingBufferWriteAheadSlack =\n\t\t\t\t\t\t\t128 + BrotliBitReader.READ_SIZE;\n\n\t\t\t\t\t\tbr = new BrotliBitReader( input );\n\n\t\t\t\t\t\t/* Decode window size. */\n\t\t\t\t\t\twindow_bits = DecodeWindowBits( br );\n\t\t\t\t\t\tmax_backward_distance = ( 1 << window_bits ) - 16;\n\n\t\t\t\t\t\tringbuffer_size = 1 << window_bits;\n\t\t\t\t\t\tringbuffer_mask = ringbuffer_size - 1;\n\t\t\t\t\t\tringbuffer = new Uint8Array(\n\t\t\t\t\t\t\tringbuffer_size +\n\t\t\t\t\t\t\t\tkRingBufferWriteAheadSlack +\n\t\t\t\t\t\t\t\tBrotliDictionary.maxDictionaryWordLength\n\t\t\t\t\t\t);\n\t\t\t\t\t\tringbuffer_end = ringbuffer_size;\n\n\t\t\t\t\t\tblock_type_trees = [];\n\t\t\t\t\t\tblock_len_trees = [];\n\t\t\t\t\t\tfor ( var x = 0; x < 3 * HUFFMAN_MAX_TABLE_SIZE; x++ ) {\n\t\t\t\t\t\t\tblock_type_trees[ x ] = new HuffmanCode( 0, 0 );\n\t\t\t\t\t\t\tblock_len_trees[ x ] = new HuffmanCode( 0, 0 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twhile ( ! input_end ) {\n\t\t\t\t\t\t\tvar meta_block_remaining_len = 0;\n\t\t\t\t\t\t\tvar is_uncompressed;\n\t\t\t\t\t\t\tvar block_length = [ 1 << 28, 1 << 28, 1 << 28 ];\n\t\t\t\t\t\t\tvar block_type = [ 0 ];\n\t\t\t\t\t\t\tvar num_block_types = [ 1, 1, 1 ];\n\t\t\t\t\t\t\tvar block_type_rb = [ 0, 1, 0, 1, 0, 1 ];\n\t\t\t\t\t\t\tvar block_type_rb_index = [ 0 ];\n\t\t\t\t\t\t\tvar distance_postfix_bits;\n\t\t\t\t\t\t\tvar num_direct_distance_codes;\n\t\t\t\t\t\t\tvar distance_postfix_mask;\n\t\t\t\t\t\t\tvar num_distance_codes;\n\t\t\t\t\t\t\tvar context_map = null;\n\t\t\t\t\t\t\tvar context_modes = null;\n\t\t\t\t\t\t\tvar num_literal_htrees;\n\t\t\t\t\t\t\tvar dist_context_map = null;\n\t\t\t\t\t\t\tvar num_dist_htrees;\n\t\t\t\t\t\t\tvar context_offset = 0;\n\t\t\t\t\t\t\tvar context_map_slice = null;\n\t\t\t\t\t\t\tvar literal_htree_index = 0;\n\t\t\t\t\t\t\tvar dist_context_offset = 0;\n\t\t\t\t\t\t\tvar dist_context_map_slice = null;\n\t\t\t\t\t\t\tvar dist_htree_index = 0;\n\t\t\t\t\t\t\tvar context_lookup_offset1 = 0;\n\t\t\t\t\t\t\tvar context_lookup_offset2 = 0;\n\t\t\t\t\t\t\tvar context_mode;\n\t\t\t\t\t\t\tvar htree_command;\n\n\t\t\t\t\t\t\tfor ( i = 0; i < 3; ++i ) {\n\t\t\t\t\t\t\t\thgroup[ i ].codes = null;\n\t\t\t\t\t\t\t\thgroup[ i ].htrees = null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbr.readMoreInput();\n\n\t\t\t\t\t\t\tvar _out = DecodeMetaBlockLength( br );\n\t\t\t\t\t\t\tmeta_block_remaining_len = _out.meta_block_length;\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tpos + meta_block_remaining_len >\n\t\t\t\t\t\t\t\toutput.buffer.length\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t/* We need to grow the output buffer to fit the additional data. */\n\t\t\t\t\t\t\t\tvar tmp = new Uint8Array(\n\t\t\t\t\t\t\t\t\tpos + meta_block_remaining_len\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\ttmp.set( output.buffer );\n\t\t\t\t\t\t\t\toutput.buffer = tmp;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinput_end = _out.input_end;\n\t\t\t\t\t\t\tis_uncompressed = _out.is_uncompressed;\n\n\t\t\t\t\t\t\tif ( _out.is_metadata ) {\n\t\t\t\t\t\t\t\tJumpToByteBoundary( br );\n\n\t\t\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\t\t\t;\n\t\t\t\t\t\t\t\t\tmeta_block_remaining_len > 0;\n\t\t\t\t\t\t\t\t\t--meta_block_remaining_len\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tbr.readMoreInput();\n\t\t\t\t\t\t\t\t\t/* Read one byte and ignore it. */\n\t\t\t\t\t\t\t\t\tbr.readBits( 8 );\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( meta_block_remaining_len === 0 ) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( is_uncompressed ) {\n\t\t\t\t\t\t\t\tbr.bit_pos_ = ( br.bit_pos_ + 7 ) & ~7;\n\t\t\t\t\t\t\t\tCopyUncompressedBlockToOutput(\n\t\t\t\t\t\t\t\t\toutput,\n\t\t\t\t\t\t\t\t\tmeta_block_remaining_len,\n\t\t\t\t\t\t\t\t\tpos,\n\t\t\t\t\t\t\t\t\tringbuffer,\n\t\t\t\t\t\t\t\t\tringbuffer_mask,\n\t\t\t\t\t\t\t\t\tbr\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tpos += meta_block_remaining_len;\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor ( i = 0; i < 3; ++i ) {\n\t\t\t\t\t\t\t\tnum_block_types[ i ] =\n\t\t\t\t\t\t\t\t\tDecodeVarLenUint8( br ) + 1;\n\t\t\t\t\t\t\t\tif ( num_block_types[ i ] >= 2 ) {\n\t\t\t\t\t\t\t\t\tReadHuffmanCode(\n\t\t\t\t\t\t\t\t\t\tnum_block_types[ i ] + 2,\n\t\t\t\t\t\t\t\t\t\tblock_type_trees,\n\t\t\t\t\t\t\t\t\t\ti * HUFFMAN_MAX_TABLE_SIZE,\n\t\t\t\t\t\t\t\t\t\tbr\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tReadHuffmanCode(\n\t\t\t\t\t\t\t\t\t\tkNumBlockLengthCodes,\n\t\t\t\t\t\t\t\t\t\tblock_len_trees,\n\t\t\t\t\t\t\t\t\t\ti * HUFFMAN_MAX_TABLE_SIZE,\n\t\t\t\t\t\t\t\t\t\tbr\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tblock_length[ i ] = ReadBlockLength(\n\t\t\t\t\t\t\t\t\t\tblock_len_trees,\n\t\t\t\t\t\t\t\t\t\ti * HUFFMAN_MAX_TABLE_SIZE,\n\t\t\t\t\t\t\t\t\t\tbr\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tblock_type_rb_index[ i ] = 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbr.readMoreInput();\n\n\t\t\t\t\t\t\tdistance_postfix_bits = br.readBits( 2 );\n\t\t\t\t\t\t\tnum_direct_distance_codes =\n\t\t\t\t\t\t\t\tNUM_DISTANCE_SHORT_CODES +\n\t\t\t\t\t\t\t\t( br.readBits( 4 ) << distance_postfix_bits );\n\t\t\t\t\t\t\tdistance_postfix_mask =\n\t\t\t\t\t\t\t\t( 1 << distance_postfix_bits ) - 1;\n\t\t\t\t\t\t\tnum_distance_codes =\n\t\t\t\t\t\t\t\tnum_direct_distance_codes +\n\t\t\t\t\t\t\t\t( 48 << distance_postfix_bits );\n\t\t\t\t\t\t\tcontext_modes = new Uint8Array(\n\t\t\t\t\t\t\t\tnum_block_types[ 0 ]\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tfor ( i = 0; i < num_block_types[ 0 ]; ++i ) {\n\t\t\t\t\t\t\t\tbr.readMoreInput();\n\t\t\t\t\t\t\t\tcontext_modes[ i ] = br.readBits( 2 ) << 1;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar _o1 = DecodeContextMap(\n\t\t\t\t\t\t\t\tnum_block_types[ 0 ] << kLiteralContextBits,\n\t\t\t\t\t\t\t\tbr\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tnum_literal_htrees = _o1.num_htrees;\n\t\t\t\t\t\t\tcontext_map = _o1.context_map;\n\n\t\t\t\t\t\t\tvar _o2 = DecodeContextMap(\n\t\t\t\t\t\t\t\tnum_block_types[ 2 ] << kDistanceContextBits,\n\t\t\t\t\t\t\t\tbr\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tnum_dist_htrees = _o2.num_htrees;\n\t\t\t\t\t\t\tdist_context_map = _o2.context_map;\n\n\t\t\t\t\t\t\thgroup[ 0 ] = new HuffmanTreeGroup(\n\t\t\t\t\t\t\t\tkNumLiteralCodes,\n\t\t\t\t\t\t\t\tnum_literal_htrees\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\thgroup[ 1 ] = new HuffmanTreeGroup(\n\t\t\t\t\t\t\t\tkNumInsertAndCopyCodes,\n\t\t\t\t\t\t\t\tnum_block_types[ 1 ]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\thgroup[ 2 ] = new HuffmanTreeGroup(\n\t\t\t\t\t\t\t\tnum_distance_codes,\n\t\t\t\t\t\t\t\tnum_dist_htrees\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tfor ( i = 0; i < 3; ++i ) {\n\t\t\t\t\t\t\t\thgroup[ i ].decode( br );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcontext_map_slice = 0;\n\t\t\t\t\t\t\tdist_context_map_slice = 0;\n\t\t\t\t\t\t\tcontext_mode = context_modes[ block_type[ 0 ] ];\n\t\t\t\t\t\t\tcontext_lookup_offset1 =\n\t\t\t\t\t\t\t\tContext.lookupOffsets[ context_mode ];\n\t\t\t\t\t\t\tcontext_lookup_offset2 =\n\t\t\t\t\t\t\t\tContext.lookupOffsets[ context_mode + 1 ];\n\t\t\t\t\t\t\thtree_command = hgroup[ 1 ].htrees[ 0 ];\n\n\t\t\t\t\t\t\twhile ( meta_block_remaining_len > 0 ) {\n\t\t\t\t\t\t\t\tvar cmd_code;\n\t\t\t\t\t\t\t\tvar range_idx;\n\t\t\t\t\t\t\t\tvar insert_code;\n\t\t\t\t\t\t\t\tvar copy_code;\n\t\t\t\t\t\t\t\tvar insert_length;\n\t\t\t\t\t\t\t\tvar copy_length;\n\t\t\t\t\t\t\t\tvar distance_code;\n\t\t\t\t\t\t\t\tvar distance;\n\t\t\t\t\t\t\t\tvar context;\n\t\t\t\t\t\t\t\tvar j;\n\t\t\t\t\t\t\t\tvar copy_dst;\n\n\t\t\t\t\t\t\t\tbr.readMoreInput();\n\n\t\t\t\t\t\t\t\tif ( block_length[ 1 ] === 0 ) {\n\t\t\t\t\t\t\t\t\tDecodeBlockType(\n\t\t\t\t\t\t\t\t\t\tnum_block_types[ 1 ],\n\t\t\t\t\t\t\t\t\t\tblock_type_trees,\n\t\t\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t\t\tblock_type,\n\t\t\t\t\t\t\t\t\t\tblock_type_rb,\n\t\t\t\t\t\t\t\t\t\tblock_type_rb_index,\n\t\t\t\t\t\t\t\t\t\tbr\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tblock_length[ 1 ] = ReadBlockLength(\n\t\t\t\t\t\t\t\t\t\tblock_len_trees,\n\t\t\t\t\t\t\t\t\t\tHUFFMAN_MAX_TABLE_SIZE,\n\t\t\t\t\t\t\t\t\t\tbr\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\thtree_command =\n\t\t\t\t\t\t\t\t\t\thgroup[ 1 ].htrees[ block_type[ 1 ] ];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t--block_length[ 1 ];\n\t\t\t\t\t\t\t\tcmd_code = ReadSymbol(\n\t\t\t\t\t\t\t\t\thgroup[ 1 ].codes,\n\t\t\t\t\t\t\t\t\thtree_command,\n\t\t\t\t\t\t\t\t\tbr\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\trange_idx = cmd_code >> 6;\n\t\t\t\t\t\t\t\tif ( range_idx >= 2 ) {\n\t\t\t\t\t\t\t\t\trange_idx -= 2;\n\t\t\t\t\t\t\t\t\tdistance_code = -1;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tdistance_code = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tinsert_code =\n\t\t\t\t\t\t\t\t\tPrefix.kInsertRangeLut[ range_idx ] +\n\t\t\t\t\t\t\t\t\t( ( cmd_code >> 3 ) & 7 );\n\t\t\t\t\t\t\t\tcopy_code =\n\t\t\t\t\t\t\t\t\tPrefix.kCopyRangeLut[ range_idx ] +\n\t\t\t\t\t\t\t\t\t( cmd_code & 7 );\n\t\t\t\t\t\t\t\tinsert_length =\n\t\t\t\t\t\t\t\t\tPrefix.kInsertLengthPrefixCode[\n\t\t\t\t\t\t\t\t\t\tinsert_code\n\t\t\t\t\t\t\t\t\t].offset +\n\t\t\t\t\t\t\t\t\tbr.readBits(\n\t\t\t\t\t\t\t\t\t\tPrefix.kInsertLengthPrefixCode[\n\t\t\t\t\t\t\t\t\t\t\tinsert_code\n\t\t\t\t\t\t\t\t\t\t].nbits\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcopy_length =\n\t\t\t\t\t\t\t\t\tPrefix.kCopyLengthPrefixCode[ copy_code ]\n\t\t\t\t\t\t\t\t\t\t.offset +\n\t\t\t\t\t\t\t\t\tbr.readBits(\n\t\t\t\t\t\t\t\t\t\tPrefix.kCopyLengthPrefixCode[\n\t\t\t\t\t\t\t\t\t\t\tcopy_code\n\t\t\t\t\t\t\t\t\t\t].nbits\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tprev_byte1 =\n\t\t\t\t\t\t\t\t\tringbuffer[ ( pos - 1 ) & ringbuffer_mask ];\n\t\t\t\t\t\t\t\tprev_byte2 =\n\t\t\t\t\t\t\t\t\tringbuffer[ ( pos - 2 ) & ringbuffer_mask ];\n\t\t\t\t\t\t\t\tfor ( j = 0; j < insert_length; ++j ) {\n\t\t\t\t\t\t\t\t\tbr.readMoreInput();\n\n\t\t\t\t\t\t\t\t\tif ( block_length[ 0 ] === 0 ) {\n\t\t\t\t\t\t\t\t\t\tDecodeBlockType(\n\t\t\t\t\t\t\t\t\t\t\tnum_block_types[ 0 ],\n\t\t\t\t\t\t\t\t\t\t\tblock_type_trees,\n\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\tblock_type,\n\t\t\t\t\t\t\t\t\t\t\tblock_type_rb,\n\t\t\t\t\t\t\t\t\t\t\tblock_type_rb_index,\n\t\t\t\t\t\t\t\t\t\t\tbr\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\tblock_length[ 0 ] = ReadBlockLength(\n\t\t\t\t\t\t\t\t\t\t\tblock_len_trees,\n\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\tbr\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\tcontext_offset =\n\t\t\t\t\t\t\t\t\t\t\tblock_type[ 0 ] <<\n\t\t\t\t\t\t\t\t\t\t\tkLiteralContextBits;\n\t\t\t\t\t\t\t\t\t\tcontext_map_slice = context_offset;\n\t\t\t\t\t\t\t\t\t\tcontext_mode =\n\t\t\t\t\t\t\t\t\t\t\tcontext_modes[ block_type[ 0 ] ];\n\t\t\t\t\t\t\t\t\t\tcontext_lookup_offset1 =\n\t\t\t\t\t\t\t\t\t\t\tContext.lookupOffsets[\n\t\t\t\t\t\t\t\t\t\t\t\tcontext_mode\n\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\tcontext_lookup_offset2 =\n\t\t\t\t\t\t\t\t\t\t\tContext.lookupOffsets[\n\t\t\t\t\t\t\t\t\t\t\t\tcontext_mode + 1\n\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcontext =\n\t\t\t\t\t\t\t\t\t\tContext.lookup[\n\t\t\t\t\t\t\t\t\t\t\tcontext_lookup_offset1 + prev_byte1\n\t\t\t\t\t\t\t\t\t\t] |\n\t\t\t\t\t\t\t\t\t\tContext.lookup[\n\t\t\t\t\t\t\t\t\t\t\tcontext_lookup_offset2 + prev_byte2\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\tliteral_htree_index =\n\t\t\t\t\t\t\t\t\t\tcontext_map[\n\t\t\t\t\t\t\t\t\t\t\tcontext_map_slice + context\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t--block_length[ 0 ];\n\t\t\t\t\t\t\t\t\tprev_byte2 = prev_byte1;\n\t\t\t\t\t\t\t\t\tprev_byte1 = ReadSymbol(\n\t\t\t\t\t\t\t\t\t\thgroup[ 0 ].codes,\n\t\t\t\t\t\t\t\t\t\thgroup[ 0 ].htrees[\n\t\t\t\t\t\t\t\t\t\t\tliteral_htree_index\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\tbr\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tringbuffer[ pos & ringbuffer_mask ] =\n\t\t\t\t\t\t\t\t\t\tprev_byte1;\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t( pos & ringbuffer_mask ) ===\n\t\t\t\t\t\t\t\t\t\tringbuffer_mask\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\toutput.write(\n\t\t\t\t\t\t\t\t\t\t\tringbuffer,\n\t\t\t\t\t\t\t\t\t\t\tringbuffer_size\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t++pos;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmeta_block_remaining_len -= insert_length;\n\t\t\t\t\t\t\t\tif ( meta_block_remaining_len <= 0 ) break;\n\n\t\t\t\t\t\t\t\tif ( distance_code < 0 ) {\n\t\t\t\t\t\t\t\t\tvar context;\n\n\t\t\t\t\t\t\t\t\tbr.readMoreInput();\n\t\t\t\t\t\t\t\t\tif ( block_length[ 2 ] === 0 ) {\n\t\t\t\t\t\t\t\t\t\tDecodeBlockType(\n\t\t\t\t\t\t\t\t\t\t\tnum_block_types[ 2 ],\n\t\t\t\t\t\t\t\t\t\t\tblock_type_trees,\n\t\t\t\t\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t\t\t\t\tblock_type,\n\t\t\t\t\t\t\t\t\t\t\tblock_type_rb,\n\t\t\t\t\t\t\t\t\t\t\tblock_type_rb_index,\n\t\t\t\t\t\t\t\t\t\t\tbr\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\tblock_length[ 2 ] = ReadBlockLength(\n\t\t\t\t\t\t\t\t\t\t\tblock_len_trees,\n\t\t\t\t\t\t\t\t\t\t\t2 * HUFFMAN_MAX_TABLE_SIZE,\n\t\t\t\t\t\t\t\t\t\t\tbr\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\tdist_context_offset =\n\t\t\t\t\t\t\t\t\t\t\tblock_type[ 2 ] <<\n\t\t\t\t\t\t\t\t\t\t\tkDistanceContextBits;\n\t\t\t\t\t\t\t\t\t\tdist_context_map_slice =\n\t\t\t\t\t\t\t\t\t\t\tdist_context_offset;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t--block_length[ 2 ];\n\t\t\t\t\t\t\t\t\tcontext =\n\t\t\t\t\t\t\t\t\t\t( copy_length > 4\n\t\t\t\t\t\t\t\t\t\t\t? 3\n\t\t\t\t\t\t\t\t\t\t\t: copy_length - 2 ) & 0xff;\n\t\t\t\t\t\t\t\t\tdist_htree_index =\n\t\t\t\t\t\t\t\t\t\tdist_context_map[\n\t\t\t\t\t\t\t\t\t\t\tdist_context_map_slice + context\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\tdistance_code = ReadSymbol(\n\t\t\t\t\t\t\t\t\t\thgroup[ 2 ].codes,\n\t\t\t\t\t\t\t\t\t\thgroup[ 2 ].htrees[ dist_htree_index ],\n\t\t\t\t\t\t\t\t\t\tbr\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tdistance_code >=\n\t\t\t\t\t\t\t\t\t\tnum_direct_distance_codes\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tvar nbits;\n\t\t\t\t\t\t\t\t\t\tvar postfix;\n\t\t\t\t\t\t\t\t\t\tvar offset;\n\t\t\t\t\t\t\t\t\t\tdistance_code -=\n\t\t\t\t\t\t\t\t\t\t\tnum_direct_distance_codes;\n\t\t\t\t\t\t\t\t\t\tpostfix =\n\t\t\t\t\t\t\t\t\t\t\tdistance_code &\n\t\t\t\t\t\t\t\t\t\t\tdistance_postfix_mask;\n\t\t\t\t\t\t\t\t\t\tdistance_code >>= distance_postfix_bits;\n\t\t\t\t\t\t\t\t\t\tnbits = ( distance_code >> 1 ) + 1;\n\t\t\t\t\t\t\t\t\t\toffset =\n\t\t\t\t\t\t\t\t\t\t\t( ( 2 + ( distance_code & 1 ) ) <<\n\t\t\t\t\t\t\t\t\t\t\t\tnbits ) -\n\t\t\t\t\t\t\t\t\t\t\t4;\n\t\t\t\t\t\t\t\t\t\tdistance_code =\n\t\t\t\t\t\t\t\t\t\t\tnum_direct_distance_codes +\n\t\t\t\t\t\t\t\t\t\t\t( ( offset +\n\t\t\t\t\t\t\t\t\t\t\t\tbr.readBits( nbits ) ) <<\n\t\t\t\t\t\t\t\t\t\t\t\tdistance_postfix_bits ) +\n\t\t\t\t\t\t\t\t\t\t\tpostfix;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t/* Convert the distance code to the actual distance by possibly looking */\n\t\t\t\t\t\t\t\t/* up past distnaces from the ringbuffer. */\n\t\t\t\t\t\t\t\tdistance = TranslateShortCodes(\n\t\t\t\t\t\t\t\t\tdistance_code,\n\t\t\t\t\t\t\t\t\tdist_rb,\n\t\t\t\t\t\t\t\t\tdist_rb_idx\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tif ( distance < 0 ) {\n\t\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t\t'[BrotliDecompress] invalid distance'\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tpos < max_backward_distance &&\n\t\t\t\t\t\t\t\t\tmax_distance !== max_backward_distance\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tmax_distance = pos;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tmax_distance = max_backward_distance;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tcopy_dst = pos & ringbuffer_mask;\n\n\t\t\t\t\t\t\t\tif ( distance > max_distance ) {\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tcopy_length >=\n\t\t\t\t\t\t\t\t\t\t\tBrotliDictionary.minDictionaryWordLength &&\n\t\t\t\t\t\t\t\t\t\tcopy_length <=\n\t\t\t\t\t\t\t\t\t\t\tBrotliDictionary.maxDictionaryWordLength\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tvar offset =\n\t\t\t\t\t\t\t\t\t\t\tBrotliDictionary.offsetsByLength[\n\t\t\t\t\t\t\t\t\t\t\t\tcopy_length\n\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\tvar word_id =\n\t\t\t\t\t\t\t\t\t\t\tdistance - max_distance - 1;\n\t\t\t\t\t\t\t\t\t\tvar shift =\n\t\t\t\t\t\t\t\t\t\t\tBrotliDictionary.sizeBitsByLength[\n\t\t\t\t\t\t\t\t\t\t\t\tcopy_length\n\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\tvar mask = ( 1 << shift ) - 1;\n\t\t\t\t\t\t\t\t\t\tvar word_idx = word_id & mask;\n\t\t\t\t\t\t\t\t\t\tvar transform_idx = word_id >> shift;\n\t\t\t\t\t\t\t\t\t\toffset += word_idx * copy_length;\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\ttransform_idx <\n\t\t\t\t\t\t\t\t\t\t\tTransform.kNumTransforms\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tvar len =\n\t\t\t\t\t\t\t\t\t\t\t\tTransform.transformDictionaryWord(\n\t\t\t\t\t\t\t\t\t\t\t\t\tringbuffer,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcopy_dst,\n\t\t\t\t\t\t\t\t\t\t\t\t\toffset,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcopy_length,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransform_idx\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tcopy_dst += len;\n\t\t\t\t\t\t\t\t\t\t\tpos += len;\n\t\t\t\t\t\t\t\t\t\t\tmeta_block_remaining_len -= len;\n\t\t\t\t\t\t\t\t\t\t\tif ( copy_dst >= ringbuffer_end ) {\n\t\t\t\t\t\t\t\t\t\t\t\toutput.write(\n\t\t\t\t\t\t\t\t\t\t\t\t\tringbuffer,\n\t\t\t\t\t\t\t\t\t\t\t\t\tringbuffer_size\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\t\t\t\t\t\t\tvar _x = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t_x <\n\t\t\t\t\t\t\t\t\t\t\t\t\tcopy_dst - ringbuffer_end;\n\t\t\t\t\t\t\t\t\t\t\t\t\t_x++\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\tringbuffer[ _x ] =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tringbuffer[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tringbuffer_end + _x\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t\t\t\t'Invalid backward reference. pos: ' +\n\t\t\t\t\t\t\t\t\t\t\t\t\tpos +\n\t\t\t\t\t\t\t\t\t\t\t\t\t' distance: ' +\n\t\t\t\t\t\t\t\t\t\t\t\t\tdistance +\n\t\t\t\t\t\t\t\t\t\t\t\t\t' len: ' +\n\t\t\t\t\t\t\t\t\t\t\t\t\tcopy_length +\n\t\t\t\t\t\t\t\t\t\t\t\t\t' bytes left: ' +\n\t\t\t\t\t\t\t\t\t\t\t\t\tmeta_block_remaining_len\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t\t\t'Invalid backward reference. pos: ' +\n\t\t\t\t\t\t\t\t\t\t\t\tpos +\n\t\t\t\t\t\t\t\t\t\t\t\t' distance: ' +\n\t\t\t\t\t\t\t\t\t\t\t\tdistance +\n\t\t\t\t\t\t\t\t\t\t\t\t' len: ' +\n\t\t\t\t\t\t\t\t\t\t\t\tcopy_length +\n\t\t\t\t\t\t\t\t\t\t\t\t' bytes left: ' +\n\t\t\t\t\t\t\t\t\t\t\t\tmeta_block_remaining_len\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif ( distance_code > 0 ) {\n\t\t\t\t\t\t\t\t\t\tdist_rb[ dist_rb_idx & 3 ] = distance;\n\t\t\t\t\t\t\t\t\t\t++dist_rb_idx;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tcopy_length > meta_block_remaining_len\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t\t\t'Invalid backward reference. pos: ' +\n\t\t\t\t\t\t\t\t\t\t\t\tpos +\n\t\t\t\t\t\t\t\t\t\t\t\t' distance: ' +\n\t\t\t\t\t\t\t\t\t\t\t\tdistance +\n\t\t\t\t\t\t\t\t\t\t\t\t' len: ' +\n\t\t\t\t\t\t\t\t\t\t\t\tcopy_length +\n\t\t\t\t\t\t\t\t\t\t\t\t' bytes left: ' +\n\t\t\t\t\t\t\t\t\t\t\t\tmeta_block_remaining_len\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tfor ( j = 0; j < copy_length; ++j ) {\n\t\t\t\t\t\t\t\t\t\tringbuffer[ pos & ringbuffer_mask ] =\n\t\t\t\t\t\t\t\t\t\t\tringbuffer[\n\t\t\t\t\t\t\t\t\t\t\t\t( pos - distance ) &\n\t\t\t\t\t\t\t\t\t\t\t\t\tringbuffer_mask\n\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t( pos & ringbuffer_mask ) ===\n\t\t\t\t\t\t\t\t\t\t\tringbuffer_mask\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\toutput.write(\n\t\t\t\t\t\t\t\t\t\t\t\tringbuffer,\n\t\t\t\t\t\t\t\t\t\t\t\tringbuffer_size\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t++pos;\n\t\t\t\t\t\t\t\t\t\t--meta_block_remaining_len;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t/* When we get here, we must have inserted at least one literal and */\n\t\t\t\t\t\t\t\t/* made a copy of at least length two, therefore accessing the last 2 */\n\t\t\t\t\t\t\t\t/* bytes is valid. */\n\t\t\t\t\t\t\t\tprev_byte1 =\n\t\t\t\t\t\t\t\t\tringbuffer[ ( pos - 1 ) & ringbuffer_mask ];\n\t\t\t\t\t\t\t\tprev_byte2 =\n\t\t\t\t\t\t\t\t\tringbuffer[ ( pos - 2 ) & ringbuffer_mask ];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t/* Protect pos from overflow, wrap it around at every GB of input data */\n\t\t\t\t\t\t\tpos &= 0x3fffffff;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\toutput.write( ringbuffer, pos & ringbuffer_mask );\n\t\t\t\t\t}\n\n\t\t\t\t\texports.BrotliDecompress = BrotliDecompress;\n\n\t\t\t\t\tBrotliDictionary.init();\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t'./bit_reader': 1,\n\t\t\t\t\t'./context': 2,\n\t\t\t\t\t'./dictionary': 6,\n\t\t\t\t\t'./huffman': 7,\n\t\t\t\t\t'./prefix': 9,\n\t\t\t\t\t'./streams': 10,\n\t\t\t\t\t'./transform': 11,\n\t\t\t\t},\n\t\t\t],\n\t\t\t4: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\tvar base64 = require( 'base64-js' );\n\t\t\t\t\t//var fs = require('fs');\n\n\t\t\t\t\t/**\n\t\t\t\t\t * The normal dictionary-data.js is quite large, which makes it\n\t\t\t\t\t * unsuitable for browser usage. In order to make it smaller,\n\t\t\t\t\t * we read dictionary.bin, which is a compressed version of\n\t\t\t\t\t * the dictionary, and on initial load, Brotli decompresses\n\t\t\t\t\t * it's own dictionary. \uD83D\uDE1C\n\t\t\t\t\t */\n\t\t\t\t\texports.init = function () {\n\t\t\t\t\t\tvar BrotliDecompressBuffer =\n\t\t\t\t\t\t\trequire( './decode' ).BrotliDecompressBuffer;\n\t\t\t\t\t\tvar compressed = base64.toByteArray(\n\t\t\t\t\t\t\trequire( './dictionary.bin.js' )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn BrotliDecompressBuffer( compressed );\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t{ './decode': 3, './dictionary.bin.js': 5, 'base64-js': 8 },\n\t\t\t],\n\t\t\t5: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\tmodule.exports =\n\t\t\t\t\t\t'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';\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t],\n\t\t\t6: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\t/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n   Collection of static dictionary words.\n*/\n\n\t\t\t\t\tvar data = require( './dictionary-browser' );\n\t\t\t\t\texports.init = function () {\n\t\t\t\t\t\texports.dictionary = data.init();\n\t\t\t\t\t};\n\n\t\t\t\t\texports.offsetsByLength = new Uint32Array( [\n\t\t\t\t\t\t0, 0, 0, 0, 0, 4096, 9216, 21504, 35840, 44032, 53248,\n\t\t\t\t\t\t63488, 74752, 87040, 93696, 100864, 104704, 106752,\n\t\t\t\t\t\t108928, 113536, 115968, 118528, 119872, 121280, 122016,\n\t\t\t\t\t] );\n\n\t\t\t\t\texports.sizeBitsByLength = new Uint8Array( [\n\t\t\t\t\t\t0, 0, 0, 0, 10, 10, 11, 11, 10, 10, 10, 10, 10, 9, 9, 8,\n\t\t\t\t\t\t7, 7, 8, 7, 7, 6, 6, 5, 5,\n\t\t\t\t\t] );\n\n\t\t\t\t\texports.minDictionaryWordLength = 4;\n\t\t\t\t\texports.maxDictionaryWordLength = 24;\n\t\t\t\t},\n\t\t\t\t{ './dictionary-browser': 4 },\n\t\t\t],\n\t\t\t7: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\tfunction HuffmanCode( bits, value ) {\n\t\t\t\t\t\tthis.bits =\n\t\t\t\t\t\t\tbits; /* number of bits used for this symbol */\n\t\t\t\t\t\tthis.value = value; /* symbol value or table offset */\n\t\t\t\t\t}\n\n\t\t\t\t\texports.HuffmanCode = HuffmanCode;\n\n\t\t\t\t\tvar MAX_LENGTH = 15;\n\n\t\t\t\t\t/* Returns reverse(reverse(key, len) + 1, len), where reverse(key, len) is the\n   bit-wise reversal of the len least significant bits of key. */\n\t\t\t\t\tfunction GetNextKey( key, len ) {\n\t\t\t\t\t\tvar step = 1 << ( len - 1 );\n\t\t\t\t\t\twhile ( key & step ) {\n\t\t\t\t\t\t\tstep >>= 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn ( key & ( step - 1 ) ) + step;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* Stores code in table[0], table[step], table[2*step], ..., table[end] */\n\t\t\t\t\t/* Assumes that end is an integer multiple of step */\n\t\t\t\t\tfunction ReplicateValue( table, i, step, end, code ) {\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\tend -= step;\n\t\t\t\t\t\t\ttable[ i + end ] = new HuffmanCode(\n\t\t\t\t\t\t\t\tcode.bits,\n\t\t\t\t\t\t\t\tcode.value\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} while ( end > 0 );\n\t\t\t\t\t}\n\n\t\t\t\t\t/* Returns the table width of the next 2nd level table. count is the histogram\n   of bit lengths for the remaining symbols, len is the code length of the next\n   processed symbol */\n\t\t\t\t\tfunction NextTableBitSize( count, len, root_bits ) {\n\t\t\t\t\t\tvar left = 1 << ( len - root_bits );\n\t\t\t\t\t\twhile ( len < MAX_LENGTH ) {\n\t\t\t\t\t\t\tleft -= count[ len ];\n\t\t\t\t\t\t\tif ( left <= 0 ) break;\n\t\t\t\t\t\t\t++len;\n\t\t\t\t\t\t\tleft <<= 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn len - root_bits;\n\t\t\t\t\t}\n\n\t\t\t\t\texports.BrotliBuildHuffmanTable = function (\n\t\t\t\t\t\troot_table,\n\t\t\t\t\t\ttable,\n\t\t\t\t\t\troot_bits,\n\t\t\t\t\t\tcode_lengths,\n\t\t\t\t\t\tcode_lengths_size\n\t\t\t\t\t) {\n\t\t\t\t\t\tvar start_table = table;\n\t\t\t\t\t\tvar code; /* current table entry */\n\t\t\t\t\t\tvar len; /* current code length */\n\t\t\t\t\t\tvar symbol; /* symbol index in original or sorted table */\n\t\t\t\t\t\tvar key; /* reversed prefix code */\n\t\t\t\t\t\tvar step; /* step size to replicate values in current table */\n\t\t\t\t\t\tvar low; /* low bits for current root entry */\n\t\t\t\t\t\tvar mask; /* mask for low bits */\n\t\t\t\t\t\tvar table_bits; /* key length of current table */\n\t\t\t\t\t\tvar table_size; /* size of current table */\n\t\t\t\t\t\tvar total_size; /* sum of root table size and 2nd level table sizes */\n\t\t\t\t\t\tvar sorted; /* symbols sorted by code length */\n\t\t\t\t\t\tvar count = new Int32Array(\n\t\t\t\t\t\t\tMAX_LENGTH + 1\n\t\t\t\t\t\t); /* number of codes of each length */\n\t\t\t\t\t\tvar offset = new Int32Array(\n\t\t\t\t\t\t\tMAX_LENGTH + 1\n\t\t\t\t\t\t); /* offsets in sorted table for each length */\n\n\t\t\t\t\t\tsorted = new Int32Array( code_lengths_size );\n\n\t\t\t\t\t\t/* build histogram of code lengths */\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tsymbol = 0;\n\t\t\t\t\t\t\tsymbol < code_lengths_size;\n\t\t\t\t\t\t\tsymbol++\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tcount[ code_lengths[ symbol ] ]++;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* generate offsets into sorted symbol table by code length */\n\t\t\t\t\t\toffset[ 1 ] = 0;\n\t\t\t\t\t\tfor ( len = 1; len < MAX_LENGTH; len++ ) {\n\t\t\t\t\t\t\toffset[ len + 1 ] = offset[ len ] + count[ len ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* sort symbols by length, by symbol order within each length */\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tsymbol = 0;\n\t\t\t\t\t\t\tsymbol < code_lengths_size;\n\t\t\t\t\t\t\tsymbol++\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif ( code_lengths[ symbol ] !== 0 ) {\n\t\t\t\t\t\t\t\tsorted[ offset[ code_lengths[ symbol ] ]++ ] =\n\t\t\t\t\t\t\t\t\tsymbol;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttable_bits = root_bits;\n\t\t\t\t\t\ttable_size = 1 << table_bits;\n\t\t\t\t\t\ttotal_size = table_size;\n\n\t\t\t\t\t\t/* special case code with only one value */\n\t\t\t\t\t\tif ( offset[ MAX_LENGTH ] === 1 ) {\n\t\t\t\t\t\t\tfor ( key = 0; key < total_size; ++key ) {\n\t\t\t\t\t\t\t\troot_table[ table + key ] = new HuffmanCode(\n\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\tsorted[ 0 ] & 0xffff\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn total_size;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* fill in root table */\n\t\t\t\t\t\tkey = 0;\n\t\t\t\t\t\tsymbol = 0;\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tlen = 1, step = 2;\n\t\t\t\t\t\t\tlen <= root_bits;\n\t\t\t\t\t\t\t++len, step <<= 1\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tfor ( ; count[ len ] > 0; --count[ len ] ) {\n\t\t\t\t\t\t\t\tcode = new HuffmanCode(\n\t\t\t\t\t\t\t\t\tlen & 0xff,\n\t\t\t\t\t\t\t\t\tsorted[ symbol++ ] & 0xffff\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tReplicateValue(\n\t\t\t\t\t\t\t\t\troot_table,\n\t\t\t\t\t\t\t\t\ttable + key,\n\t\t\t\t\t\t\t\t\tstep,\n\t\t\t\t\t\t\t\t\ttable_size,\n\t\t\t\t\t\t\t\t\tcode\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tkey = GetNextKey( key, len );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* fill in 2nd level tables and add pointers to root table */\n\t\t\t\t\t\tmask = total_size - 1;\n\t\t\t\t\t\tlow = -1;\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tlen = root_bits + 1, step = 2;\n\t\t\t\t\t\t\tlen <= MAX_LENGTH;\n\t\t\t\t\t\t\t++len, step <<= 1\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tfor ( ; count[ len ] > 0; --count[ len ] ) {\n\t\t\t\t\t\t\t\tif ( ( key & mask ) !== low ) {\n\t\t\t\t\t\t\t\t\ttable += table_size;\n\t\t\t\t\t\t\t\t\ttable_bits = NextTableBitSize(\n\t\t\t\t\t\t\t\t\t\tcount,\n\t\t\t\t\t\t\t\t\t\tlen,\n\t\t\t\t\t\t\t\t\t\troot_bits\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\ttable_size = 1 << table_bits;\n\t\t\t\t\t\t\t\t\ttotal_size += table_size;\n\t\t\t\t\t\t\t\t\tlow = key & mask;\n\t\t\t\t\t\t\t\t\troot_table[ start_table + low ] =\n\t\t\t\t\t\t\t\t\t\tnew HuffmanCode(\n\t\t\t\t\t\t\t\t\t\t\t( table_bits + root_bits ) & 0xff,\n\t\t\t\t\t\t\t\t\t\t\t( table - start_table - low ) &\n\t\t\t\t\t\t\t\t\t\t\t\t0xffff\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcode = new HuffmanCode(\n\t\t\t\t\t\t\t\t\t( len - root_bits ) & 0xff,\n\t\t\t\t\t\t\t\t\tsorted[ symbol++ ] & 0xffff\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tReplicateValue(\n\t\t\t\t\t\t\t\t\troot_table,\n\t\t\t\t\t\t\t\t\ttable + ( key >> root_bits ),\n\t\t\t\t\t\t\t\t\tstep,\n\t\t\t\t\t\t\t\t\ttable_size,\n\t\t\t\t\t\t\t\t\tcode\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tkey = GetNextKey( key, len );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn total_size;\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t],\n\t\t\t8: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\t'use strict';\n\n\t\t\t\t\texports.byteLength = byteLength;\n\t\t\t\t\texports.toByteArray = toByteArray;\n\t\t\t\t\texports.fromByteArray = fromByteArray;\n\n\t\t\t\t\tvar lookup = [];\n\t\t\t\t\tvar revLookup = [];\n\t\t\t\t\tvar Arr =\n\t\t\t\t\t\ttypeof Uint8Array !== 'undefined' ? Uint8Array : Array;\n\n\t\t\t\t\tvar code =\n\t\t\t\t\t\t'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t\t\t\t\tfor ( var i = 0, len = code.length; i < len; ++i ) {\n\t\t\t\t\t\tlookup[ i ] = code[ i ];\n\t\t\t\t\t\trevLookup[ code.charCodeAt( i ) ] = i;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support decoding URL-safe base64 strings, as Node.js does.\n\t\t\t\t\t// See: https://en.wikipedia.org/wiki/Base64#URL_applications\n\t\t\t\t\trevLookup[ '-'.charCodeAt( 0 ) ] = 62;\n\t\t\t\t\trevLookup[ '_'.charCodeAt( 0 ) ] = 63;\n\n\t\t\t\t\tfunction getLens( b64 ) {\n\t\t\t\t\t\tvar len = b64.length;\n\n\t\t\t\t\t\tif ( len % 4 > 0 ) {\n\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t'Invalid string. Length must be a multiple of 4'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Trim off extra bytes after placeholder bytes are found\n\t\t\t\t\t\t// See: https://github.com/beatgammit/base64-js/issues/42\n\t\t\t\t\t\tvar validLen = b64.indexOf( '=' );\n\t\t\t\t\t\tif ( validLen === -1 ) validLen = len;\n\n\t\t\t\t\t\tvar placeHoldersLen =\n\t\t\t\t\t\t\tvalidLen === len ? 0 : 4 - ( validLen % 4 );\n\n\t\t\t\t\t\treturn [ validLen, placeHoldersLen ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// base64 is 4/3 + up to two characters of the original data\n\t\t\t\t\tfunction byteLength( b64 ) {\n\t\t\t\t\t\tvar lens = getLens( b64 );\n\t\t\t\t\t\tvar validLen = lens[ 0 ];\n\t\t\t\t\t\tvar placeHoldersLen = lens[ 1 ];\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t( ( validLen + placeHoldersLen ) * 3 ) / 4 -\n\t\t\t\t\t\t\tplaceHoldersLen\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction _byteLength( b64, validLen, placeHoldersLen ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t( ( validLen + placeHoldersLen ) * 3 ) / 4 -\n\t\t\t\t\t\t\tplaceHoldersLen\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction toByteArray( b64 ) {\n\t\t\t\t\t\tvar tmp;\n\t\t\t\t\t\tvar lens = getLens( b64 );\n\t\t\t\t\t\tvar validLen = lens[ 0 ];\n\t\t\t\t\t\tvar placeHoldersLen = lens[ 1 ];\n\n\t\t\t\t\t\tvar arr = new Arr(\n\t\t\t\t\t\t\t_byteLength( b64, validLen, placeHoldersLen )\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tvar curByte = 0;\n\n\t\t\t\t\t\t// if there are placeholders, only get up to the last complete 4 chars\n\t\t\t\t\t\tvar len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n\n\t\t\t\t\t\tfor ( var i = 0; i < len; i += 4 ) {\n\t\t\t\t\t\t\ttmp =\n\t\t\t\t\t\t\t\t( revLookup[ b64.charCodeAt( i ) ] << 18 ) |\n\t\t\t\t\t\t\t\t( revLookup[ b64.charCodeAt( i + 1 ) ] << 12 ) |\n\t\t\t\t\t\t\t\t( revLookup[ b64.charCodeAt( i + 2 ) ] << 6 ) |\n\t\t\t\t\t\t\t\trevLookup[ b64.charCodeAt( i + 3 ) ];\n\t\t\t\t\t\t\tarr[ curByte++ ] = ( tmp >> 16 ) & 0xff;\n\t\t\t\t\t\t\tarr[ curByte++ ] = ( tmp >> 8 ) & 0xff;\n\t\t\t\t\t\t\tarr[ curByte++ ] = tmp & 0xff;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( placeHoldersLen === 2 ) {\n\t\t\t\t\t\t\ttmp =\n\t\t\t\t\t\t\t\t( revLookup[ b64.charCodeAt( i ) ] << 2 ) |\n\t\t\t\t\t\t\t\t( revLookup[ b64.charCodeAt( i + 1 ) ] >> 4 );\n\t\t\t\t\t\t\tarr[ curByte++ ] = tmp & 0xff;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( placeHoldersLen === 1 ) {\n\t\t\t\t\t\t\ttmp =\n\t\t\t\t\t\t\t\t( revLookup[ b64.charCodeAt( i ) ] << 10 ) |\n\t\t\t\t\t\t\t\t( revLookup[ b64.charCodeAt( i + 1 ) ] << 4 ) |\n\t\t\t\t\t\t\t\t( revLookup[ b64.charCodeAt( i + 2 ) ] >> 2 );\n\t\t\t\t\t\t\tarr[ curByte++ ] = ( tmp >> 8 ) & 0xff;\n\t\t\t\t\t\t\tarr[ curByte++ ] = tmp & 0xff;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn arr;\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction tripletToBase64( num ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tlookup[ ( num >> 18 ) & 0x3f ] +\n\t\t\t\t\t\t\tlookup[ ( num >> 12 ) & 0x3f ] +\n\t\t\t\t\t\t\tlookup[ ( num >> 6 ) & 0x3f ] +\n\t\t\t\t\t\t\tlookup[ num & 0x3f ]\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction encodeChunk( uint8, start, end ) {\n\t\t\t\t\t\tvar tmp;\n\t\t\t\t\t\tvar output = [];\n\t\t\t\t\t\tfor ( var i = start; i < end; i += 3 ) {\n\t\t\t\t\t\t\ttmp =\n\t\t\t\t\t\t\t\t( ( uint8[ i ] << 16 ) & 0xff0000 ) +\n\t\t\t\t\t\t\t\t( ( uint8[ i + 1 ] << 8 ) & 0xff00 ) +\n\t\t\t\t\t\t\t\t( uint8[ i + 2 ] & 0xff );\n\t\t\t\t\t\t\toutput.push( tripletToBase64( tmp ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn output.join( '' );\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction fromByteArray( uint8 ) {\n\t\t\t\t\t\tvar tmp;\n\t\t\t\t\t\tvar len = uint8.length;\n\t\t\t\t\t\tvar extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n\t\t\t\t\t\tvar parts = [];\n\t\t\t\t\t\tvar maxChunkLength = 16383; // must be multiple of 3\n\n\t\t\t\t\t\t// go through the array every three bytes, we'll deal with trailing stuff later\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tvar i = 0, len2 = len - extraBytes;\n\t\t\t\t\t\t\ti < len2;\n\t\t\t\t\t\t\ti += maxChunkLength\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tparts.push(\n\t\t\t\t\t\t\t\tencodeChunk(\n\t\t\t\t\t\t\t\t\tuint8,\n\t\t\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\t\t\ti + maxChunkLength > len2\n\t\t\t\t\t\t\t\t\t\t? len2\n\t\t\t\t\t\t\t\t\t\t: i + maxChunkLength\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// pad the end with zeros, but make sure to not forget the extra bytes\n\t\t\t\t\t\tif ( extraBytes === 1 ) {\n\t\t\t\t\t\t\ttmp = uint8[ len - 1 ];\n\t\t\t\t\t\t\tparts.push(\n\t\t\t\t\t\t\t\tlookup[ tmp >> 2 ] +\n\t\t\t\t\t\t\t\t\tlookup[ ( tmp << 4 ) & 0x3f ] +\n\t\t\t\t\t\t\t\t\t'=='\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if ( extraBytes === 2 ) {\n\t\t\t\t\t\t\ttmp = ( uint8[ len - 2 ] << 8 ) + uint8[ len - 1 ];\n\t\t\t\t\t\t\tparts.push(\n\t\t\t\t\t\t\t\tlookup[ tmp >> 10 ] +\n\t\t\t\t\t\t\t\t\tlookup[ ( tmp >> 4 ) & 0x3f ] +\n\t\t\t\t\t\t\t\t\tlookup[ ( tmp << 2 ) & 0x3f ] +\n\t\t\t\t\t\t\t\t\t'='\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn parts.join( '' );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t],\n\t\t\t9: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\t/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n   Lookup tables to map prefix codes to value ranges. This is used during\n   decoding of the block lengths, literal insertion lengths and copy lengths.\n*/\n\n\t\t\t\t\t/* Represents the range of values belonging to a prefix code: */\n\t\t\t\t\t/* [offset, offset + 2^nbits) */\n\t\t\t\t\tfunction PrefixCodeRange( offset, nbits ) {\n\t\t\t\t\t\tthis.offset = offset;\n\t\t\t\t\t\tthis.nbits = nbits;\n\t\t\t\t\t}\n\n\t\t\t\t\texports.kBlockLengthPrefixCode = [\n\t\t\t\t\t\tnew PrefixCodeRange( 1, 2 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 5, 2 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 9, 2 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 13, 2 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 17, 3 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 25, 3 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 33, 3 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 41, 3 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 49, 4 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 65, 4 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 81, 4 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 97, 4 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 113, 5 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 145, 5 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 177, 5 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 209, 5 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 241, 6 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 305, 6 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 369, 7 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 497, 8 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 753, 9 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 1265, 10 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 2289, 11 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 4337, 12 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 8433, 13 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 16625, 24 ),\n\t\t\t\t\t];\n\n\t\t\t\t\texports.kInsertLengthPrefixCode = [\n\t\t\t\t\t\tnew PrefixCodeRange( 0, 0 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 1, 0 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 2, 0 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 3, 0 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 4, 0 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 5, 0 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 6, 1 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 8, 1 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 10, 2 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 14, 2 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 18, 3 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 26, 3 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 34, 4 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 50, 4 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 66, 5 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 98, 5 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 130, 6 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 194, 7 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 322, 8 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 578, 9 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 1090, 10 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 2114, 12 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 6210, 14 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 22594, 24 ),\n\t\t\t\t\t];\n\n\t\t\t\t\texports.kCopyLengthPrefixCode = [\n\t\t\t\t\t\tnew PrefixCodeRange( 2, 0 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 3, 0 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 4, 0 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 5, 0 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 6, 0 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 7, 0 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 8, 0 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 9, 0 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 10, 1 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 12, 1 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 14, 2 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 18, 2 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 22, 3 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 30, 3 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 38, 4 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 54, 4 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 70, 5 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 102, 5 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 134, 6 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 198, 7 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 326, 8 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 582, 9 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 1094, 10 ),\n\t\t\t\t\t\tnew PrefixCodeRange( 2118, 24 ),\n\t\t\t\t\t];\n\n\t\t\t\t\texports.kInsertRangeLut = [ 0, 0, 8, 8, 0, 16, 8, 16, 16 ];\n\n\t\t\t\t\texports.kCopyRangeLut = [ 0, 8, 0, 8, 16, 0, 16, 8, 16 ];\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t],\n\t\t\t10: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\tfunction BrotliInput( buffer ) {\n\t\t\t\t\t\tthis.buffer = buffer;\n\t\t\t\t\t\tthis.pos = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tBrotliInput.prototype.read = function ( buf, i, count ) {\n\t\t\t\t\t\tif ( this.pos + count > this.buffer.length ) {\n\t\t\t\t\t\t\tcount = this.buffer.length - this.pos;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( var p = 0; p < count; p++ )\n\t\t\t\t\t\t\tbuf[ i + p ] = this.buffer[ this.pos + p ];\n\n\t\t\t\t\t\tthis.pos += count;\n\t\t\t\t\t\treturn count;\n\t\t\t\t\t};\n\n\t\t\t\t\texports.BrotliInput = BrotliInput;\n\n\t\t\t\t\tfunction BrotliOutput( buf ) {\n\t\t\t\t\t\tthis.buffer = buf;\n\t\t\t\t\t\tthis.pos = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tBrotliOutput.prototype.write = function ( buf, count ) {\n\t\t\t\t\t\tif ( this.pos + count > this.buffer.length )\n\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t'Output buffer is not large enough'\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\tthis.buffer.set( buf.subarray( 0, count ), this.pos );\n\t\t\t\t\t\tthis.pos += count;\n\t\t\t\t\t\treturn count;\n\t\t\t\t\t};\n\n\t\t\t\t\texports.BrotliOutput = BrotliOutput;\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t],\n\t\t\t11: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\t/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n   Transformations on dictionary words.\n*/\n\n\t\t\t\t\tvar BrotliDictionary = require( './dictionary' );\n\n\t\t\t\t\tvar kIdentity = 0;\n\t\t\t\t\tvar kOmitLast1 = 1;\n\t\t\t\t\tvar kOmitLast2 = 2;\n\t\t\t\t\tvar kOmitLast3 = 3;\n\t\t\t\t\tvar kOmitLast4 = 4;\n\t\t\t\t\tvar kOmitLast5 = 5;\n\t\t\t\t\tvar kOmitLast6 = 6;\n\t\t\t\t\tvar kOmitLast7 = 7;\n\t\t\t\t\tvar kOmitLast8 = 8;\n\t\t\t\t\tvar kOmitLast9 = 9;\n\t\t\t\t\tvar kUppercaseFirst = 10;\n\t\t\t\t\tvar kUppercaseAll = 11;\n\t\t\t\t\tvar kOmitFirst1 = 12;\n\t\t\t\t\tvar kOmitFirst2 = 13;\n\t\t\t\t\tvar kOmitFirst3 = 14;\n\t\t\t\t\tvar kOmitFirst4 = 15;\n\t\t\t\t\tvar kOmitFirst5 = 16;\n\t\t\t\t\tvar kOmitFirst6 = 17;\n\t\t\t\t\tvar kOmitFirst7 = 18;\n\t\t\t\t\tvar kOmitFirst8 = 19;\n\t\t\t\t\tvar kOmitFirst9 = 20;\n\n\t\t\t\t\tfunction Transform( prefix, transform, suffix ) {\n\t\t\t\t\t\tthis.prefix = new Uint8Array( prefix.length );\n\t\t\t\t\t\tthis.transform = transform;\n\t\t\t\t\t\tthis.suffix = new Uint8Array( suffix.length );\n\n\t\t\t\t\t\tfor ( var i = 0; i < prefix.length; i++ )\n\t\t\t\t\t\t\tthis.prefix[ i ] = prefix.charCodeAt( i );\n\n\t\t\t\t\t\tfor ( var i = 0; i < suffix.length; i++ )\n\t\t\t\t\t\t\tthis.suffix[ i ] = suffix.charCodeAt( i );\n\t\t\t\t\t}\n\n\t\t\t\t\tvar kTransforms = [\n\t\t\t\t\t\tnew Transform( '', kIdentity, '' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ' ' ),\n\t\t\t\t\t\tnew Transform( ' ', kIdentity, ' ' ),\n\t\t\t\t\t\tnew Transform( '', kOmitFirst1, '' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseFirst, ' ' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ' the ' ),\n\t\t\t\t\t\tnew Transform( ' ', kIdentity, '' ),\n\t\t\t\t\t\tnew Transform( 's ', kIdentity, ' ' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ' of ' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseFirst, '' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ' and ' ),\n\t\t\t\t\t\tnew Transform( '', kOmitFirst2, '' ),\n\t\t\t\t\t\tnew Transform( '', kOmitLast1, '' ),\n\t\t\t\t\t\tnew Transform( ', ', kIdentity, ' ' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ', ' ),\n\t\t\t\t\t\tnew Transform( ' ', kUppercaseFirst, ' ' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ' in ' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ' to ' ),\n\t\t\t\t\t\tnew Transform( 'e ', kIdentity, ' ' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, '\"' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, '.' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, '\">' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, '\\n' ),\n\t\t\t\t\t\tnew Transform( '', kOmitLast3, '' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ']' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ' for ' ),\n\t\t\t\t\t\tnew Transform( '', kOmitFirst3, '' ),\n\t\t\t\t\t\tnew Transform( '', kOmitLast2, '' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ' a ' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ' that ' ),\n\t\t\t\t\t\tnew Transform( ' ', kUppercaseFirst, '' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, '. ' ),\n\t\t\t\t\t\tnew Transform( '.', kIdentity, '' ),\n\t\t\t\t\t\tnew Transform( ' ', kIdentity, ', ' ),\n\t\t\t\t\t\tnew Transform( '', kOmitFirst4, '' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ' with ' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, \"'\" ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ' from ' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ' by ' ),\n\t\t\t\t\t\tnew Transform( '', kOmitFirst5, '' ),\n\t\t\t\t\t\tnew Transform( '', kOmitFirst6, '' ),\n\t\t\t\t\t\tnew Transform( ' the ', kIdentity, '' ),\n\t\t\t\t\t\tnew Transform( '', kOmitLast4, '' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, '. The ' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseAll, '' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ' on ' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ' as ' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ' is ' ),\n\t\t\t\t\t\tnew Transform( '', kOmitLast7, '' ),\n\t\t\t\t\t\tnew Transform( '', kOmitLast1, 'ing ' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, '\\n\\t' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ':' ),\n\t\t\t\t\t\tnew Transform( ' ', kIdentity, '. ' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, 'ed ' ),\n\t\t\t\t\t\tnew Transform( '', kOmitFirst9, '' ),\n\t\t\t\t\t\tnew Transform( '', kOmitFirst7, '' ),\n\t\t\t\t\t\tnew Transform( '', kOmitLast6, '' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, '(' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseFirst, ', ' ),\n\t\t\t\t\t\tnew Transform( '', kOmitLast8, '' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ' at ' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, 'ly ' ),\n\t\t\t\t\t\tnew Transform( ' the ', kIdentity, ' of ' ),\n\t\t\t\t\t\tnew Transform( '', kOmitLast5, '' ),\n\t\t\t\t\t\tnew Transform( '', kOmitLast9, '' ),\n\t\t\t\t\t\tnew Transform( ' ', kUppercaseFirst, ', ' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseFirst, '\"' ),\n\t\t\t\t\t\tnew Transform( '.', kIdentity, '(' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseAll, ' ' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseFirst, '\">' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, '=\"' ),\n\t\t\t\t\t\tnew Transform( ' ', kIdentity, '.' ),\n\t\t\t\t\t\tnew Transform( '.com/', kIdentity, '' ),\n\t\t\t\t\t\tnew Transform( ' the ', kIdentity, ' of the ' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseFirst, \"'\" ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, '. This ' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ',' ),\n\t\t\t\t\t\tnew Transform( '.', kIdentity, ' ' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseFirst, '(' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseFirst, '.' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, ' not ' ),\n\t\t\t\t\t\tnew Transform( ' ', kIdentity, '=\"' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, 'er ' ),\n\t\t\t\t\t\tnew Transform( ' ', kUppercaseAll, ' ' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, 'al ' ),\n\t\t\t\t\t\tnew Transform( ' ', kUppercaseAll, '' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, \"='\" ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseAll, '\"' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseFirst, '. ' ),\n\t\t\t\t\t\tnew Transform( ' ', kIdentity, '(' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, 'ful ' ),\n\t\t\t\t\t\tnew Transform( ' ', kUppercaseFirst, '. ' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, 'ive ' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, 'less ' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseAll, \"'\" ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, 'est ' ),\n\t\t\t\t\t\tnew Transform( ' ', kUppercaseFirst, '.' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseAll, '\">' ),\n\t\t\t\t\t\tnew Transform( ' ', kIdentity, \"='\" ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseFirst, ',' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, 'ize ' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseAll, '.' ),\n\t\t\t\t\t\tnew Transform( '\\xc2\\xa0', kIdentity, '' ),\n\t\t\t\t\t\tnew Transform( ' ', kIdentity, ',' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseFirst, '=\"' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseAll, '=\"' ),\n\t\t\t\t\t\tnew Transform( '', kIdentity, 'ous ' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseAll, ', ' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseFirst, \"='\" ),\n\t\t\t\t\t\tnew Transform( ' ', kUppercaseFirst, ',' ),\n\t\t\t\t\t\tnew Transform( ' ', kUppercaseAll, '=\"' ),\n\t\t\t\t\t\tnew Transform( ' ', kUppercaseAll, ', ' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseAll, ',' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseAll, '(' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseAll, '. ' ),\n\t\t\t\t\t\tnew Transform( ' ', kUppercaseAll, '.' ),\n\t\t\t\t\t\tnew Transform( '', kUppercaseAll, \"='\" ),\n\t\t\t\t\t\tnew Transform( ' ', kUppercaseAll, '. ' ),\n\t\t\t\t\t\tnew Transform( ' ', kUppercaseFirst, '=\"' ),\n\t\t\t\t\t\tnew Transform( ' ', kUppercaseAll, \"='\" ),\n\t\t\t\t\t\tnew Transform( ' ', kUppercaseFirst, \"='\" ),\n\t\t\t\t\t];\n\n\t\t\t\t\texports.kTransforms = kTransforms;\n\t\t\t\t\texports.kNumTransforms = kTransforms.length;\n\n\t\t\t\t\tfunction ToUpperCase( p, i ) {\n\t\t\t\t\t\tif ( p[ i ] < 0xc0 ) {\n\t\t\t\t\t\t\tif ( p[ i ] >= 97 && p[ i ] <= 122 ) {\n\t\t\t\t\t\t\t\tp[ i ] ^= 32;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn 1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* An overly simplified uppercasing model for utf-8. */\n\t\t\t\t\t\tif ( p[ i ] < 0xe0 ) {\n\t\t\t\t\t\t\tp[ i + 1 ] ^= 32;\n\t\t\t\t\t\t\treturn 2;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* An arbitrary transform for three byte characters. */\n\t\t\t\t\t\tp[ i + 2 ] ^= 5;\n\t\t\t\t\t\treturn 3;\n\t\t\t\t\t}\n\n\t\t\t\t\texports.transformDictionaryWord = function (\n\t\t\t\t\t\tdst,\n\t\t\t\t\t\tidx,\n\t\t\t\t\t\tword,\n\t\t\t\t\t\tlen,\n\t\t\t\t\t\ttransform\n\t\t\t\t\t) {\n\t\t\t\t\t\tvar prefix = kTransforms[ transform ].prefix;\n\t\t\t\t\t\tvar suffix = kTransforms[ transform ].suffix;\n\t\t\t\t\t\tvar t = kTransforms[ transform ].transform;\n\t\t\t\t\t\tvar skip =\n\t\t\t\t\t\t\tt < kOmitFirst1 ? 0 : t - ( kOmitFirst1 - 1 );\n\t\t\t\t\t\tvar i = 0;\n\t\t\t\t\t\tvar start_idx = idx;\n\t\t\t\t\t\tvar uppercase;\n\n\t\t\t\t\t\tif ( skip > len ) {\n\t\t\t\t\t\t\tskip = len;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar prefix_pos = 0;\n\t\t\t\t\t\twhile ( prefix_pos < prefix.length ) {\n\t\t\t\t\t\t\tdst[ idx++ ] = prefix[ prefix_pos++ ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tword += skip;\n\t\t\t\t\t\tlen -= skip;\n\n\t\t\t\t\t\tif ( t <= kOmitLast9 ) {\n\t\t\t\t\t\t\tlen -= t;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\t\t\tdst[ idx++ ] =\n\t\t\t\t\t\t\t\tBrotliDictionary.dictionary[ word + i ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tuppercase = idx - len;\n\n\t\t\t\t\t\tif ( t === kUppercaseFirst ) {\n\t\t\t\t\t\t\tToUpperCase( dst, uppercase );\n\t\t\t\t\t\t} else if ( t === kUppercaseAll ) {\n\t\t\t\t\t\t\twhile ( len > 0 ) {\n\t\t\t\t\t\t\t\tvar step = ToUpperCase( dst, uppercase );\n\t\t\t\t\t\t\t\tuppercase += step;\n\t\t\t\t\t\t\t\tlen -= step;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar suffix_pos = 0;\n\t\t\t\t\t\twhile ( suffix_pos < suffix.length ) {\n\t\t\t\t\t\t\tdst[ idx++ ] = suffix[ suffix_pos++ ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn idx - start_idx;\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t{ './dictionary': 6 },\n\t\t\t],\n\t\t\t12: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\tmodule.exports =\n\t\t\t\t\t\trequire( './dec/decode' ).BrotliDecompressBuffer;\n\t\t\t\t},\n\t\t\t\t{ './dec/decode': 3 },\n\t\t\t],\n\t\t},\n\t\t{},\n\t\t[ 12 ]\n\t)( 12 );\n} )();\n/* eslint-enable */\n", "/**\n * Credits:\n *\n * lib-font\n * https://github.com/Pomax/lib-font\n * https://github.com/Pomax/lib-font/blob/master/lib/inflate.js\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2020 pomax@nihongoresources.com\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/* eslint eslint-comments/no-unlimited-disable: 0 */\n/* eslint-disable */\n/* pako 1.0.10 nodeca/pako */\nexport default ( function () {\n\tvar define, module, exports;\n\treturn ( function () {\n\t\tfunction r( e, n, t ) {\n\t\t\tfunction o( i, f ) {\n\t\t\t\tif ( ! n[ i ] ) {\n\t\t\t\t\tif ( ! e[ i ] ) {\n\t\t\t\t\t\tvar c = 'function' == typeof require && require;\n\t\t\t\t\t\tif ( ! f && c ) return c( i, ! 0 );\n\t\t\t\t\t\tif ( u ) return u( i, ! 0 );\n\t\t\t\t\t\tvar a = new Error( \"Cannot find module '\" + i + \"'\" );\n\t\t\t\t\t\tthrow ( ( a.code = 'MODULE_NOT_FOUND' ), a );\n\t\t\t\t\t}\n\t\t\t\t\tvar p = ( n[ i ] = { exports: {} } );\n\t\t\t\t\te[ i ][ 0 ].call(\n\t\t\t\t\t\tp.exports,\n\t\t\t\t\t\tfunction ( r ) {\n\t\t\t\t\t\t\tvar n = e[ i ][ 1 ][ r ];\n\t\t\t\t\t\t\treturn o( n || r );\n\t\t\t\t\t\t},\n\t\t\t\t\t\tp,\n\t\t\t\t\t\tp.exports,\n\t\t\t\t\t\tr,\n\t\t\t\t\t\te,\n\t\t\t\t\t\tn,\n\t\t\t\t\t\tt\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn n[ i ].exports;\n\t\t\t}\n\t\t\tfor (\n\t\t\t\tvar u = 'function' == typeof require && require, i = 0;\n\t\t\t\ti < t.length;\n\t\t\t\ti++\n\t\t\t)\n\t\t\t\to( t[ i ] );\n\t\t\treturn o;\n\t\t}\n\t\treturn r;\n\t} )()(\n\t\t{\n\t\t\t1: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\t'use strict';\n\n\t\t\t\t\tvar TYPED_OK =\n\t\t\t\t\t\ttypeof Uint8Array !== 'undefined' &&\n\t\t\t\t\t\ttypeof Uint16Array !== 'undefined' &&\n\t\t\t\t\t\ttypeof Int32Array !== 'undefined';\n\n\t\t\t\t\tfunction _has( obj, key ) {\n\t\t\t\t\t\treturn Object.prototype.hasOwnProperty.call( obj, key );\n\t\t\t\t\t}\n\n\t\t\t\t\texports.assign = function (\n\t\t\t\t\t\tobj /*from1, from2, from3, ...*/\n\t\t\t\t\t) {\n\t\t\t\t\t\tvar sources = Array.prototype.slice.call(\n\t\t\t\t\t\t\targuments,\n\t\t\t\t\t\t\t1\n\t\t\t\t\t\t);\n\t\t\t\t\t\twhile ( sources.length ) {\n\t\t\t\t\t\t\tvar source = sources.shift();\n\t\t\t\t\t\t\tif ( ! source ) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( typeof source !== 'object' ) {\n\t\t\t\t\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\t\t\t\tsource + 'must be non-object'\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor ( var p in source ) {\n\t\t\t\t\t\t\t\tif ( _has( source, p ) ) {\n\t\t\t\t\t\t\t\t\tobj[ p ] = source[ p ];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn obj;\n\t\t\t\t\t};\n\n\t\t\t\t\t// reduce buffer size, avoiding mem copy\n\t\t\t\t\texports.shrinkBuf = function ( buf, size ) {\n\t\t\t\t\t\tif ( buf.length === size ) {\n\t\t\t\t\t\t\treturn buf;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( buf.subarray ) {\n\t\t\t\t\t\t\treturn buf.subarray( 0, size );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbuf.length = size;\n\t\t\t\t\t\treturn buf;\n\t\t\t\t\t};\n\n\t\t\t\t\tvar fnTyped = {\n\t\t\t\t\t\tarraySet: function (\n\t\t\t\t\t\t\tdest,\n\t\t\t\t\t\t\tsrc,\n\t\t\t\t\t\t\tsrc_offs,\n\t\t\t\t\t\t\tlen,\n\t\t\t\t\t\t\tdest_offs\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif ( src.subarray && dest.subarray ) {\n\t\t\t\t\t\t\t\tdest.set(\n\t\t\t\t\t\t\t\t\tsrc.subarray( src_offs, src_offs + len ),\n\t\t\t\t\t\t\t\t\tdest_offs\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Fallback to ordinary array\n\t\t\t\t\t\t\tfor ( var i = 0; i < len; i++ ) {\n\t\t\t\t\t\t\t\tdest[ dest_offs + i ] = src[ src_offs + i ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t// Join array of chunks to single array.\n\t\t\t\t\t\tflattenChunks: function ( chunks ) {\n\t\t\t\t\t\t\tvar i, l, len, pos, chunk, result;\n\n\t\t\t\t\t\t\t// calculate data length\n\t\t\t\t\t\t\tlen = 0;\n\t\t\t\t\t\t\tfor ( i = 0, l = chunks.length; i < l; i++ ) {\n\t\t\t\t\t\t\t\tlen += chunks[ i ].length;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// join chunks\n\t\t\t\t\t\t\tresult = new Uint8Array( len );\n\t\t\t\t\t\t\tpos = 0;\n\t\t\t\t\t\t\tfor ( i = 0, l = chunks.length; i < l; i++ ) {\n\t\t\t\t\t\t\t\tchunk = chunks[ i ];\n\t\t\t\t\t\t\t\tresult.set( chunk, pos );\n\t\t\t\t\t\t\t\tpos += chunk.length;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\tvar fnUntyped = {\n\t\t\t\t\t\tarraySet: function (\n\t\t\t\t\t\t\tdest,\n\t\t\t\t\t\t\tsrc,\n\t\t\t\t\t\t\tsrc_offs,\n\t\t\t\t\t\t\tlen,\n\t\t\t\t\t\t\tdest_offs\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tfor ( var i = 0; i < len; i++ ) {\n\t\t\t\t\t\t\t\tdest[ dest_offs + i ] = src[ src_offs + i ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t// Join array of chunks to single array.\n\t\t\t\t\t\tflattenChunks: function ( chunks ) {\n\t\t\t\t\t\t\treturn [].concat.apply( [], chunks );\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\t// Enable/Disable typed arrays use, for testing\n\t\t\t\t\t//\n\t\t\t\t\texports.setTyped = function ( on ) {\n\t\t\t\t\t\tif ( on ) {\n\t\t\t\t\t\t\texports.Buf8 = Uint8Array;\n\t\t\t\t\t\t\texports.Buf16 = Uint16Array;\n\t\t\t\t\t\t\texports.Buf32 = Int32Array;\n\t\t\t\t\t\t\texports.assign( exports, fnTyped );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\texports.Buf8 = Array;\n\t\t\t\t\t\t\texports.Buf16 = Array;\n\t\t\t\t\t\t\texports.Buf32 = Array;\n\t\t\t\t\t\t\texports.assign( exports, fnUntyped );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\texports.setTyped( TYPED_OK );\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t],\n\t\t\t2: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\t// String encode/decode helpers\n\t\t\t\t\t'use strict';\n\n\t\t\t\t\tvar utils = require( './common' );\n\n\t\t\t\t\t// Quick check if we can use fast array to bin string conversion\n\t\t\t\t\t//\n\t\t\t\t\t// - apply(Array) can fail on Android 2.2\n\t\t\t\t\t// - apply(Uint8Array) can fail on iOS 5.1 Safari\n\t\t\t\t\t//\n\t\t\t\t\tvar STR_APPLY_OK = true;\n\t\t\t\t\tvar STR_APPLY_UIA_OK = true;\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tString.fromCharCode.apply( null, [ 0 ] );\n\t\t\t\t\t} catch ( __ ) {\n\t\t\t\t\t\tSTR_APPLY_OK = false;\n\t\t\t\t\t}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tString.fromCharCode.apply( null, new Uint8Array( 1 ) );\n\t\t\t\t\t} catch ( __ ) {\n\t\t\t\t\t\tSTR_APPLY_UIA_OK = false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Table with utf8 lengths (calculated by first byte of sequence)\n\t\t\t\t\t// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n\t\t\t\t\t// because max possible codepoint is 0x10ffff\n\t\t\t\t\tvar _utf8len = new utils.Buf8( 256 );\n\t\t\t\t\tfor ( var q = 0; q < 256; q++ ) {\n\t\t\t\t\t\t_utf8len[ q ] =\n\t\t\t\t\t\t\tq >= 252\n\t\t\t\t\t\t\t\t? 6\n\t\t\t\t\t\t\t\t: q >= 248\n\t\t\t\t\t\t\t\t? 5\n\t\t\t\t\t\t\t\t: q >= 240\n\t\t\t\t\t\t\t\t? 4\n\t\t\t\t\t\t\t\t: q >= 224\n\t\t\t\t\t\t\t\t? 3\n\t\t\t\t\t\t\t\t: q >= 192\n\t\t\t\t\t\t\t\t? 2\n\t\t\t\t\t\t\t\t: 1;\n\t\t\t\t\t}\n\t\t\t\t\t_utf8len[ 254 ] = _utf8len[ 254 ] = 1; // Invalid sequence start\n\n\t\t\t\t\t// convert string to array (typed, when possible)\n\t\t\t\t\texports.string2buf = function ( str ) {\n\t\t\t\t\t\tvar buf,\n\t\t\t\t\t\t\tc,\n\t\t\t\t\t\t\tc2,\n\t\t\t\t\t\t\tm_pos,\n\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\tstr_len = str.length,\n\t\t\t\t\t\t\tbuf_len = 0;\n\n\t\t\t\t\t\t// count binary size\n\t\t\t\t\t\tfor ( m_pos = 0; m_pos < str_len; m_pos++ ) {\n\t\t\t\t\t\t\tc = str.charCodeAt( m_pos );\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t( c & 0xfc00 ) === 0xd800 &&\n\t\t\t\t\t\t\t\tm_pos + 1 < str_len\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tc2 = str.charCodeAt( m_pos + 1 );\n\t\t\t\t\t\t\t\tif ( ( c2 & 0xfc00 ) === 0xdc00 ) {\n\t\t\t\t\t\t\t\t\tc =\n\t\t\t\t\t\t\t\t\t\t0x10000 +\n\t\t\t\t\t\t\t\t\t\t( ( c - 0xd800 ) << 10 ) +\n\t\t\t\t\t\t\t\t\t\t( c2 - 0xdc00 );\n\t\t\t\t\t\t\t\t\tm_pos++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbuf_len +=\n\t\t\t\t\t\t\t\tc < 0x80\n\t\t\t\t\t\t\t\t\t? 1\n\t\t\t\t\t\t\t\t\t: c < 0x800\n\t\t\t\t\t\t\t\t\t? 2\n\t\t\t\t\t\t\t\t\t: c < 0x10000\n\t\t\t\t\t\t\t\t\t? 3\n\t\t\t\t\t\t\t\t\t: 4;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// allocate buffer\n\t\t\t\t\t\tbuf = new utils.Buf8( buf_len );\n\n\t\t\t\t\t\t// convert\n\t\t\t\t\t\tfor ( i = 0, m_pos = 0; i < buf_len; m_pos++ ) {\n\t\t\t\t\t\t\tc = str.charCodeAt( m_pos );\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t( c & 0xfc00 ) === 0xd800 &&\n\t\t\t\t\t\t\t\tm_pos + 1 < str_len\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tc2 = str.charCodeAt( m_pos + 1 );\n\t\t\t\t\t\t\t\tif ( ( c2 & 0xfc00 ) === 0xdc00 ) {\n\t\t\t\t\t\t\t\t\tc =\n\t\t\t\t\t\t\t\t\t\t0x10000 +\n\t\t\t\t\t\t\t\t\t\t( ( c - 0xd800 ) << 10 ) +\n\t\t\t\t\t\t\t\t\t\t( c2 - 0xdc00 );\n\t\t\t\t\t\t\t\t\tm_pos++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( c < 0x80 ) {\n\t\t\t\t\t\t\t\t/* one byte */\n\t\t\t\t\t\t\t\tbuf[ i++ ] = c;\n\t\t\t\t\t\t\t} else if ( c < 0x800 ) {\n\t\t\t\t\t\t\t\t/* two bytes */\n\t\t\t\t\t\t\t\tbuf[ i++ ] = 0xc0 | ( c >>> 6 );\n\t\t\t\t\t\t\t\tbuf[ i++ ] = 0x80 | ( c & 0x3f );\n\t\t\t\t\t\t\t} else if ( c < 0x10000 ) {\n\t\t\t\t\t\t\t\t/* three bytes */\n\t\t\t\t\t\t\t\tbuf[ i++ ] = 0xe0 | ( c >>> 12 );\n\t\t\t\t\t\t\t\tbuf[ i++ ] = 0x80 | ( ( c >>> 6 ) & 0x3f );\n\t\t\t\t\t\t\t\tbuf[ i++ ] = 0x80 | ( c & 0x3f );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t/* four bytes */\n\t\t\t\t\t\t\t\tbuf[ i++ ] = 0xf0 | ( c >>> 18 );\n\t\t\t\t\t\t\t\tbuf[ i++ ] = 0x80 | ( ( c >>> 12 ) & 0x3f );\n\t\t\t\t\t\t\t\tbuf[ i++ ] = 0x80 | ( ( c >>> 6 ) & 0x3f );\n\t\t\t\t\t\t\t\tbuf[ i++ ] = 0x80 | ( c & 0x3f );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn buf;\n\t\t\t\t\t};\n\n\t\t\t\t\t// Helper (used in 2 places)\n\t\t\t\t\tfunction buf2binstring( buf, len ) {\n\t\t\t\t\t\t// On Chrome, the arguments in a function call that are allowed is `65534`.\n\t\t\t\t\t\t// If the length of the buffer is smaller than that, we can use this optimization,\n\t\t\t\t\t\t// otherwise we will take a slower path.\n\t\t\t\t\t\tif ( len < 65534 ) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t( buf.subarray && STR_APPLY_UIA_OK ) ||\n\t\t\t\t\t\t\t\t( ! buf.subarray && STR_APPLY_OK )\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\treturn String.fromCharCode.apply(\n\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\tutils.shrinkBuf( buf, len )\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar result = '';\n\t\t\t\t\t\tfor ( var i = 0; i < len; i++ ) {\n\t\t\t\t\t\t\tresult += String.fromCharCode( buf[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Convert byte array to binary string\n\t\t\t\t\texports.buf2binstring = function ( buf ) {\n\t\t\t\t\t\treturn buf2binstring( buf, buf.length );\n\t\t\t\t\t};\n\n\t\t\t\t\t// Convert binary string (typed, when possible)\n\t\t\t\t\texports.binstring2buf = function ( str ) {\n\t\t\t\t\t\tvar buf = new utils.Buf8( str.length );\n\t\t\t\t\t\tfor ( var i = 0, len = buf.length; i < len; i++ ) {\n\t\t\t\t\t\t\tbuf[ i ] = str.charCodeAt( i );\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn buf;\n\t\t\t\t\t};\n\n\t\t\t\t\t// convert array to string\n\t\t\t\t\texports.buf2string = function ( buf, max ) {\n\t\t\t\t\t\tvar i, out, c, c_len;\n\t\t\t\t\t\tvar len = max || buf.length;\n\n\t\t\t\t\t\t// Reserve max possible length (2 words per char)\n\t\t\t\t\t\t// NB: by unknown reasons, Array is significantly faster for\n\t\t\t\t\t\t//     String.fromCharCode.apply than Uint16Array.\n\t\t\t\t\t\tvar utf16buf = new Array( len * 2 );\n\n\t\t\t\t\t\tfor ( out = 0, i = 0; i < len;  ) {\n\t\t\t\t\t\t\tc = buf[ i++ ];\n\t\t\t\t\t\t\t// quick process ascii\n\t\t\t\t\t\t\tif ( c < 0x80 ) {\n\t\t\t\t\t\t\t\tutf16buf[ out++ ] = c;\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tc_len = _utf8len[ c ];\n\t\t\t\t\t\t\t// skip 5 & 6 byte codes\n\t\t\t\t\t\t\tif ( c_len > 4 ) {\n\t\t\t\t\t\t\t\tutf16buf[ out++ ] = 0xfffd;\n\t\t\t\t\t\t\t\ti += c_len - 1;\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// apply mask on first byte\n\t\t\t\t\t\t\tc &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n\t\t\t\t\t\t\t// join the rest\n\t\t\t\t\t\t\twhile ( c_len > 1 && i < len ) {\n\t\t\t\t\t\t\t\tc = ( c << 6 ) | ( buf[ i++ ] & 0x3f );\n\t\t\t\t\t\t\t\tc_len--;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// terminated by end of string?\n\t\t\t\t\t\t\tif ( c_len > 1 ) {\n\t\t\t\t\t\t\t\tutf16buf[ out++ ] = 0xfffd;\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( c < 0x10000 ) {\n\t\t\t\t\t\t\t\tutf16buf[ out++ ] = c;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tc -= 0x10000;\n\t\t\t\t\t\t\t\tutf16buf[ out++ ] =\n\t\t\t\t\t\t\t\t\t0xd800 | ( ( c >> 10 ) & 0x3ff );\n\t\t\t\t\t\t\t\tutf16buf[ out++ ] = 0xdc00 | ( c & 0x3ff );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn buf2binstring( utf16buf, out );\n\t\t\t\t\t};\n\n\t\t\t\t\t// Calculate max possible position in utf8 buffer,\n\t\t\t\t\t// that will not break sequence. If that's not possible\n\t\t\t\t\t// - (very small limits) return max size as is.\n\t\t\t\t\t//\n\t\t\t\t\t// buf[] - utf8 bytes array\n\t\t\t\t\t// max   - length limit (mandatory);\n\t\t\t\t\texports.utf8border = function ( buf, max ) {\n\t\t\t\t\t\tvar pos;\n\n\t\t\t\t\t\tmax = max || buf.length;\n\t\t\t\t\t\tif ( max > buf.length ) {\n\t\t\t\t\t\t\tmax = buf.length;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// go back from last position, until start of sequence found\n\t\t\t\t\t\tpos = max - 1;\n\t\t\t\t\t\twhile ( pos >= 0 && ( buf[ pos ] & 0xc0 ) === 0x80 ) {\n\t\t\t\t\t\t\tpos--;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Very small and broken sequence,\n\t\t\t\t\t\t// return max, because we should return something anyway.\n\t\t\t\t\t\tif ( pos < 0 ) {\n\t\t\t\t\t\t\treturn max;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If we came to start of buffer - that means buffer is too small,\n\t\t\t\t\t\t// return max too.\n\t\t\t\t\t\tif ( pos === 0 ) {\n\t\t\t\t\t\t\treturn max;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn pos + _utf8len[ buf[ pos ] ] > max ? pos : max;\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t{ './common': 1 },\n\t\t\t],\n\t\t\t3: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\t'use strict';\n\n\t\t\t\t\t// Note: adler32 takes 12% for level 0 and 2% for level 6.\n\t\t\t\t\t// It isn't worth it to make additional optimizations as in original.\n\t\t\t\t\t// Small size is preferable.\n\n\t\t\t\t\t// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n\t\t\t\t\t// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n\t\t\t\t\t//\n\t\t\t\t\t// This software is provided 'as-is', without any express or implied\n\t\t\t\t\t// warranty. In no event will the authors be held liable for any damages\n\t\t\t\t\t// arising from the use of this software.\n\t\t\t\t\t//\n\t\t\t\t\t// Permission is granted to anyone to use this software for any purpose,\n\t\t\t\t\t// including commercial applications, and to alter it and redistribute it\n\t\t\t\t\t// freely, subject to the following restrictions:\n\t\t\t\t\t//\n\t\t\t\t\t// 1. The origin of this software must not be misrepresented; you must not\n\t\t\t\t\t//   claim that you wrote the original software. If you use this software\n\t\t\t\t\t//   in a product, an acknowledgment in the product documentation would be\n\t\t\t\t\t//   appreciated but is not required.\n\t\t\t\t\t// 2. Altered source versions must be plainly marked as such, and must not be\n\t\t\t\t\t//   misrepresented as being the original software.\n\t\t\t\t\t// 3. This notice may not be removed or altered from any source distribution.\n\n\t\t\t\t\tfunction adler32( adler, buf, len, pos ) {\n\t\t\t\t\t\tvar s1 = ( adler & 0xffff ) | 0,\n\t\t\t\t\t\t\ts2 = ( ( adler >>> 16 ) & 0xffff ) | 0,\n\t\t\t\t\t\t\tn = 0;\n\n\t\t\t\t\t\twhile ( len !== 0 ) {\n\t\t\t\t\t\t\t// Set limit ~ twice less than 5552, to keep\n\t\t\t\t\t\t\t// s2 in 31-bits, because we force signed ints.\n\t\t\t\t\t\t\t// in other case %= will fail.\n\t\t\t\t\t\t\tn = len > 2000 ? 2000 : len;\n\t\t\t\t\t\t\tlen -= n;\n\n\t\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\t\ts1 = ( s1 + buf[ pos++ ] ) | 0;\n\t\t\t\t\t\t\t\ts2 = ( s2 + s1 ) | 0;\n\t\t\t\t\t\t\t} while ( --n );\n\n\t\t\t\t\t\t\ts1 %= 65521;\n\t\t\t\t\t\t\ts2 %= 65521;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn s1 | ( s2 << 16 ) | 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tmodule.exports = adler32;\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t],\n\t\t\t4: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\t'use strict';\n\n\t\t\t\t\t// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n\t\t\t\t\t// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n\t\t\t\t\t//\n\t\t\t\t\t// This software is provided 'as-is', without any express or implied\n\t\t\t\t\t// warranty. In no event will the authors be held liable for any damages\n\t\t\t\t\t// arising from the use of this software.\n\t\t\t\t\t//\n\t\t\t\t\t// Permission is granted to anyone to use this software for any purpose,\n\t\t\t\t\t// including commercial applications, and to alter it and redistribute it\n\t\t\t\t\t// freely, subject to the following restrictions:\n\t\t\t\t\t//\n\t\t\t\t\t// 1. The origin of this software must not be misrepresented; you must not\n\t\t\t\t\t//   claim that you wrote the original software. If you use this software\n\t\t\t\t\t//   in a product, an acknowledgment in the product documentation would be\n\t\t\t\t\t//   appreciated but is not required.\n\t\t\t\t\t// 2. Altered source versions must be plainly marked as such, and must not be\n\t\t\t\t\t//   misrepresented as being the original software.\n\t\t\t\t\t// 3. This notice may not be removed or altered from any source distribution.\n\n\t\t\t\t\tmodule.exports = {\n\t\t\t\t\t\t/* Allowed flush values; see deflate() and inflate() below for details */\n\t\t\t\t\t\tZ_NO_FLUSH: 0,\n\t\t\t\t\t\tZ_PARTIAL_FLUSH: 1,\n\t\t\t\t\t\tZ_SYNC_FLUSH: 2,\n\t\t\t\t\t\tZ_FULL_FLUSH: 3,\n\t\t\t\t\t\tZ_FINISH: 4,\n\t\t\t\t\t\tZ_BLOCK: 5,\n\t\t\t\t\t\tZ_TREES: 6,\n\n\t\t\t\t\t\t/* Return codes for the compression/decompression functions. Negative values\n\t\t\t\t\t\t * are errors, positive values are used for special but normal events.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tZ_OK: 0,\n\t\t\t\t\t\tZ_STREAM_END: 1,\n\t\t\t\t\t\tZ_NEED_DICT: 2,\n\t\t\t\t\t\tZ_ERRNO: -1,\n\t\t\t\t\t\tZ_STREAM_ERROR: -2,\n\t\t\t\t\t\tZ_DATA_ERROR: -3,\n\t\t\t\t\t\t//Z_MEM_ERROR:     -4,\n\t\t\t\t\t\tZ_BUF_ERROR: -5,\n\t\t\t\t\t\t//Z_VERSION_ERROR: -6,\n\n\t\t\t\t\t\t/* compression levels */\n\t\t\t\t\t\tZ_NO_COMPRESSION: 0,\n\t\t\t\t\t\tZ_BEST_SPEED: 1,\n\t\t\t\t\t\tZ_BEST_COMPRESSION: 9,\n\t\t\t\t\t\tZ_DEFAULT_COMPRESSION: -1,\n\n\t\t\t\t\t\tZ_FILTERED: 1,\n\t\t\t\t\t\tZ_HUFFMAN_ONLY: 2,\n\t\t\t\t\t\tZ_RLE: 3,\n\t\t\t\t\t\tZ_FIXED: 4,\n\t\t\t\t\t\tZ_DEFAULT_STRATEGY: 0,\n\n\t\t\t\t\t\t/* Possible values of the data_type field (though see inflate()) */\n\t\t\t\t\t\tZ_BINARY: 0,\n\t\t\t\t\t\tZ_TEXT: 1,\n\t\t\t\t\t\t//Z_ASCII:                1, // = Z_TEXT (deprecated)\n\t\t\t\t\t\tZ_UNKNOWN: 2,\n\n\t\t\t\t\t\t/* The deflate compression method */\n\t\t\t\t\t\tZ_DEFLATED: 8,\n\t\t\t\t\t\t//Z_NULL:                 null // Use -1 or null inline, depending on var type\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t],\n\t\t\t5: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\t'use strict';\n\n\t\t\t\t\t// Note: we can't get significant speed boost here.\n\t\t\t\t\t// So write code to minimize size - no pregenerated tables\n\t\t\t\t\t// and array tools dependencies.\n\n\t\t\t\t\t// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n\t\t\t\t\t// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n\t\t\t\t\t//\n\t\t\t\t\t// This software is provided 'as-is', without any express or implied\n\t\t\t\t\t// warranty. In no event will the authors be held liable for any damages\n\t\t\t\t\t// arising from the use of this software.\n\t\t\t\t\t//\n\t\t\t\t\t// Permission is granted to anyone to use this software for any purpose,\n\t\t\t\t\t// including commercial applications, and to alter it and redistribute it\n\t\t\t\t\t// freely, subject to the following restrictions:\n\t\t\t\t\t//\n\t\t\t\t\t// 1. The origin of this software must not be misrepresented; you must not\n\t\t\t\t\t//   claim that you wrote the original software. If you use this software\n\t\t\t\t\t//   in a product, an acknowledgment in the product documentation would be\n\t\t\t\t\t//   appreciated but is not required.\n\t\t\t\t\t// 2. Altered source versions must be plainly marked as such, and must not be\n\t\t\t\t\t//   misrepresented as being the original software.\n\t\t\t\t\t// 3. This notice may not be removed or altered from any source distribution.\n\n\t\t\t\t\t// Use ordinary array, since untyped makes no boost here\n\t\t\t\t\tfunction makeTable() {\n\t\t\t\t\t\tvar c,\n\t\t\t\t\t\t\ttable = [];\n\n\t\t\t\t\t\tfor ( var n = 0; n < 256; n++ ) {\n\t\t\t\t\t\t\tc = n;\n\t\t\t\t\t\t\tfor ( var k = 0; k < 8; k++ ) {\n\t\t\t\t\t\t\t\tc = c & 1 ? 0xedb88320 ^ ( c >>> 1 ) : c >>> 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttable[ n ] = c;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn table;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Create table on load. Just 255 signed longs. Not a problem.\n\t\t\t\t\tvar crcTable = makeTable();\n\n\t\t\t\t\tfunction crc32( crc, buf, len, pos ) {\n\t\t\t\t\t\tvar t = crcTable,\n\t\t\t\t\t\t\tend = pos + len;\n\n\t\t\t\t\t\tcrc ^= -1;\n\n\t\t\t\t\t\tfor ( var i = pos; i < end; i++ ) {\n\t\t\t\t\t\t\tcrc =\n\t\t\t\t\t\t\t\t( crc >>> 8 ) ^ t[ ( crc ^ buf[ i ] ) & 0xff ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn crc ^ -1; // >>> 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tmodule.exports = crc32;\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t],\n\t\t\t6: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\t'use strict';\n\n\t\t\t\t\t// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n\t\t\t\t\t// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n\t\t\t\t\t//\n\t\t\t\t\t// This software is provided 'as-is', without any express or implied\n\t\t\t\t\t// warranty. In no event will the authors be held liable for any damages\n\t\t\t\t\t// arising from the use of this software.\n\t\t\t\t\t//\n\t\t\t\t\t// Permission is granted to anyone to use this software for any purpose,\n\t\t\t\t\t// including commercial applications, and to alter it and redistribute it\n\t\t\t\t\t// freely, subject to the following restrictions:\n\t\t\t\t\t//\n\t\t\t\t\t// 1. The origin of this software must not be misrepresented; you must not\n\t\t\t\t\t//   claim that you wrote the original software. If you use this software\n\t\t\t\t\t//   in a product, an acknowledgment in the product documentation would be\n\t\t\t\t\t//   appreciated but is not required.\n\t\t\t\t\t// 2. Altered source versions must be plainly marked as such, and must not be\n\t\t\t\t\t//   misrepresented as being the original software.\n\t\t\t\t\t// 3. This notice may not be removed or altered from any source distribution.\n\n\t\t\t\t\tfunction GZheader() {\n\t\t\t\t\t\t/* true if compressed data believed to be text */\n\t\t\t\t\t\tthis.text = 0;\n\t\t\t\t\t\t/* modification time */\n\t\t\t\t\t\tthis.time = 0;\n\t\t\t\t\t\t/* extra flags (not used when writing a gzip file) */\n\t\t\t\t\t\tthis.xflags = 0;\n\t\t\t\t\t\t/* operating system */\n\t\t\t\t\t\tthis.os = 0;\n\t\t\t\t\t\t/* pointer to extra field or Z_NULL if none */\n\t\t\t\t\t\tthis.extra = null;\n\t\t\t\t\t\t/* extra field length (valid if extra != Z_NULL) */\n\t\t\t\t\t\tthis.extra_len = 0; // Actually, we don't need it in JS,\n\t\t\t\t\t\t// but leave for few code modifications\n\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// Setup limits is not necessary because in js we should not preallocate memory\n\t\t\t\t\t\t// for inflate use constant limit in 65536 bytes\n\t\t\t\t\t\t//\n\n\t\t\t\t\t\t/* space at extra (only when reading header) */\n\t\t\t\t\t\t// this.extra_max  = 0;\n\t\t\t\t\t\t/* pointer to zero-terminated file name or Z_NULL */\n\t\t\t\t\t\tthis.name = '';\n\t\t\t\t\t\t/* space at name (only when reading header) */\n\t\t\t\t\t\t// this.name_max   = 0;\n\t\t\t\t\t\t/* pointer to zero-terminated comment or Z_NULL */\n\t\t\t\t\t\tthis.comment = '';\n\t\t\t\t\t\t/* space at comment (only when reading header) */\n\t\t\t\t\t\t// this.comm_max   = 0;\n\t\t\t\t\t\t/* true if there was or will be a header crc */\n\t\t\t\t\t\tthis.hcrc = 0;\n\t\t\t\t\t\t/* true when done reading gzip header (not used when writing a gzip file) */\n\t\t\t\t\t\tthis.done = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tmodule.exports = GZheader;\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t],\n\t\t\t7: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\t'use strict';\n\n\t\t\t\t\t// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n\t\t\t\t\t// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n\t\t\t\t\t//\n\t\t\t\t\t// This software is provided 'as-is', without any express or implied\n\t\t\t\t\t// warranty. In no event will the authors be held liable for any damages\n\t\t\t\t\t// arising from the use of this software.\n\t\t\t\t\t//\n\t\t\t\t\t// Permission is granted to anyone to use this software for any purpose,\n\t\t\t\t\t// including commercial applications, and to alter it and redistribute it\n\t\t\t\t\t// freely, subject to the following restrictions:\n\t\t\t\t\t//\n\t\t\t\t\t// 1. The origin of this software must not be misrepresented; you must not\n\t\t\t\t\t//   claim that you wrote the original software. If you use this software\n\t\t\t\t\t//   in a product, an acknowledgment in the product documentation would be\n\t\t\t\t\t//   appreciated but is not required.\n\t\t\t\t\t// 2. Altered source versions must be plainly marked as such, and must not be\n\t\t\t\t\t//   misrepresented as being the original software.\n\t\t\t\t\t// 3. This notice may not be removed or altered from any source distribution.\n\n\t\t\t\t\t// See state defs from inflate.js\n\t\t\t\t\tvar BAD = 30; /* got a data error -- remain here until reset */\n\t\t\t\t\tvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n\t\t\t\t\t/*\n     Decode literal, length, and distance codes and write out the resulting\n     literal and match bytes until either not enough input or output is\n     available, an end-of-block is encountered, or a data error is encountered.\n     When large enough input and output buffers are supplied to inflate(), for\n     example, a 16K input buffer and a 64K output buffer, more than 95% of the\n     inflate execution time is spent in this routine.\n\n     Entry assumptions:\n\n          state.mode === LEN\n          strm.avail_in >= 6\n          strm.avail_out >= 258\n          start >= strm.avail_out\n          state.bits < 8\n\n     On return, state.mode is one of:\n\n          LEN -- ran out of enough output space or enough available input\n          TYPE -- reached end of block code, inflate() to interpret next block\n          BAD -- error in block data\n\n     Notes:\n\n      - The maximum input bits used by a length/distance pair is 15 bits for the\n        length code, 5 bits for the length extra, 15 bits for the distance code,\n        and 13 bits for the distance extra.  This totals 48 bits, or six bytes.\n        Therefore if strm.avail_in >= 6, then there is enough input to avoid\n        checking for available input while decoding.\n\n      - The maximum bytes that a single length/distance pair can output is 258\n        bytes, which is the maximum length that can be coded.  inflate_fast()\n        requires strm.avail_out >= 258 for each loop to avoid checking for\n        output space.\n   */\n\t\t\t\t\tmodule.exports = function inflate_fast( strm, start ) {\n\t\t\t\t\t\tvar state;\n\t\t\t\t\t\tvar _in; /* local strm.input */\n\t\t\t\t\t\tvar last; /* have enough input while in < last */\n\t\t\t\t\t\tvar _out; /* local strm.output */\n\t\t\t\t\t\tvar beg; /* inflate()'s initial strm.output */\n\t\t\t\t\t\tvar end; /* while out < end, enough space available */\n\t\t\t\t\t\t//#ifdef INFLATE_STRICT\n\t\t\t\t\t\tvar dmax; /* maximum distance from zlib header */\n\t\t\t\t\t\t//#endif\n\t\t\t\t\t\tvar wsize; /* window size or zero if not using window */\n\t\t\t\t\t\tvar whave; /* valid bytes in the window */\n\t\t\t\t\t\tvar wnext; /* window write index */\n\t\t\t\t\t\t// Use `s_window` instead `window`, avoid conflict with instrumentation tools\n\t\t\t\t\t\tvar s_window; /* allocated sliding window, if wsize != 0 */\n\t\t\t\t\t\tvar hold; /* local strm.hold */\n\t\t\t\t\t\tvar bits; /* local strm.bits */\n\t\t\t\t\t\tvar lcode; /* local strm.lencode */\n\t\t\t\t\t\tvar dcode; /* local strm.distcode */\n\t\t\t\t\t\tvar lmask; /* mask for first level of length codes */\n\t\t\t\t\t\tvar dmask; /* mask for first level of distance codes */\n\t\t\t\t\t\tvar here; /* retrieved table entry */\n\t\t\t\t\t\tvar op; /* code bits, operation, extra bits, or */\n\t\t\t\t\t\t/*  window position, window bytes to copy */\n\t\t\t\t\t\tvar len; /* match length, unused bytes */\n\t\t\t\t\t\tvar dist; /* match distance */\n\t\t\t\t\t\tvar from; /* where to copy match from */\n\t\t\t\t\t\tvar from_source;\n\n\t\t\t\t\t\tvar input, output; // JS specific, because we have no pointers\n\n\t\t\t\t\t\t/* copy state to local variables */\n\t\t\t\t\t\tstate = strm.state;\n\t\t\t\t\t\t//here = state.here;\n\t\t\t\t\t\t_in = strm.next_in;\n\t\t\t\t\t\tinput = strm.input;\n\t\t\t\t\t\tlast = _in + ( strm.avail_in - 5 );\n\t\t\t\t\t\t_out = strm.next_out;\n\t\t\t\t\t\toutput = strm.output;\n\t\t\t\t\t\tbeg = _out - ( start - strm.avail_out );\n\t\t\t\t\t\tend = _out + ( strm.avail_out - 257 );\n\t\t\t\t\t\t//#ifdef INFLATE_STRICT\n\t\t\t\t\t\tdmax = state.dmax;\n\t\t\t\t\t\t//#endif\n\t\t\t\t\t\twsize = state.wsize;\n\t\t\t\t\t\twhave = state.whave;\n\t\t\t\t\t\twnext = state.wnext;\n\t\t\t\t\t\ts_window = state.window;\n\t\t\t\t\t\thold = state.hold;\n\t\t\t\t\t\tbits = state.bits;\n\t\t\t\t\t\tlcode = state.lencode;\n\t\t\t\t\t\tdcode = state.distcode;\n\t\t\t\t\t\tlmask = ( 1 << state.lenbits ) - 1;\n\t\t\t\t\t\tdmask = ( 1 << state.distbits ) - 1;\n\n\t\t\t\t\t\t/* decode literals and length/distances until end-of-block or not enough\n       input data or output space */\n\n\t\t\t\t\t\ttop: do {\n\t\t\t\t\t\t\tif ( bits < 15 ) {\n\t\t\t\t\t\t\t\thold += input[ _in++ ] << bits;\n\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\thold += input[ _in++ ] << bits;\n\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\there = lcode[ hold & lmask ];\n\n\t\t\t\t\t\t\tdolen: for (;;) {\n\t\t\t\t\t\t\t\t// Goto emulation\n\t\t\t\t\t\t\t\top = here >>> 24 /*here.bits*/;\n\t\t\t\t\t\t\t\thold >>>= op;\n\t\t\t\t\t\t\t\tbits -= op;\n\t\t\t\t\t\t\t\top = ( here >>> 16 ) & 0xff /*here.op*/;\n\t\t\t\t\t\t\t\tif ( op === 0 ) {\n\t\t\t\t\t\t\t\t\t/* literal */\n\t\t\t\t\t\t\t\t\t//Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n\t\t\t\t\t\t\t\t\t//        \"inflate:         literal '%c'\\n\" :\n\t\t\t\t\t\t\t\t\t//        \"inflate:         literal 0x%02x\\n\", here.val));\n\t\t\t\t\t\t\t\t\toutput[ _out++ ] =\n\t\t\t\t\t\t\t\t\t\there & 0xffff /*here.val*/;\n\t\t\t\t\t\t\t\t} else if ( op & 16 ) {\n\t\t\t\t\t\t\t\t\t/* length base */\n\t\t\t\t\t\t\t\t\tlen = here & 0xffff /*here.val*/;\n\t\t\t\t\t\t\t\t\top &= 15; /* number of extra bits */\n\t\t\t\t\t\t\t\t\tif ( op ) {\n\t\t\t\t\t\t\t\t\t\tif ( bits < op ) {\n\t\t\t\t\t\t\t\t\t\t\thold += input[ _in++ ] << bits;\n\t\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tlen += hold & ( ( 1 << op ) - 1 );\n\t\t\t\t\t\t\t\t\t\thold >>>= op;\n\t\t\t\t\t\t\t\t\t\tbits -= op;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//Tracevv((stderr, \"inflate:         length %u\\n\", len));\n\t\t\t\t\t\t\t\t\tif ( bits < 15 ) {\n\t\t\t\t\t\t\t\t\t\thold += input[ _in++ ] << bits;\n\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t\thold += input[ _in++ ] << bits;\n\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\there = dcode[ hold & dmask ];\n\n\t\t\t\t\t\t\t\t\tdodist: for (;;) {\n\t\t\t\t\t\t\t\t\t\t// goto emulation\n\t\t\t\t\t\t\t\t\t\top = here >>> 24 /*here.bits*/;\n\t\t\t\t\t\t\t\t\t\thold >>>= op;\n\t\t\t\t\t\t\t\t\t\tbits -= op;\n\t\t\t\t\t\t\t\t\t\top = ( here >>> 16 ) & 0xff /*here.op*/;\n\n\t\t\t\t\t\t\t\t\t\tif ( op & 16 ) {\n\t\t\t\t\t\t\t\t\t\t\t/* distance base */\n\t\t\t\t\t\t\t\t\t\t\tdist = here & 0xffff /*here.val*/;\n\t\t\t\t\t\t\t\t\t\t\top &= 15; /* number of extra bits */\n\t\t\t\t\t\t\t\t\t\t\tif ( bits < op ) {\n\t\t\t\t\t\t\t\t\t\t\t\thold += input[ _in++ ] << bits;\n\t\t\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t\t\t\tif ( bits < op ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\thold +=\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinput[ _in++ ] << bits;\n\t\t\t\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tdist += hold & ( ( 1 << op ) - 1 );\n\t\t\t\t\t\t\t\t\t\t\t//#ifdef INFLATE_STRICT\n\t\t\t\t\t\t\t\t\t\t\tif ( dist > dmax ) {\n\t\t\t\t\t\t\t\t\t\t\t\tstrm.msg =\n\t\t\t\t\t\t\t\t\t\t\t\t\t'invalid distance too far back';\n\t\t\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak top;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t//#endif\n\t\t\t\t\t\t\t\t\t\t\thold >>>= op;\n\t\t\t\t\t\t\t\t\t\t\tbits -= op;\n\t\t\t\t\t\t\t\t\t\t\t//Tracevv((stderr, \"inflate:         distance %u\\n\", dist));\n\t\t\t\t\t\t\t\t\t\t\top =\n\t\t\t\t\t\t\t\t\t\t\t\t_out -\n\t\t\t\t\t\t\t\t\t\t\t\tbeg; /* max distance in output */\n\t\t\t\t\t\t\t\t\t\t\tif ( dist > op ) {\n\t\t\t\t\t\t\t\t\t\t\t\t/* see if copy from window */\n\t\t\t\t\t\t\t\t\t\t\t\top =\n\t\t\t\t\t\t\t\t\t\t\t\t\tdist -\n\t\t\t\t\t\t\t\t\t\t\t\t\top; /* distance back in window */\n\t\t\t\t\t\t\t\t\t\t\t\tif ( op > whave ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ( state.sane ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstrm.msg =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'invalid distance too far back';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak top;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t// (!) This block is disabled in zlib defaults,\n\t\t\t\t\t\t\t\t\t\t\t\t\t// don't enable it for binary compatibility\n\t\t\t\t\t\t\t\t\t\t\t\t\t//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n\t\t\t\t\t\t\t\t\t\t\t\t\t//                if (len <= op - whave) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t//                  do {\n\t\t\t\t\t\t\t\t\t\t\t\t\t//                    output[_out++] = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t//                  } while (--len);\n\t\t\t\t\t\t\t\t\t\t\t\t\t//                  continue top;\n\t\t\t\t\t\t\t\t\t\t\t\t\t//                }\n\t\t\t\t\t\t\t\t\t\t\t\t\t//                len -= op - whave;\n\t\t\t\t\t\t\t\t\t\t\t\t\t//                do {\n\t\t\t\t\t\t\t\t\t\t\t\t\t//                  output[_out++] = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t//                } while (--op > whave);\n\t\t\t\t\t\t\t\t\t\t\t\t\t//                if (op === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t//                  from = _out - dist;\n\t\t\t\t\t\t\t\t\t\t\t\t\t//                  do {\n\t\t\t\t\t\t\t\t\t\t\t\t\t//                    output[_out++] = output[from++];\n\t\t\t\t\t\t\t\t\t\t\t\t\t//                  } while (--len);\n\t\t\t\t\t\t\t\t\t\t\t\t\t//                  continue top;\n\t\t\t\t\t\t\t\t\t\t\t\t\t//                }\n\t\t\t\t\t\t\t\t\t\t\t\t\t//#endif\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tfrom = 0; // window index\n\t\t\t\t\t\t\t\t\t\t\t\tfrom_source = s_window;\n\t\t\t\t\t\t\t\t\t\t\t\tif ( wnext === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t/* very common case */\n\t\t\t\t\t\t\t\t\t\t\t\t\tfrom += wsize - op;\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ( op < len ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/* some from window */\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlen -= op;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toutput[ _out++ ] =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ts_window[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom++\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} while ( --op );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_out -\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdist; /* rest from output */\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom_source = output;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else if ( wnext < op ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t/* wrap around window */\n\t\t\t\t\t\t\t\t\t\t\t\t\tfrom += wsize + wnext - op;\n\t\t\t\t\t\t\t\t\t\t\t\t\top -= wnext;\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ( op < len ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/* some from end of window */\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlen -= op;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toutput[ _out++ ] =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ts_window[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom++\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} while ( --op );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( wnext < len ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/* some from start of window */\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\top = wnext;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlen -= op;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toutput[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_out++\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t] =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ts_window[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom++\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} while ( --op );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_out -\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdist; /* rest from output */\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom_source =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toutput;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t/* contiguous in window */\n\t\t\t\t\t\t\t\t\t\t\t\t\tfrom += wnext - op;\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ( op < len ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/* some from window */\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlen -= op;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toutput[ _out++ ] =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ts_window[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom++\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} while ( --op );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_out -\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdist; /* rest from output */\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom_source = output;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\twhile ( len > 2 ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\toutput[ _out++ ] =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom_source[ from++ ];\n\t\t\t\t\t\t\t\t\t\t\t\t\toutput[ _out++ ] =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom_source[ from++ ];\n\t\t\t\t\t\t\t\t\t\t\t\t\toutput[ _out++ ] =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom_source[ from++ ];\n\t\t\t\t\t\t\t\t\t\t\t\t\tlen -= 3;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif ( len ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\toutput[ _out++ ] =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom_source[ from++ ];\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ( len > 1 ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toutput[ _out++ ] =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom_source[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfrom++\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tfrom =\n\t\t\t\t\t\t\t\t\t\t\t\t\t_out -\n\t\t\t\t\t\t\t\t\t\t\t\t\tdist; /* copy direct from output */\n\t\t\t\t\t\t\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\t\t\t\t\t\t\t/* minimum length is three */\n\t\t\t\t\t\t\t\t\t\t\t\t\toutput[ _out++ ] =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toutput[ from++ ];\n\t\t\t\t\t\t\t\t\t\t\t\t\toutput[ _out++ ] =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toutput[ from++ ];\n\t\t\t\t\t\t\t\t\t\t\t\t\toutput[ _out++ ] =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toutput[ from++ ];\n\t\t\t\t\t\t\t\t\t\t\t\t\tlen -= 3;\n\t\t\t\t\t\t\t\t\t\t\t\t} while ( len > 2 );\n\t\t\t\t\t\t\t\t\t\t\t\tif ( len ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\toutput[ _out++ ] =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toutput[ from++ ];\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ( len > 1 ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toutput[ _out++ ] =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toutput[ from++ ];\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else if ( ( op & 64 ) === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\t/* 2nd level distance code */\n\t\t\t\t\t\t\t\t\t\t\there =\n\t\t\t\t\t\t\t\t\t\t\t\tdcode[\n\t\t\t\t\t\t\t\t\t\t\t\t\t( here &\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t0xffff ) /*here.val*/ +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t( hold &\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t( ( 1 << op ) -\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t1 ) )\n\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\tcontinue dodist;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tstrm.msg = 'invalid distance code';\n\t\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\t\tbreak top;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tbreak; // need to emulate goto via \"continue\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if ( ( op & 64 ) === 0 ) {\n\t\t\t\t\t\t\t\t\t/* 2nd level length code */\n\t\t\t\t\t\t\t\t\there =\n\t\t\t\t\t\t\t\t\t\tlcode[\n\t\t\t\t\t\t\t\t\t\t\t( here & 0xffff ) /*here.val*/ +\n\t\t\t\t\t\t\t\t\t\t\t\t( hold & ( ( 1 << op ) - 1 ) )\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\tcontinue dolen;\n\t\t\t\t\t\t\t\t} else if ( op & 32 ) {\n\t\t\t\t\t\t\t\t\t/* end-of-block */\n\t\t\t\t\t\t\t\t\t//Tracevv((stderr, \"inflate:         end of block\\n\"));\n\t\t\t\t\t\t\t\t\tstate.mode = TYPE;\n\t\t\t\t\t\t\t\t\tbreak top;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tstrm.msg = 'invalid literal/length code';\n\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\tbreak top;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak; // need to emulate goto via \"continue\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} while ( _in < last && _out < end );\n\n\t\t\t\t\t\t/* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n\t\t\t\t\t\tlen = bits >> 3;\n\t\t\t\t\t\t_in -= len;\n\t\t\t\t\t\tbits -= len << 3;\n\t\t\t\t\t\thold &= ( 1 << bits ) - 1;\n\n\t\t\t\t\t\t/* update state and return */\n\t\t\t\t\t\tstrm.next_in = _in;\n\t\t\t\t\t\tstrm.next_out = _out;\n\t\t\t\t\t\tstrm.avail_in =\n\t\t\t\t\t\t\t_in < last\n\t\t\t\t\t\t\t\t? 5 + ( last - _in )\n\t\t\t\t\t\t\t\t: 5 - ( _in - last );\n\t\t\t\t\t\tstrm.avail_out =\n\t\t\t\t\t\t\t_out < end\n\t\t\t\t\t\t\t\t? 257 + ( end - _out )\n\t\t\t\t\t\t\t\t: 257 - ( _out - end );\n\t\t\t\t\t\tstate.hold = hold;\n\t\t\t\t\t\tstate.bits = bits;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t],\n\t\t\t8: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\t'use strict';\n\n\t\t\t\t\t// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n\t\t\t\t\t// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n\t\t\t\t\t//\n\t\t\t\t\t// This software is provided 'as-is', without any express or implied\n\t\t\t\t\t// warranty. In no event will the authors be held liable for any damages\n\t\t\t\t\t// arising from the use of this software.\n\t\t\t\t\t//\n\t\t\t\t\t// Permission is granted to anyone to use this software for any purpose,\n\t\t\t\t\t// including commercial applications, and to alter it and redistribute it\n\t\t\t\t\t// freely, subject to the following restrictions:\n\t\t\t\t\t//\n\t\t\t\t\t// 1. The origin of this software must not be misrepresented; you must not\n\t\t\t\t\t//   claim that you wrote the original software. If you use this software\n\t\t\t\t\t//   in a product, an acknowledgment in the product documentation would be\n\t\t\t\t\t//   appreciated but is not required.\n\t\t\t\t\t// 2. Altered source versions must be plainly marked as such, and must not be\n\t\t\t\t\t//   misrepresented as being the original software.\n\t\t\t\t\t// 3. This notice may not be removed or altered from any source distribution.\n\n\t\t\t\t\tvar utils = require( '../utils/common' );\n\t\t\t\t\tvar adler32 = require( './adler32' );\n\t\t\t\t\tvar crc32 = require( './crc32' );\n\t\t\t\t\tvar inflate_fast = require( './inffast' );\n\t\t\t\t\tvar inflate_table = require( './inftrees' );\n\n\t\t\t\t\tvar CODES = 0;\n\t\t\t\t\tvar LENS = 1;\n\t\t\t\t\tvar DISTS = 2;\n\n\t\t\t\t\t/* Public constants ==========================================================*/\n\t\t\t\t\t/* ===========================================================================*/\n\n\t\t\t\t\t/* Allowed flush values; see deflate() and inflate() below for details */\n\t\t\t\t\t//var Z_NO_FLUSH      = 0;\n\t\t\t\t\t//var Z_PARTIAL_FLUSH = 1;\n\t\t\t\t\t//var Z_SYNC_FLUSH    = 2;\n\t\t\t\t\t//var Z_FULL_FLUSH    = 3;\n\t\t\t\t\tvar Z_FINISH = 4;\n\t\t\t\t\tvar Z_BLOCK = 5;\n\t\t\t\t\tvar Z_TREES = 6;\n\n\t\t\t\t\t/* Return codes for the compression/decompression functions. Negative values\n\t\t\t\t\t * are errors, positive values are used for special but normal events.\n\t\t\t\t\t */\n\t\t\t\t\tvar Z_OK = 0;\n\t\t\t\t\tvar Z_STREAM_END = 1;\n\t\t\t\t\tvar Z_NEED_DICT = 2;\n\t\t\t\t\t//var Z_ERRNO         = -1;\n\t\t\t\t\tvar Z_STREAM_ERROR = -2;\n\t\t\t\t\tvar Z_DATA_ERROR = -3;\n\t\t\t\t\tvar Z_MEM_ERROR = -4;\n\t\t\t\t\tvar Z_BUF_ERROR = -5;\n\t\t\t\t\t//var Z_VERSION_ERROR = -6;\n\n\t\t\t\t\t/* The deflate compression method */\n\t\t\t\t\tvar Z_DEFLATED = 8;\n\n\t\t\t\t\t/* STATES ====================================================================*/\n\t\t\t\t\t/* ===========================================================================*/\n\n\t\t\t\t\tvar HEAD = 1; /* i: waiting for magic header */\n\t\t\t\t\tvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\n\t\t\t\t\tvar TIME = 3; /* i: waiting for modification time (gzip) */\n\t\t\t\t\tvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\n\t\t\t\t\tvar EXLEN = 5; /* i: waiting for extra length (gzip) */\n\t\t\t\t\tvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\n\t\t\t\t\tvar NAME = 7; /* i: waiting for end of file name (gzip) */\n\t\t\t\t\tvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\n\t\t\t\t\tvar HCRC = 9; /* i: waiting for header crc (gzip) */\n\t\t\t\t\tvar DICTID = 10; /* i: waiting for dictionary check value */\n\t\t\t\t\tvar DICT = 11; /* waiting for inflateSetDictionary() call */\n\t\t\t\t\tvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\t\t\t\t\tvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\n\t\t\t\t\tvar STORED = 14; /* i: waiting for stored size (length and complement) */\n\t\t\t\t\tvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\n\t\t\t\t\tvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\n\t\t\t\t\tvar TABLE = 17; /* i: waiting for dynamic block table lengths */\n\t\t\t\t\tvar LENLENS = 18; /* i: waiting for code length code lengths */\n\t\t\t\t\tvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\n\t\t\t\t\tvar LEN_ = 20; /* i: same as LEN below, but only first time in */\n\t\t\t\t\tvar LEN = 21; /* i: waiting for length/lit/eob code */\n\t\t\t\t\tvar LENEXT = 22; /* i: waiting for length extra bits */\n\t\t\t\t\tvar DIST = 23; /* i: waiting for distance code */\n\t\t\t\t\tvar DISTEXT = 24; /* i: waiting for distance extra bits */\n\t\t\t\t\tvar MATCH = 25; /* o: waiting for output space to copy string */\n\t\t\t\t\tvar LIT = 26; /* o: waiting for output space to write literal */\n\t\t\t\t\tvar CHECK = 27; /* i: waiting for 32-bit check value */\n\t\t\t\t\tvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\n\t\t\t\t\tvar DONE = 29; /* finished check, done -- remain here until reset */\n\t\t\t\t\tvar BAD = 30; /* got a data error -- remain here until reset */\n\t\t\t\t\tvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\n\t\t\t\t\tvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n\t\t\t\t\t/* ===========================================================================*/\n\n\t\t\t\t\tvar ENOUGH_LENS = 852;\n\t\t\t\t\tvar ENOUGH_DISTS = 592;\n\t\t\t\t\t//var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);\n\n\t\t\t\t\tvar MAX_WBITS = 15;\n\t\t\t\t\t/* 32K LZ77 window */\n\t\t\t\t\tvar DEF_WBITS = MAX_WBITS;\n\n\t\t\t\t\tfunction zswap32( q ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t( ( q >>> 24 ) & 0xff ) +\n\t\t\t\t\t\t\t( ( q >>> 8 ) & 0xff00 ) +\n\t\t\t\t\t\t\t( ( q & 0xff00 ) << 8 ) +\n\t\t\t\t\t\t\t( ( q & 0xff ) << 24 )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction InflateState() {\n\t\t\t\t\t\tthis.mode = 0; /* current inflate mode */\n\t\t\t\t\t\tthis.last = false; /* true if processing last block */\n\t\t\t\t\t\tthis.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n\t\t\t\t\t\tthis.havedict = false; /* true if dictionary provided */\n\t\t\t\t\t\tthis.flags = 0; /* gzip header method and flags (0 if zlib) */\n\t\t\t\t\t\tthis.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n\t\t\t\t\t\tthis.check = 0; /* protected copy of check value */\n\t\t\t\t\t\tthis.total = 0; /* protected copy of output count */\n\t\t\t\t\t\t// TODO: may be {}\n\t\t\t\t\t\tthis.head =\n\t\t\t\t\t\t\tnull; /* where to save gzip header information */\n\n\t\t\t\t\t\t/* sliding window */\n\t\t\t\t\t\tthis.wbits = 0; /* log base 2 of requested window size */\n\t\t\t\t\t\tthis.wsize = 0; /* window size or zero if not using window */\n\t\t\t\t\t\tthis.whave = 0; /* valid bytes in the window */\n\t\t\t\t\t\tthis.wnext = 0; /* window write index */\n\t\t\t\t\t\tthis.window =\n\t\t\t\t\t\t\tnull; /* allocated sliding window, if needed */\n\n\t\t\t\t\t\t/* bit accumulator */\n\t\t\t\t\t\tthis.hold = 0; /* input bit accumulator */\n\t\t\t\t\t\tthis.bits = 0; /* number of bits in \"in\" */\n\n\t\t\t\t\t\t/* for string and stored block copying */\n\t\t\t\t\t\tthis.length = 0; /* literal or length of data to copy */\n\t\t\t\t\t\tthis.offset = 0; /* distance back to copy string from */\n\n\t\t\t\t\t\t/* for table and code decoding */\n\t\t\t\t\t\tthis.extra = 0; /* extra bits needed */\n\n\t\t\t\t\t\t/* fixed and dynamic code tables */\n\t\t\t\t\t\tthis.lencode =\n\t\t\t\t\t\t\tnull; /* starting table for length/literal codes */\n\t\t\t\t\t\tthis.distcode =\n\t\t\t\t\t\t\tnull; /* starting table for distance codes */\n\t\t\t\t\t\tthis.lenbits = 0; /* index bits for lencode */\n\t\t\t\t\t\tthis.distbits = 0; /* index bits for distcode */\n\n\t\t\t\t\t\t/* dynamic table building */\n\t\t\t\t\t\tthis.ncode = 0; /* number of code length code lengths */\n\t\t\t\t\t\tthis.nlen = 0; /* number of length code lengths */\n\t\t\t\t\t\tthis.ndist = 0; /* number of distance code lengths */\n\t\t\t\t\t\tthis.have = 0; /* number of code lengths in lens[] */\n\t\t\t\t\t\tthis.next = null; /* next available space in codes[] */\n\n\t\t\t\t\t\tthis.lens = new utils.Buf16(\n\t\t\t\t\t\t\t320\n\t\t\t\t\t\t); /* temporary storage for code lengths */\n\t\t\t\t\t\tthis.work = new utils.Buf16(\n\t\t\t\t\t\t\t288\n\t\t\t\t\t\t); /* work area for code table building */\n\n\t\t\t\t\t\t/*\n     because we don't have pointers in js, we use lencode and distcode directly\n     as buffers so we don't need codes\n    */\n\t\t\t\t\t\t//this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */\n\t\t\t\t\t\tthis.lendyn =\n\t\t\t\t\t\t\tnull; /* dynamic table for length/literal codes (JS specific) */\n\t\t\t\t\t\tthis.distdyn =\n\t\t\t\t\t\t\tnull; /* dynamic table for distance codes (JS specific) */\n\t\t\t\t\t\tthis.sane = 0; /* if false, allow invalid distance too far */\n\t\t\t\t\t\tthis.back = 0; /* bits back of last unprocessed length/lit */\n\t\t\t\t\t\tthis.was = 0; /* initial length of match */\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction inflateResetKeep( strm ) {\n\t\t\t\t\t\tvar state;\n\n\t\t\t\t\t\tif ( ! strm || ! strm.state ) {\n\t\t\t\t\t\t\treturn Z_STREAM_ERROR;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate = strm.state;\n\t\t\t\t\t\tstrm.total_in = strm.total_out = state.total = 0;\n\t\t\t\t\t\tstrm.msg = ''; /*Z_NULL*/\n\t\t\t\t\t\tif ( state.wrap ) {\n\t\t\t\t\t\t\t/* to support ill-conceived Java test suite */\n\t\t\t\t\t\t\tstrm.adler = state.wrap & 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.mode = HEAD;\n\t\t\t\t\t\tstate.last = 0;\n\t\t\t\t\t\tstate.havedict = 0;\n\t\t\t\t\t\tstate.dmax = 32768;\n\t\t\t\t\t\tstate.head = null /*Z_NULL*/;\n\t\t\t\t\t\tstate.hold = 0;\n\t\t\t\t\t\tstate.bits = 0;\n\t\t\t\t\t\t//state.lencode = state.distcode = state.next = state.codes;\n\t\t\t\t\t\tstate.lencode = state.lendyn = new utils.Buf32(\n\t\t\t\t\t\t\tENOUGH_LENS\n\t\t\t\t\t\t);\n\t\t\t\t\t\tstate.distcode = state.distdyn = new utils.Buf32(\n\t\t\t\t\t\t\tENOUGH_DISTS\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tstate.sane = 1;\n\t\t\t\t\t\tstate.back = -1;\n\t\t\t\t\t\t//Tracev((stderr, \"inflate: reset\\n\"));\n\t\t\t\t\t\treturn Z_OK;\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction inflateReset( strm ) {\n\t\t\t\t\t\tvar state;\n\n\t\t\t\t\t\tif ( ! strm || ! strm.state ) {\n\t\t\t\t\t\t\treturn Z_STREAM_ERROR;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate = strm.state;\n\t\t\t\t\t\tstate.wsize = 0;\n\t\t\t\t\t\tstate.whave = 0;\n\t\t\t\t\t\tstate.wnext = 0;\n\t\t\t\t\t\treturn inflateResetKeep( strm );\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction inflateReset2( strm, windowBits ) {\n\t\t\t\t\t\tvar wrap;\n\t\t\t\t\t\tvar state;\n\n\t\t\t\t\t\t/* get the state */\n\t\t\t\t\t\tif ( ! strm || ! strm.state ) {\n\t\t\t\t\t\t\treturn Z_STREAM_ERROR;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate = strm.state;\n\n\t\t\t\t\t\t/* extract wrap request from windowBits parameter */\n\t\t\t\t\t\tif ( windowBits < 0 ) {\n\t\t\t\t\t\t\twrap = 0;\n\t\t\t\t\t\t\twindowBits = -windowBits;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twrap = ( windowBits >> 4 ) + 1;\n\t\t\t\t\t\t\tif ( windowBits < 48 ) {\n\t\t\t\t\t\t\t\twindowBits &= 15;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* set number of window bits, free window if different */\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\twindowBits &&\n\t\t\t\t\t\t\t( windowBits < 8 || windowBits > 15 )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn Z_STREAM_ERROR;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tstate.window !== null &&\n\t\t\t\t\t\t\tstate.wbits !== windowBits\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tstate.window = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* update state and reset the rest of it */\n\t\t\t\t\t\tstate.wrap = wrap;\n\t\t\t\t\t\tstate.wbits = windowBits;\n\t\t\t\t\t\treturn inflateReset( strm );\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction inflateInit2( strm, windowBits ) {\n\t\t\t\t\t\tvar ret;\n\t\t\t\t\t\tvar state;\n\n\t\t\t\t\t\tif ( ! strm ) {\n\t\t\t\t\t\t\treturn Z_STREAM_ERROR;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t//strm.msg = Z_NULL;                 /* in case we return an error */\n\n\t\t\t\t\t\tstate = new InflateState();\n\n\t\t\t\t\t\t//if (state === Z_NULL) return Z_MEM_ERROR;\n\t\t\t\t\t\t//Tracev((stderr, \"inflate: allocated\\n\"));\n\t\t\t\t\t\tstrm.state = state;\n\t\t\t\t\t\tstate.window = null /*Z_NULL*/;\n\t\t\t\t\t\tret = inflateReset2( strm, windowBits );\n\t\t\t\t\t\tif ( ret !== Z_OK ) {\n\t\t\t\t\t\t\tstrm.state = null /*Z_NULL*/;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn ret;\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction inflateInit( strm ) {\n\t\t\t\t\t\treturn inflateInit2( strm, DEF_WBITS );\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n   Return state with length and distance decoding tables and index sizes set to\n   fixed code decoding.  Normally this returns fixed tables from inffixed.h.\n   If BUILDFIXED is defined, then instead this routine builds the tables the\n   first time it's called, and returns those tables the first time and\n   thereafter.  This reduces the size of the code by about 2K bytes, in\n   exchange for a little execution time.  However, BUILDFIXED should not be\n   used for threaded applications, since the rewriting of the tables and virgin\n   may not be thread-safe.\n   */\n\t\t\t\t\tvar virgin = true;\n\n\t\t\t\t\tvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\n\t\t\t\t\tfunction fixedtables( state ) {\n\t\t\t\t\t\t/* build fixed huffman tables if first call (may not be thread safe) */\n\t\t\t\t\t\tif ( virgin ) {\n\t\t\t\t\t\t\tvar sym;\n\n\t\t\t\t\t\t\tlenfix = new utils.Buf32( 512 );\n\t\t\t\t\t\t\tdistfix = new utils.Buf32( 32 );\n\n\t\t\t\t\t\t\t/* literal/length table */\n\t\t\t\t\t\t\tsym = 0;\n\t\t\t\t\t\t\twhile ( sym < 144 ) {\n\t\t\t\t\t\t\t\tstate.lens[ sym++ ] = 8;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\twhile ( sym < 256 ) {\n\t\t\t\t\t\t\t\tstate.lens[ sym++ ] = 9;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\twhile ( sym < 280 ) {\n\t\t\t\t\t\t\t\tstate.lens[ sym++ ] = 7;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\twhile ( sym < 288 ) {\n\t\t\t\t\t\t\t\tstate.lens[ sym++ ] = 8;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tinflate_table(\n\t\t\t\t\t\t\t\tLENS,\n\t\t\t\t\t\t\t\tstate.lens,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t288,\n\t\t\t\t\t\t\t\tlenfix,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tstate.work,\n\t\t\t\t\t\t\t\t{ bits: 9 }\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t/* distance table */\n\t\t\t\t\t\t\tsym = 0;\n\t\t\t\t\t\t\twhile ( sym < 32 ) {\n\t\t\t\t\t\t\t\tstate.lens[ sym++ ] = 5;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tinflate_table(\n\t\t\t\t\t\t\t\tDISTS,\n\t\t\t\t\t\t\t\tstate.lens,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t32,\n\t\t\t\t\t\t\t\tdistfix,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tstate.work,\n\t\t\t\t\t\t\t\t{ bits: 5 }\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t/* do this just once */\n\t\t\t\t\t\t\tvirgin = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.lencode = lenfix;\n\t\t\t\t\t\tstate.lenbits = 9;\n\t\t\t\t\t\tstate.distcode = distfix;\n\t\t\t\t\t\tstate.distbits = 5;\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n   Update the window with the last wsize (normally 32K) bytes written before\n   returning.  If window does not exist yet, create it.  This is only called\n   when a window is already in use, or when output has been written during this\n   inflate call, but the end of the deflate stream has not been reached yet.\n   It is also called to create a window for dictionary data when a dictionary\n   is loaded.\n\n   Providing output buffers larger than 32K to inflate() should provide a speed\n   advantage, since only the last 32K of output is copied to the sliding window\n   upon return from inflate(), and since all distances after the first 32K of\n   output will fall in the output data, making match copies simpler and faster.\n   The advantage may be dependent on the size of the processor's data caches.\n   */\n\t\t\t\t\tfunction updatewindow( strm, src, end, copy ) {\n\t\t\t\t\t\tvar dist;\n\t\t\t\t\t\tvar state = strm.state;\n\n\t\t\t\t\t\t/* if it hasn't been done already, allocate space for the window */\n\t\t\t\t\t\tif ( state.window === null ) {\n\t\t\t\t\t\t\tstate.wsize = 1 << state.wbits;\n\t\t\t\t\t\t\tstate.wnext = 0;\n\t\t\t\t\t\t\tstate.whave = 0;\n\n\t\t\t\t\t\t\tstate.window = new utils.Buf8( state.wsize );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* copy state->wsize or less output bytes into the circular window */\n\t\t\t\t\t\tif ( copy >= state.wsize ) {\n\t\t\t\t\t\t\tutils.arraySet(\n\t\t\t\t\t\t\t\tstate.window,\n\t\t\t\t\t\t\t\tsrc,\n\t\t\t\t\t\t\t\tend - state.wsize,\n\t\t\t\t\t\t\t\tstate.wsize,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tstate.wnext = 0;\n\t\t\t\t\t\t\tstate.whave = state.wsize;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdist = state.wsize - state.wnext;\n\t\t\t\t\t\t\tif ( dist > copy ) {\n\t\t\t\t\t\t\t\tdist = copy;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t//zmemcpy(state->window + state->wnext, end - copy, dist);\n\t\t\t\t\t\t\tutils.arraySet(\n\t\t\t\t\t\t\t\tstate.window,\n\t\t\t\t\t\t\t\tsrc,\n\t\t\t\t\t\t\t\tend - copy,\n\t\t\t\t\t\t\t\tdist,\n\t\t\t\t\t\t\t\tstate.wnext\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tcopy -= dist;\n\t\t\t\t\t\t\tif ( copy ) {\n\t\t\t\t\t\t\t\t//zmemcpy(state->window, end - copy, copy);\n\t\t\t\t\t\t\t\tutils.arraySet(\n\t\t\t\t\t\t\t\t\tstate.window,\n\t\t\t\t\t\t\t\t\tsrc,\n\t\t\t\t\t\t\t\t\tend - copy,\n\t\t\t\t\t\t\t\t\tcopy,\n\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tstate.wnext = copy;\n\t\t\t\t\t\t\t\tstate.whave = state.wsize;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tstate.wnext += dist;\n\t\t\t\t\t\t\t\tif ( state.wnext === state.wsize ) {\n\t\t\t\t\t\t\t\t\tstate.wnext = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( state.whave < state.wsize ) {\n\t\t\t\t\t\t\t\t\tstate.whave += dist;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction inflate( strm, flush ) {\n\t\t\t\t\t\tvar state;\n\t\t\t\t\t\tvar input, output; // input/output buffers\n\t\t\t\t\t\tvar next; /* next input INDEX */\n\t\t\t\t\t\tvar put; /* next output INDEX */\n\t\t\t\t\t\tvar have, left; /* available input and output */\n\t\t\t\t\t\tvar hold; /* bit buffer */\n\t\t\t\t\t\tvar bits; /* bits in bit buffer */\n\t\t\t\t\t\tvar _in,\n\t\t\t\t\t\t\t_out; /* save starting available input and output */\n\t\t\t\t\t\tvar copy; /* number of stored or match bytes to copy */\n\t\t\t\t\t\tvar from; /* where to copy match bytes from */\n\t\t\t\t\t\tvar from_source;\n\t\t\t\t\t\tvar here = 0; /* current decoding table entry */\n\t\t\t\t\t\tvar here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n\t\t\t\t\t\t//var last;                   /* parent table entry */\n\t\t\t\t\t\tvar last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n\t\t\t\t\t\tvar len; /* length to copy for repeats, bits to drop */\n\t\t\t\t\t\tvar ret; /* return code */\n\t\t\t\t\t\tvar hbuf = new utils.Buf8(\n\t\t\t\t\t\t\t4\n\t\t\t\t\t\t); /* buffer for gzip header crc calculation */\n\t\t\t\t\t\tvar opts;\n\n\t\t\t\t\t\tvar n; // temporary var for NEED_BITS\n\n\t\t\t\t\t\tvar order =\n\t\t\t\t\t\t\t/* permutation of code lengths */\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3,\n\t\t\t\t\t\t\t\t13, 2, 14, 1, 15,\n\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! strm ||\n\t\t\t\t\t\t\t! strm.state ||\n\t\t\t\t\t\t\t! strm.output ||\n\t\t\t\t\t\t\t( ! strm.input && strm.avail_in !== 0 )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn Z_STREAM_ERROR;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate = strm.state;\n\t\t\t\t\t\tif ( state.mode === TYPE ) {\n\t\t\t\t\t\t\tstate.mode = TYPEDO;\n\t\t\t\t\t\t} /* skip check */\n\n\t\t\t\t\t\t//--- LOAD() ---\n\t\t\t\t\t\tput = strm.next_out;\n\t\t\t\t\t\toutput = strm.output;\n\t\t\t\t\t\tleft = strm.avail_out;\n\t\t\t\t\t\tnext = strm.next_in;\n\t\t\t\t\t\tinput = strm.input;\n\t\t\t\t\t\thave = strm.avail_in;\n\t\t\t\t\t\thold = state.hold;\n\t\t\t\t\t\tbits = state.bits;\n\t\t\t\t\t\t//---\n\n\t\t\t\t\t\t_in = have;\n\t\t\t\t\t\t_out = left;\n\t\t\t\t\t\tret = Z_OK;\n\n\t\t\t\t\t\t// goto emulation\n\t\t\t\t\t\tinf_leave: for (;;) {\n\t\t\t\t\t\t\tswitch ( state.mode ) {\n\t\t\t\t\t\t\t\tcase HEAD:\n\t\t\t\t\t\t\t\t\tif ( state.wrap === 0 ) {\n\t\t\t\t\t\t\t\t\t\tstate.mode = TYPEDO;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//=== NEEDBITS(16);\n\t\t\t\t\t\t\t\t\twhile ( bits < 16 ) {\n\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\thold += input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\tif ( state.wrap & 2 && hold === 0x8b1f ) {\n\t\t\t\t\t\t\t\t\t\t/* gzip header */\n\t\t\t\t\t\t\t\t\t\tstate.check = 0 /*crc32(0L, Z_NULL, 0)*/;\n\t\t\t\t\t\t\t\t\t\t//=== CRC2(state.check, hold);\n\t\t\t\t\t\t\t\t\t\thbuf[ 0 ] = hold & 0xff;\n\t\t\t\t\t\t\t\t\t\thbuf[ 1 ] = ( hold >>> 8 ) & 0xff;\n\t\t\t\t\t\t\t\t\t\tstate.check = crc32(\n\t\t\t\t\t\t\t\t\t\t\tstate.check,\n\t\t\t\t\t\t\t\t\t\t\thbuf,\n\t\t\t\t\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t//===//\n\n\t\t\t\t\t\t\t\t\t\t//=== INITBITS();\n\t\t\t\t\t\t\t\t\t\thold = 0;\n\t\t\t\t\t\t\t\t\t\tbits = 0;\n\t\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\t\tstate.mode = FLAGS;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstate.flags = 0; /* expect zlib header */\n\t\t\t\t\t\t\t\t\tif ( state.head ) {\n\t\t\t\t\t\t\t\t\t\tstate.head.done = false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t! (\n\t\t\t\t\t\t\t\t\t\t\tstate.wrap & 1\n\t\t\t\t\t\t\t\t\t\t) /* check if zlib header allowed */ ||\n\t\t\t\t\t\t\t\t\t\t( ( ( hold & 0xff ) /*BITS(8)*/ << 8 ) +\n\t\t\t\t\t\t\t\t\t\t\t( hold >> 8 ) ) %\n\t\t\t\t\t\t\t\t\t\t\t31\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tstrm.msg = 'incorrect header check';\n\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t( hold & 0x0f ) /*BITS(4)*/ !==\n\t\t\t\t\t\t\t\t\t\tZ_DEFLATED\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tstrm.msg = 'unknown compression method';\n\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//--- DROPBITS(4) ---//\n\t\t\t\t\t\t\t\t\thold >>>= 4;\n\t\t\t\t\t\t\t\t\tbits -= 4;\n\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\tlen = ( hold & 0x0f ) /*BITS(4)*/ + 8;\n\t\t\t\t\t\t\t\t\tif ( state.wbits === 0 ) {\n\t\t\t\t\t\t\t\t\t\tstate.wbits = len;\n\t\t\t\t\t\t\t\t\t} else if ( len > state.wbits ) {\n\t\t\t\t\t\t\t\t\t\tstrm.msg = 'invalid window size';\n\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstate.dmax = 1 << len;\n\t\t\t\t\t\t\t\t\t//Tracev((stderr, \"inflate:   zlib header ok\\n\"));\n\t\t\t\t\t\t\t\t\tstrm.adler =\n\t\t\t\t\t\t\t\t\t\tstate.check = 1 /*adler32(0L, Z_NULL, 0)*/;\n\t\t\t\t\t\t\t\t\tstate.mode = hold & 0x200 ? DICTID : TYPE;\n\t\t\t\t\t\t\t\t\t//=== INITBITS();\n\t\t\t\t\t\t\t\t\thold = 0;\n\t\t\t\t\t\t\t\t\tbits = 0;\n\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase FLAGS:\n\t\t\t\t\t\t\t\t\t//=== NEEDBITS(16); */\n\t\t\t\t\t\t\t\t\twhile ( bits < 16 ) {\n\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\thold += input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\tstate.flags = hold;\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t( state.flags & 0xff ) !==\n\t\t\t\t\t\t\t\t\t\tZ_DEFLATED\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tstrm.msg = 'unknown compression method';\n\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( state.flags & 0xe000 ) {\n\t\t\t\t\t\t\t\t\t\tstrm.msg = 'unknown header flags set';\n\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( state.head ) {\n\t\t\t\t\t\t\t\t\t\tstate.head.text = ( hold >> 8 ) & 1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( state.flags & 0x0200 ) {\n\t\t\t\t\t\t\t\t\t\t//=== CRC2(state.check, hold);\n\t\t\t\t\t\t\t\t\t\thbuf[ 0 ] = hold & 0xff;\n\t\t\t\t\t\t\t\t\t\thbuf[ 1 ] = ( hold >>> 8 ) & 0xff;\n\t\t\t\t\t\t\t\t\t\tstate.check = crc32(\n\t\t\t\t\t\t\t\t\t\t\tstate.check,\n\t\t\t\t\t\t\t\t\t\t\thbuf,\n\t\t\t\t\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//=== INITBITS();\n\t\t\t\t\t\t\t\t\thold = 0;\n\t\t\t\t\t\t\t\t\tbits = 0;\n\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\tstate.mode = TIME;\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase TIME:\n\t\t\t\t\t\t\t\t\t//=== NEEDBITS(32); */\n\t\t\t\t\t\t\t\t\twhile ( bits < 32 ) {\n\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\thold += input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\tif ( state.head ) {\n\t\t\t\t\t\t\t\t\t\tstate.head.time = hold;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( state.flags & 0x0200 ) {\n\t\t\t\t\t\t\t\t\t\t//=== CRC4(state.check, hold)\n\t\t\t\t\t\t\t\t\t\thbuf[ 0 ] = hold & 0xff;\n\t\t\t\t\t\t\t\t\t\thbuf[ 1 ] = ( hold >>> 8 ) & 0xff;\n\t\t\t\t\t\t\t\t\t\thbuf[ 2 ] = ( hold >>> 16 ) & 0xff;\n\t\t\t\t\t\t\t\t\t\thbuf[ 3 ] = ( hold >>> 24 ) & 0xff;\n\t\t\t\t\t\t\t\t\t\tstate.check = crc32(\n\t\t\t\t\t\t\t\t\t\t\tstate.check,\n\t\t\t\t\t\t\t\t\t\t\thbuf,\n\t\t\t\t\t\t\t\t\t\t\t4,\n\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t//===\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//=== INITBITS();\n\t\t\t\t\t\t\t\t\thold = 0;\n\t\t\t\t\t\t\t\t\tbits = 0;\n\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\tstate.mode = OS;\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase OS:\n\t\t\t\t\t\t\t\t\t//=== NEEDBITS(16); */\n\t\t\t\t\t\t\t\t\twhile ( bits < 16 ) {\n\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\thold += input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\tif ( state.head ) {\n\t\t\t\t\t\t\t\t\t\tstate.head.xflags = hold & 0xff;\n\t\t\t\t\t\t\t\t\t\tstate.head.os = hold >> 8;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( state.flags & 0x0200 ) {\n\t\t\t\t\t\t\t\t\t\t//=== CRC2(state.check, hold);\n\t\t\t\t\t\t\t\t\t\thbuf[ 0 ] = hold & 0xff;\n\t\t\t\t\t\t\t\t\t\thbuf[ 1 ] = ( hold >>> 8 ) & 0xff;\n\t\t\t\t\t\t\t\t\t\tstate.check = crc32(\n\t\t\t\t\t\t\t\t\t\t\tstate.check,\n\t\t\t\t\t\t\t\t\t\t\thbuf,\n\t\t\t\t\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//=== INITBITS();\n\t\t\t\t\t\t\t\t\thold = 0;\n\t\t\t\t\t\t\t\t\tbits = 0;\n\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\tstate.mode = EXLEN;\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase EXLEN:\n\t\t\t\t\t\t\t\t\tif ( state.flags & 0x0400 ) {\n\t\t\t\t\t\t\t\t\t\t//=== NEEDBITS(16); */\n\t\t\t\t\t\t\t\t\t\twhile ( bits < 16 ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\t\thold += input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\t\tstate.length = hold;\n\t\t\t\t\t\t\t\t\t\tif ( state.head ) {\n\t\t\t\t\t\t\t\t\t\t\tstate.head.extra_len = hold;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif ( state.flags & 0x0200 ) {\n\t\t\t\t\t\t\t\t\t\t\t//=== CRC2(state.check, hold);\n\t\t\t\t\t\t\t\t\t\t\thbuf[ 0 ] = hold & 0xff;\n\t\t\t\t\t\t\t\t\t\t\thbuf[ 1 ] = ( hold >>> 8 ) & 0xff;\n\t\t\t\t\t\t\t\t\t\t\tstate.check = crc32(\n\t\t\t\t\t\t\t\t\t\t\t\tstate.check,\n\t\t\t\t\t\t\t\t\t\t\t\thbuf,\n\t\t\t\t\t\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t//=== INITBITS();\n\t\t\t\t\t\t\t\t\t\thold = 0;\n\t\t\t\t\t\t\t\t\t\tbits = 0;\n\t\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\t} else if ( state.head ) {\n\t\t\t\t\t\t\t\t\t\tstate.head.extra = null /*Z_NULL*/;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstate.mode = EXTRA;\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase EXTRA:\n\t\t\t\t\t\t\t\t\tif ( state.flags & 0x0400 ) {\n\t\t\t\t\t\t\t\t\t\tcopy = state.length;\n\t\t\t\t\t\t\t\t\t\tif ( copy > have ) {\n\t\t\t\t\t\t\t\t\t\t\tcopy = have;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif ( copy ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( state.head ) {\n\t\t\t\t\t\t\t\t\t\t\t\tlen =\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.head.extra_len -\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.length;\n\t\t\t\t\t\t\t\t\t\t\t\tif ( ! state.head.extra ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Use untyped array for more convenient processing later\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.head.extra =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnew Array(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.head.extra_len\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tutils.arraySet(\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.head.extra,\n\t\t\t\t\t\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\t\t\t\t\t\tnext,\n\t\t\t\t\t\t\t\t\t\t\t\t\t// extra field is limited to 65536 bytes\n\t\t\t\t\t\t\t\t\t\t\t\t\t// - no need for additional size check\n\t\t\t\t\t\t\t\t\t\t\t\t\tcopy,\n\t\t\t\t\t\t\t\t\t\t\t\t\t/*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n\t\t\t\t\t\t\t\t\t\t\t\t\tlen\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t//zmemcpy(state.head.extra + len, next,\n\t\t\t\t\t\t\t\t\t\t\t\t//        len + copy > state.head.extra_max ?\n\t\t\t\t\t\t\t\t\t\t\t\t//        state.head.extra_max - len : copy);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tif ( state.flags & 0x0200 ) {\n\t\t\t\t\t\t\t\t\t\t\t\tstate.check = crc32(\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.check,\n\t\t\t\t\t\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcopy,\n\t\t\t\t\t\t\t\t\t\t\t\t\tnext\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\thave -= copy;\n\t\t\t\t\t\t\t\t\t\t\tnext += copy;\n\t\t\t\t\t\t\t\t\t\t\tstate.length -= copy;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif ( state.length ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstate.length = 0;\n\t\t\t\t\t\t\t\t\tstate.mode = NAME;\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase NAME:\n\t\t\t\t\t\t\t\t\tif ( state.flags & 0x0800 ) {\n\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcopy = 0;\n\t\t\t\t\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\t\t\t\t\t// TODO: 2 or 1 bytes?\n\t\t\t\t\t\t\t\t\t\t\tlen = input[ next + copy++ ];\n\t\t\t\t\t\t\t\t\t\t\t/* use constant limit because in js we should not preallocate memory */\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tstate.head &&\n\t\t\t\t\t\t\t\t\t\t\t\tlen &&\n\t\t\t\t\t\t\t\t\t\t\t\tstate.length <\n\t\t\t\t\t\t\t\t\t\t\t\t\t65536 /*state.head.name_max*/\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tstate.head.name +=\n\t\t\t\t\t\t\t\t\t\t\t\t\tString.fromCharCode( len );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} while ( len && copy < have );\n\n\t\t\t\t\t\t\t\t\t\tif ( state.flags & 0x0200 ) {\n\t\t\t\t\t\t\t\t\t\t\tstate.check = crc32(\n\t\t\t\t\t\t\t\t\t\t\t\tstate.check,\n\t\t\t\t\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\t\t\t\t\tcopy,\n\t\t\t\t\t\t\t\t\t\t\t\tnext\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thave -= copy;\n\t\t\t\t\t\t\t\t\t\tnext += copy;\n\t\t\t\t\t\t\t\t\t\tif ( len ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else if ( state.head ) {\n\t\t\t\t\t\t\t\t\t\tstate.head.name = null;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstate.length = 0;\n\t\t\t\t\t\t\t\t\tstate.mode = COMMENT;\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase COMMENT:\n\t\t\t\t\t\t\t\t\tif ( state.flags & 0x1000 ) {\n\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcopy = 0;\n\t\t\t\t\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\t\t\t\t\tlen = input[ next + copy++ ];\n\t\t\t\t\t\t\t\t\t\t\t/* use constant limit because in js we should not preallocate memory */\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tstate.head &&\n\t\t\t\t\t\t\t\t\t\t\t\tlen &&\n\t\t\t\t\t\t\t\t\t\t\t\tstate.length <\n\t\t\t\t\t\t\t\t\t\t\t\t\t65536 /*state.head.comm_max*/\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tstate.head.comment +=\n\t\t\t\t\t\t\t\t\t\t\t\t\tString.fromCharCode( len );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} while ( len && copy < have );\n\t\t\t\t\t\t\t\t\t\tif ( state.flags & 0x0200 ) {\n\t\t\t\t\t\t\t\t\t\t\tstate.check = crc32(\n\t\t\t\t\t\t\t\t\t\t\t\tstate.check,\n\t\t\t\t\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\t\t\t\t\tcopy,\n\t\t\t\t\t\t\t\t\t\t\t\tnext\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thave -= copy;\n\t\t\t\t\t\t\t\t\t\tnext += copy;\n\t\t\t\t\t\t\t\t\t\tif ( len ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else if ( state.head ) {\n\t\t\t\t\t\t\t\t\t\tstate.head.comment = null;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstate.mode = HCRC;\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase HCRC:\n\t\t\t\t\t\t\t\t\tif ( state.flags & 0x0200 ) {\n\t\t\t\t\t\t\t\t\t\t//=== NEEDBITS(16); */\n\t\t\t\t\t\t\t\t\t\twhile ( bits < 16 ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\t\thold += input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\thold !==\n\t\t\t\t\t\t\t\t\t\t\t( state.check & 0xffff )\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tstrm.msg = 'header crc mismatch';\n\t\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t//=== INITBITS();\n\t\t\t\t\t\t\t\t\t\thold = 0;\n\t\t\t\t\t\t\t\t\t\tbits = 0;\n\t\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( state.head ) {\n\t\t\t\t\t\t\t\t\t\tstate.head.hcrc =\n\t\t\t\t\t\t\t\t\t\t\t( state.flags >> 9 ) & 1;\n\t\t\t\t\t\t\t\t\t\tstate.head.done = true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstrm.adler = state.check = 0;\n\t\t\t\t\t\t\t\t\tstate.mode = TYPE;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase DICTID:\n\t\t\t\t\t\t\t\t\t//=== NEEDBITS(32); */\n\t\t\t\t\t\t\t\t\twhile ( bits < 32 ) {\n\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\thold += input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\tstrm.adler = state.check = zswap32( hold );\n\t\t\t\t\t\t\t\t\t//=== INITBITS();\n\t\t\t\t\t\t\t\t\thold = 0;\n\t\t\t\t\t\t\t\t\tbits = 0;\n\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\tstate.mode = DICT;\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase DICT:\n\t\t\t\t\t\t\t\t\tif ( state.havedict === 0 ) {\n\t\t\t\t\t\t\t\t\t\t//--- RESTORE() ---\n\t\t\t\t\t\t\t\t\t\tstrm.next_out = put;\n\t\t\t\t\t\t\t\t\t\tstrm.avail_out = left;\n\t\t\t\t\t\t\t\t\t\tstrm.next_in = next;\n\t\t\t\t\t\t\t\t\t\tstrm.avail_in = have;\n\t\t\t\t\t\t\t\t\t\tstate.hold = hold;\n\t\t\t\t\t\t\t\t\t\tstate.bits = bits;\n\t\t\t\t\t\t\t\t\t\t//---\n\t\t\t\t\t\t\t\t\t\treturn Z_NEED_DICT;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstrm.adler =\n\t\t\t\t\t\t\t\t\t\tstate.check = 1 /*adler32(0L, Z_NULL, 0)*/;\n\t\t\t\t\t\t\t\t\tstate.mode = TYPE;\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase TYPE:\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tflush === Z_BLOCK ||\n\t\t\t\t\t\t\t\t\t\tflush === Z_TREES\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase TYPEDO:\n\t\t\t\t\t\t\t\t\tif ( state.last ) {\n\t\t\t\t\t\t\t\t\t\t//--- BYTEBITS() ---//\n\t\t\t\t\t\t\t\t\t\thold >>>= bits & 7;\n\t\t\t\t\t\t\t\t\t\tbits -= bits & 7;\n\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t\tstate.mode = CHECK;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//=== NEEDBITS(3); */\n\t\t\t\t\t\t\t\t\twhile ( bits < 3 ) {\n\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\thold += input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\tstate.last = hold & 0x01 /*BITS(1)*/;\n\t\t\t\t\t\t\t\t\t//--- DROPBITS(1) ---//\n\t\t\t\t\t\t\t\t\thold >>>= 1;\n\t\t\t\t\t\t\t\t\tbits -= 1;\n\t\t\t\t\t\t\t\t\t//---//\n\n\t\t\t\t\t\t\t\t\tswitch ( hold & 0x03 /*BITS(2)*/ ) {\n\t\t\t\t\t\t\t\t\t\tcase 0 /* stored block */:\n\t\t\t\t\t\t\t\t\t\t\t//Tracev((stderr, \"inflate:     stored block%s\\n\",\n\t\t\t\t\t\t\t\t\t\t\t//        state.last ? \" (last)\" : \"\"));\n\t\t\t\t\t\t\t\t\t\t\tstate.mode = STORED;\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 1 /* fixed block */:\n\t\t\t\t\t\t\t\t\t\t\tfixedtables( state );\n\t\t\t\t\t\t\t\t\t\t\t//Tracev((stderr, \"inflate:     fixed codes block%s\\n\",\n\t\t\t\t\t\t\t\t\t\t\t//        state.last ? \" (last)\" : \"\"));\n\t\t\t\t\t\t\t\t\t\t\tstate.mode =\n\t\t\t\t\t\t\t\t\t\t\t\tLEN_; /* decode codes */\n\t\t\t\t\t\t\t\t\t\t\tif ( flush === Z_TREES ) {\n\t\t\t\t\t\t\t\t\t\t\t\t//--- DROPBITS(2) ---//\n\t\t\t\t\t\t\t\t\t\t\t\thold >>>= 2;\n\t\t\t\t\t\t\t\t\t\t\t\tbits -= 2;\n\t\t\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 2 /* dynamic block */:\n\t\t\t\t\t\t\t\t\t\t\t//Tracev((stderr, \"inflate:     dynamic codes block%s\\n\",\n\t\t\t\t\t\t\t\t\t\t\t//        state.last ? \" (last)\" : \"\"));\n\t\t\t\t\t\t\t\t\t\t\tstate.mode = TABLE;\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\t\t\tstrm.msg = 'invalid block type';\n\t\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//--- DROPBITS(2) ---//\n\t\t\t\t\t\t\t\t\thold >>>= 2;\n\t\t\t\t\t\t\t\t\tbits -= 2;\n\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase STORED:\n\t\t\t\t\t\t\t\t\t//--- BYTEBITS() ---// /* go to byte boundary */\n\t\t\t\t\t\t\t\t\thold >>>= bits & 7;\n\t\t\t\t\t\t\t\t\tbits -= bits & 7;\n\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t//=== NEEDBITS(32); */\n\t\t\t\t\t\t\t\t\twhile ( bits < 32 ) {\n\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\thold += input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t( hold & 0xffff ) !==\n\t\t\t\t\t\t\t\t\t\t( ( hold >>> 16 ) ^ 0xffff )\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tstrm.msg =\n\t\t\t\t\t\t\t\t\t\t\t'invalid stored block lengths';\n\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstate.length = hold & 0xffff;\n\t\t\t\t\t\t\t\t\t//Tracev((stderr, \"inflate:       stored length %u\\n\",\n\t\t\t\t\t\t\t\t\t//        state.length));\n\t\t\t\t\t\t\t\t\t//=== INITBITS();\n\t\t\t\t\t\t\t\t\thold = 0;\n\t\t\t\t\t\t\t\t\tbits = 0;\n\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\tstate.mode = COPY_;\n\t\t\t\t\t\t\t\t\tif ( flush === Z_TREES ) {\n\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase COPY_:\n\t\t\t\t\t\t\t\t\tstate.mode = COPY;\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase COPY:\n\t\t\t\t\t\t\t\t\tcopy = state.length;\n\t\t\t\t\t\t\t\t\tif ( copy ) {\n\t\t\t\t\t\t\t\t\t\tif ( copy > have ) {\n\t\t\t\t\t\t\t\t\t\t\tcopy = have;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif ( copy > left ) {\n\t\t\t\t\t\t\t\t\t\t\tcopy = left;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif ( copy === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t//--- zmemcpy(put, next, copy); ---\n\t\t\t\t\t\t\t\t\t\tutils.arraySet(\n\t\t\t\t\t\t\t\t\t\t\toutput,\n\t\t\t\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\t\t\t\tnext,\n\t\t\t\t\t\t\t\t\t\t\tcopy,\n\t\t\t\t\t\t\t\t\t\t\tput\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t\thave -= copy;\n\t\t\t\t\t\t\t\t\t\tnext += copy;\n\t\t\t\t\t\t\t\t\t\tleft -= copy;\n\t\t\t\t\t\t\t\t\t\tput += copy;\n\t\t\t\t\t\t\t\t\t\tstate.length -= copy;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//Tracev((stderr, \"inflate:       stored end\\n\"));\n\t\t\t\t\t\t\t\t\tstate.mode = TYPE;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase TABLE:\n\t\t\t\t\t\t\t\t\t//=== NEEDBITS(14); */\n\t\t\t\t\t\t\t\t\twhile ( bits < 14 ) {\n\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\thold += input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\tstate.nlen =\n\t\t\t\t\t\t\t\t\t\t( hold & 0x1f ) /*BITS(5)*/ + 257;\n\t\t\t\t\t\t\t\t\t//--- DROPBITS(5) ---//\n\t\t\t\t\t\t\t\t\thold >>>= 5;\n\t\t\t\t\t\t\t\t\tbits -= 5;\n\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\tstate.ndist =\n\t\t\t\t\t\t\t\t\t\t( hold & 0x1f ) /*BITS(5)*/ + 1;\n\t\t\t\t\t\t\t\t\t//--- DROPBITS(5) ---//\n\t\t\t\t\t\t\t\t\thold >>>= 5;\n\t\t\t\t\t\t\t\t\tbits -= 5;\n\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\tstate.ncode =\n\t\t\t\t\t\t\t\t\t\t( hold & 0x0f ) /*BITS(4)*/ + 4;\n\t\t\t\t\t\t\t\t\t//--- DROPBITS(4) ---//\n\t\t\t\t\t\t\t\t\thold >>>= 4;\n\t\t\t\t\t\t\t\t\tbits -= 4;\n\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t//#ifndef PKZIP_BUG_WORKAROUND\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tstate.nlen > 286 ||\n\t\t\t\t\t\t\t\t\t\tstate.ndist > 30\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tstrm.msg =\n\t\t\t\t\t\t\t\t\t\t\t'too many length or distance symbols';\n\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//#endif\n\t\t\t\t\t\t\t\t\t//Tracev((stderr, \"inflate:       table sizes ok\\n\"));\n\t\t\t\t\t\t\t\t\tstate.have = 0;\n\t\t\t\t\t\t\t\t\tstate.mode = LENLENS;\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase LENLENS:\n\t\t\t\t\t\t\t\t\twhile ( state.have < state.ncode ) {\n\t\t\t\t\t\t\t\t\t\t//=== NEEDBITS(3);\n\t\t\t\t\t\t\t\t\t\twhile ( bits < 3 ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\t\thold += input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\t\tstate.lens[ order[ state.have++ ] ] =\n\t\t\t\t\t\t\t\t\t\t\thold & 0x07; //BITS(3);\n\t\t\t\t\t\t\t\t\t\t//--- DROPBITS(3) ---//\n\t\t\t\t\t\t\t\t\t\thold >>>= 3;\n\t\t\t\t\t\t\t\t\t\tbits -= 3;\n\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\twhile ( state.have < 19 ) {\n\t\t\t\t\t\t\t\t\t\tstate.lens[ order[ state.have++ ] ] = 0;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// We have separate tables & no pointers. 2 commented lines below not needed.\n\t\t\t\t\t\t\t\t\t//state.next = state.codes;\n\t\t\t\t\t\t\t\t\t//state.lencode = state.next;\n\t\t\t\t\t\t\t\t\t// Switch to use dynamic table\n\t\t\t\t\t\t\t\t\tstate.lencode = state.lendyn;\n\t\t\t\t\t\t\t\t\tstate.lenbits = 7;\n\n\t\t\t\t\t\t\t\t\topts = { bits: state.lenbits };\n\t\t\t\t\t\t\t\t\tret = inflate_table(\n\t\t\t\t\t\t\t\t\t\tCODES,\n\t\t\t\t\t\t\t\t\t\tstate.lens,\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t19,\n\t\t\t\t\t\t\t\t\t\tstate.lencode,\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\tstate.work,\n\t\t\t\t\t\t\t\t\t\topts\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tstate.lenbits = opts.bits;\n\n\t\t\t\t\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\t\t\t\t\tstrm.msg = 'invalid code lengths set';\n\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//Tracev((stderr, \"inflate:       code lengths ok\\n\"));\n\t\t\t\t\t\t\t\t\tstate.have = 0;\n\t\t\t\t\t\t\t\t\tstate.mode = CODELENS;\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase CODELENS:\n\t\t\t\t\t\t\t\t\twhile (\n\t\t\t\t\t\t\t\t\t\tstate.have <\n\t\t\t\t\t\t\t\t\t\tstate.nlen + state.ndist\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tfor (;;) {\n\t\t\t\t\t\t\t\t\t\t\there =\n\t\t\t\t\t\t\t\t\t\t\t\tstate.lencode[\n\t\t\t\t\t\t\t\t\t\t\t\t\thold &\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t( ( 1 <<\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.lenbits ) -\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t1 )\n\t\t\t\t\t\t\t\t\t\t\t\t]; /*BITS(state.lenbits)*/\n\t\t\t\t\t\t\t\t\t\t\there_bits = here >>> 24;\n\t\t\t\t\t\t\t\t\t\t\there_op = ( here >>> 16 ) & 0xff;\n\t\t\t\t\t\t\t\t\t\t\there_val = here & 0xffff;\n\n\t\t\t\t\t\t\t\t\t\t\tif ( here_bits <= bits ) {\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t//--- PULLBYTE() ---//\n\t\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\t\thold += input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif ( here_val < 16 ) {\n\t\t\t\t\t\t\t\t\t\t\t//--- DROPBITS(here.bits) ---//\n\t\t\t\t\t\t\t\t\t\t\thold >>>= here_bits;\n\t\t\t\t\t\t\t\t\t\t\tbits -= here_bits;\n\t\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t\t\tstate.lens[ state.have++ ] =\n\t\t\t\t\t\t\t\t\t\t\t\there_val;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tif ( here_val === 16 ) {\n\t\t\t\t\t\t\t\t\t\t\t\t//=== NEEDBITS(here.bits + 2);\n\t\t\t\t\t\t\t\t\t\t\t\tn = here_bits + 2;\n\t\t\t\t\t\t\t\t\t\t\t\twhile ( bits < n ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\t\t\t\thold +=\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinput[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\t\t\t\t//--- DROPBITS(here.bits) ---//\n\t\t\t\t\t\t\t\t\t\t\t\thold >>>= here_bits;\n\t\t\t\t\t\t\t\t\t\t\t\tbits -= here_bits;\n\t\t\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t\t\t\tif ( state.have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tstrm.msg =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'invalid bit length repeat';\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tlen =\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.lens[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.have - 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\t\tcopy = 3 + ( hold & 0x03 ); //BITS(2);\n\t\t\t\t\t\t\t\t\t\t\t\t//--- DROPBITS(2) ---//\n\t\t\t\t\t\t\t\t\t\t\t\thold >>>= 2;\n\t\t\t\t\t\t\t\t\t\t\t\tbits -= 2;\n\t\t\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t\t\t} else if ( here_val === 17 ) {\n\t\t\t\t\t\t\t\t\t\t\t\t//=== NEEDBITS(here.bits + 3);\n\t\t\t\t\t\t\t\t\t\t\t\tn = here_bits + 3;\n\t\t\t\t\t\t\t\t\t\t\t\twhile ( bits < n ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\t\t\t\thold +=\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinput[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\t\t\t\t//--- DROPBITS(here.bits) ---//\n\t\t\t\t\t\t\t\t\t\t\t\thold >>>= here_bits;\n\t\t\t\t\t\t\t\t\t\t\t\tbits -= here_bits;\n\t\t\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t\t\t\tlen = 0;\n\t\t\t\t\t\t\t\t\t\t\t\tcopy = 3 + ( hold & 0x07 ); //BITS(3);\n\t\t\t\t\t\t\t\t\t\t\t\t//--- DROPBITS(3) ---//\n\t\t\t\t\t\t\t\t\t\t\t\thold >>>= 3;\n\t\t\t\t\t\t\t\t\t\t\t\tbits -= 3;\n\t\t\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t//=== NEEDBITS(here.bits + 7);\n\t\t\t\t\t\t\t\t\t\t\t\tn = here_bits + 7;\n\t\t\t\t\t\t\t\t\t\t\t\twhile ( bits < n ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\t\t\t\thold +=\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinput[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\t\t\t\t//--- DROPBITS(here.bits) ---//\n\t\t\t\t\t\t\t\t\t\t\t\thold >>>= here_bits;\n\t\t\t\t\t\t\t\t\t\t\t\tbits -= here_bits;\n\t\t\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t\t\t\tlen = 0;\n\t\t\t\t\t\t\t\t\t\t\t\tcopy = 11 + ( hold & 0x7f ); //BITS(7);\n\t\t\t\t\t\t\t\t\t\t\t\t//--- DROPBITS(7) ---//\n\t\t\t\t\t\t\t\t\t\t\t\thold >>>= 7;\n\t\t\t\t\t\t\t\t\t\t\t\tbits -= 7;\n\t\t\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tstate.have + copy >\n\t\t\t\t\t\t\t\t\t\t\t\tstate.nlen + state.ndist\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tstrm.msg =\n\t\t\t\t\t\t\t\t\t\t\t\t\t'invalid bit length repeat';\n\t\t\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\twhile ( copy-- ) {\n\t\t\t\t\t\t\t\t\t\t\t\tstate.lens[ state.have++ ] =\n\t\t\t\t\t\t\t\t\t\t\t\t\tlen;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t/* handle error breaks in while */\n\t\t\t\t\t\t\t\t\tif ( state.mode === BAD ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t/* check for end-of-block code (better have one) */\n\t\t\t\t\t\t\t\t\tif ( state.lens[ 256 ] === 0 ) {\n\t\t\t\t\t\t\t\t\t\tstrm.msg =\n\t\t\t\t\t\t\t\t\t\t\t'invalid code -- missing end-of-block';\n\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t/* build code tables -- note: do not change the lenbits or distbits\n             values here (9 and 6) without reading the comments in inftrees.h\n             concerning the ENOUGH constants, which depend on those values */\n\t\t\t\t\t\t\t\t\tstate.lenbits = 9;\n\n\t\t\t\t\t\t\t\t\topts = { bits: state.lenbits };\n\t\t\t\t\t\t\t\t\tret = inflate_table(\n\t\t\t\t\t\t\t\t\t\tLENS,\n\t\t\t\t\t\t\t\t\t\tstate.lens,\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\tstate.nlen,\n\t\t\t\t\t\t\t\t\t\tstate.lencode,\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\tstate.work,\n\t\t\t\t\t\t\t\t\t\topts\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t// We have separate tables & no pointers. 2 commented lines below not needed.\n\t\t\t\t\t\t\t\t\t// state.next_index = opts.table_index;\n\t\t\t\t\t\t\t\t\tstate.lenbits = opts.bits;\n\t\t\t\t\t\t\t\t\t// state.lencode = state.next;\n\n\t\t\t\t\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\t\t\t\t\tstrm.msg =\n\t\t\t\t\t\t\t\t\t\t\t'invalid literal/lengths set';\n\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tstate.distbits = 6;\n\t\t\t\t\t\t\t\t\t//state.distcode.copy(state.codes);\n\t\t\t\t\t\t\t\t\t// Switch to use dynamic table\n\t\t\t\t\t\t\t\t\tstate.distcode = state.distdyn;\n\t\t\t\t\t\t\t\t\topts = { bits: state.distbits };\n\t\t\t\t\t\t\t\t\tret = inflate_table(\n\t\t\t\t\t\t\t\t\t\tDISTS,\n\t\t\t\t\t\t\t\t\t\tstate.lens,\n\t\t\t\t\t\t\t\t\t\tstate.nlen,\n\t\t\t\t\t\t\t\t\t\tstate.ndist,\n\t\t\t\t\t\t\t\t\t\tstate.distcode,\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\tstate.work,\n\t\t\t\t\t\t\t\t\t\topts\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t// We have separate tables & no pointers. 2 commented lines below not needed.\n\t\t\t\t\t\t\t\t\t// state.next_index = opts.table_index;\n\t\t\t\t\t\t\t\t\tstate.distbits = opts.bits;\n\t\t\t\t\t\t\t\t\t// state.distcode = state.next;\n\n\t\t\t\t\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\t\t\t\t\tstrm.msg = 'invalid distances set';\n\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//Tracev((stderr, 'inflate:       codes ok\\n'));\n\t\t\t\t\t\t\t\t\tstate.mode = LEN_;\n\t\t\t\t\t\t\t\t\tif ( flush === Z_TREES ) {\n\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase LEN_:\n\t\t\t\t\t\t\t\t\tstate.mode = LEN;\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase LEN:\n\t\t\t\t\t\t\t\t\tif ( have >= 6 && left >= 258 ) {\n\t\t\t\t\t\t\t\t\t\t//--- RESTORE() ---\n\t\t\t\t\t\t\t\t\t\tstrm.next_out = put;\n\t\t\t\t\t\t\t\t\t\tstrm.avail_out = left;\n\t\t\t\t\t\t\t\t\t\tstrm.next_in = next;\n\t\t\t\t\t\t\t\t\t\tstrm.avail_in = have;\n\t\t\t\t\t\t\t\t\t\tstate.hold = hold;\n\t\t\t\t\t\t\t\t\t\tstate.bits = bits;\n\t\t\t\t\t\t\t\t\t\t//---\n\t\t\t\t\t\t\t\t\t\tinflate_fast( strm, _out );\n\t\t\t\t\t\t\t\t\t\t//--- LOAD() ---\n\t\t\t\t\t\t\t\t\t\tput = strm.next_out;\n\t\t\t\t\t\t\t\t\t\toutput = strm.output;\n\t\t\t\t\t\t\t\t\t\tleft = strm.avail_out;\n\t\t\t\t\t\t\t\t\t\tnext = strm.next_in;\n\t\t\t\t\t\t\t\t\t\tinput = strm.input;\n\t\t\t\t\t\t\t\t\t\thave = strm.avail_in;\n\t\t\t\t\t\t\t\t\t\thold = state.hold;\n\t\t\t\t\t\t\t\t\t\tbits = state.bits;\n\t\t\t\t\t\t\t\t\t\t//---\n\n\t\t\t\t\t\t\t\t\t\tif ( state.mode === TYPE ) {\n\t\t\t\t\t\t\t\t\t\t\tstate.back = -1;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstate.back = 0;\n\t\t\t\t\t\t\t\t\tfor (;;) {\n\t\t\t\t\t\t\t\t\t\there =\n\t\t\t\t\t\t\t\t\t\t\tstate.lencode[\n\t\t\t\t\t\t\t\t\t\t\t\thold &\n\t\t\t\t\t\t\t\t\t\t\t\t\t( ( 1 << state.lenbits ) -\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t1 )\n\t\t\t\t\t\t\t\t\t\t\t]; /*BITS(state.lenbits)*/\n\t\t\t\t\t\t\t\t\t\there_bits = here >>> 24;\n\t\t\t\t\t\t\t\t\t\there_op = ( here >>> 16 ) & 0xff;\n\t\t\t\t\t\t\t\t\t\there_val = here & 0xffff;\n\n\t\t\t\t\t\t\t\t\t\tif ( here_bits <= bits ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t//--- PULLBYTE() ---//\n\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\thold += input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( here_op && ( here_op & 0xf0 ) === 0 ) {\n\t\t\t\t\t\t\t\t\t\tlast_bits = here_bits;\n\t\t\t\t\t\t\t\t\t\tlast_op = here_op;\n\t\t\t\t\t\t\t\t\t\tlast_val = here_val;\n\t\t\t\t\t\t\t\t\t\tfor (;;) {\n\t\t\t\t\t\t\t\t\t\t\there =\n\t\t\t\t\t\t\t\t\t\t\t\tstate.lencode[\n\t\t\t\t\t\t\t\t\t\t\t\t\tlast_val +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t( ( hold &\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t( ( 1 <<\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t( last_bits +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlast_op ) ) -\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t1 ) ) /*BITS(last.bits + last.op)*/ >>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlast_bits )\n\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\there_bits = here >>> 24;\n\t\t\t\t\t\t\t\t\t\t\there_op = ( here >>> 16 ) & 0xff;\n\t\t\t\t\t\t\t\t\t\t\there_val = here & 0xffff;\n\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tlast_bits + here_bits <=\n\t\t\t\t\t\t\t\t\t\t\t\tbits\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t//--- PULLBYTE() ---//\n\t\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\t\thold += input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t//--- DROPBITS(last.bits) ---//\n\t\t\t\t\t\t\t\t\t\thold >>>= last_bits;\n\t\t\t\t\t\t\t\t\t\tbits -= last_bits;\n\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t\tstate.back += last_bits;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//--- DROPBITS(here.bits) ---//\n\t\t\t\t\t\t\t\t\thold >>>= here_bits;\n\t\t\t\t\t\t\t\t\tbits -= here_bits;\n\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\tstate.back += here_bits;\n\t\t\t\t\t\t\t\t\tstate.length = here_val;\n\t\t\t\t\t\t\t\t\tif ( here_op === 0 ) {\n\t\t\t\t\t\t\t\t\t\t//Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n\t\t\t\t\t\t\t\t\t\t//        \"inflate:         literal '%c'\\n\" :\n\t\t\t\t\t\t\t\t\t\t//        \"inflate:         literal 0x%02x\\n\", here.val));\n\t\t\t\t\t\t\t\t\t\tstate.mode = LIT;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( here_op & 32 ) {\n\t\t\t\t\t\t\t\t\t\t//Tracevv((stderr, \"inflate:         end of block\\n\"));\n\t\t\t\t\t\t\t\t\t\tstate.back = -1;\n\t\t\t\t\t\t\t\t\t\tstate.mode = TYPE;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( here_op & 64 ) {\n\t\t\t\t\t\t\t\t\t\tstrm.msg =\n\t\t\t\t\t\t\t\t\t\t\t'invalid literal/length code';\n\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstate.extra = here_op & 15;\n\t\t\t\t\t\t\t\t\tstate.mode = LENEXT;\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase LENEXT:\n\t\t\t\t\t\t\t\t\tif ( state.extra ) {\n\t\t\t\t\t\t\t\t\t\t//=== NEEDBITS(state.extra);\n\t\t\t\t\t\t\t\t\t\tn = state.extra;\n\t\t\t\t\t\t\t\t\t\twhile ( bits < n ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\t\thold += input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\t\tstate.length +=\n\t\t\t\t\t\t\t\t\t\t\thold &\n\t\t\t\t\t\t\t\t\t\t\t( ( 1 << state.extra ) -\n\t\t\t\t\t\t\t\t\t\t\t\t1 ) /*BITS(state.extra)*/;\n\t\t\t\t\t\t\t\t\t\t//--- DROPBITS(state.extra) ---//\n\t\t\t\t\t\t\t\t\t\thold >>>= state.extra;\n\t\t\t\t\t\t\t\t\t\tbits -= state.extra;\n\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t\tstate.back += state.extra;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//Tracevv((stderr, \"inflate:         length %u\\n\", state.length));\n\t\t\t\t\t\t\t\t\tstate.was = state.length;\n\t\t\t\t\t\t\t\t\tstate.mode = DIST;\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase DIST:\n\t\t\t\t\t\t\t\t\tfor (;;) {\n\t\t\t\t\t\t\t\t\t\there =\n\t\t\t\t\t\t\t\t\t\t\tstate.distcode[\n\t\t\t\t\t\t\t\t\t\t\t\thold &\n\t\t\t\t\t\t\t\t\t\t\t\t\t( ( 1 << state.distbits ) -\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t1 )\n\t\t\t\t\t\t\t\t\t\t\t]; /*BITS(state.distbits)*/\n\t\t\t\t\t\t\t\t\t\there_bits = here >>> 24;\n\t\t\t\t\t\t\t\t\t\there_op = ( here >>> 16 ) & 0xff;\n\t\t\t\t\t\t\t\t\t\there_val = here & 0xffff;\n\n\t\t\t\t\t\t\t\t\t\tif ( here_bits <= bits ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t//--- PULLBYTE() ---//\n\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\thold += input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( ( here_op & 0xf0 ) === 0 ) {\n\t\t\t\t\t\t\t\t\t\tlast_bits = here_bits;\n\t\t\t\t\t\t\t\t\t\tlast_op = here_op;\n\t\t\t\t\t\t\t\t\t\tlast_val = here_val;\n\t\t\t\t\t\t\t\t\t\tfor (;;) {\n\t\t\t\t\t\t\t\t\t\t\there =\n\t\t\t\t\t\t\t\t\t\t\t\tstate.distcode[\n\t\t\t\t\t\t\t\t\t\t\t\t\tlast_val +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t( ( hold &\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t( ( 1 <<\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t( last_bits +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlast_op ) ) -\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t1 ) ) /*BITS(last.bits + last.op)*/ >>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlast_bits )\n\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\there_bits = here >>> 24;\n\t\t\t\t\t\t\t\t\t\t\there_op = ( here >>> 16 ) & 0xff;\n\t\t\t\t\t\t\t\t\t\t\there_val = here & 0xffff;\n\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tlast_bits + here_bits <=\n\t\t\t\t\t\t\t\t\t\t\t\tbits\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t//--- PULLBYTE() ---//\n\t\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\t\thold += input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t//--- DROPBITS(last.bits) ---//\n\t\t\t\t\t\t\t\t\t\thold >>>= last_bits;\n\t\t\t\t\t\t\t\t\t\tbits -= last_bits;\n\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t\tstate.back += last_bits;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//--- DROPBITS(here.bits) ---//\n\t\t\t\t\t\t\t\t\thold >>>= here_bits;\n\t\t\t\t\t\t\t\t\tbits -= here_bits;\n\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\tstate.back += here_bits;\n\t\t\t\t\t\t\t\t\tif ( here_op & 64 ) {\n\t\t\t\t\t\t\t\t\t\tstrm.msg = 'invalid distance code';\n\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstate.offset = here_val;\n\t\t\t\t\t\t\t\t\tstate.extra = here_op & 15;\n\t\t\t\t\t\t\t\t\tstate.mode = DISTEXT;\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase DISTEXT:\n\t\t\t\t\t\t\t\t\tif ( state.extra ) {\n\t\t\t\t\t\t\t\t\t\t//=== NEEDBITS(state.extra);\n\t\t\t\t\t\t\t\t\t\tn = state.extra;\n\t\t\t\t\t\t\t\t\t\twhile ( bits < n ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\t\thold += input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\t\tstate.offset +=\n\t\t\t\t\t\t\t\t\t\t\thold &\n\t\t\t\t\t\t\t\t\t\t\t( ( 1 << state.extra ) -\n\t\t\t\t\t\t\t\t\t\t\t\t1 ) /*BITS(state.extra)*/;\n\t\t\t\t\t\t\t\t\t\t//--- DROPBITS(state.extra) ---//\n\t\t\t\t\t\t\t\t\t\thold >>>= state.extra;\n\t\t\t\t\t\t\t\t\t\tbits -= state.extra;\n\t\t\t\t\t\t\t\t\t\t//---//\n\t\t\t\t\t\t\t\t\t\tstate.back += state.extra;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//#ifdef INFLATE_STRICT\n\t\t\t\t\t\t\t\t\tif ( state.offset > state.dmax ) {\n\t\t\t\t\t\t\t\t\t\tstrm.msg =\n\t\t\t\t\t\t\t\t\t\t\t'invalid distance too far back';\n\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t//#endif\n\t\t\t\t\t\t\t\t\t//Tracevv((stderr, \"inflate:         distance %u\\n\", state.offset));\n\t\t\t\t\t\t\t\t\tstate.mode = MATCH;\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase MATCH:\n\t\t\t\t\t\t\t\t\tif ( left === 0 ) {\n\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcopy = _out - left;\n\t\t\t\t\t\t\t\t\tif ( state.offset > copy ) {\n\t\t\t\t\t\t\t\t\t\t/* copy from window */\n\t\t\t\t\t\t\t\t\t\tcopy = state.offset - copy;\n\t\t\t\t\t\t\t\t\t\tif ( copy > state.whave ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( state.sane ) {\n\t\t\t\t\t\t\t\t\t\t\t\tstrm.msg =\n\t\t\t\t\t\t\t\t\t\t\t\t\t'invalid distance too far back';\n\t\t\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t// (!) This block is disabled in zlib defaults,\n\t\t\t\t\t\t\t\t\t\t\t// don't enable it for binary compatibility\n\t\t\t\t\t\t\t\t\t\t\t//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n\t\t\t\t\t\t\t\t\t\t\t//          Trace((stderr, \"inflate.c too far\\n\"));\n\t\t\t\t\t\t\t\t\t\t\t//          copy -= state.whave;\n\t\t\t\t\t\t\t\t\t\t\t//          if (copy > state.length) { copy = state.length; }\n\t\t\t\t\t\t\t\t\t\t\t//          if (copy > left) { copy = left; }\n\t\t\t\t\t\t\t\t\t\t\t//          left -= copy;\n\t\t\t\t\t\t\t\t\t\t\t//          state.length -= copy;\n\t\t\t\t\t\t\t\t\t\t\t//          do {\n\t\t\t\t\t\t\t\t\t\t\t//            output[put++] = 0;\n\t\t\t\t\t\t\t\t\t\t\t//          } while (--copy);\n\t\t\t\t\t\t\t\t\t\t\t//          if (state.length === 0) { state.mode = LEN; }\n\t\t\t\t\t\t\t\t\t\t\t//          break;\n\t\t\t\t\t\t\t\t\t\t\t//#endif\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif ( copy > state.wnext ) {\n\t\t\t\t\t\t\t\t\t\t\tcopy -= state.wnext;\n\t\t\t\t\t\t\t\t\t\t\tfrom = state.wsize - copy;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tfrom = state.wnext - copy;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif ( copy > state.length ) {\n\t\t\t\t\t\t\t\t\t\t\tcopy = state.length;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tfrom_source = state.window;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t/* copy from output */\n\t\t\t\t\t\t\t\t\t\tfrom_source = output;\n\t\t\t\t\t\t\t\t\t\tfrom = put - state.offset;\n\t\t\t\t\t\t\t\t\t\tcopy = state.length;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif ( copy > left ) {\n\t\t\t\t\t\t\t\t\t\tcopy = left;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tleft -= copy;\n\t\t\t\t\t\t\t\t\tstate.length -= copy;\n\t\t\t\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\t\t\t\toutput[ put++ ] = from_source[ from++ ];\n\t\t\t\t\t\t\t\t\t} while ( --copy );\n\t\t\t\t\t\t\t\t\tif ( state.length === 0 ) {\n\t\t\t\t\t\t\t\t\t\tstate.mode = LEN;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase LIT:\n\t\t\t\t\t\t\t\t\tif ( left === 0 ) {\n\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\toutput[ put++ ] = state.length;\n\t\t\t\t\t\t\t\t\tleft--;\n\t\t\t\t\t\t\t\t\tstate.mode = LEN;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase CHECK:\n\t\t\t\t\t\t\t\t\tif ( state.wrap ) {\n\t\t\t\t\t\t\t\t\t\t//=== NEEDBITS(32);\n\t\t\t\t\t\t\t\t\t\twhile ( bits < 32 ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\t\t// Use '|' instead of '+' to make sure that result is signed\n\t\t\t\t\t\t\t\t\t\t\thold |= input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\t\t_out -= left;\n\t\t\t\t\t\t\t\t\t\tstrm.total_out += _out;\n\t\t\t\t\t\t\t\t\t\tstate.total += _out;\n\t\t\t\t\t\t\t\t\t\tif ( _out ) {\n\t\t\t\t\t\t\t\t\t\t\tstrm.adler = state.check =\n\t\t\t\t\t\t\t\t\t\t\t\t/*UPDATE(state.check, put - _out, _out);*/\n\t\t\t\t\t\t\t\t\t\t\t\tstate.flags\n\t\t\t\t\t\t\t\t\t\t\t\t\t? crc32(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.check,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toutput,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_out,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tput - _out\n\t\t\t\t\t\t\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t\t\t\t\t\t\t: adler32(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstate.check,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toutput,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_out,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tput - _out\n\t\t\t\t\t\t\t\t\t\t\t\t\t  );\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t_out = left;\n\t\t\t\t\t\t\t\t\t\t// NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t( state.flags\n\t\t\t\t\t\t\t\t\t\t\t\t? hold\n\t\t\t\t\t\t\t\t\t\t\t\t: zswap32( hold ) ) !==\n\t\t\t\t\t\t\t\t\t\t\tstate.check\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tstrm.msg = 'incorrect data check';\n\t\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t//=== INITBITS();\n\t\t\t\t\t\t\t\t\t\thold = 0;\n\t\t\t\t\t\t\t\t\t\tbits = 0;\n\t\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\t\t//Tracev((stderr, \"inflate:   check matches trailer\\n\"));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstate.mode = LENGTH;\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase LENGTH:\n\t\t\t\t\t\t\t\t\tif ( state.wrap && state.flags ) {\n\t\t\t\t\t\t\t\t\t\t//=== NEEDBITS(32);\n\t\t\t\t\t\t\t\t\t\twhile ( bits < 32 ) {\n\t\t\t\t\t\t\t\t\t\t\tif ( have === 0 ) {\n\t\t\t\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\thave--;\n\t\t\t\t\t\t\t\t\t\t\thold += input[ next++ ] << bits;\n\t\t\t\t\t\t\t\t\t\t\tbits += 8;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\thold !==\n\t\t\t\t\t\t\t\t\t\t\t( state.total & 0xffffffff )\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tstrm.msg = 'incorrect length check';\n\t\t\t\t\t\t\t\t\t\t\tstate.mode = BAD;\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t//=== INITBITS();\n\t\t\t\t\t\t\t\t\t\thold = 0;\n\t\t\t\t\t\t\t\t\t\tbits = 0;\n\t\t\t\t\t\t\t\t\t\t//===//\n\t\t\t\t\t\t\t\t\t\t//Tracev((stderr, \"inflate:   length matches trailer\\n\"));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstate.mode = DONE;\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tcase DONE:\n\t\t\t\t\t\t\t\t\tret = Z_STREAM_END;\n\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\tcase BAD:\n\t\t\t\t\t\t\t\t\tret = Z_DATA_ERROR;\n\t\t\t\t\t\t\t\t\tbreak inf_leave;\n\t\t\t\t\t\t\t\tcase MEM:\n\t\t\t\t\t\t\t\t\treturn Z_MEM_ERROR;\n\t\t\t\t\t\t\t\tcase SYNC:\n\t\t\t\t\t\t\t\t/* falls through */\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn Z_STREAM_ERROR;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n\t\t\t\t\t\t/*\n       Return from inflate(), updating the total counts and the check value.\n       If there was no progress during the inflate() call, return a buffer\n       error.  Call updatewindow() to create and/or update the window state.\n       Note: a memory error from inflate() is non-recoverable.\n     */\n\n\t\t\t\t\t\t//--- RESTORE() ---\n\t\t\t\t\t\tstrm.next_out = put;\n\t\t\t\t\t\tstrm.avail_out = left;\n\t\t\t\t\t\tstrm.next_in = next;\n\t\t\t\t\t\tstrm.avail_in = have;\n\t\t\t\t\t\tstate.hold = hold;\n\t\t\t\t\t\tstate.bits = bits;\n\t\t\t\t\t\t//---\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tstate.wsize ||\n\t\t\t\t\t\t\t( _out !== strm.avail_out &&\n\t\t\t\t\t\t\t\tstate.mode < BAD &&\n\t\t\t\t\t\t\t\t( state.mode < CHECK || flush !== Z_FINISH ) )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tupdatewindow(\n\t\t\t\t\t\t\t\t\tstrm,\n\t\t\t\t\t\t\t\t\tstrm.output,\n\t\t\t\t\t\t\t\t\tstrm.next_out,\n\t\t\t\t\t\t\t\t\t_out - strm.avail_out\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tstate.mode = MEM;\n\t\t\t\t\t\t\t\treturn Z_MEM_ERROR;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_in -= strm.avail_in;\n\t\t\t\t\t\t_out -= strm.avail_out;\n\t\t\t\t\t\tstrm.total_in += _in;\n\t\t\t\t\t\tstrm.total_out += _out;\n\t\t\t\t\t\tstate.total += _out;\n\t\t\t\t\t\tif ( state.wrap && _out ) {\n\t\t\t\t\t\t\tstrm.adler = state.check =\n\t\t\t\t\t\t\t\t/*UPDATE(state.check, strm.next_out - _out, _out);*/\n\t\t\t\t\t\t\t\tstate.flags\n\t\t\t\t\t\t\t\t\t? crc32(\n\t\t\t\t\t\t\t\t\t\t\tstate.check,\n\t\t\t\t\t\t\t\t\t\t\toutput,\n\t\t\t\t\t\t\t\t\t\t\t_out,\n\t\t\t\t\t\t\t\t\t\t\tstrm.next_out - _out\n\t\t\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t\t\t: adler32(\n\t\t\t\t\t\t\t\t\t\t\tstate.check,\n\t\t\t\t\t\t\t\t\t\t\toutput,\n\t\t\t\t\t\t\t\t\t\t\t_out,\n\t\t\t\t\t\t\t\t\t\t\tstrm.next_out - _out\n\t\t\t\t\t\t\t\t\t  );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstrm.data_type =\n\t\t\t\t\t\t\tstate.bits +\n\t\t\t\t\t\t\t( state.last ? 64 : 0 ) +\n\t\t\t\t\t\t\t( state.mode === TYPE ? 128 : 0 ) +\n\t\t\t\t\t\t\t( state.mode === LEN_ || state.mode === COPY_\n\t\t\t\t\t\t\t\t? 256\n\t\t\t\t\t\t\t\t: 0 );\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t( ( _in === 0 && _out === 0 ) ||\n\t\t\t\t\t\t\t\tflush === Z_FINISH ) &&\n\t\t\t\t\t\t\tret === Z_OK\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tret = Z_BUF_ERROR;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn ret;\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction inflateEnd( strm ) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! strm ||\n\t\t\t\t\t\t\t! strm.state /*|| strm->zfree == (free_func)0*/\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn Z_STREAM_ERROR;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar state = strm.state;\n\t\t\t\t\t\tif ( state.window ) {\n\t\t\t\t\t\t\tstate.window = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstrm.state = null;\n\t\t\t\t\t\treturn Z_OK;\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction inflateGetHeader( strm, head ) {\n\t\t\t\t\t\tvar state;\n\n\t\t\t\t\t\t/* check state */\n\t\t\t\t\t\tif ( ! strm || ! strm.state ) {\n\t\t\t\t\t\t\treturn Z_STREAM_ERROR;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate = strm.state;\n\t\t\t\t\t\tif ( ( state.wrap & 2 ) === 0 ) {\n\t\t\t\t\t\t\treturn Z_STREAM_ERROR;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* save header structure */\n\t\t\t\t\t\tstate.head = head;\n\t\t\t\t\t\thead.done = false;\n\t\t\t\t\t\treturn Z_OK;\n\t\t\t\t\t}\n\n\t\t\t\t\tfunction inflateSetDictionary( strm, dictionary ) {\n\t\t\t\t\t\tvar dictLength = dictionary.length;\n\n\t\t\t\t\t\tvar state;\n\t\t\t\t\t\tvar dictid;\n\t\t\t\t\t\tvar ret;\n\n\t\t\t\t\t\t/* check state */\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! strm /* == Z_NULL */ ||\n\t\t\t\t\t\t\t! strm.state /* == Z_NULL */\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn Z_STREAM_ERROR;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate = strm.state;\n\n\t\t\t\t\t\tif ( state.wrap !== 0 && state.mode !== DICT ) {\n\t\t\t\t\t\t\treturn Z_STREAM_ERROR;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* check for correct dictionary identifier */\n\t\t\t\t\t\tif ( state.mode === DICT ) {\n\t\t\t\t\t\t\tdictid = 1; /* adler32(0, null, 0)*/\n\t\t\t\t\t\t\t/* dictid = adler32(dictid, dictionary, dictLength); */\n\t\t\t\t\t\t\tdictid = adler32(\n\t\t\t\t\t\t\t\tdictid,\n\t\t\t\t\t\t\t\tdictionary,\n\t\t\t\t\t\t\t\tdictLength,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif ( dictid !== state.check ) {\n\t\t\t\t\t\t\t\treturn Z_DATA_ERROR;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t/* copy dictionary to window using updatewindow(), which will amend the\n     existing dictionary if appropriate */\n\t\t\t\t\t\tret = updatewindow(\n\t\t\t\t\t\t\tstrm,\n\t\t\t\t\t\t\tdictionary,\n\t\t\t\t\t\t\tdictLength,\n\t\t\t\t\t\t\tdictLength\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif ( ret ) {\n\t\t\t\t\t\t\tstate.mode = MEM;\n\t\t\t\t\t\t\treturn Z_MEM_ERROR;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.havedict = 1;\n\t\t\t\t\t\t// Tracev((stderr, \"inflate:   dictionary set\\n\"));\n\t\t\t\t\t\treturn Z_OK;\n\t\t\t\t\t}\n\n\t\t\t\t\texports.inflateReset = inflateReset;\n\t\t\t\t\texports.inflateReset2 = inflateReset2;\n\t\t\t\t\texports.inflateResetKeep = inflateResetKeep;\n\t\t\t\t\texports.inflateInit = inflateInit;\n\t\t\t\t\texports.inflateInit2 = inflateInit2;\n\t\t\t\t\texports.inflate = inflate;\n\t\t\t\t\texports.inflateEnd = inflateEnd;\n\t\t\t\t\texports.inflateGetHeader = inflateGetHeader;\n\t\t\t\t\texports.inflateSetDictionary = inflateSetDictionary;\n\t\t\t\t\texports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n\t\t\t\t\t/* Not implemented\n  exports.inflateCopy = inflateCopy;\n  exports.inflateGetDictionary = inflateGetDictionary;\n  exports.inflateMark = inflateMark;\n  exports.inflatePrime = inflatePrime;\n  exports.inflateSync = inflateSync;\n  exports.inflateSyncPoint = inflateSyncPoint;\n  exports.inflateUndermine = inflateUndermine;\n  */\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t'../utils/common': 1,\n\t\t\t\t\t'./adler32': 3,\n\t\t\t\t\t'./crc32': 5,\n\t\t\t\t\t'./inffast': 7,\n\t\t\t\t\t'./inftrees': 9,\n\t\t\t\t},\n\t\t\t],\n\t\t\t9: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\t'use strict';\n\n\t\t\t\t\t// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n\t\t\t\t\t// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n\t\t\t\t\t//\n\t\t\t\t\t// This software is provided 'as-is', without any express or implied\n\t\t\t\t\t// warranty. In no event will the authors be held liable for any damages\n\t\t\t\t\t// arising from the use of this software.\n\t\t\t\t\t//\n\t\t\t\t\t// Permission is granted to anyone to use this software for any purpose,\n\t\t\t\t\t// including commercial applications, and to alter it and redistribute it\n\t\t\t\t\t// freely, subject to the following restrictions:\n\t\t\t\t\t//\n\t\t\t\t\t// 1. The origin of this software must not be misrepresented; you must not\n\t\t\t\t\t//   claim that you wrote the original software. If you use this software\n\t\t\t\t\t//   in a product, an acknowledgment in the product documentation would be\n\t\t\t\t\t//   appreciated but is not required.\n\t\t\t\t\t// 2. Altered source versions must be plainly marked as such, and must not be\n\t\t\t\t\t//   misrepresented as being the original software.\n\t\t\t\t\t// 3. This notice may not be removed or altered from any source distribution.\n\n\t\t\t\t\tvar utils = require( '../utils/common' );\n\n\t\t\t\t\tvar MAXBITS = 15;\n\t\t\t\t\tvar ENOUGH_LENS = 852;\n\t\t\t\t\tvar ENOUGH_DISTS = 592;\n\t\t\t\t\t//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\n\t\t\t\t\tvar CODES = 0;\n\t\t\t\t\tvar LENS = 1;\n\t\t\t\t\tvar DISTS = 2;\n\n\t\t\t\t\tvar lbase = [\n\t\t\t\t\t\t/* Length codes 257..285 base */ 3, 4, 5, 6, 7, 8, 9,\n\t\t\t\t\t\t10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67,\n\t\t\t\t\t\t83, 99, 115, 131, 163, 195, 227, 258, 0, 0,\n\t\t\t\t\t];\n\n\t\t\t\t\tvar lext = [\n\t\t\t\t\t\t/* Length codes 257..285 extra */ 16, 16, 16, 16, 16,\n\t\t\t\t\t\t16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19,\n\t\t\t\t\t\t19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78,\n\t\t\t\t\t];\n\n\t\t\t\t\tvar dbase = [\n\t\t\t\t\t\t/* Distance codes 0..29 base */ 1, 2, 3, 4, 5, 7, 9, 13,\n\t\t\t\t\t\t17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769,\n\t\t\t\t\t\t1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385,\n\t\t\t\t\t\t24577, 0, 0,\n\t\t\t\t\t];\n\n\t\t\t\t\tvar dext = [\n\t\t\t\t\t\t/* Distance codes 0..29 extra */ 16, 16, 16, 16, 17, 17,\n\t\t\t\t\t\t18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24,\n\t\t\t\t\t\t25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64,\n\t\t\t\t\t];\n\n\t\t\t\t\tmodule.exports = function inflate_table(\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tlens,\n\t\t\t\t\t\tlens_index,\n\t\t\t\t\t\tcodes,\n\t\t\t\t\t\ttable,\n\t\t\t\t\t\ttable_index,\n\t\t\t\t\t\twork,\n\t\t\t\t\t\topts\n\t\t\t\t\t) {\n\t\t\t\t\t\tvar bits = opts.bits;\n\t\t\t\t\t\t//here = opts.here; /* table entry for duplication */\n\n\t\t\t\t\t\tvar len = 0; /* a code's length in bits */\n\t\t\t\t\t\tvar sym = 0; /* index of code symbols */\n\t\t\t\t\t\tvar min = 0,\n\t\t\t\t\t\t\tmax = 0; /* minimum and maximum code lengths */\n\t\t\t\t\t\tvar root = 0; /* number of index bits for root table */\n\t\t\t\t\t\tvar curr = 0; /* number of index bits for current table */\n\t\t\t\t\t\tvar drop = 0; /* code bits to drop for sub-table */\n\t\t\t\t\t\tvar left = 0; /* number of prefix codes available */\n\t\t\t\t\t\tvar used = 0; /* code entries in table used */\n\t\t\t\t\t\tvar huff = 0; /* Huffman code */\n\t\t\t\t\t\tvar incr; /* for incrementing code, index */\n\t\t\t\t\t\tvar fill; /* index for replicating entries */\n\t\t\t\t\t\tvar low; /* low bits for current root entry */\n\t\t\t\t\t\tvar mask; /* mask for low root bits */\n\t\t\t\t\t\tvar next; /* next available space in table */\n\t\t\t\t\t\tvar base = null; /* base value table to use */\n\t\t\t\t\t\tvar base_index = 0;\n\t\t\t\t\t\t//  var shoextra;    /* extra bits table to use */\n\t\t\t\t\t\tvar end; /* use base and extra for symbol > end */\n\t\t\t\t\t\tvar count = new utils.Buf16( MAXBITS + 1 ); //[MAXBITS+1];    /* number of codes of each length */\n\t\t\t\t\t\tvar offs = new utils.Buf16( MAXBITS + 1 ); //[MAXBITS+1];     /* offsets in table for each length */\n\t\t\t\t\t\tvar extra = null;\n\t\t\t\t\t\tvar extra_index = 0;\n\n\t\t\t\t\t\tvar here_bits, here_op, here_val;\n\n\t\t\t\t\t\t/*\n     Process a set of code lengths to create a canonical Huffman code.  The\n     code lengths are lens[0..codes-1].  Each length corresponds to the\n     symbols 0..codes-1.  The Huffman code is generated by first sorting the\n     symbols by length from short to long, and retaining the symbol order\n     for codes with equal lengths.  Then the code starts with all zero bits\n     for the first code of the shortest length, and the codes are integer\n     increments for the same length, and zeros are appended as the length\n     increases.  For the deflate format, these bits are stored backwards\n     from their more natural integer increment ordering, and so when the\n     decoding tables are built in the large loop below, the integer codes\n     are incremented backwards.\n\n     This routine assumes, but does not check, that all of the entries in\n     lens[] are in the range 0..MAXBITS.  The caller must assure this.\n     1..MAXBITS is interpreted as that code length.  zero means that that\n     symbol does not occur in this code.\n\n     The codes are sorted by computing a count of codes for each length,\n     creating from that a table of starting indices for each length in the\n     sorted table, and then entering the symbols in order in the sorted\n     table.  The sorted table is work[], with that space being provided by\n     the caller.\n\n     The length counts are used for other purposes as well, i.e. finding\n     the minimum and maximum length codes, determining if there are any\n     codes at all, checking for a valid set of lengths, and looking ahead\n     at length counts to determine sub-table sizes when building the\n     decoding tables.\n     */\n\n\t\t\t\t\t\t/* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n\t\t\t\t\t\tfor ( len = 0; len <= MAXBITS; len++ ) {\n\t\t\t\t\t\t\tcount[ len ] = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( sym = 0; sym < codes; sym++ ) {\n\t\t\t\t\t\t\tcount[ lens[ lens_index + sym ] ]++;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* bound code lengths, force root to be within code lengths */\n\t\t\t\t\t\troot = bits;\n\t\t\t\t\t\tfor ( max = MAXBITS; max >= 1; max-- ) {\n\t\t\t\t\t\t\tif ( count[ max ] !== 0 ) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( root > max ) {\n\t\t\t\t\t\t\troot = max;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( max === 0 ) {\n\t\t\t\t\t\t\t/* no symbols to code at all */\n\t\t\t\t\t\t\t//table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */\n\t\t\t\t\t\t\t//table.bits[opts.table_index] = 1;   //here.bits = (var char)1;\n\t\t\t\t\t\t\t//table.val[opts.table_index++] = 0;   //here.val = (var short)0;\n\t\t\t\t\t\t\ttable[ table_index++ ] =\n\t\t\t\t\t\t\t\t( 1 << 24 ) | ( 64 << 16 ) | 0;\n\n\t\t\t\t\t\t\t//table.op[opts.table_index] = 64;\n\t\t\t\t\t\t\t//table.bits[opts.table_index] = 1;\n\t\t\t\t\t\t\t//table.val[opts.table_index++] = 0;\n\t\t\t\t\t\t\ttable[ table_index++ ] =\n\t\t\t\t\t\t\t\t( 1 << 24 ) | ( 64 << 16 ) | 0;\n\n\t\t\t\t\t\t\topts.bits = 1;\n\t\t\t\t\t\t\treturn 0; /* no symbols, but wait for decoding to report error */\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor ( min = 1; min < max; min++ ) {\n\t\t\t\t\t\t\tif ( count[ min ] !== 0 ) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( root < min ) {\n\t\t\t\t\t\t\troot = min;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* check for an over-subscribed or incomplete set of lengths */\n\t\t\t\t\t\tleft = 1;\n\t\t\t\t\t\tfor ( len = 1; len <= MAXBITS; len++ ) {\n\t\t\t\t\t\t\tleft <<= 1;\n\t\t\t\t\t\t\tleft -= count[ len ];\n\t\t\t\t\t\t\tif ( left < 0 ) {\n\t\t\t\t\t\t\t\treturn -1;\n\t\t\t\t\t\t\t} /* over-subscribed */\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( left > 0 && ( type === CODES || max !== 1 ) ) {\n\t\t\t\t\t\t\treturn -1; /* incomplete set */\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* generate offsets into symbol table for each length for sorting */\n\t\t\t\t\t\toffs[ 1 ] = 0;\n\t\t\t\t\t\tfor ( len = 1; len < MAXBITS; len++ ) {\n\t\t\t\t\t\t\toffs[ len + 1 ] = offs[ len ] + count[ len ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* sort symbols by length, by symbol order within each length */\n\t\t\t\t\t\tfor ( sym = 0; sym < codes; sym++ ) {\n\t\t\t\t\t\t\tif ( lens[ lens_index + sym ] !== 0 ) {\n\t\t\t\t\t\t\t\twork[ offs[ lens[ lens_index + sym ] ]++ ] =\n\t\t\t\t\t\t\t\t\tsym;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n     Create and fill in decoding tables.  In this loop, the table being\n     filled is at next and has curr index bits.  The code being used is huff\n     with length len.  That code is converted to an index by dropping drop\n     bits off of the bottom.  For codes where len is less than drop + curr,\n     those top drop + curr - len bits are incremented through all values to\n     fill the table with replicated entries.\n\n     root is the number of index bits for the root table.  When len exceeds\n     root, sub-tables are created pointed to by the root entry with an index\n     of the low root bits of huff.  This is saved in low to check for when a\n     new sub-table should be started.  drop is zero when the root table is\n     being filled, and drop is root when sub-tables are being filled.\n\n     When a new sub-table is needed, it is necessary to look ahead in the\n     code lengths to determine what size sub-table is needed.  The length\n     counts are used for this, and so count[] is decremented as codes are\n     entered in the tables.\n\n     used keeps track of how many table entries have been allocated from the\n     provided *table space.  It is checked for LENS and DIST tables against\n     the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n     the initial root table size constants.  See the comments in inftrees.h\n     for more information.\n\n     sym increments through all symbols, and the loop terminates when\n     all codes of length max, i.e. all codes, have been processed.  This\n     routine permits incomplete codes, so another loop after this one fills\n     in the rest of the decoding tables with invalid code markers.\n     */\n\n\t\t\t\t\t\t/* set up for code type */\n\t\t\t\t\t\t// poor man optimization - use if-else instead of switch,\n\t\t\t\t\t\t// to avoid deopts in old v8\n\t\t\t\t\t\tif ( type === CODES ) {\n\t\t\t\t\t\t\tbase = extra = work; /* dummy value--not used */\n\t\t\t\t\t\t\tend = 19;\n\t\t\t\t\t\t} else if ( type === LENS ) {\n\t\t\t\t\t\t\tbase = lbase;\n\t\t\t\t\t\t\tbase_index -= 257;\n\t\t\t\t\t\t\textra = lext;\n\t\t\t\t\t\t\textra_index -= 257;\n\t\t\t\t\t\t\tend = 256;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t/* DISTS */\n\t\t\t\t\t\t\tbase = dbase;\n\t\t\t\t\t\t\textra = dext;\n\t\t\t\t\t\t\tend = -1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* initialize opts for loop */\n\t\t\t\t\t\thuff = 0; /* starting code */\n\t\t\t\t\t\tsym = 0; /* starting code symbol */\n\t\t\t\t\t\tlen = min; /* starting code length */\n\t\t\t\t\t\tnext = table_index; /* current table to fill in */\n\t\t\t\t\t\tcurr = root; /* current table index bits */\n\t\t\t\t\t\tdrop = 0; /* current bits to drop from code for index */\n\t\t\t\t\t\tlow = -1; /* trigger new sub-table when len > root */\n\t\t\t\t\t\tused = 1 << root; /* use root table entries */\n\t\t\t\t\t\tmask = used - 1; /* mask for comparing low */\n\n\t\t\t\t\t\t/* check available table space */\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t( type === LENS && used > ENOUGH_LENS ) ||\n\t\t\t\t\t\t\t( type === DISTS && used > ENOUGH_DISTS )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn 1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* process all codes and make table entries */\n\t\t\t\t\t\tfor (;;) {\n\t\t\t\t\t\t\t/* create table entry */\n\t\t\t\t\t\t\there_bits = len - drop;\n\t\t\t\t\t\t\tif ( work[ sym ] < end ) {\n\t\t\t\t\t\t\t\there_op = 0;\n\t\t\t\t\t\t\t\there_val = work[ sym ];\n\t\t\t\t\t\t\t} else if ( work[ sym ] > end ) {\n\t\t\t\t\t\t\t\there_op = extra[ extra_index + work[ sym ] ];\n\t\t\t\t\t\t\t\there_val = base[ base_index + work[ sym ] ];\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\there_op = 32 + 64; /* end of block */\n\t\t\t\t\t\t\t\there_val = 0;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t/* replicate for those indices with low len bits equal to huff */\n\t\t\t\t\t\t\tincr = 1 << ( len - drop );\n\t\t\t\t\t\t\tfill = 1 << curr;\n\t\t\t\t\t\t\tmin = fill; /* save offset to next table */\n\t\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\t\tfill -= incr;\n\t\t\t\t\t\t\t\ttable[ next + ( huff >> drop ) + fill ] =\n\t\t\t\t\t\t\t\t\t( here_bits << 24 ) |\n\t\t\t\t\t\t\t\t\t( here_op << 16 ) |\n\t\t\t\t\t\t\t\t\there_val |\n\t\t\t\t\t\t\t\t\t0;\n\t\t\t\t\t\t\t} while ( fill !== 0 );\n\n\t\t\t\t\t\t\t/* backwards increment the len-bit code huff */\n\t\t\t\t\t\t\tincr = 1 << ( len - 1 );\n\t\t\t\t\t\t\twhile ( huff & incr ) {\n\t\t\t\t\t\t\t\tincr >>= 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( incr !== 0 ) {\n\t\t\t\t\t\t\t\thuff &= incr - 1;\n\t\t\t\t\t\t\t\thuff += incr;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\thuff = 0;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t/* go to next symbol, update count, len */\n\t\t\t\t\t\t\tsym++;\n\t\t\t\t\t\t\tif ( --count[ len ] === 0 ) {\n\t\t\t\t\t\t\t\tif ( len === max ) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlen = lens[ lens_index + work[ sym ] ];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t/* create new sub-table if needed */\n\t\t\t\t\t\t\tif ( len > root && ( huff & mask ) !== low ) {\n\t\t\t\t\t\t\t\t/* if first time, transition to sub-tables */\n\t\t\t\t\t\t\t\tif ( drop === 0 ) {\n\t\t\t\t\t\t\t\t\tdrop = root;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t/* increment past last table */\n\t\t\t\t\t\t\t\tnext += min; /* here min is 1 << curr */\n\n\t\t\t\t\t\t\t\t/* determine length of next table */\n\t\t\t\t\t\t\t\tcurr = len - drop;\n\t\t\t\t\t\t\t\tleft = 1 << curr;\n\t\t\t\t\t\t\t\twhile ( curr + drop < max ) {\n\t\t\t\t\t\t\t\t\tleft -= count[ curr + drop ];\n\t\t\t\t\t\t\t\t\tif ( left <= 0 ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcurr++;\n\t\t\t\t\t\t\t\t\tleft <<= 1;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t/* check for enough space */\n\t\t\t\t\t\t\t\tused += 1 << curr;\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t( type === LENS && used > ENOUGH_LENS ) ||\n\t\t\t\t\t\t\t\t\t( type === DISTS && used > ENOUGH_DISTS )\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\treturn 1;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t/* point entry in root table to sub-table */\n\t\t\t\t\t\t\t\tlow = huff & mask;\n\t\t\t\t\t\t\t\t/*table.op[low] = curr;\n        table.bits[low] = root;\n        table.val[low] = next - opts.table_index;*/\n\t\t\t\t\t\t\t\ttable[ low ] =\n\t\t\t\t\t\t\t\t\t( root << 24 ) |\n\t\t\t\t\t\t\t\t\t( curr << 16 ) |\n\t\t\t\t\t\t\t\t\t( next - table_index ) |\n\t\t\t\t\t\t\t\t\t0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* fill in remaining table entry if code is incomplete (guaranteed to have\n     at most one remaining entry, since if the code is incomplete, the\n     maximum code length that was allowed to get this far is one bit) */\n\t\t\t\t\t\tif ( huff !== 0 ) {\n\t\t\t\t\t\t\t//table.op[next + huff] = 64;            /* invalid code marker */\n\t\t\t\t\t\t\t//table.bits[next + huff] = len - drop;\n\t\t\t\t\t\t\t//table.val[next + huff] = 0;\n\t\t\t\t\t\t\ttable[ next + huff ] =\n\t\t\t\t\t\t\t\t( ( len - drop ) << 24 ) | ( 64 << 16 ) | 0;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/* set return parameters */\n\t\t\t\t\t\t//opts.table_index += used;\n\t\t\t\t\t\topts.bits = root;\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t{ '../utils/common': 1 },\n\t\t\t],\n\t\t\t10: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\t'use strict';\n\n\t\t\t\t\t// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n\t\t\t\t\t// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n\t\t\t\t\t//\n\t\t\t\t\t// This software is provided 'as-is', without any express or implied\n\t\t\t\t\t// warranty. In no event will the authors be held liable for any damages\n\t\t\t\t\t// arising from the use of this software.\n\t\t\t\t\t//\n\t\t\t\t\t// Permission is granted to anyone to use this software for any purpose,\n\t\t\t\t\t// including commercial applications, and to alter it and redistribute it\n\t\t\t\t\t// freely, subject to the following restrictions:\n\t\t\t\t\t//\n\t\t\t\t\t// 1. The origin of this software must not be misrepresented; you must not\n\t\t\t\t\t//   claim that you wrote the original software. If you use this software\n\t\t\t\t\t//   in a product, an acknowledgment in the product documentation would be\n\t\t\t\t\t//   appreciated but is not required.\n\t\t\t\t\t// 2. Altered source versions must be plainly marked as such, and must not be\n\t\t\t\t\t//   misrepresented as being the original software.\n\t\t\t\t\t// 3. This notice may not be removed or altered from any source distribution.\n\n\t\t\t\t\tmodule.exports = {\n\t\t\t\t\t\t2: 'need dictionary' /* Z_NEED_DICT       2  */,\n\t\t\t\t\t\t1: 'stream end' /* Z_STREAM_END      1  */,\n\t\t\t\t\t\t0: '' /* Z_OK              0  */,\n\t\t\t\t\t\t'-1': 'file error' /* Z_ERRNO         (-1) */,\n\t\t\t\t\t\t'-2': 'stream error' /* Z_STREAM_ERROR  (-2) */,\n\t\t\t\t\t\t'-3': 'data error' /* Z_DATA_ERROR    (-3) */,\n\t\t\t\t\t\t'-4': 'insufficient memory' /* Z_MEM_ERROR     (-4) */,\n\t\t\t\t\t\t'-5': 'buffer error' /* Z_BUF_ERROR     (-5) */,\n\t\t\t\t\t\t'-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t],\n\t\t\t11: [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\t'use strict';\n\n\t\t\t\t\t// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n\t\t\t\t\t// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n\t\t\t\t\t//\n\t\t\t\t\t// This software is provided 'as-is', without any express or implied\n\t\t\t\t\t// warranty. In no event will the authors be held liable for any damages\n\t\t\t\t\t// arising from the use of this software.\n\t\t\t\t\t//\n\t\t\t\t\t// Permission is granted to anyone to use this software for any purpose,\n\t\t\t\t\t// including commercial applications, and to alter it and redistribute it\n\t\t\t\t\t// freely, subject to the following restrictions:\n\t\t\t\t\t//\n\t\t\t\t\t// 1. The origin of this software must not be misrepresented; you must not\n\t\t\t\t\t//   claim that you wrote the original software. If you use this software\n\t\t\t\t\t//   in a product, an acknowledgment in the product documentation would be\n\t\t\t\t\t//   appreciated but is not required.\n\t\t\t\t\t// 2. Altered source versions must be plainly marked as such, and must not be\n\t\t\t\t\t//   misrepresented as being the original software.\n\t\t\t\t\t// 3. This notice may not be removed or altered from any source distribution.\n\n\t\t\t\t\tfunction ZStream() {\n\t\t\t\t\t\t/* next input byte */\n\t\t\t\t\t\tthis.input = null; // JS specific, because we have no pointers\n\t\t\t\t\t\tthis.next_in = 0;\n\t\t\t\t\t\t/* number of bytes available at input */\n\t\t\t\t\t\tthis.avail_in = 0;\n\t\t\t\t\t\t/* total number of input bytes read so far */\n\t\t\t\t\t\tthis.total_in = 0;\n\t\t\t\t\t\t/* next output byte should be put there */\n\t\t\t\t\t\tthis.output = null; // JS specific, because we have no pointers\n\t\t\t\t\t\tthis.next_out = 0;\n\t\t\t\t\t\t/* remaining free space at output */\n\t\t\t\t\t\tthis.avail_out = 0;\n\t\t\t\t\t\t/* total number of bytes output so far */\n\t\t\t\t\t\tthis.total_out = 0;\n\t\t\t\t\t\t/* last error message, NULL if no error */\n\t\t\t\t\t\tthis.msg = '' /*Z_NULL*/;\n\t\t\t\t\t\t/* not visible by applications */\n\t\t\t\t\t\tthis.state = null;\n\t\t\t\t\t\t/* best guess about the data type: binary or text */\n\t\t\t\t\t\tthis.data_type = 2 /*Z_UNKNOWN*/;\n\t\t\t\t\t\t/* adler32 value of the uncompressed data */\n\t\t\t\t\t\tthis.adler = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tmodule.exports = ZStream;\n\t\t\t\t},\n\t\t\t\t{},\n\t\t\t],\n\t\t\t'/lib/inflate.js': [\n\t\t\t\tfunction ( require, module, exports ) {\n\t\t\t\t\t'use strict';\n\n\t\t\t\t\tvar zlib_inflate = require( './zlib/inflate' );\n\t\t\t\t\tvar utils = require( './utils/common' );\n\t\t\t\t\tvar strings = require( './utils/strings' );\n\t\t\t\t\tvar c = require( './zlib/constants' );\n\t\t\t\t\tvar msg = require( './zlib/messages' );\n\t\t\t\t\tvar ZStream = require( './zlib/zstream' );\n\t\t\t\t\tvar GZheader = require( './zlib/gzheader' );\n\n\t\t\t\t\tvar toString = Object.prototype.toString;\n\n\t\t\t\t\t/**\n\t\t\t\t\t * class Inflate\n\t\t\t\t\t *\n\t\t\t\t\t * Generic JS-style wrapper for zlib calls. If you don't need\n\t\t\t\t\t * streaming behaviour - use more simple functions: [[inflate]]\n\t\t\t\t\t * and [[inflateRaw]].\n\t\t\t\t\t **/\n\n\t\t\t\t\t/* internal\n\t\t\t\t\t * inflate.chunks -> Array\n\t\t\t\t\t *\n\t\t\t\t\t * Chunks of output data, if [[Inflate#onData]] not overridden.\n\t\t\t\t\t **/\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Inflate.result -> Uint8Array|Array|String\n\t\t\t\t\t *\n\t\t\t\t\t * Uncompressed result, generated by default [[Inflate#onData]]\n\t\t\t\t\t * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n\t\t\t\t\t * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n\t\t\t\t\t * push a chunk with explicit flush (call [[Inflate#push]] with\n\t\t\t\t\t * `Z_SYNC_FLUSH` param).\n\t\t\t\t\t **/\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Inflate.err -> Number\n\t\t\t\t\t *\n\t\t\t\t\t * Error code after inflate finished. 0 (Z_OK) on success.\n\t\t\t\t\t * Should be checked if broken data possible.\n\t\t\t\t\t **/\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Inflate.msg -> String\n\t\t\t\t\t *\n\t\t\t\t\t * Error message, if [[Inflate.err]] != 0\n\t\t\t\t\t **/\n\n\t\t\t\t\t/**\n\t\t\t\t\t * new Inflate(options)\n\t\t\t\t\t * - options (Object): zlib inflate options.\n\t\t\t\t\t *\n\t\t\t\t\t * Creates new inflator instance with specified params. Throws exception\n\t\t\t\t\t * on bad params. Supported options:\n\t\t\t\t\t *\n\t\t\t\t\t * - `windowBits`\n\t\t\t\t\t * - `dictionary`\n\t\t\t\t\t *\n\t\t\t\t\t * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n\t\t\t\t\t * for more information on these.\n\t\t\t\t\t *\n\t\t\t\t\t * Additional options, for internal needs:\n\t\t\t\t\t *\n\t\t\t\t\t * - `chunkSize` - size of generated data chunks (16K by default)\n\t\t\t\t\t * - `raw` (Boolean) - do raw inflate\n\t\t\t\t\t * - `to` (String) - if equal to 'string', then result will be converted\n\t\t\t\t\t *   from utf8 to utf16 (javascript) string. When string output requested,\n\t\t\t\t\t *   chunk length can differ from `chunkSize`, depending on content.\n\t\t\t\t\t *\n\t\t\t\t\t * By default, when no options set, autodetect deflate/gzip data format via\n\t\t\t\t\t * wrapper header.\n\t\t\t\t\t *\n\t\t\t\t\t * ##### Example:\n\t\t\t\t\t *\n\t\t\t\t\t * ```javascript\n\t\t\t\t\t * var pako = require('pako')\n\t\t\t\t\t *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n\t\t\t\t\t *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n\t\t\t\t\t *\n\t\t\t\t\t * var inflate = new pako.Inflate({ level: 3});\n\t\t\t\t\t *\n\t\t\t\t\t * inflate.push(chunk1, false);\n\t\t\t\t\t * inflate.push(chunk2, true);  // true -> last chunk\n\t\t\t\t\t *\n\t\t\t\t\t * if (inflate.err) { throw new Error(inflate.err); }\n\t\t\t\t\t *\n\t\t\t\t\t * console.log(inflate.result);\n\t\t\t\t\t * ```\n\t\t\t\t\t **/\n\t\t\t\t\tfunction Inflate( options ) {\n\t\t\t\t\t\tif ( ! ( this instanceof Inflate ) )\n\t\t\t\t\t\t\treturn new Inflate( options );\n\n\t\t\t\t\t\tthis.options = utils.assign(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tchunkSize: 16384,\n\t\t\t\t\t\t\t\twindowBits: 0,\n\t\t\t\t\t\t\t\tto: '',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\toptions || {}\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tvar opt = this.options;\n\n\t\t\t\t\t\t// Force window size for `raw` data, if not set directly,\n\t\t\t\t\t\t// because we have no header for autodetect.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\topt.raw &&\n\t\t\t\t\t\t\topt.windowBits >= 0 &&\n\t\t\t\t\t\t\topt.windowBits < 16\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\topt.windowBits = -opt.windowBits;\n\t\t\t\t\t\t\tif ( opt.windowBits === 0 ) {\n\t\t\t\t\t\t\t\topt.windowBits = -15;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\topt.windowBits >= 0 &&\n\t\t\t\t\t\t\topt.windowBits < 16 &&\n\t\t\t\t\t\t\t! ( options && options.windowBits )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\topt.windowBits += 32;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Gzip header has no info about windows size, we can do autodetect only\n\t\t\t\t\t\t// for deflate. So, if window size not set, force it to max when gzip possible\n\t\t\t\t\t\tif ( opt.windowBits > 15 && opt.windowBits < 48 ) {\n\t\t\t\t\t\t\t// bit 3 (16) -> gzipped data\n\t\t\t\t\t\t\t// bit 4 (32) -> autodetect gzip/deflate\n\t\t\t\t\t\t\tif ( ( opt.windowBits & 15 ) === 0 ) {\n\t\t\t\t\t\t\t\topt.windowBits |= 15;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.err = 0; // error code, if happens (0 = Z_OK)\n\t\t\t\t\t\tthis.msg = ''; // error message\n\t\t\t\t\t\tthis.ended = false; // used to avoid multiple onEnd() calls\n\t\t\t\t\t\tthis.chunks = []; // chunks of compressed data\n\n\t\t\t\t\t\tthis.strm = new ZStream();\n\t\t\t\t\t\tthis.strm.avail_out = 0;\n\n\t\t\t\t\t\tvar status = zlib_inflate.inflateInit2(\n\t\t\t\t\t\t\tthis.strm,\n\t\t\t\t\t\t\topt.windowBits\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif ( status !== c.Z_OK ) {\n\t\t\t\t\t\t\tthrow new Error( msg[ status ] );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.header = new GZheader();\n\n\t\t\t\t\t\tzlib_inflate.inflateGetHeader( this.strm, this.header );\n\n\t\t\t\t\t\t// Setup dictionary\n\t\t\t\t\t\tif ( opt.dictionary ) {\n\t\t\t\t\t\t\t// Convert data if needed\n\t\t\t\t\t\t\tif ( typeof opt.dictionary === 'string' ) {\n\t\t\t\t\t\t\t\topt.dictionary = strings.string2buf(\n\t\t\t\t\t\t\t\t\topt.dictionary\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\ttoString.call( opt.dictionary ) ===\n\t\t\t\t\t\t\t\t'[object ArrayBuffer]'\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\topt.dictionary = new Uint8Array(\n\t\t\t\t\t\t\t\t\topt.dictionary\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( opt.raw ) {\n\t\t\t\t\t\t\t\t//In raw mode we need to set the dictionary early\n\t\t\t\t\t\t\t\tstatus = zlib_inflate.inflateSetDictionary(\n\t\t\t\t\t\t\t\t\tthis.strm,\n\t\t\t\t\t\t\t\t\topt.dictionary\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tif ( status !== c.Z_OK ) {\n\t\t\t\t\t\t\t\t\tthrow new Error( msg[ status ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Inflate#push(data[, mode]) -> Boolean\n\t\t\t\t\t * - data (Uint8Array|Array|ArrayBuffer|String): input data\n\t\t\t\t\t * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n\t\t\t\t\t *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n\t\t\t\t\t *\n\t\t\t\t\t * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n\t\t\t\t\t * new output chunks. Returns `true` on success. The last data block must have\n\t\t\t\t\t * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n\t\t\t\t\t * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n\t\t\t\t\t * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n\t\t\t\t\t *\n\t\t\t\t\t * On fail call [[Inflate#onEnd]] with error code and return false.\n\t\t\t\t\t *\n\t\t\t\t\t * We strongly recommend to use `Uint8Array` on input for best speed (output\n\t\t\t\t\t * format is detected automatically). Also, don't skip last param and always\n\t\t\t\t\t * use the same type in your code (boolean or number). That will improve JS speed.\n\t\t\t\t\t *\n\t\t\t\t\t * For regular `Array`-s make sure all elements are [0..255].\n\t\t\t\t\t *\n\t\t\t\t\t * ##### Example\n\t\t\t\t\t *\n\t\t\t\t\t * ```javascript\n\t\t\t\t\t * push(chunk, false); // push one of data chunks\n\t\t\t\t\t * ...\n\t\t\t\t\t * push(chunk, true);  // push last chunk\n\t\t\t\t\t * ```\n\t\t\t\t\t **/\n\t\t\t\t\tInflate.prototype.push = function ( data, mode ) {\n\t\t\t\t\t\tvar strm = this.strm;\n\t\t\t\t\t\tvar chunkSize = this.options.chunkSize;\n\t\t\t\t\t\tvar dictionary = this.options.dictionary;\n\t\t\t\t\t\tvar status, _mode;\n\t\t\t\t\t\tvar next_out_utf8, tail, utf8str;\n\n\t\t\t\t\t\t// Flag to properly process Z_BUF_ERROR on testing inflate call\n\t\t\t\t\t\t// when we check that all output data was flushed.\n\t\t\t\t\t\tvar allowBufError = false;\n\n\t\t\t\t\t\tif ( this.ended ) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_mode =\n\t\t\t\t\t\t\tmode === ~~mode\n\t\t\t\t\t\t\t\t? mode\n\t\t\t\t\t\t\t\t: mode === true\n\t\t\t\t\t\t\t\t? c.Z_FINISH\n\t\t\t\t\t\t\t\t: c.Z_NO_FLUSH;\n\n\t\t\t\t\t\t// Convert data if needed\n\t\t\t\t\t\tif ( typeof data === 'string' ) {\n\t\t\t\t\t\t\t// Only binary strings can be decompressed on practice\n\t\t\t\t\t\t\tstrm.input = strings.binstring2buf( data );\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\ttoString.call( data ) === '[object ArrayBuffer]'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tstrm.input = new Uint8Array( data );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstrm.input = data;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstrm.next_in = 0;\n\t\t\t\t\t\tstrm.avail_in = strm.input.length;\n\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\tif ( strm.avail_out === 0 ) {\n\t\t\t\t\t\t\t\tstrm.output = new utils.Buf8( chunkSize );\n\t\t\t\t\t\t\t\tstrm.next_out = 0;\n\t\t\t\t\t\t\t\tstrm.avail_out = chunkSize;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tstatus = zlib_inflate.inflate(\n\t\t\t\t\t\t\t\tstrm,\n\t\t\t\t\t\t\t\tc.Z_NO_FLUSH\n\t\t\t\t\t\t\t); /* no bad return value */\n\n\t\t\t\t\t\t\tif ( status === c.Z_NEED_DICT && dictionary ) {\n\t\t\t\t\t\t\t\tstatus = zlib_inflate.inflateSetDictionary(\n\t\t\t\t\t\t\t\t\tthis.strm,\n\t\t\t\t\t\t\t\t\tdictionary\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tstatus === c.Z_BUF_ERROR &&\n\t\t\t\t\t\t\t\tallowBufError === true\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tstatus = c.Z_OK;\n\t\t\t\t\t\t\t\tallowBufError = false;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tstatus !== c.Z_STREAM_END &&\n\t\t\t\t\t\t\t\tstatus !== c.Z_OK\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tthis.onEnd( status );\n\t\t\t\t\t\t\t\tthis.ended = true;\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( strm.next_out ) {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tstrm.avail_out === 0 ||\n\t\t\t\t\t\t\t\t\tstatus === c.Z_STREAM_END ||\n\t\t\t\t\t\t\t\t\t( strm.avail_in === 0 &&\n\t\t\t\t\t\t\t\t\t\t( _mode === c.Z_FINISH ||\n\t\t\t\t\t\t\t\t\t\t\t_mode === c.Z_SYNC_FLUSH ) )\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tif ( this.options.to === 'string' ) {\n\t\t\t\t\t\t\t\t\t\tnext_out_utf8 = strings.utf8border(\n\t\t\t\t\t\t\t\t\t\t\tstrm.output,\n\t\t\t\t\t\t\t\t\t\t\tstrm.next_out\n\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\ttail = strm.next_out - next_out_utf8;\n\t\t\t\t\t\t\t\t\t\tutf8str = strings.buf2string(\n\t\t\t\t\t\t\t\t\t\t\tstrm.output,\n\t\t\t\t\t\t\t\t\t\t\tnext_out_utf8\n\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// move tail\n\t\t\t\t\t\t\t\t\t\tstrm.next_out = tail;\n\t\t\t\t\t\t\t\t\t\tstrm.avail_out = chunkSize - tail;\n\t\t\t\t\t\t\t\t\t\tif ( tail ) {\n\t\t\t\t\t\t\t\t\t\t\tutils.arraySet(\n\t\t\t\t\t\t\t\t\t\t\t\tstrm.output,\n\t\t\t\t\t\t\t\t\t\t\t\tstrm.output,\n\t\t\t\t\t\t\t\t\t\t\t\tnext_out_utf8,\n\t\t\t\t\t\t\t\t\t\t\t\ttail,\n\t\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tthis.onData( utf8str );\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.onData(\n\t\t\t\t\t\t\t\t\t\t\tutils.shrinkBuf(\n\t\t\t\t\t\t\t\t\t\t\t\tstrm.output,\n\t\t\t\t\t\t\t\t\t\t\t\tstrm.next_out\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// When no more input data, we should check that internal inflate buffers\n\t\t\t\t\t\t\t// are flushed. The only way to do it when avail_out = 0 - run one more\n\t\t\t\t\t\t\t// inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n\t\t\t\t\t\t\t// Here we set flag to process this error properly.\n\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t// NOTE. Deflate does not return error in this case and does not needs such\n\t\t\t\t\t\t\t// logic.\n\t\t\t\t\t\t\tif ( strm.avail_in === 0 && strm.avail_out === 0 ) {\n\t\t\t\t\t\t\t\tallowBufError = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} while (\n\t\t\t\t\t\t\t( strm.avail_in > 0 || strm.avail_out === 0 ) &&\n\t\t\t\t\t\t\tstatus !== c.Z_STREAM_END\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif ( status === c.Z_STREAM_END ) {\n\t\t\t\t\t\t\t_mode = c.Z_FINISH;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Finalize on the last chunk.\n\t\t\t\t\t\tif ( _mode === c.Z_FINISH ) {\n\t\t\t\t\t\t\tstatus = zlib_inflate.inflateEnd( this.strm );\n\t\t\t\t\t\t\tthis.onEnd( status );\n\t\t\t\t\t\t\tthis.ended = true;\n\t\t\t\t\t\t\treturn status === c.Z_OK;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// callback interim results if Z_SYNC_FLUSH.\n\t\t\t\t\t\tif ( _mode === c.Z_SYNC_FLUSH ) {\n\t\t\t\t\t\t\tthis.onEnd( c.Z_OK );\n\t\t\t\t\t\t\tstrm.avail_out = 0;\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t};\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Inflate#onData(chunk) -> Void\n\t\t\t\t\t * - chunk (Uint8Array|Array|String): output data. Type of array depends\n\t\t\t\t\t *   on js engine support. When string output requested, each chunk\n\t\t\t\t\t *   will be string.\n\t\t\t\t\t *\n\t\t\t\t\t * By default, stores data blocks in `chunks[]` property and glue\n\t\t\t\t\t * those in `onEnd`. Override this handler, if you need another behaviour.\n\t\t\t\t\t **/\n\t\t\t\t\tInflate.prototype.onData = function ( chunk ) {\n\t\t\t\t\t\tthis.chunks.push( chunk );\n\t\t\t\t\t};\n\n\t\t\t\t\t/**\n\t\t\t\t\t * Inflate#onEnd(status) -> Void\n\t\t\t\t\t * - status (Number): inflate status. 0 (Z_OK) on success,\n\t\t\t\t\t *   other if not.\n\t\t\t\t\t *\n\t\t\t\t\t * Called either after you tell inflate that the input stream is\n\t\t\t\t\t * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n\t\t\t\t\t * or if an error happened. By default - join collected chunks,\n\t\t\t\t\t * free memory and fill `results` / `err` properties.\n\t\t\t\t\t **/\n\t\t\t\t\tInflate.prototype.onEnd = function ( status ) {\n\t\t\t\t\t\t// On success - join\n\t\t\t\t\t\tif ( status === c.Z_OK ) {\n\t\t\t\t\t\t\tif ( this.options.to === 'string' ) {\n\t\t\t\t\t\t\t\t// Glue & convert here, until we teach pako to send\n\t\t\t\t\t\t\t\t// utf8 aligned strings to onData\n\t\t\t\t\t\t\t\tthis.result = this.chunks.join( '' );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.result = utils.flattenChunks(\n\t\t\t\t\t\t\t\t\tthis.chunks\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.chunks = [];\n\t\t\t\t\t\tthis.err = status;\n\t\t\t\t\t\tthis.msg = this.strm.msg;\n\t\t\t\t\t};\n\n\t\t\t\t\t/**\n\t\t\t\t\t * inflate(data[, options]) -> Uint8Array|Array|String\n\t\t\t\t\t * - data (Uint8Array|Array|String): input data to decompress.\n\t\t\t\t\t * - options (Object): zlib inflate options.\n\t\t\t\t\t *\n\t\t\t\t\t * Decompress `data` with inflate/ungzip and `options`. Autodetect\n\t\t\t\t\t * format via wrapper header by default. That's why we don't provide\n\t\t\t\t\t * separate `ungzip` method.\n\t\t\t\t\t *\n\t\t\t\t\t * Supported options are:\n\t\t\t\t\t *\n\t\t\t\t\t * - windowBits\n\t\t\t\t\t *\n\t\t\t\t\t * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n\t\t\t\t\t * for more information.\n\t\t\t\t\t *\n\t\t\t\t\t * Sugar (options):\n\t\t\t\t\t *\n\t\t\t\t\t * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n\t\t\t\t\t *   negative windowBits implicitly.\n\t\t\t\t\t * - `to` (String) - if equal to 'string', then result will be converted\n\t\t\t\t\t *   from utf8 to utf16 (javascript) string. When string output requested,\n\t\t\t\t\t *   chunk length can differ from `chunkSize`, depending on content.\n\t\t\t\t\t *\n\t\t\t\t\t *\n\t\t\t\t\t * ##### Example:\n\t\t\t\t\t *\n\t\t\t\t\t * ```javascript\n\t\t\t\t\t * var pako = require('pako')\n\t\t\t\t\t *   , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n\t\t\t\t\t *   , output;\n\t\t\t\t\t *\n\t\t\t\t\t * try {\n\t\t\t\t\t *   output = pako.inflate(input);\n\t\t\t\t\t * } catch (err)\n\t\t\t\t\t *   console.log(err);\n\t\t\t\t\t * }\n\t\t\t\t\t * ```\n\t\t\t\t\t **/\n\t\t\t\t\tfunction inflate( input, options ) {\n\t\t\t\t\t\tvar inflator = new Inflate( options );\n\n\t\t\t\t\t\tinflator.push( input, true );\n\n\t\t\t\t\t\t// That will never happens, if you don't cheat with options :)\n\t\t\t\t\t\tif ( inflator.err ) {\n\t\t\t\t\t\t\tthrow inflator.msg || msg[ inflator.err ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn inflator.result;\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n\t\t\t\t\t * inflateRaw(data[, options]) -> Uint8Array|Array|String\n\t\t\t\t\t * - data (Uint8Array|Array|String): input data to decompress.\n\t\t\t\t\t * - options (Object): zlib inflate options.\n\t\t\t\t\t *\n\t\t\t\t\t * The same as [[inflate]], but creates raw data, without wrapper\n\t\t\t\t\t * (header and adler32 crc).\n\t\t\t\t\t **/\n\t\t\t\t\tfunction inflateRaw( input, options ) {\n\t\t\t\t\t\toptions = options || {};\n\t\t\t\t\t\toptions.raw = true;\n\t\t\t\t\t\treturn inflate( input, options );\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n\t\t\t\t\t * ungzip(data[, options]) -> Uint8Array|Array|String\n\t\t\t\t\t * - data (Uint8Array|Array|String): input data to decompress.\n\t\t\t\t\t * - options (Object): zlib inflate options.\n\t\t\t\t\t *\n\t\t\t\t\t * Just shortcut to [[inflate]], because it autodetects format\n\t\t\t\t\t * by header.content. Done for convenience.\n\t\t\t\t\t **/\n\n\t\t\t\t\texports.Inflate = Inflate;\n\t\t\t\t\texports.inflate = inflate;\n\t\t\t\t\texports.inflateRaw = inflateRaw;\n\t\t\t\t\texports.ungzip = inflate;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t'./utils/common': 1,\n\t\t\t\t\t'./utils/strings': 2,\n\t\t\t\t\t'./zlib/constants': 4,\n\t\t\t\t\t'./zlib/gzheader': 6,\n\t\t\t\t\t'./zlib/inflate': 8,\n\t\t\t\t\t'./zlib/messages': 10,\n\t\t\t\t\t'./zlib/zstream': 11,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{},\n\t\t[]\n\t)( '/lib/inflate.js' );\n} )();\n/* eslint-enable */\n", "/**\n * Credits:\n *\n * lib-font\n * https://github.com/Pomax/lib-font\n * https://github.com/Pomax/lib-font/blob/master/lib-font.browser.js\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2020 pomax@nihongoresources.com\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/* eslint eslint-comments/no-unlimited-disable: 0 */\n/* eslint-disable */\n// import pako from 'pako';\nimport unbrotli from './unbrotli';\nimport GzipDecode from './inflate';\n\nlet fetchFunction = globalThis.fetch;\n// if ( ! fetchFunction ) {\n// \tlet backlog = [];\n// \tfetchFunction = globalThis.fetch = ( ...args ) =>\n// \t\tnew Promise( ( resolve, reject ) => {\n// \t\t\tbacklog.push( { args: args, resolve: resolve, reject: reject } );\n// \t\t} );\n// \timport( 'fs' )\n// \t\t.then( ( fs ) => {\n// \t\t\tfetchFunction = globalThis.fetch = async function ( path ) {\n// \t\t\t\treturn new Promise( ( resolve, reject ) => {\n// \t\t\t\t\tfs.readFile( path, ( err, data ) => {\n// \t\t\t\t\t\tif ( err ) return reject( err );\n// \t\t\t\t\t\tresolve( { ok: true, arrayBuffer: () => data.buffer } );\n// \t\t\t\t\t} );\n// \t\t\t\t} );\n// \t\t\t};\n// \t\t\twhile ( backlog.length ) {\n// \t\t\t\tlet instruction = backlog.shift();\n// \t\t\t\tfetchFunction( ...instruction.args )\n// \t\t\t\t\t.then( ( data ) => instruction.resolve( data ) )\n// \t\t\t\t\t.catch( ( err ) => instruction.reject( err ) );\n// \t\t\t}\n// \t\t} )\n// \t\t.catch( ( err ) => {\n// \t\t\tconsole.error( err );\n// \t\t\tthrow new Error(\n// \t\t\t\t`lib-font cannot run unless either the Fetch API or Node's filesystem module is available.`\n// \t\t\t);\n// \t\t} );\n// }\nclass Event {\n\tconstructor( type, detail = {}, msg ) {\n\t\tthis.type = type;\n\t\tthis.detail = detail;\n\t\tthis.msg = msg;\n\t\tObject.defineProperty( this, `__mayPropagate`, {\n\t\t\tenumerable: false,\n\t\t\twritable: true,\n\t\t} );\n\t\tthis.__mayPropagate = true;\n\t}\n\tpreventDefault() {}\n\tstopPropagation() {\n\t\tthis.__mayPropagate = false;\n\t}\n\tvalueOf() {\n\t\treturn this;\n\t}\n\ttoString() {\n\t\treturn this.msg\n\t\t\t? `[${ this.type } event]: ${ this.msg }`\n\t\t\t: `[${ this.type } event]`;\n\t}\n}\nclass EventManager {\n\tconstructor() {\n\t\tthis.listeners = {};\n\t}\n\taddEventListener( type, listener, useCapture ) {\n\t\tlet bin = this.listeners[ type ] || [];\n\t\tif ( useCapture ) bin.unshift( listener );\n\t\telse bin.push( listener );\n\t\tthis.listeners[ type ] = bin;\n\t}\n\tremoveEventListener( type, listener ) {\n\t\tlet bin = this.listeners[ type ] || [];\n\t\tlet pos = bin.findIndex( ( e ) => e === listener );\n\t\tif ( pos > -1 ) {\n\t\t\tbin.splice( pos, 1 );\n\t\t\tthis.listeners[ type ] = bin;\n\t\t}\n\t}\n\tdispatch( event ) {\n\t\tlet bin = this.listeners[ event.type ];\n\t\tif ( bin ) {\n\t\t\tfor ( let l = 0, e = bin.length; l < e; l++ ) {\n\t\t\t\tif ( ! event.__mayPropagate ) break;\n\t\t\t\tbin[ l ]( event );\n\t\t\t}\n\t\t}\n\t}\n}\nconst startDate = new Date( `1904-01-01T00:00:00+0000` ).getTime();\nfunction asText( data ) {\n\treturn Array.from( data )\n\t\t.map( ( v ) => String.fromCharCode( v ) )\n\t\t.join( `` );\n}\nclass Parser {\n\tconstructor( dict, dataview, name ) {\n\t\tthis.name = ( name || dict.tag || `` ).trim();\n\t\tthis.length = dict.length;\n\t\tthis.start = dict.offset;\n\t\tthis.offset = 0;\n\t\tthis.data = dataview;\n\t\t[\n\t\t\t`getInt8`,\n\t\t\t`getUint8`,\n\t\t\t`getInt16`,\n\t\t\t`getUint16`,\n\t\t\t`getInt32`,\n\t\t\t`getUint32`,\n\t\t\t`getBigInt64`,\n\t\t\t`getBigUint64`,\n\t\t].forEach( ( name ) => {\n\t\t\tlet fn = name.replace( /get(Big)?/, '' ).toLowerCase();\n\t\t\tlet increment = parseInt( name.replace( /[^\\d]/g, '' ) ) / 8;\n\t\t\tObject.defineProperty( this, fn, {\n\t\t\t\tget: () => this.getValue( name, increment ),\n\t\t\t} );\n\t\t} );\n\t}\n\tget currentPosition() {\n\t\treturn this.start + this.offset;\n\t}\n\tset currentPosition( position ) {\n\t\tthis.start = position;\n\t\tthis.offset = 0;\n\t}\n\tskip( n = 0, bits = 8 ) {\n\t\tthis.offset += ( n * bits ) / 8;\n\t}\n\tgetValue( type, increment ) {\n\t\tlet pos = this.start + this.offset;\n\t\tthis.offset += increment;\n\t\ttry {\n\t\t\treturn this.data[ type ]( pos );\n\t\t} catch ( e ) {\n\t\t\tconsole.error( `parser`, type, increment, this );\n\t\t\tconsole.error( `parser`, this.start, this.offset );\n\t\t\tthrow e;\n\t\t}\n\t}\n\tflags( n ) {\n\t\tif ( n === 8 || n === 16 || n === 32 || n === 64 ) {\n\t\t\treturn this[ `uint${ n }` ]\n\t\t\t\t.toString( 2 )\n\t\t\t\t.padStart( n, 0 )\n\t\t\t\t.split( `` )\n\t\t\t\t.map( ( v ) => v === '1' );\n\t\t}\n\t\tconsole.error(\n\t\t\t`Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long`\n\t\t);\n\t\tconsole.trace();\n\t}\n\tget tag() {\n\t\tconst t = this.uint32;\n\t\treturn asText( [\n\t\t\t( t >> 24 ) & 255,\n\t\t\t( t >> 16 ) & 255,\n\t\t\t( t >> 8 ) & 255,\n\t\t\tt & 255,\n\t\t] );\n\t}\n\tget fixed() {\n\t\tlet major = this.int16;\n\t\tlet minor = Math.round( ( 1e3 * this.uint16 ) / 65356 );\n\t\treturn major + minor / 1e3;\n\t}\n\tget legacyFixed() {\n\t\tlet major = this.uint16;\n\t\tlet minor = this.uint16.toString( 16 ).padStart( 4, 0 );\n\t\treturn parseFloat( `${ major }.${ minor }` );\n\t}\n\tget uint24() {\n\t\treturn ( this.uint8 << 16 ) + ( this.uint8 << 8 ) + this.uint8;\n\t}\n\tget uint128() {\n\t\tlet value = 0;\n\t\tfor ( let i = 0; i < 5; i++ ) {\n\t\t\tlet byte = this.uint8;\n\t\t\tvalue = value * 128 + ( byte & 127 );\n\t\t\tif ( byte < 128 ) break;\n\t\t}\n\t\treturn value;\n\t}\n\tget longdatetime() {\n\t\treturn new Date( startDate + 1e3 * parseInt( this.int64.toString() ) );\n\t}\n\tget fword() {\n\t\treturn this.int16;\n\t}\n\tget ufword() {\n\t\treturn this.uint16;\n\t}\n\tget Offset16() {\n\t\treturn this.uint16;\n\t}\n\tget Offset32() {\n\t\treturn this.uint32;\n\t}\n\tget F2DOT14() {\n\t\tconst bits = p.uint16;\n\t\tconst integer = [ 0, 1, -2, -1 ][ bits >> 14 ];\n\t\tconst fraction = bits & 16383;\n\t\treturn integer + fraction / 16384;\n\t}\n\tverifyLength() {\n\t\tif ( this.offset != this.length ) {\n\t\t\tconsole.error(\n\t\t\t\t`unexpected parsed table size (${ this.offset }) for \"${ this.name }\" (expected ${ this.length })`\n\t\t\t);\n\t\t}\n\t}\n\treadBytes( n = 0, position = 0, bits = 8, signed = false ) {\n\t\tn = n || this.length;\n\t\tif ( n === 0 ) return [];\n\t\tif ( position ) this.currentPosition = position;\n\t\tconst fn = `${ signed ? `` : `u` }int${ bits }`,\n\t\t\tslice = [];\n\t\twhile ( n-- ) slice.push( this[ fn ] );\n\t\treturn slice;\n\t}\n}\nclass ParsedData {\n\tconstructor( parser ) {\n\t\tconst pGetter = { enumerable: false, get: () => parser };\n\t\tObject.defineProperty( this, `parser`, pGetter );\n\t\tconst start = parser.currentPosition;\n\t\tconst startGetter = { enumerable: false, get: () => start };\n\t\tObject.defineProperty( this, `start`, startGetter );\n\t}\n\tload( struct ) {\n\t\tObject.keys( struct ).forEach( ( p ) => {\n\t\t\tlet props = Object.getOwnPropertyDescriptor( struct, p );\n\t\t\tif ( props.get ) {\n\t\t\t\tthis[ p ] = props.get.bind( this );\n\t\t\t} else if ( props.value !== undefined ) {\n\t\t\t\tthis[ p ] = props.value;\n\t\t\t}\n\t\t} );\n\t\tif ( this.parser.length ) {\n\t\t\tthis.parser.verifyLength();\n\t\t}\n\t}\n}\nclass SimpleTable extends ParsedData {\n\tconstructor( dict, dataview, name ) {\n\t\tconst { parser: parser, start: start } = super(\n\t\t\tnew Parser( dict, dataview, name )\n\t\t);\n\t\tconst pGetter = { enumerable: false, get: () => parser };\n\t\tObject.defineProperty( this, `p`, pGetter );\n\t\tconst startGetter = { enumerable: false, get: () => start };\n\t\tObject.defineProperty( this, `tableStart`, startGetter );\n\t}\n}\nfunction lazy$1( object, property, getter ) {\n\tlet val;\n\tObject.defineProperty( object, property, {\n\t\tget: () => {\n\t\t\tif ( val ) return val;\n\t\t\tval = getter();\n\t\t\treturn val;\n\t\t},\n\t\tenumerable: true,\n\t} );\n}\nclass SFNT extends SimpleTable {\n\tconstructor( font, dataview, createTable ) {\n\t\tconst { p: p } = super( { offset: 0, length: 12 }, dataview, `sfnt` );\n\t\tthis.version = p.uint32;\n\t\tthis.numTables = p.uint16;\n\t\tthis.searchRange = p.uint16;\n\t\tthis.entrySelector = p.uint16;\n\t\tthis.rangeShift = p.uint16;\n\t\tp.verifyLength();\n\t\tthis.directory = [ ...new Array( this.numTables ) ].map(\n\t\t\t( _ ) => new TableRecord( p )\n\t\t);\n\t\tthis.tables = {};\n\t\tthis.directory.forEach( ( entry ) => {\n\t\t\tconst getter = () =>\n\t\t\t\tcreateTable(\n\t\t\t\t\tthis.tables,\n\t\t\t\t\t{\n\t\t\t\t\t\ttag: entry.tag,\n\t\t\t\t\t\toffset: entry.offset,\n\t\t\t\t\t\tlength: entry.length,\n\t\t\t\t\t},\n\t\t\t\t\tdataview\n\t\t\t\t);\n\t\t\tlazy$1( this.tables, entry.tag.trim(), getter );\n\t\t} );\n\t}\n}\nclass TableRecord {\n\tconstructor( p ) {\n\t\tthis.tag = p.tag;\n\t\tthis.checksum = p.uint32;\n\t\tthis.offset = p.uint32;\n\t\tthis.length = p.uint32;\n\t}\n}\nconst gzipDecode = GzipDecode.inflate || undefined;\nlet nativeGzipDecode = undefined;\n// if ( ! gzipDecode ) {\n// \timport( 'zlib' ).then( ( zlib ) => {\n// \t\tnativeGzipDecode = ( buffer ) => zlib.unzipSync( buffer );\n// \t} );\n// }\nclass WOFF$1 extends SimpleTable {\n\tconstructor( font, dataview, createTable ) {\n\t\tconst { p: p } = super( { offset: 0, length: 44 }, dataview, `woff` );\n\t\tthis.signature = p.tag;\n\t\tthis.flavor = p.uint32;\n\t\tthis.length = p.uint32;\n\t\tthis.numTables = p.uint16;\n\t\tp.uint16;\n\t\tthis.totalSfntSize = p.uint32;\n\t\tthis.majorVersion = p.uint16;\n\t\tthis.minorVersion = p.uint16;\n\t\tthis.metaOffset = p.uint32;\n\t\tthis.metaLength = p.uint32;\n\t\tthis.metaOrigLength = p.uint32;\n\t\tthis.privOffset = p.uint32;\n\t\tthis.privLength = p.uint32;\n\t\tp.verifyLength();\n\t\tthis.directory = [ ...new Array( this.numTables ) ].map(\n\t\t\t( _ ) => new WoffTableDirectoryEntry( p )\n\t\t);\n\t\tbuildWoffLazyLookups( this, dataview, createTable );\n\t}\n}\nclass WoffTableDirectoryEntry {\n\tconstructor( p ) {\n\t\tthis.tag = p.tag;\n\t\tthis.offset = p.uint32;\n\t\tthis.compLength = p.uint32;\n\t\tthis.origLength = p.uint32;\n\t\tthis.origChecksum = p.uint32;\n\t}\n}\nfunction buildWoffLazyLookups( woff, dataview, createTable ) {\n\twoff.tables = {};\n\twoff.directory.forEach( ( entry ) => {\n\t\tlazy$1( woff.tables, entry.tag.trim(), () => {\n\t\t\tlet offset = 0;\n\t\t\tlet view = dataview;\n\t\t\tif ( entry.compLength !== entry.origLength ) {\n\t\t\t\tconst data = dataview.buffer.slice(\n\t\t\t\t\tentry.offset,\n\t\t\t\t\tentry.offset + entry.compLength\n\t\t\t\t);\n\t\t\t\tlet unpacked;\n\t\t\t\tif ( gzipDecode ) {\n\t\t\t\t\tunpacked = gzipDecode( new Uint8Array( data ) );\n\t\t\t\t} else if ( nativeGzipDecode ) {\n\t\t\t\t\tunpacked = nativeGzipDecode( new Uint8Array( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tconst msg = `no brotli decoder available to decode WOFF2 font`;\n\t\t\t\t\tif ( font.onerror ) font.onerror( msg );\n\t\t\t\t\tthrow new Error( msg );\n\t\t\t\t}\n\t\t\t\tview = new DataView( unpacked.buffer );\n\t\t\t} else {\n\t\t\t\toffset = entry.offset;\n\t\t\t}\n\t\t\treturn createTable(\n\t\t\t\twoff.tables,\n\t\t\t\t{ tag: entry.tag, offset: offset, length: entry.origLength },\n\t\t\t\tview\n\t\t\t);\n\t\t} );\n\t} );\n}\nconst brotliDecode = unbrotli;\nlet nativeBrotliDecode = undefined;\n// if ( ! brotliDecode ) {\n// \timport( 'zlib' ).then( ( zlib ) => {\n// \t\tnativeBrotliDecode = ( buffer ) => zlib.brotliDecompressSync( buffer );\n// \t} );\n// }\nclass WOFF2$1 extends SimpleTable {\n\tconstructor( font, dataview, createTable ) {\n\t\tconst { p: p } = super( { offset: 0, length: 48 }, dataview, `woff2` );\n\t\tthis.signature = p.tag;\n\t\tthis.flavor = p.uint32;\n\t\tthis.length = p.uint32;\n\t\tthis.numTables = p.uint16;\n\t\tp.uint16;\n\t\tthis.totalSfntSize = p.uint32;\n\t\tthis.totalCompressedSize = p.uint32;\n\t\tthis.majorVersion = p.uint16;\n\t\tthis.minorVersion = p.uint16;\n\t\tthis.metaOffset = p.uint32;\n\t\tthis.metaLength = p.uint32;\n\t\tthis.metaOrigLength = p.uint32;\n\t\tthis.privOffset = p.uint32;\n\t\tthis.privLength = p.uint32;\n\t\tp.verifyLength();\n\t\tthis.directory = [ ...new Array( this.numTables ) ].map(\n\t\t\t( _ ) => new Woff2TableDirectoryEntry( p )\n\t\t);\n\t\tlet dictOffset = p.currentPosition;\n\t\tthis.directory[ 0 ].offset = 0;\n\t\tthis.directory.forEach( ( e, i ) => {\n\t\t\tlet next = this.directory[ i + 1 ];\n\t\t\tif ( next ) {\n\t\t\t\tnext.offset =\n\t\t\t\t\te.offset +\n\t\t\t\t\t( e.transformLength !== undefined\n\t\t\t\t\t\t? e.transformLength\n\t\t\t\t\t\t: e.origLength );\n\t\t\t}\n\t\t} );\n\t\tlet decoded;\n\t\tlet buffer = dataview.buffer.slice( dictOffset );\n\t\tif ( brotliDecode ) {\n\t\t\tdecoded = brotliDecode( new Uint8Array( buffer ) );\n\t\t} else if ( nativeBrotliDecode ) {\n\t\t\tdecoded = new Uint8Array( nativeBrotliDecode( buffer ) );\n\t\t} else {\n\t\t\tconst msg = `no brotli decoder available to decode WOFF2 font`;\n\t\t\tif ( font.onerror ) font.onerror( msg );\n\t\t\tthrow new Error( msg );\n\t\t}\n\t\tbuildWoff2LazyLookups( this, decoded, createTable );\n\t}\n}\nclass Woff2TableDirectoryEntry {\n\tconstructor( p ) {\n\t\tthis.flags = p.uint8;\n\t\tconst tagNumber = ( this.tagNumber = this.flags & 63 );\n\t\tif ( tagNumber === 63 ) {\n\t\t\tthis.tag = p.tag;\n\t\t} else {\n\t\t\tthis.tag = getWOFF2Tag( tagNumber );\n\t\t}\n\t\tconst transformVersion = ( this.transformVersion =\n\t\t\t( this.flags & 192 ) >> 6 );\n\t\tlet hasTransforms = transformVersion !== 0;\n\t\tif ( this.tag === `glyf` || this.tag === `loca` ) {\n\t\t\thasTransforms = this.transformVersion !== 3;\n\t\t}\n\t\tthis.origLength = p.uint128;\n\t\tif ( hasTransforms ) {\n\t\t\tthis.transformLength = p.uint128;\n\t\t}\n\t}\n}\nfunction buildWoff2LazyLookups( woff2, decoded, createTable ) {\n\twoff2.tables = {};\n\twoff2.directory.forEach( ( entry ) => {\n\t\tlazy$1( woff2.tables, entry.tag.trim(), () => {\n\t\t\tconst start = entry.offset;\n\t\t\tconst end =\n\t\t\t\tstart +\n\t\t\t\t( entry.transformLength\n\t\t\t\t\t? entry.transformLength\n\t\t\t\t\t: entry.origLength );\n\t\t\tconst data = new DataView( decoded.slice( start, end ).buffer );\n\t\t\ttry {\n\t\t\t\treturn createTable(\n\t\t\t\t\twoff2.tables,\n\t\t\t\t\t{ tag: entry.tag, offset: 0, length: entry.origLength },\n\t\t\t\t\tdata\n\t\t\t\t);\n\t\t\t} catch ( e ) {\n\t\t\t\tconsole.error( e );\n\t\t\t}\n\t\t} );\n\t} );\n}\nfunction getWOFF2Tag( flag ) {\n\treturn [\n\t\t`cmap`,\n\t\t`head`,\n\t\t`hhea`,\n\t\t`hmtx`,\n\t\t`maxp`,\n\t\t`name`,\n\t\t`OS/2`,\n\t\t`post`,\n\t\t`cvt `,\n\t\t`fpgm`,\n\t\t`glyf`,\n\t\t`loca`,\n\t\t`prep`,\n\t\t`CFF `,\n\t\t`VORG`,\n\t\t`EBDT`,\n\t\t`EBLC`,\n\t\t`gasp`,\n\t\t`hdmx`,\n\t\t`kern`,\n\t\t`LTSH`,\n\t\t`PCLT`,\n\t\t`VDMX`,\n\t\t`vhea`,\n\t\t`vmtx`,\n\t\t`BASE`,\n\t\t`GDEF`,\n\t\t`GPOS`,\n\t\t`GSUB`,\n\t\t`EBSC`,\n\t\t`JSTF`,\n\t\t`MATH`,\n\t\t`CBDT`,\n\t\t`CBLC`,\n\t\t`COLR`,\n\t\t`CPAL`,\n\t\t`SVG `,\n\t\t`sbix`,\n\t\t`acnt`,\n\t\t`avar`,\n\t\t`bdat`,\n\t\t`bloc`,\n\t\t`bsln`,\n\t\t`cvar`,\n\t\t`fdsc`,\n\t\t`feat`,\n\t\t`fmtx`,\n\t\t`fvar`,\n\t\t`gvar`,\n\t\t`hsty`,\n\t\t`just`,\n\t\t`lcar`,\n\t\t`mort`,\n\t\t`morx`,\n\t\t`opbd`,\n\t\t`prop`,\n\t\t`trak`,\n\t\t`Zapf`,\n\t\t`Silf`,\n\t\t`Glat`,\n\t\t`Gloc`,\n\t\t`Feat`,\n\t\t`Sill`,\n\t][ flag & 63 ];\n}\nconst tableClasses = {};\nlet tableClassesLoaded = false;\nPromise.all( [\n\tPromise.resolve().then( function () {\n\t\treturn cmap$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn head$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn hhea$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn hmtx$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn maxp$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn name$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn OS2$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn post$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn BASE$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn GDEF$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn GSUB$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn GPOS$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn SVG$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn fvar$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn cvt$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn fpgm$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn gasp$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn glyf$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn loca$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn prep$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn CFF$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn CFF2$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn VORG$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn EBLC$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn EBDT$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn EBSC$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn CBLC$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn CBDT$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn sbix$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn COLR$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn CPAL$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn DSIG$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn hdmx$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn kern$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn LTSH$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn MERG$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn meta$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn PCLT$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn VDMX$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn vhea$1;\n\t} ),\n\tPromise.resolve().then( function () {\n\t\treturn vmtx$1;\n\t} ),\n] ).then( ( data ) => {\n\tdata.forEach( ( e ) => {\n\t\tlet name = Object.keys( e )[ 0 ];\n\t\ttableClasses[ name ] = e[ name ];\n\t} );\n\ttableClassesLoaded = true;\n} );\nfunction createTable( tables, dict, dataview ) {\n\tlet name = dict.tag.replace( /[^\\w\\d]/g, `` );\n\tlet Type = tableClasses[ name ];\n\tif ( Type ) return new Type( dict, dataview, tables );\n\tconsole.warn(\n\t\t`lib-font has no definition for ${ name }. The table was skipped.`\n\t);\n\treturn {};\n}\nfunction loadTableClasses() {\n\tlet count = 0;\n\tfunction checkLoaded( resolve, reject ) {\n\t\tif ( ! tableClassesLoaded ) {\n\t\t\tif ( count > 10 ) {\n\t\t\t\treturn reject( new Error( `loading took too long` ) );\n\t\t\t}\n\t\t\tcount++;\n\t\t\treturn setTimeout( () => checkLoaded( resolve ), 250 );\n\t\t}\n\t\tresolve( createTable );\n\t}\n\treturn new Promise( ( resolve, reject ) => checkLoaded( resolve ) );\n}\nfunction getFontCSSFormat( path, errorOnStyle ) {\n\tlet pos = path.lastIndexOf( `.` );\n\tlet ext = ( path.substring( pos + 1 ) || `` ).toLowerCase();\n\tlet format = {\n\t\tttf: `truetype`,\n\t\totf: `opentype`,\n\t\twoff: `woff`,\n\t\twoff2: `woff2`,\n\t}[ ext ];\n\tif ( format ) return format;\n\tlet msg = {\n\t\teot: `The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.`,\n\t\tsvg: `The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.`,\n\t\tfon: `The .fon format is not supported: this is an ancient Windows bitmap font format.`,\n\t\tttc: `Based on the current CSS specification, font collections are not (yet?) supported.`,\n\t}[ ext ];\n\tif ( ! msg ) msg = `${ path } is not a known webfont format.`;\n\tif ( errorOnStyle ) {\n\t\tthrow new Error( msg );\n\t} else {\n\t\tconsole.warn( `Could not load font: ${ msg }` );\n\t}\n}\nasync function setupFontFace( name, url, options = {} ) {\n\tif ( ! globalThis.document ) return;\n\tlet format = getFontCSSFormat( url, options.errorOnStyle );\n\tif ( ! format ) return;\n\tlet style = document.createElement( `style` );\n\tstyle.className = `injected-by-Font-js`;\n\tlet rules = [];\n\tif ( options.styleRules ) {\n\t\trules = Object.entries( options.styleRules ).map(\n\t\t\t( [ key, value ] ) => `${ key }: ${ value };`\n\t\t);\n\t}\n\tstyle.textContent = `\\n@font-face {\\n    font-family: \"${ name }\";\\n    ${ rules.join(\n\t\t`\\n\\t`\n\t) }\\n    src: url(\"${ url }\") format(\"${ format }\");\\n}`;\n\tglobalThis.document.head.appendChild( style );\n\treturn style;\n}\nconst TTF = [ 0, 1, 0, 0 ];\nconst OTF = [ 79, 84, 84, 79 ];\nconst WOFF = [ 119, 79, 70, 70 ];\nconst WOFF2 = [ 119, 79, 70, 50 ];\nfunction match( ar1, ar2 ) {\n\tif ( ar1.length !== ar2.length ) return;\n\tfor ( let i = 0; i < ar1.length; i++ ) {\n\t\tif ( ar1[ i ] !== ar2[ i ] ) return;\n\t}\n\treturn true;\n}\nfunction validFontFormat( dataview ) {\n\tconst LEAD_BYTES = [\n\t\tdataview.getUint8( 0 ),\n\t\tdataview.getUint8( 1 ),\n\t\tdataview.getUint8( 2 ),\n\t\tdataview.getUint8( 3 ),\n\t];\n\tif ( match( LEAD_BYTES, TTF ) || match( LEAD_BYTES, OTF ) ) return `SFNT`;\n\tif ( match( LEAD_BYTES, WOFF ) ) return `WOFF`;\n\tif ( match( LEAD_BYTES, WOFF2 ) ) return `WOFF2`;\n}\nfunction checkFetchResponseStatus( response ) {\n\tif ( ! response.ok ) {\n\t\tthrow new Error(\n\t\t\t`HTTP ${ response.status } - ${ response.statusText }`\n\t\t);\n\t}\n\treturn response;\n}\nclass Font extends EventManager {\n\tconstructor( name, options = {} ) {\n\t\tsuper();\n\t\tthis.name = name;\n\t\tthis.options = options;\n\t\tthis.metrics = false;\n\t}\n\tget src() {\n\t\treturn this.__src;\n\t}\n\tset src( src ) {\n\t\tthis.__src = src;\n\t\t( async () => {\n\t\t\tif ( globalThis.document && ! this.options.skipStyleSheet ) {\n\t\t\t\tawait setupFontFace( this.name, src, this.options );\n\t\t\t}\n\t\t\tthis.loadFont( src );\n\t\t} )();\n\t}\n\tasync loadFont( url, filename ) {\n\t\tfetch( url )\n\t\t\t.then(\n\t\t\t\t( response ) =>\n\t\t\t\t\tcheckFetchResponseStatus( response ) &&\n\t\t\t\t\tresponse.arrayBuffer()\n\t\t\t)\n\t\t\t.then( ( buffer ) =>\n\t\t\t\tthis.fromDataBuffer( buffer, filename || url )\n\t\t\t)\n\t\t\t.catch( ( err ) => {\n\t\t\t\tconst evt = new Event(\n\t\t\t\t\t`error`,\n\t\t\t\t\terr,\n\t\t\t\t\t`Failed to load font at ${ filename || url }`\n\t\t\t\t);\n\t\t\t\tthis.dispatch( evt );\n\t\t\t\tif ( this.onerror ) this.onerror( evt );\n\t\t\t} );\n\t}\n\tasync fromDataBuffer( buffer, filenameOrUrL ) {\n\t\tthis.fontData = new DataView( buffer );\n\t\tlet type = validFontFormat( this.fontData );\n\t\tif ( ! type ) {\n\t\t\tthrow new Error(\n\t\t\t\t`${ filenameOrUrL } is either an unsupported font format, or not a font at all.`\n\t\t\t);\n\t\t}\n\t\tawait this.parseBasicData( type );\n\t\tconst evt = new Event( 'load', { font: this } );\n\t\tthis.dispatch( evt );\n\t\tif ( this.onload ) this.onload( evt );\n\t}\n\tasync parseBasicData( type ) {\n\t\treturn loadTableClasses().then( ( createTable ) => {\n\t\t\tif ( type === `SFNT` ) {\n\t\t\t\tthis.opentype = new SFNT( this, this.fontData, createTable );\n\t\t\t}\n\t\t\tif ( type === `WOFF` ) {\n\t\t\t\tthis.opentype = new WOFF$1( this, this.fontData, createTable );\n\t\t\t}\n\t\t\tif ( type === `WOFF2` ) {\n\t\t\t\tthis.opentype = new WOFF2$1( this, this.fontData, createTable );\n\t\t\t}\n\t\t\treturn this.opentype;\n\t\t} );\n\t}\n\tgetGlyphId( char ) {\n\t\treturn this.opentype.tables.cmap.getGlyphId( char );\n\t}\n\treverse( glyphid ) {\n\t\treturn this.opentype.tables.cmap.reverse( glyphid );\n\t}\n\tsupports( char ) {\n\t\treturn this.getGlyphId( char ) !== 0;\n\t}\n\tsupportsVariation( variation ) {\n\t\treturn (\n\t\t\tthis.opentype.tables.cmap.supportsVariation( variation ) !== false\n\t\t);\n\t}\n\tmeasureText( text, size = 16 ) {\n\t\tif ( this.__unloaded )\n\t\t\tthrow new Error(\n\t\t\t\t'Cannot measure text: font was unloaded. Please reload before calling measureText()'\n\t\t\t);\n\t\tlet d = document.createElement( 'div' );\n\t\td.textContent = text;\n\t\td.style.fontFamily = this.name;\n\t\td.style.fontSize = `${ size }px`;\n\t\td.style.color = `transparent`;\n\t\td.style.background = `transparent`;\n\t\td.style.top = `0`;\n\t\td.style.left = `0`;\n\t\td.style.position = `absolute`;\n\t\tdocument.body.appendChild( d );\n\t\tlet bbox = d.getBoundingClientRect();\n\t\tdocument.body.removeChild( d );\n\t\tconst OS2 = this.opentype.tables[ 'OS/2' ];\n\t\tbbox.fontSize = size;\n\t\tbbox.ascender = OS2.sTypoAscender;\n\t\tbbox.descender = OS2.sTypoDescender;\n\t\treturn bbox;\n\t}\n\tunload() {\n\t\tif ( this.styleElement.parentNode ) {\n\t\t\tthis.styleElement.parentNode.removeElement( this.styleElement );\n\t\t\tconst evt = new Event( 'unload', { font: this } );\n\t\t\tthis.dispatch( evt );\n\t\t\tif ( this.onunload ) this.onunload( evt );\n\t\t}\n\t\tthis._unloaded = true;\n\t}\n\tload() {\n\t\tif ( this.__unloaded ) {\n\t\t\tdelete this.__unloaded;\n\t\t\tdocument.head.appendChild( this.styleElement );\n\t\t\tconst evt = new Event( 'load', { font: this } );\n\t\t\tthis.dispatch( evt );\n\t\t\tif ( this.onload ) this.onload( evt );\n\t\t}\n\t}\n}\nglobalThis.Font = Font;\nclass Subtable extends ParsedData {\n\tconstructor( p, plaformID, encodingID ) {\n\t\tsuper( p );\n\t\tthis.plaformID = plaformID;\n\t\tthis.encodingID = encodingID;\n\t}\n}\nclass Format0 extends Subtable {\n\tconstructor( p, platformID, encodingID ) {\n\t\tsuper( p, platformID, encodingID );\n\t\tthis.format = 0;\n\t\tthis.length = p.uint16;\n\t\tthis.language = p.uint16;\n\t\tthis.glyphIdArray = [ ...new Array( 256 ) ].map( ( _ ) => p.uint8 );\n\t}\n\tsupports( charCode ) {\n\t\tif ( charCode.charCodeAt ) {\n\t\t\tcharCode = -1;\n\t\t\tconsole.warn(\n\t\t\t\t`supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.`\n\t\t\t);\n\t\t}\n\t\treturn 0 <= charCode && charCode <= 255;\n\t}\n\treverse( glyphID ) {\n\t\tconsole.warn( `reverse not implemented for cmap subtable format 0` );\n\t\treturn {};\n\t}\n\tgetSupportedCharCodes() {\n\t\treturn [ { start: 1, end: 256 } ];\n\t}\n}\nclass Format2 extends Subtable {\n\tconstructor( p, platformID, encodingID ) {\n\t\tsuper( p, platformID, encodingID );\n\t\tthis.format = 2;\n\t\tthis.length = p.uint16;\n\t\tthis.language = p.uint16;\n\t\tthis.subHeaderKeys = [ ...new Array( 256 ) ].map( ( _ ) => p.uint16 );\n\t\tconst subHeaderCount = Math.max( ...this.subHeaderKeys );\n\t\tconst subHeaderOffset = p.currentPosition;\n\t\tlazy$1( this, `subHeaders`, () => {\n\t\t\tp.currentPosition = subHeaderOffset;\n\t\t\treturn [ ...new Array( subHeaderCount ) ].map(\n\t\t\t\t( _ ) => new SubHeader( p )\n\t\t\t);\n\t\t} );\n\t\tconst glyphIndexOffset = subHeaderOffset + subHeaderCount * 8;\n\t\tlazy$1( this, `glyphIndexArray`, () => {\n\t\t\tp.currentPosition = glyphIndexOffset;\n\t\t\treturn [ ...new Array( subHeaderCount ) ].map( ( _ ) => p.uint16 );\n\t\t} );\n\t}\n\tsupports( charCode ) {\n\t\tif ( charCode.charCodeAt ) {\n\t\t\tcharCode = -1;\n\t\t\tconsole.warn(\n\t\t\t\t`supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented.`\n\t\t\t);\n\t\t}\n\t\tconst low = charCode && 255;\n\t\tconst high = charCode && 65280;\n\t\tconst subHeaderKey = this.subHeaders[ high ];\n\t\tconst subheader = this.subHeaders[ subHeaderKey ];\n\t\tconst first = subheader.firstCode;\n\t\tconst last = first + subheader.entryCount;\n\t\treturn first <= low && low <= last;\n\t}\n\treverse( glyphID ) {\n\t\tconsole.warn( `reverse not implemented for cmap subtable format 2` );\n\t\treturn {};\n\t}\n\tgetSupportedCharCodes( preservePropNames = false ) {\n\t\tif ( preservePropNames ) {\n\t\t\treturn this.subHeaders.map( ( h ) => ( {\n\t\t\t\tfirstCode: h.firstCode,\n\t\t\t\tlastCode: h.lastCode,\n\t\t\t} ) );\n\t\t}\n\t\treturn this.subHeaders.map( ( h ) => ( {\n\t\t\tstart: h.firstCode,\n\t\t\tend: h.lastCode,\n\t\t} ) );\n\t}\n}\nclass SubHeader {\n\tconstructor( p ) {\n\t\tthis.firstCode = p.uint16;\n\t\tthis.entryCount = p.uint16;\n\t\tthis.lastCode = this.first + this.entryCount;\n\t\tthis.idDelta = p.int16;\n\t\tthis.idRangeOffset = p.uint16;\n\t}\n}\nclass Format4 extends Subtable {\n\tconstructor( p, platformID, encodingID ) {\n\t\tsuper( p, platformID, encodingID );\n\t\tthis.format = 4;\n\t\tthis.length = p.uint16;\n\t\tthis.language = p.uint16;\n\t\tthis.segCountX2 = p.uint16;\n\t\tthis.segCount = this.segCountX2 / 2;\n\t\tthis.searchRange = p.uint16;\n\t\tthis.entrySelector = p.uint16;\n\t\tthis.rangeShift = p.uint16;\n\t\tconst endCodePosition = p.currentPosition;\n\t\tlazy$1( this, `endCode`, () =>\n\t\t\tp.readBytes( this.segCount, endCodePosition, 16 )\n\t\t);\n\t\tconst startCodePosition = endCodePosition + 2 + this.segCountX2;\n\t\tlazy$1( this, `startCode`, () =>\n\t\t\tp.readBytes( this.segCount, startCodePosition, 16 )\n\t\t);\n\t\tconst idDeltaPosition = startCodePosition + this.segCountX2;\n\t\tlazy$1( this, `idDelta`, () =>\n\t\t\tp.readBytes( this.segCount, idDeltaPosition, 16, true )\n\t\t);\n\t\tconst idRangePosition = idDeltaPosition + this.segCountX2;\n\t\tlazy$1( this, `idRangeOffset`, () =>\n\t\t\tp.readBytes( this.segCount, idRangePosition, 16 )\n\t\t);\n\t\tconst glyphIdArrayPosition = idRangePosition + this.segCountX2;\n\t\tconst glyphIdArrayLength =\n\t\t\tthis.length - ( glyphIdArrayPosition - this.tableStart );\n\t\tlazy$1( this, `glyphIdArray`, () =>\n\t\t\tp.readBytes( glyphIdArrayLength, glyphIdArrayPosition, 16 )\n\t\t);\n\t\tlazy$1( this, `segments`, () =>\n\t\t\tthis.buildSegments( idRangePosition, glyphIdArrayPosition, p )\n\t\t);\n\t}\n\tbuildSegments( idRangePosition, glyphIdArrayPosition, p ) {\n\t\tconst build = ( _, i ) => {\n\t\t\tlet startCode = this.startCode[ i ],\n\t\t\t\tendCode = this.endCode[ i ],\n\t\t\t\tidDelta = this.idDelta[ i ],\n\t\t\t\tidRangeOffset = this.idRangeOffset[ i ],\n\t\t\t\tidRangeOffsetPointer = idRangePosition + 2 * i,\n\t\t\t\tglyphIDs = [];\n\t\t\tif ( idRangeOffset === 0 ) {\n\t\t\t\tfor (\n\t\t\t\t\tlet i = startCode + idDelta, e = endCode + idDelta;\n\t\t\t\t\ti <= e;\n\t\t\t\t\ti++\n\t\t\t\t) {\n\t\t\t\t\tglyphIDs.push( i );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( let i = 0, e = endCode - startCode; i <= e; i++ ) {\n\t\t\t\t\tp.currentPosition =\n\t\t\t\t\t\tidRangeOffsetPointer + idRangeOffset + i * 2;\n\t\t\t\t\tglyphIDs.push( p.uint16 );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tstartCode: startCode,\n\t\t\t\tendCode: endCode,\n\t\t\t\tidDelta: idDelta,\n\t\t\t\tidRangeOffset: idRangeOffset,\n\t\t\t\tglyphIDs: glyphIDs,\n\t\t\t};\n\t\t};\n\t\treturn [ ...new Array( this.segCount ) ].map( build );\n\t}\n\treverse( glyphID ) {\n\t\tlet s = this.segments.find( ( v ) => v.glyphIDs.includes( glyphID ) );\n\t\tif ( ! s ) return {};\n\t\tconst code = s.startCode + s.glyphIDs.indexOf( glyphID );\n\t\treturn { code: code, unicode: String.fromCodePoint( code ) };\n\t}\n\tgetGlyphId( charCode ) {\n\t\tif ( charCode.charCodeAt ) charCode = charCode.charCodeAt( 0 );\n\t\tif ( 55296 <= charCode && charCode <= 57343 ) return 0;\n\t\tif ( ( charCode & 65534 ) === 65534 || ( charCode & 65535 ) === 65535 )\n\t\t\treturn 0;\n\t\tlet segment = this.segments.find(\n\t\t\t( s ) => s.startCode <= charCode && charCode <= s.endCode\n\t\t);\n\t\tif ( ! segment ) return 0;\n\t\treturn segment.glyphIDs[ charCode - segment.startCode ];\n\t}\n\tsupports( charCode ) {\n\t\treturn this.getGlyphId( charCode ) !== 0;\n\t}\n\tgetSupportedCharCodes( preservePropNames = false ) {\n\t\tif ( preservePropNames ) return this.segments;\n\t\treturn this.segments.map( ( v ) => ( {\n\t\t\tstart: v.startCode,\n\t\t\tend: v.endCode,\n\t\t} ) );\n\t}\n}\nclass Format6 extends Subtable {\n\tconstructor( p, platformID, encodingID ) {\n\t\tsuper( p, platformID, encodingID );\n\t\tthis.format = 6;\n\t\tthis.length = p.uint16;\n\t\tthis.language = p.uint16;\n\t\tthis.firstCode = p.uint16;\n\t\tthis.entryCount = p.uint16;\n\t\tthis.lastCode = this.firstCode + this.entryCount - 1;\n\t\tconst getter = () =>\n\t\t\t[ ...new Array( this.entryCount ) ].map( ( _ ) => p.uint16 );\n\t\tlazy$1( this, `glyphIdArray`, getter );\n\t}\n\tsupports( charCode ) {\n\t\tif ( charCode.charCodeAt ) {\n\t\t\tcharCode = -1;\n\t\t\tconsole.warn(\n\t\t\t\t`supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.`\n\t\t\t);\n\t\t}\n\t\tif ( charCode < this.firstCode ) return {};\n\t\tif ( charCode > this.firstCode + this.entryCount ) return {};\n\t\tconst code = charCode - this.firstCode;\n\t\treturn { code: code, unicode: String.fromCodePoint( code ) };\n\t}\n\treverse( glyphID ) {\n\t\tlet pos = this.glyphIdArray.indexOf( glyphID );\n\t\tif ( pos > -1 ) return this.firstCode + pos;\n\t}\n\tgetSupportedCharCodes( preservePropNames = false ) {\n\t\tif ( preservePropNames ) {\n\t\t\treturn [ { firstCode: this.firstCode, lastCode: this.lastCode } ];\n\t\t}\n\t\treturn [ { start: this.firstCode, end: this.lastCode } ];\n\t}\n}\nclass Format8 extends Subtable {\n\tconstructor( p, platformID, encodingID ) {\n\t\tsuper( p, platformID, encodingID );\n\t\tthis.format = 8;\n\t\tp.uint16;\n\t\tthis.length = p.uint32;\n\t\tthis.language = p.uint32;\n\t\tthis.is32 = [ ...new Array( 8192 ) ].map( ( _ ) => p.uint8 );\n\t\tthis.numGroups = p.uint32;\n\t\tconst getter = () =>\n\t\t\t[ ...new Array( this.numGroups ) ].map(\n\t\t\t\t( _ ) => new SequentialMapGroup$1( p )\n\t\t\t);\n\t\tlazy$1( this, `groups`, getter );\n\t}\n\tsupports( charCode ) {\n\t\tif ( charCode.charCodeAt ) {\n\t\t\tcharCode = -1;\n\t\t\tconsole.warn(\n\t\t\t\t`supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.`\n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\tthis.groups.findIndex(\n\t\t\t\t( s ) =>\n\t\t\t\t\ts.startcharCode <= charCode && charCode <= s.endcharCode\n\t\t\t) !== -1\n\t\t);\n\t}\n\treverse( glyphID ) {\n\t\tconsole.warn( `reverse not implemented for cmap subtable format 8` );\n\t\treturn {};\n\t}\n\tgetSupportedCharCodes( preservePropNames = false ) {\n\t\tif ( preservePropNames ) return this.groups;\n\t\treturn this.groups.map( ( v ) => ( {\n\t\t\tstart: v.startcharCode,\n\t\t\tend: v.endcharCode,\n\t\t} ) );\n\t}\n}\nclass SequentialMapGroup$1 {\n\tconstructor( p ) {\n\t\tthis.startcharCode = p.uint32;\n\t\tthis.endcharCode = p.uint32;\n\t\tthis.startGlyphID = p.uint32;\n\t}\n}\nclass Format10 extends Subtable {\n\tconstructor( p, platformID, encodingID ) {\n\t\tsuper( p, platformID, encodingID );\n\t\tthis.format = 10;\n\t\tp.uint16;\n\t\tthis.length = p.uint32;\n\t\tthis.language = p.uint32;\n\t\tthis.startCharCode = p.uint32;\n\t\tthis.numChars = p.uint32;\n\t\tthis.endCharCode = this.startCharCode + this.numChars;\n\t\tconst getter = () =>\n\t\t\t[ ...new Array( this.numChars ) ].map( ( _ ) => p.uint16 );\n\t\tlazy$1( this, `glyphs`, getter );\n\t}\n\tsupports( charCode ) {\n\t\tif ( charCode.charCodeAt ) {\n\t\t\tcharCode = -1;\n\t\t\tconsole.warn(\n\t\t\t\t`supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.`\n\t\t\t);\n\t\t}\n\t\tif ( charCode < this.startCharCode ) return false;\n\t\tif ( charCode > this.startCharCode + this.numChars ) return false;\n\t\treturn charCode - this.startCharCode;\n\t}\n\treverse( glyphID ) {\n\t\tconsole.warn( `reverse not implemented for cmap subtable format 10` );\n\t\treturn {};\n\t}\n\tgetSupportedCharCodes( preservePropNames = false ) {\n\t\tif ( preservePropNames ) {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tstartCharCode: this.startCharCode,\n\t\t\t\t\tendCharCode: this.endCharCode,\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\t\treturn [ { start: this.startCharCode, end: this.endCharCode } ];\n\t}\n}\nclass Format12 extends Subtable {\n\tconstructor( p, platformID, encodingID ) {\n\t\tsuper( p, platformID, encodingID );\n\t\tthis.format = 12;\n\t\tp.uint16;\n\t\tthis.length = p.uint32;\n\t\tthis.language = p.uint32;\n\t\tthis.numGroups = p.uint32;\n\t\tconst getter = () =>\n\t\t\t[ ...new Array( this.numGroups ) ].map(\n\t\t\t\t( _ ) => new SequentialMapGroup( p )\n\t\t\t);\n\t\tlazy$1( this, `groups`, getter );\n\t}\n\tsupports( charCode ) {\n\t\tif ( charCode.charCodeAt ) charCode = charCode.charCodeAt( 0 );\n\t\tif ( 55296 <= charCode && charCode <= 57343 ) return 0;\n\t\tif ( ( charCode & 65534 ) === 65534 || ( charCode & 65535 ) === 65535 )\n\t\t\treturn 0;\n\t\treturn (\n\t\t\tthis.groups.findIndex(\n\t\t\t\t( s ) =>\n\t\t\t\t\ts.startCharCode <= charCode && charCode <= s.endCharCode\n\t\t\t) !== -1\n\t\t);\n\t}\n\treverse( glyphID ) {\n\t\tfor ( let group of this.groups ) {\n\t\t\tlet start = group.startGlyphID;\n\t\t\tif ( start > glyphID ) continue;\n\t\t\tif ( start === glyphID ) return group.startCharCode;\n\t\t\tlet end = start + ( group.endCharCode - group.startCharCode );\n\t\t\tif ( end < glyphID ) continue;\n\t\t\tconst code = group.startCharCode + ( glyphID - start );\n\t\t\treturn { code: code, unicode: String.fromCodePoint( code ) };\n\t\t}\n\t\treturn {};\n\t}\n\tgetSupportedCharCodes( preservePropNames = false ) {\n\t\tif ( preservePropNames ) return this.groups;\n\t\treturn this.groups.map( ( v ) => ( {\n\t\t\tstart: v.startCharCode,\n\t\t\tend: v.endCharCode,\n\t\t} ) );\n\t}\n}\nclass SequentialMapGroup {\n\tconstructor( p ) {\n\t\tthis.startCharCode = p.uint32;\n\t\tthis.endCharCode = p.uint32;\n\t\tthis.startGlyphID = p.uint32;\n\t}\n}\nclass Format13 extends Subtable {\n\tconstructor( p, platformID, encodingID ) {\n\t\tsuper( p, platformID, encodingID );\n\t\tthis.format = 13;\n\t\tp.uint16;\n\t\tthis.length = p.uint32;\n\t\tthis.language = p.uint32;\n\t\tthis.numGroups = p.uint32;\n\t\tconst getter = [ ...new Array( this.numGroups ) ].map(\n\t\t\t( _ ) => new ConstantMapGroup( p )\n\t\t);\n\t\tlazy$1( this, `groups`, getter );\n\t}\n\tsupports( charCode ) {\n\t\tif ( charCode.charCodeAt ) charCode = charCode.charCodeAt( 0 );\n\t\treturn (\n\t\t\tthis.groups.findIndex(\n\t\t\t\t( s ) =>\n\t\t\t\t\ts.startCharCode <= charCode && charCode <= s.endCharCode\n\t\t\t) !== -1\n\t\t);\n\t}\n\treverse( glyphID ) {\n\t\tconsole.warn( `reverse not implemented for cmap subtable format 13` );\n\t\treturn {};\n\t}\n\tgetSupportedCharCodes( preservePropNames = false ) {\n\t\tif ( preservePropNames ) return this.groups;\n\t\treturn this.groups.map( ( v ) => ( {\n\t\t\tstart: v.startCharCode,\n\t\t\tend: v.endCharCode,\n\t\t} ) );\n\t}\n}\nclass ConstantMapGroup {\n\tconstructor( p ) {\n\t\tthis.startCharCode = p.uint32;\n\t\tthis.endCharCode = p.uint32;\n\t\tthis.glyphID = p.uint32;\n\t}\n}\nclass Format14 extends Subtable {\n\tconstructor( p, platformID, encodingID ) {\n\t\tsuper( p, platformID, encodingID );\n\t\tthis.subTableStart = p.currentPosition;\n\t\tthis.format = 14;\n\t\tthis.length = p.uint32;\n\t\tthis.numVarSelectorRecords = p.uint32;\n\t\tlazy$1( this, `varSelectors`, () =>\n\t\t\t[ ...new Array( this.numVarSelectorRecords ) ].map(\n\t\t\t\t( _ ) => new VariationSelector( p )\n\t\t\t)\n\t\t);\n\t}\n\tsupports() {\n\t\tconsole.warn( `supports not implemented for cmap subtable format 14` );\n\t\treturn 0;\n\t}\n\tgetSupportedCharCodes() {\n\t\tconsole.warn(\n\t\t\t`getSupportedCharCodes not implemented for cmap subtable format 14`\n\t\t);\n\t\treturn [];\n\t}\n\treverse( glyphID ) {\n\t\tconsole.warn( `reverse not implemented for cmap subtable format 14` );\n\t\treturn {};\n\t}\n\tsupportsVariation( variation ) {\n\t\tlet v = this.varSelector.find(\n\t\t\t( uvs ) => uvs.varSelector === variation\n\t\t);\n\t\treturn v ? v : false;\n\t}\n\tgetSupportedVariations() {\n\t\treturn this.varSelectors.map( ( v ) => v.varSelector );\n\t}\n}\nclass VariationSelector {\n\tconstructor( p ) {\n\t\tthis.varSelector = p.uint24;\n\t\tthis.defaultUVSOffset = p.Offset32;\n\t\tthis.nonDefaultUVSOffset = p.Offset32;\n\t}\n}\nfunction createSubTable( parser, platformID, encodingID ) {\n\tconst format = parser.uint16;\n\tif ( format === 0 ) return new Format0( parser, platformID, encodingID );\n\tif ( format === 2 ) return new Format2( parser, platformID, encodingID );\n\tif ( format === 4 ) return new Format4( parser, platformID, encodingID );\n\tif ( format === 6 ) return new Format6( parser, platformID, encodingID );\n\tif ( format === 8 ) return new Format8( parser, platformID, encodingID );\n\tif ( format === 10 ) return new Format10( parser, platformID, encodingID );\n\tif ( format === 12 ) return new Format12( parser, platformID, encodingID );\n\tif ( format === 13 ) return new Format13( parser, platformID, encodingID );\n\tif ( format === 14 ) return new Format14( parser, platformID, encodingID );\n\treturn {};\n}\nclass cmap extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.version = p.uint16;\n\t\tthis.numTables = p.uint16;\n\t\tthis.encodingRecords = [ ...new Array( this.numTables ) ].map(\n\t\t\t( _ ) => new EncodingRecord( p, this.tableStart )\n\t\t);\n\t}\n\tgetSubTable( tableID ) {\n\t\treturn this.encodingRecords[ tableID ].table;\n\t}\n\tgetSupportedEncodings() {\n\t\treturn this.encodingRecords.map( ( r ) => ( {\n\t\t\tplatformID: r.platformID,\n\t\t\tencodingId: r.encodingID,\n\t\t} ) );\n\t}\n\tgetSupportedCharCodes( platformID, encodingID ) {\n\t\tconst recordID = this.encodingRecords.findIndex(\n\t\t\t( r ) => r.platformID === platformID && r.encodingID === encodingID\n\t\t);\n\t\tif ( recordID === -1 ) return false;\n\t\tconst subtable = this.getSubTable( recordID );\n\t\treturn subtable.getSupportedCharCodes();\n\t}\n\treverse( glyphid ) {\n\t\tfor ( let i = 0; i < this.numTables; i++ ) {\n\t\t\tlet code = this.getSubTable( i ).reverse( glyphid );\n\t\t\tif ( code ) return code;\n\t\t}\n\t}\n\tgetGlyphId( char ) {\n\t\tlet last = 0;\n\t\tthis.encodingRecords.some( ( _, tableID ) => {\n\t\t\tlet t = this.getSubTable( tableID );\n\t\t\tif ( ! t.getGlyphId ) return false;\n\t\t\tlast = t.getGlyphId( char );\n\t\t\treturn last !== 0;\n\t\t} );\n\t\treturn last;\n\t}\n\tsupports( char ) {\n\t\treturn this.encodingRecords.some( ( _, tableID ) => {\n\t\t\tconst t = this.getSubTable( tableID );\n\t\t\treturn t.supports && t.supports( char ) !== false;\n\t\t} );\n\t}\n\tsupportsVariation( variation ) {\n\t\treturn this.encodingRecords.some( ( _, tableID ) => {\n\t\t\tconst t = this.getSubTable( tableID );\n\t\t\treturn (\n\t\t\t\tt.supportsVariation &&\n\t\t\t\tt.supportsVariation( variation ) !== false\n\t\t\t);\n\t\t} );\n\t}\n}\nclass EncodingRecord {\n\tconstructor( p, tableStart ) {\n\t\tconst platformID = ( this.platformID = p.uint16 );\n\t\tconst encodingID = ( this.encodingID = p.uint16 );\n\t\tconst offset = ( this.offset = p.Offset32 );\n\t\tlazy$1( this, `table`, () => {\n\t\t\tp.currentPosition = tableStart + offset;\n\t\t\treturn createSubTable( p, platformID, encodingID );\n\t\t} );\n\t}\n}\nvar cmap$1 = Object.freeze( { __proto__: null, cmap: cmap } );\nclass head extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.load( {\n\t\t\tmajorVersion: p.uint16,\n\t\t\tminorVersion: p.uint16,\n\t\t\tfontRevision: p.fixed,\n\t\t\tcheckSumAdjustment: p.uint32,\n\t\t\tmagicNumber: p.uint32,\n\t\t\tflags: p.flags( 16 ),\n\t\t\tunitsPerEm: p.uint16,\n\t\t\tcreated: p.longdatetime,\n\t\t\tmodified: p.longdatetime,\n\t\t\txMin: p.int16,\n\t\t\tyMin: p.int16,\n\t\t\txMax: p.int16,\n\t\t\tyMax: p.int16,\n\t\t\tmacStyle: p.flags( 16 ),\n\t\t\tlowestRecPPEM: p.uint16,\n\t\t\tfontDirectionHint: p.uint16,\n\t\t\tindexToLocFormat: p.uint16,\n\t\t\tglyphDataFormat: p.uint16,\n\t\t} );\n\t}\n}\nvar head$1 = Object.freeze( { __proto__: null, head: head } );\nclass hhea extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.majorVersion = p.uint16;\n\t\tthis.minorVersion = p.uint16;\n\t\tthis.ascender = p.fword;\n\t\tthis.descender = p.fword;\n\t\tthis.lineGap = p.fword;\n\t\tthis.advanceWidthMax = p.ufword;\n\t\tthis.minLeftSideBearing = p.fword;\n\t\tthis.minRightSideBearing = p.fword;\n\t\tthis.xMaxExtent = p.fword;\n\t\tthis.caretSlopeRise = p.int16;\n\t\tthis.caretSlopeRun = p.int16;\n\t\tthis.caretOffset = p.int16;\n\t\tp.int16;\n\t\tp.int16;\n\t\tp.int16;\n\t\tp.int16;\n\t\tthis.metricDataFormat = p.int16;\n\t\tthis.numberOfHMetrics = p.uint16;\n\t\tp.verifyLength();\n\t}\n}\nvar hhea$1 = Object.freeze( { __proto__: null, hhea: hhea } );\nclass hmtx extends SimpleTable {\n\tconstructor( dict, dataview, tables ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tconst numberOfHMetrics = tables.hhea.numberOfHMetrics;\n\t\tconst numGlyphs = tables.maxp.numGlyphs;\n\t\tconst metricsStart = p.currentPosition;\n\t\tlazy$1( this, `hMetrics`, () => {\n\t\t\tp.currentPosition = metricsStart;\n\t\t\treturn [ ...new Array( numberOfHMetrics ) ].map(\n\t\t\t\t( _ ) => new LongHorMetric( p.uint16, p.int16 )\n\t\t\t);\n\t\t} );\n\t\tif ( numberOfHMetrics < numGlyphs ) {\n\t\t\tconst lsbStart = metricsStart + numberOfHMetrics * 4;\n\t\t\tlazy$1( this, `leftSideBearings`, () => {\n\t\t\t\tp.currentPosition = lsbStart;\n\t\t\t\treturn [ ...new Array( numGlyphs - numberOfHMetrics ) ].map(\n\t\t\t\t\t( _ ) => p.int16\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\t}\n}\nclass LongHorMetric {\n\tconstructor( w, b ) {\n\t\tthis.advanceWidth = w;\n\t\tthis.lsb = b;\n\t}\n}\nvar hmtx$1 = Object.freeze( { __proto__: null, hmtx: hmtx } );\nclass maxp extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.version = p.legacyFixed;\n\t\tthis.numGlyphs = p.uint16;\n\t\tif ( this.version === 1 ) {\n\t\t\tthis.maxPoints = p.uint16;\n\t\t\tthis.maxContours = p.uint16;\n\t\t\tthis.maxCompositePoints = p.uint16;\n\t\t\tthis.maxCompositeContours = p.uint16;\n\t\t\tthis.maxZones = p.uint16;\n\t\t\tthis.maxTwilightPoints = p.uint16;\n\t\t\tthis.maxStorage = p.uint16;\n\t\t\tthis.maxFunctionDefs = p.uint16;\n\t\t\tthis.maxInstructionDefs = p.uint16;\n\t\t\tthis.maxStackElements = p.uint16;\n\t\t\tthis.maxSizeOfInstructions = p.uint16;\n\t\t\tthis.maxComponentElements = p.uint16;\n\t\t\tthis.maxComponentDepth = p.uint16;\n\t\t}\n\t\tp.verifyLength();\n\t}\n}\nvar maxp$1 = Object.freeze( { __proto__: null, maxp: maxp } );\nclass name extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.format = p.uint16;\n\t\tthis.count = p.uint16;\n\t\tthis.stringOffset = p.Offset16;\n\t\tthis.nameRecords = [ ...new Array( this.count ) ].map(\n\t\t\t( _ ) => new NameRecord( p, this )\n\t\t);\n\t\tif ( this.format === 1 ) {\n\t\t\tthis.langTagCount = p.uint16;\n\t\t\tthis.langTagRecords = [ ...new Array( this.langTagCount ) ].map(\n\t\t\t\t( _ ) => new LangTagRecord( p.uint16, p.Offset16 )\n\t\t\t);\n\t\t}\n\t\tthis.stringStart = this.tableStart + this.stringOffset;\n\t}\n\tget( nameID ) {\n\t\tlet record = this.nameRecords.find(\n\t\t\t( record ) => record.nameID === nameID\n\t\t);\n\t\tif ( record ) return record.string;\n\t}\n}\nclass LangTagRecord {\n\tconstructor( length, offset ) {\n\t\tthis.length = length;\n\t\tthis.offset = offset;\n\t}\n}\nclass NameRecord {\n\tconstructor( p, nameTable ) {\n\t\tthis.platformID = p.uint16;\n\t\tthis.encodingID = p.uint16;\n\t\tthis.languageID = p.uint16;\n\t\tthis.nameID = p.uint16;\n\t\tthis.length = p.uint16;\n\t\tthis.offset = p.Offset16;\n\t\tlazy$1( this, `string`, () => {\n\t\t\tp.currentPosition = nameTable.stringStart + this.offset;\n\t\t\treturn decodeString( p, this );\n\t\t} );\n\t}\n}\nfunction decodeString( p, record ) {\n\tconst { platformID: platformID, length: length } = record;\n\tif ( length === 0 ) return ``;\n\tif ( platformID === 0 || platformID === 3 ) {\n\t\tconst str = [];\n\t\tfor ( let i = 0, e = length / 2; i < e; i++ )\n\t\t\tstr[ i ] = String.fromCharCode( p.uint16 );\n\t\treturn str.join( `` );\n\t}\n\tconst bytes = p.readBytes( length );\n\tconst str = [];\n\tbytes.forEach( function ( b, i ) {\n\t\tstr[ i ] = String.fromCharCode( b );\n\t} );\n\treturn str.join( `` );\n}\nvar name$1 = Object.freeze( { __proto__: null, name: name } );\nclass OS2 extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.version = p.uint16;\n\t\tthis.xAvgCharWidth = p.int16;\n\t\tthis.usWeightClass = p.uint16;\n\t\tthis.usWidthClass = p.uint16;\n\t\tthis.fsType = p.uint16;\n\t\tthis.ySubscriptXSize = p.int16;\n\t\tthis.ySubscriptYSize = p.int16;\n\t\tthis.ySubscriptXOffset = p.int16;\n\t\tthis.ySubscriptYOffset = p.int16;\n\t\tthis.ySuperscriptXSize = p.int16;\n\t\tthis.ySuperscriptYSize = p.int16;\n\t\tthis.ySuperscriptXOffset = p.int16;\n\t\tthis.ySuperscriptYOffset = p.int16;\n\t\tthis.yStrikeoutSize = p.int16;\n\t\tthis.yStrikeoutPosition = p.int16;\n\t\tthis.sFamilyClass = p.int16;\n\t\tthis.panose = [ ...new Array( 10 ) ].map( ( _ ) => p.uint8 );\n\t\tthis.ulUnicodeRange1 = p.flags( 32 );\n\t\tthis.ulUnicodeRange2 = p.flags( 32 );\n\t\tthis.ulUnicodeRange3 = p.flags( 32 );\n\t\tthis.ulUnicodeRange4 = p.flags( 32 );\n\t\tthis.achVendID = p.tag;\n\t\tthis.fsSelection = p.uint16;\n\t\tthis.usFirstCharIndex = p.uint16;\n\t\tthis.usLastCharIndex = p.uint16;\n\t\tthis.sTypoAscender = p.int16;\n\t\tthis.sTypoDescender = p.int16;\n\t\tthis.sTypoLineGap = p.int16;\n\t\tthis.usWinAscent = p.uint16;\n\t\tthis.usWinDescent = p.uint16;\n\t\tif ( this.version === 0 ) return p.verifyLength();\n\t\tthis.ulCodePageRange1 = p.flags( 32 );\n\t\tthis.ulCodePageRange2 = p.flags( 32 );\n\t\tif ( this.version === 1 ) return p.verifyLength();\n\t\tthis.sxHeight = p.int16;\n\t\tthis.sCapHeight = p.int16;\n\t\tthis.usDefaultChar = p.uint16;\n\t\tthis.usBreakChar = p.uint16;\n\t\tthis.usMaxContext = p.uint16;\n\t\tif ( this.version <= 4 ) return p.verifyLength();\n\t\tthis.usLowerOpticalPointSize = p.uint16;\n\t\tthis.usUpperOpticalPointSize = p.uint16;\n\t\tif ( this.version === 5 ) return p.verifyLength();\n\t}\n}\nvar OS2$1 = Object.freeze( { __proto__: null, OS2: OS2 } );\nclass post extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.version = p.legacyFixed;\n\t\tthis.italicAngle = p.fixed;\n\t\tthis.underlinePosition = p.fword;\n\t\tthis.underlineThickness = p.fword;\n\t\tthis.isFixedPitch = p.uint32;\n\t\tthis.minMemType42 = p.uint32;\n\t\tthis.maxMemType42 = p.uint32;\n\t\tthis.minMemType1 = p.uint32;\n\t\tthis.maxMemType1 = p.uint32;\n\t\tif ( this.version === 1 || this.version === 3 ) return p.verifyLength();\n\t\tthis.numGlyphs = p.uint16;\n\t\tif ( this.version === 2 ) {\n\t\t\tthis.glyphNameIndex = [ ...new Array( this.numGlyphs ) ].map(\n\t\t\t\t( _ ) => p.uint16\n\t\t\t);\n\t\t\tthis.namesOffset = p.currentPosition;\n\t\t\tthis.glyphNameOffsets = [ 1 ];\n\t\t\tfor ( let i = 0; i < this.numGlyphs; i++ ) {\n\t\t\t\tlet index = this.glyphNameIndex[ i ];\n\t\t\t\tif ( index < macStrings.length ) {\n\t\t\t\t\tthis.glyphNameOffsets.push( this.glyphNameOffsets[ i ] );\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tlet bytelength = p.int8;\n\t\t\t\tp.skip( bytelength );\n\t\t\t\tthis.glyphNameOffsets.push(\n\t\t\t\t\tthis.glyphNameOffsets[ i ] + bytelength + 1\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif ( this.version === 2.5 ) {\n\t\t\tthis.offset = [ ...new Array( this.numGlyphs ) ].map(\n\t\t\t\t( _ ) => p.int8\n\t\t\t);\n\t\t}\n\t}\n\tgetGlyphName( glyphid ) {\n\t\tif ( this.version !== 2 ) {\n\t\t\tconsole.warn(\n\t\t\t\t`post table version ${ this.version } does not support glyph name lookups`\n\t\t\t);\n\t\t\treturn ``;\n\t\t}\n\t\tlet index = this.glyphNameIndex[ glyphid ];\n\t\tif ( index < 258 ) return macStrings[ index ];\n\t\tlet offset = this.glyphNameOffsets[ glyphid ];\n\t\tlet next = this.glyphNameOffsets[ glyphid + 1 ];\n\t\tlet len = next - offset - 1;\n\t\tif ( len === 0 ) return `.notdef.`;\n\t\tthis.parser.currentPosition = this.namesOffset + offset;\n\t\tconst data = this.parser.readBytes(\n\t\t\tlen,\n\t\t\tthis.namesOffset + offset,\n\t\t\t8,\n\t\t\ttrue\n\t\t);\n\t\treturn data.map( ( b ) => String.fromCharCode( b ) ).join( `` );\n\t}\n}\nconst macStrings = [\n\t`.notdef`,\n\t`.null`,\n\t`nonmarkingreturn`,\n\t`space`,\n\t`exclam`,\n\t`quotedbl`,\n\t`numbersign`,\n\t`dollar`,\n\t`percent`,\n\t`ampersand`,\n\t`quotesingle`,\n\t`parenleft`,\n\t`parenright`,\n\t`asterisk`,\n\t`plus`,\n\t`comma`,\n\t`hyphen`,\n\t`period`,\n\t`slash`,\n\t`zero`,\n\t`one`,\n\t`two`,\n\t`three`,\n\t`four`,\n\t`five`,\n\t`six`,\n\t`seven`,\n\t`eight`,\n\t`nine`,\n\t`colon`,\n\t`semicolon`,\n\t`less`,\n\t`equal`,\n\t`greater`,\n\t`question`,\n\t`at`,\n\t`A`,\n\t`B`,\n\t`C`,\n\t`D`,\n\t`E`,\n\t`F`,\n\t`G`,\n\t`H`,\n\t`I`,\n\t`J`,\n\t`K`,\n\t`L`,\n\t`M`,\n\t`N`,\n\t`O`,\n\t`P`,\n\t`Q`,\n\t`R`,\n\t`S`,\n\t`T`,\n\t`U`,\n\t`V`,\n\t`W`,\n\t`X`,\n\t`Y`,\n\t`Z`,\n\t`bracketleft`,\n\t`backslash`,\n\t`bracketright`,\n\t`asciicircum`,\n\t`underscore`,\n\t`grave`,\n\t`a`,\n\t`b`,\n\t`c`,\n\t`d`,\n\t`e`,\n\t`f`,\n\t`g`,\n\t`h`,\n\t`i`,\n\t`j`,\n\t`k`,\n\t`l`,\n\t`m`,\n\t`n`,\n\t`o`,\n\t`p`,\n\t`q`,\n\t`r`,\n\t`s`,\n\t`t`,\n\t`u`,\n\t`v`,\n\t`w`,\n\t`x`,\n\t`y`,\n\t`z`,\n\t`braceleft`,\n\t`bar`,\n\t`braceright`,\n\t`asciitilde`,\n\t`Adieresis`,\n\t`Aring`,\n\t`Ccedilla`,\n\t`Eacute`,\n\t`Ntilde`,\n\t`Odieresis`,\n\t`Udieresis`,\n\t`aacute`,\n\t`agrave`,\n\t`acircumflex`,\n\t`adieresis`,\n\t`atilde`,\n\t`aring`,\n\t`ccedilla`,\n\t`eacute`,\n\t`egrave`,\n\t`ecircumflex`,\n\t`edieresis`,\n\t`iacute`,\n\t`igrave`,\n\t`icircumflex`,\n\t`idieresis`,\n\t`ntilde`,\n\t`oacute`,\n\t`ograve`,\n\t`ocircumflex`,\n\t`odieresis`,\n\t`otilde`,\n\t`uacute`,\n\t`ugrave`,\n\t`ucircumflex`,\n\t`udieresis`,\n\t`dagger`,\n\t`degree`,\n\t`cent`,\n\t`sterling`,\n\t`section`,\n\t`bullet`,\n\t`paragraph`,\n\t`germandbls`,\n\t`registered`,\n\t`copyright`,\n\t`trademark`,\n\t`acute`,\n\t`dieresis`,\n\t`notequal`,\n\t`AE`,\n\t`Oslash`,\n\t`infinity`,\n\t`plusminus`,\n\t`lessequal`,\n\t`greaterequal`,\n\t`yen`,\n\t`mu`,\n\t`partialdiff`,\n\t`summation`,\n\t`product`,\n\t`pi`,\n\t`integral`,\n\t`ordfeminine`,\n\t`ordmasculine`,\n\t`Omega`,\n\t`ae`,\n\t`oslash`,\n\t`questiondown`,\n\t`exclamdown`,\n\t`logicalnot`,\n\t`radical`,\n\t`florin`,\n\t`approxequal`,\n\t`Delta`,\n\t`guillemotleft`,\n\t`guillemotright`,\n\t`ellipsis`,\n\t`nonbreakingspace`,\n\t`Agrave`,\n\t`Atilde`,\n\t`Otilde`,\n\t`OE`,\n\t`oe`,\n\t`endash`,\n\t`emdash`,\n\t`quotedblleft`,\n\t`quotedblright`,\n\t`quoteleft`,\n\t`quoteright`,\n\t`divide`,\n\t`lozenge`,\n\t`ydieresis`,\n\t`Ydieresis`,\n\t`fraction`,\n\t`currency`,\n\t`guilsinglleft`,\n\t`guilsinglright`,\n\t`fi`,\n\t`fl`,\n\t`daggerdbl`,\n\t`periodcentered`,\n\t`quotesinglbase`,\n\t`quotedblbase`,\n\t`perthousand`,\n\t`Acircumflex`,\n\t`Ecircumflex`,\n\t`Aacute`,\n\t`Edieresis`,\n\t`Egrave`,\n\t`Iacute`,\n\t`Icircumflex`,\n\t`Idieresis`,\n\t`Igrave`,\n\t`Oacute`,\n\t`Ocircumflex`,\n\t`apple`,\n\t`Ograve`,\n\t`Uacute`,\n\t`Ucircumflex`,\n\t`Ugrave`,\n\t`dotlessi`,\n\t`circumflex`,\n\t`tilde`,\n\t`macron`,\n\t`breve`,\n\t`dotaccent`,\n\t`ring`,\n\t`cedilla`,\n\t`hungarumlaut`,\n\t`ogonek`,\n\t`caron`,\n\t`Lslash`,\n\t`lslash`,\n\t`Scaron`,\n\t`scaron`,\n\t`Zcaron`,\n\t`zcaron`,\n\t`brokenbar`,\n\t`Eth`,\n\t`eth`,\n\t`Yacute`,\n\t`yacute`,\n\t`Thorn`,\n\t`thorn`,\n\t`minus`,\n\t`multiply`,\n\t`onesuperior`,\n\t`twosuperior`,\n\t`threesuperior`,\n\t`onehalf`,\n\t`onequarter`,\n\t`threequarters`,\n\t`franc`,\n\t`Gbreve`,\n\t`gbreve`,\n\t`Idotaccent`,\n\t`Scedilla`,\n\t`scedilla`,\n\t`Cacute`,\n\t`cacute`,\n\t`Ccaron`,\n\t`ccaron`,\n\t`dcroat`,\n];\nvar post$1 = Object.freeze( { __proto__: null, post: post } );\nclass BASE extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.majorVersion = p.uint16;\n\t\tthis.minorVersion = p.uint16;\n\t\tthis.horizAxisOffset = p.Offset16;\n\t\tthis.vertAxisOffset = p.Offset16;\n\t\tlazy$1(\n\t\t\tthis,\n\t\t\t`horizAxis`,\n\t\t\t() =>\n\t\t\t\tnew AxisTable(\n\t\t\t\t\t{ offset: dict.offset + this.horizAxisOffset },\n\t\t\t\t\tdataview\n\t\t\t\t)\n\t\t);\n\t\tlazy$1(\n\t\t\tthis,\n\t\t\t`vertAxis`,\n\t\t\t() =>\n\t\t\t\tnew AxisTable(\n\t\t\t\t\t{ offset: dict.offset + this.vertAxisOffset },\n\t\t\t\t\tdataview\n\t\t\t\t)\n\t\t);\n\t\tif ( this.majorVersion === 1 && this.minorVersion === 1 ) {\n\t\t\tthis.itemVarStoreOffset = p.Offset32;\n\t\t\tlazy$1(\n\t\t\t\tthis,\n\t\t\t\t`itemVarStore`,\n\t\t\t\t() =>\n\t\t\t\t\tnew AxisTable(\n\t\t\t\t\t\t{ offset: dict.offset + this.itemVarStoreOffset },\n\t\t\t\t\t\tdataview\n\t\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}\n}\nclass AxisTable extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview, `AxisTable` );\n\t\tthis.baseTagListOffset = p.Offset16;\n\t\tthis.baseScriptListOffset = p.Offset16;\n\t\tlazy$1(\n\t\t\tthis,\n\t\t\t`baseTagList`,\n\t\t\t() =>\n\t\t\t\tnew BaseTagListTable(\n\t\t\t\t\t{ offset: dict.offset + this.baseTagListOffset },\n\t\t\t\t\tdataview\n\t\t\t\t)\n\t\t);\n\t\tlazy$1(\n\t\t\tthis,\n\t\t\t`baseScriptList`,\n\t\t\t() =>\n\t\t\t\tnew BaseScriptListTable(\n\t\t\t\t\t{ offset: dict.offset + this.baseScriptListOffset },\n\t\t\t\t\tdataview\n\t\t\t\t)\n\t\t);\n\t}\n}\nclass BaseTagListTable extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview, `BaseTagListTable` );\n\t\tthis.baseTagCount = p.uint16;\n\t\tthis.baselineTags = [ ...new Array( this.baseTagCount ) ].map(\n\t\t\t( _ ) => p.tag\n\t\t);\n\t}\n}\nclass BaseScriptListTable extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview, `BaseScriptListTable` );\n\t\tthis.baseScriptCount = p.uint16;\n\t\tconst recordStart = p.currentPosition;\n\t\tlazy$1( this, `baseScriptRecords`, () => {\n\t\t\tp.currentPosition = recordStart;\n\t\t\treturn [ ...new Array( this.baseScriptCount ) ].map(\n\t\t\t\t( _ ) => new BaseScriptRecord( this.start, p )\n\t\t\t);\n\t\t} );\n\t}\n}\nclass BaseScriptRecord {\n\tconstructor( baseScriptListTableStart, p ) {\n\t\tthis.baseScriptTag = p.tag;\n\t\tthis.baseScriptOffset = p.Offset16;\n\t\tlazy$1( this, `baseScriptTable`, () => {\n\t\t\tp.currentPosition =\n\t\t\t\tbaseScriptListTableStart + this.baseScriptOffset;\n\t\t\treturn new BaseScriptTable( p );\n\t\t} );\n\t}\n}\nclass BaseScriptTable {\n\tconstructor( p ) {\n\t\tthis.start = p.currentPosition;\n\t\tthis.baseValuesOffset = p.Offset16;\n\t\tthis.defaultMinMaxOffset = p.Offset16;\n\t\tthis.baseLangSysCount = p.uint16;\n\t\tthis.baseLangSysRecords = [ ...new Array( this.baseLangSysCount ) ].map(\n\t\t\t( _ ) => new BaseLangSysRecord( this.start, p )\n\t\t);\n\t\tlazy$1( this, `baseValues`, () => {\n\t\t\tp.currentPosition = this.start + this.baseValuesOffset;\n\t\t\treturn new BaseValuesTable( p );\n\t\t} );\n\t\tlazy$1( this, `defaultMinMax`, () => {\n\t\t\tp.currentPosition = this.start + this.defaultMinMaxOffset;\n\t\t\treturn new MinMaxTable( p );\n\t\t} );\n\t}\n}\nclass BaseLangSysRecord {\n\tconstructor( baseScriptTableStart, p ) {\n\t\tthis.baseLangSysTag = p.tag;\n\t\tthis.minMaxOffset = p.Offset16;\n\t\tlazy$1( this, `minMax`, () => {\n\t\t\tp.currentPosition = baseScriptTableStart + this.minMaxOffset;\n\t\t\treturn new MinMaxTable( p );\n\t\t} );\n\t}\n}\nclass BaseValuesTable {\n\tconstructor( p ) {\n\t\tthis.parser = p;\n\t\tthis.start = p.currentPosition;\n\t\tthis.defaultBaselineIndex = p.uint16;\n\t\tthis.baseCoordCount = p.uint16;\n\t\tthis.baseCoords = [ ...new Array( this.baseCoordCount ) ].map(\n\t\t\t( _ ) => p.Offset16\n\t\t);\n\t}\n\tgetTable( id ) {\n\t\tthis.parser.currentPosition = this.start + this.baseCoords[ id ];\n\t\treturn new BaseCoordTable( this.parser );\n\t}\n}\nclass MinMaxTable {\n\tconstructor( p ) {\n\t\tthis.minCoord = p.Offset16;\n\t\tthis.maxCoord = p.Offset16;\n\t\tthis.featMinMaxCount = p.uint16;\n\t\tconst recordStart = p.currentPosition;\n\t\tlazy$1( this, `featMinMaxRecords`, () => {\n\t\t\tp.currentPosition = recordStart;\n\t\t\treturn [ ...new Array( this.featMinMaxCount ) ].map(\n\t\t\t\t( _ ) => new FeatMinMaxRecord( p )\n\t\t\t);\n\t\t} );\n\t}\n}\nclass FeatMinMaxRecord {\n\tconstructor( p ) {\n\t\tthis.featureTableTag = p.tag;\n\t\tthis.minCoord = p.Offset16;\n\t\tthis.maxCoord = p.Offset16;\n\t}\n}\nclass BaseCoordTable {\n\tconstructor( p ) {\n\t\tthis.baseCoordFormat = p.uint16;\n\t\tthis.coordinate = p.int16;\n\t\tif ( this.baseCoordFormat === 2 ) {\n\t\t\tthis.referenceGlyph = p.uint16;\n\t\t\tthis.baseCoordPoint = p.uint16;\n\t\t}\n\t\tif ( this.baseCoordFormat === 3 ) {\n\t\t\tthis.deviceTable = p.Offset16;\n\t\t}\n\t}\n}\nvar BASE$1 = Object.freeze( { __proto__: null, BASE: BASE } );\nclass ClassDefinition {\n\tconstructor( p ) {\n\t\tthis.classFormat = p.uint16;\n\t\tif ( this.classFormat === 1 ) {\n\t\t\tthis.startGlyphID = p.uint16;\n\t\t\tthis.glyphCount = p.uint16;\n\t\t\tthis.classValueArray = [ ...new Array( this.glyphCount ) ].map(\n\t\t\t\t( _ ) => p.uint16\n\t\t\t);\n\t\t}\n\t\tif ( this.classFormat === 2 ) {\n\t\t\tthis.classRangeCount = p.uint16;\n\t\t\tthis.classRangeRecords = [\n\t\t\t\t...new Array( this.classRangeCount ),\n\t\t\t].map( ( _ ) => new ClassRangeRecord( p ) );\n\t\t}\n\t}\n}\nclass ClassRangeRecord {\n\tconstructor( p ) {\n\t\tthis.startGlyphID = p.uint16;\n\t\tthis.endGlyphID = p.uint16;\n\t\tthis.class = p.uint16;\n\t}\n}\nclass CoverageTable extends ParsedData {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.coverageFormat = p.uint16;\n\t\tif ( this.coverageFormat === 1 ) {\n\t\t\tthis.glyphCount = p.uint16;\n\t\t\tthis.glyphArray = [ ...new Array( this.glyphCount ) ].map(\n\t\t\t\t( _ ) => p.uint16\n\t\t\t);\n\t\t}\n\t\tif ( this.coverageFormat === 2 ) {\n\t\t\tthis.rangeCount = p.uint16;\n\t\t\tthis.rangeRecords = [ ...new Array( this.rangeCount ) ].map(\n\t\t\t\t( _ ) => new CoverageRangeRecord( p )\n\t\t\t);\n\t\t}\n\t}\n}\nclass CoverageRangeRecord {\n\tconstructor( p ) {\n\t\tthis.startGlyphID = p.uint16;\n\t\tthis.endGlyphID = p.uint16;\n\t\tthis.startCoverageIndex = p.uint16;\n\t}\n}\nclass ItemVariationStoreTable {\n\tconstructor( table, p ) {\n\t\tthis.table = table;\n\t\tthis.parser = p;\n\t\tthis.start = p.currentPosition;\n\t\tthis.format = p.uint16;\n\t\tthis.variationRegionListOffset = p.Offset32;\n\t\tthis.itemVariationDataCount = p.uint16;\n\t\tthis.itemVariationDataOffsets = [\n\t\t\t...new Array( this.itemVariationDataCount ),\n\t\t].map( ( _ ) => p.Offset32 );\n\t}\n}\nclass GDEF extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.majorVersion = p.uint16;\n\t\tthis.minorVersion = p.uint16;\n\t\tthis.glyphClassDefOffset = p.Offset16;\n\t\tlazy$1( this, `glyphClassDefs`, () => {\n\t\t\tif ( this.glyphClassDefOffset === 0 ) return undefined;\n\t\t\tp.currentPosition = this.tableStart + this.glyphClassDefOffset;\n\t\t\treturn new ClassDefinition( p );\n\t\t} );\n\t\tthis.attachListOffset = p.Offset16;\n\t\tlazy$1( this, `attachList`, () => {\n\t\t\tif ( this.attachListOffset === 0 ) return undefined;\n\t\t\tp.currentPosition = this.tableStart + this.attachListOffset;\n\t\t\treturn new AttachList( p );\n\t\t} );\n\t\tthis.ligCaretListOffset = p.Offset16;\n\t\tlazy$1( this, `ligCaretList`, () => {\n\t\t\tif ( this.ligCaretListOffset === 0 ) return undefined;\n\t\t\tp.currentPosition = this.tableStart + this.ligCaretListOffset;\n\t\t\treturn new LigCaretList( p );\n\t\t} );\n\t\tthis.markAttachClassDefOffset = p.Offset16;\n\t\tlazy$1( this, `markAttachClassDef`, () => {\n\t\t\tif ( this.markAttachClassDefOffset === 0 ) return undefined;\n\t\t\tp.currentPosition = this.tableStart + this.markAttachClassDefOffset;\n\t\t\treturn new ClassDefinition( p );\n\t\t} );\n\t\tif ( this.minorVersion >= 2 ) {\n\t\t\tthis.markGlyphSetsDefOffset = p.Offset16;\n\t\t\tlazy$1( this, `markGlyphSetsDef`, () => {\n\t\t\t\tif ( this.markGlyphSetsDefOffset === 0 ) return undefined;\n\t\t\t\tp.currentPosition =\n\t\t\t\t\tthis.tableStart + this.markGlyphSetsDefOffset;\n\t\t\t\treturn new MarkGlyphSetsTable( p );\n\t\t\t} );\n\t\t}\n\t\tif ( this.minorVersion === 3 ) {\n\t\t\tthis.itemVarStoreOffset = p.Offset32;\n\t\t\tlazy$1( this, `itemVarStore`, () => {\n\t\t\t\tif ( this.itemVarStoreOffset === 0 ) return undefined;\n\t\t\t\tp.currentPosition = this.tableStart + this.itemVarStoreOffset;\n\t\t\t\treturn new ItemVariationStoreTable( p );\n\t\t\t} );\n\t\t}\n\t}\n}\nclass AttachList extends ParsedData {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.coverageOffset = p.Offset16;\n\t\tthis.glyphCount = p.uint16;\n\t\tthis.attachPointOffsets = [ ...new Array( this.glyphCount ) ].map(\n\t\t\t( _ ) => p.Offset16\n\t\t);\n\t}\n\tgetPoint( pointID ) {\n\t\tthis.parser.currentPosition =\n\t\t\tthis.start + this.attachPointOffsets[ pointID ];\n\t\treturn new AttachPoint( this.parser );\n\t}\n}\nclass AttachPoint {\n\tconstructor( p ) {\n\t\tthis.pointCount = p.uint16;\n\t\tthis.pointIndices = [ ...new Array( this.pointCount ) ].map(\n\t\t\t( _ ) => p.uint16\n\t\t);\n\t}\n}\nclass LigCaretList extends ParsedData {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.coverageOffset = p.Offset16;\n\t\tlazy$1( this, `coverage`, () => {\n\t\t\tp.currentPosition = this.start + this.coverageOffset;\n\t\t\treturn new CoverageTable( p );\n\t\t} );\n\t\tthis.ligGlyphCount = p.uint16;\n\t\tthis.ligGlyphOffsets = [ ...new Array( this.ligGlyphCount ) ].map(\n\t\t\t( _ ) => p.Offset16\n\t\t);\n\t}\n\tgetLigGlyph( ligGlyphID ) {\n\t\tthis.parser.currentPosition =\n\t\t\tthis.start + this.ligGlyphOffsets[ ligGlyphID ];\n\t\treturn new LigGlyph( this.parser );\n\t}\n}\nclass LigGlyph extends ParsedData {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.caretCount = p.uint16;\n\t\tthis.caretValueOffsets = [ ...new Array( this.caretCount ) ].map(\n\t\t\t( _ ) => p.Offset16\n\t\t);\n\t}\n\tgetCaretValue( caretID ) {\n\t\tthis.parser.currentPosition =\n\t\t\tthis.start + this.caretValueOffsets[ caretID ];\n\t\treturn new CaretValue( this.parser );\n\t}\n}\nclass CaretValue {\n\tconstructor( p ) {\n\t\tthis.caretValueFormat = p.uint16;\n\t\tif ( this.caretValueFormat === 1 ) {\n\t\t\tthis.coordinate = p.int16;\n\t\t}\n\t\tif ( this.caretValueFormat === 2 ) {\n\t\t\tthis.caretValuePointIndex = p.uint16;\n\t\t}\n\t\tif ( this.caretValueFormat === 3 ) {\n\t\t\tthis.coordinate = p.int16;\n\t\t\tthis.deviceOffset = p.Offset16;\n\t\t}\n\t}\n}\nclass MarkGlyphSetsTable extends ParsedData {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.markGlyphSetTableFormat = p.uint16;\n\t\tthis.markGlyphSetCount = p.uint16;\n\t\tthis.coverageOffsets = [ ...new Array( this.markGlyphSetCount ) ].map(\n\t\t\t( _ ) => p.Offset32\n\t\t);\n\t}\n\tgetMarkGlyphSet( markGlyphSetID ) {\n\t\tthis.parser.currentPosition =\n\t\t\tthis.start + this.coverageOffsets[ markGlyphSetID ];\n\t\treturn new CoverageTable( this.parser );\n\t}\n}\nvar GDEF$1 = Object.freeze( { __proto__: null, GDEF: GDEF } );\nclass ScriptList extends ParsedData {\n\tstatic EMPTY = { scriptCount: 0, scriptRecords: [] };\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.scriptCount = p.uint16;\n\t\tthis.scriptRecords = [ ...new Array( this.scriptCount ) ].map(\n\t\t\t( _ ) => new ScriptRecord( p )\n\t\t);\n\t}\n}\nclass ScriptRecord {\n\tconstructor( p ) {\n\t\tthis.scriptTag = p.tag;\n\t\tthis.scriptOffset = p.Offset16;\n\t}\n}\nclass ScriptTable extends ParsedData {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.defaultLangSys = p.Offset16;\n\t\tthis.langSysCount = p.uint16;\n\t\tthis.langSysRecords = [ ...new Array( this.langSysCount ) ].map(\n\t\t\t( _ ) => new LangSysRecord( p )\n\t\t);\n\t}\n}\nclass LangSysRecord {\n\tconstructor( p ) {\n\t\tthis.langSysTag = p.tag;\n\t\tthis.langSysOffset = p.Offset16;\n\t}\n}\nclass LangSysTable {\n\tconstructor( p ) {\n\t\tthis.lookupOrder = p.Offset16;\n\t\tthis.requiredFeatureIndex = p.uint16;\n\t\tthis.featureIndexCount = p.uint16;\n\t\tthis.featureIndices = [ ...new Array( this.featureIndexCount ) ].map(\n\t\t\t( _ ) => p.uint16\n\t\t);\n\t}\n}\nclass FeatureList extends ParsedData {\n\tstatic EMPTY = { featureCount: 0, featureRecords: [] };\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.featureCount = p.uint16;\n\t\tthis.featureRecords = [ ...new Array( this.featureCount ) ].map(\n\t\t\t( _ ) => new FeatureRecord( p )\n\t\t);\n\t}\n}\nclass FeatureRecord {\n\tconstructor( p ) {\n\t\tthis.featureTag = p.tag;\n\t\tthis.featureOffset = p.Offset16;\n\t}\n}\nclass FeatureTable extends ParsedData {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.featureParams = p.Offset16;\n\t\tthis.lookupIndexCount = p.uint16;\n\t\tthis.lookupListIndices = [ ...new Array( this.lookupIndexCount ) ].map(\n\t\t\t( _ ) => p.uint16\n\t\t);\n\t}\n\tgetFeatureParams() {\n\t\tif ( this.featureParams > 0 ) {\n\t\t\tconst p = this.parser;\n\t\t\tp.currentPosition = this.start + this.featureParams;\n\t\t\tconst tag = this.featureTag;\n\t\t\tif ( tag === `size` ) return new Size( p );\n\t\t\tif ( tag.startsWith( `cc` ) ) return new CharacterVariant( p );\n\t\t\tif ( tag.startsWith( `ss` ) ) return new StylisticSet( p );\n\t\t}\n\t}\n}\nclass CharacterVariant {\n\tconstructor( p ) {\n\t\tthis.format = p.uint16;\n\t\tthis.featUiLabelNameId = p.uint16;\n\t\tthis.featUiTooltipTextNameId = p.uint16;\n\t\tthis.sampleTextNameId = p.uint16;\n\t\tthis.numNamedParameters = p.uint16;\n\t\tthis.firstParamUiLabelNameId = p.uint16;\n\t\tthis.charCount = p.uint16;\n\t\tthis.character = [ ...new Array( this.charCount ) ].map(\n\t\t\t( _ ) => p.uint24\n\t\t);\n\t}\n}\nclass Size {\n\tconstructor( p ) {\n\t\tthis.designSize = p.uint16;\n\t\tthis.subfamilyIdentifier = p.uint16;\n\t\tthis.subfamilyNameID = p.uint16;\n\t\tthis.smallEnd = p.uint16;\n\t\tthis.largeEnd = p.uint16;\n\t}\n}\nclass StylisticSet {\n\tconstructor( p ) {\n\t\tthis.version = p.uint16;\n\t\tthis.UINameID = p.uint16;\n\t}\n}\nfunction undoCoverageOffsetParsing( instance ) {\n\tinstance.parser.currentPosition -= 2;\n\tdelete instance.coverageOffset;\n\tdelete instance.getCoverageTable;\n}\nclass LookupType$1 extends ParsedData {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.substFormat = p.uint16;\n\t\tthis.coverageOffset = p.Offset16;\n\t}\n\tgetCoverageTable() {\n\t\tlet p = this.parser;\n\t\tp.currentPosition = this.start + this.coverageOffset;\n\t\treturn new CoverageTable( p );\n\t}\n}\nclass SubstLookupRecord {\n\tconstructor( p ) {\n\t\tthis.glyphSequenceIndex = p.uint16;\n\t\tthis.lookupListIndex = p.uint16;\n\t}\n}\nclass LookupType1$1 extends LookupType$1 {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.deltaGlyphID = p.int16;\n\t}\n}\nclass LookupType2$1 extends LookupType$1 {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.sequenceCount = p.uint16;\n\t\tthis.sequenceOffsets = [ ...new Array( this.sequenceCount ) ].map(\n\t\t\t( _ ) => p.Offset16\n\t\t);\n\t}\n\tgetSequence( index ) {\n\t\tlet p = this.parser;\n\t\tp.currentPosition = this.start + this.sequenceOffsets[ index ];\n\t\treturn new SequenceTable( p );\n\t}\n}\nclass SequenceTable {\n\tconstructor( p ) {\n\t\tthis.glyphCount = p.uint16;\n\t\tthis.substituteGlyphIDs = [ ...new Array( this.glyphCount ) ].map(\n\t\t\t( _ ) => p.uint16\n\t\t);\n\t}\n}\nclass LookupType3$1 extends LookupType$1 {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.alternateSetCount = p.uint16;\n\t\tthis.alternateSetOffsets = [\n\t\t\t...new Array( this.alternateSetCount ),\n\t\t].map( ( _ ) => p.Offset16 );\n\t}\n\tgetAlternateSet( index ) {\n\t\tlet p = this.parser;\n\t\tp.currentPosition = this.start + this.alternateSetOffsets[ index ];\n\t\treturn new AlternateSetTable( p );\n\t}\n}\nclass AlternateSetTable {\n\tconstructor( p ) {\n\t\tthis.glyphCount = p.uint16;\n\t\tthis.alternateGlyphIDs = [ ...new Array( this.glyphCount ) ].map(\n\t\t\t( _ ) => p.uint16\n\t\t);\n\t}\n}\nclass LookupType4$1 extends LookupType$1 {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.ligatureSetCount = p.uint16;\n\t\tthis.ligatureSetOffsets = [ ...new Array( this.ligatureSetCount ) ].map(\n\t\t\t( _ ) => p.Offset16\n\t\t);\n\t}\n\tgetLigatureSet( index ) {\n\t\tlet p = this.parser;\n\t\tp.currentPosition = this.start + this.ligatureSetOffsets[ index ];\n\t\treturn new LigatureSetTable( p );\n\t}\n}\nclass LigatureSetTable extends ParsedData {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.ligatureCount = p.uint16;\n\t\tthis.ligatureOffsets = [ ...new Array( this.ligatureCount ) ].map(\n\t\t\t( _ ) => p.Offset16\n\t\t);\n\t}\n\tgetLigature( index ) {\n\t\tlet p = this.parser;\n\t\tp.currentPosition = this.start + this.ligatureOffsets[ index ];\n\t\treturn new LigatureTable( p );\n\t}\n}\nclass LigatureTable {\n\tconstructor( p ) {\n\t\tthis.ligatureGlyph = p.uint16;\n\t\tthis.componentCount = p.uint16;\n\t\tthis.componentGlyphIDs = [\n\t\t\t...new Array( this.componentCount - 1 ),\n\t\t].map( ( _ ) => p.uint16 );\n\t}\n}\nclass LookupType5$1 extends LookupType$1 {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tif ( this.substFormat === 1 ) {\n\t\t\tthis.subRuleSetCount = p.uint16;\n\t\t\tthis.subRuleSetOffsets = [\n\t\t\t\t...new Array( this.subRuleSetCount ),\n\t\t\t].map( ( _ ) => p.Offset16 );\n\t\t}\n\t\tif ( this.substFormat === 2 ) {\n\t\t\tthis.classDefOffset = p.Offset16;\n\t\t\tthis.subClassSetCount = p.uint16;\n\t\t\tthis.subClassSetOffsets = [\n\t\t\t\t...new Array( this.subClassSetCount ),\n\t\t\t].map( ( _ ) => p.Offset16 );\n\t\t}\n\t\tif ( this.substFormat === 3 ) {\n\t\t\tundoCoverageOffsetParsing( this );\n\t\t\tthis.glyphCount = p.uint16;\n\t\t\tthis.substitutionCount = p.uint16;\n\t\t\tthis.coverageOffsets = [ ...new Array( this.glyphCount ) ].map(\n\t\t\t\t( _ ) => p.Offset16\n\t\t\t);\n\t\t\tthis.substLookupRecords = [\n\t\t\t\t...new Array( this.substitutionCount ),\n\t\t\t].map( ( _ ) => new SubstLookupRecord( p ) );\n\t\t}\n\t}\n\tgetSubRuleSet( index ) {\n\t\tif ( this.substFormat !== 1 )\n\t\t\tthrow new Error(\n\t\t\t\t`lookup type 5.${ this.substFormat } has no subrule sets.`\n\t\t\t);\n\t\tlet p = this.parser;\n\t\tp.currentPosition = this.start + this.subRuleSetOffsets[ index ];\n\t\treturn new SubRuleSetTable( p );\n\t}\n\tgetSubClassSet( index ) {\n\t\tif ( this.substFormat !== 2 )\n\t\t\tthrow new Error(\n\t\t\t\t`lookup type 5.${ this.substFormat } has no subclass sets.`\n\t\t\t);\n\t\tlet p = this.parser;\n\t\tp.currentPosition = this.start + this.subClassSetOffsets[ index ];\n\t\treturn new SubClassSetTable( p );\n\t}\n\tgetCoverageTable( index ) {\n\t\tif ( this.substFormat !== 3 && ! index )\n\t\t\treturn super.getCoverageTable();\n\t\tif ( ! index )\n\t\t\tthrow new Error(\n\t\t\t\t`lookup type 5.${ this.substFormat } requires an coverage table index.`\n\t\t\t);\n\t\tlet p = this.parser;\n\t\tp.currentPosition = this.start + this.coverageOffsets[ index ];\n\t\treturn new CoverageTable( p );\n\t}\n}\nclass SubRuleSetTable extends ParsedData {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.subRuleCount = p.uint16;\n\t\tthis.subRuleOffsets = [ ...new Array( this.subRuleCount ) ].map(\n\t\t\t( _ ) => p.Offset16\n\t\t);\n\t}\n\tgetSubRule( index ) {\n\t\tlet p = this.parser;\n\t\tp.currentPosition = this.start + this.subRuleOffsets[ index ];\n\t\treturn new SubRuleTable( p );\n\t}\n}\nclass SubRuleTable {\n\tconstructor( p ) {\n\t\tthis.glyphCount = p.uint16;\n\t\tthis.substitutionCount = p.uint16;\n\t\tthis.inputSequence = [ ...new Array( this.glyphCount - 1 ) ].map(\n\t\t\t( _ ) => p.uint16\n\t\t);\n\t\tthis.substLookupRecords = [\n\t\t\t...new Array( this.substitutionCount ),\n\t\t].map( ( _ ) => new SubstLookupRecord( p ) );\n\t}\n}\nclass SubClassSetTable extends ParsedData {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.subClassRuleCount = p.uint16;\n\t\tthis.subClassRuleOffsets = [\n\t\t\t...new Array( this.subClassRuleCount ),\n\t\t].map( ( _ ) => p.Offset16 );\n\t}\n\tgetSubClass( index ) {\n\t\tlet p = this.parser;\n\t\tp.currentPosition = this.start + this.subClassRuleOffsets[ index ];\n\t\treturn new SubClassRuleTable( p );\n\t}\n}\nclass SubClassRuleTable extends SubRuleTable {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t}\n}\nclass LookupType6$1 extends LookupType$1 {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tif ( this.substFormat === 1 ) {\n\t\t\tthis.chainSubRuleSetCount = p.uint16;\n\t\t\tthis.chainSubRuleSetOffsets = [\n\t\t\t\t...new Array( this.chainSubRuleSetCount ),\n\t\t\t].map( ( _ ) => p.Offset16 );\n\t\t}\n\t\tif ( this.substFormat === 2 ) {\n\t\t\tthis.backtrackClassDefOffset = p.Offset16;\n\t\t\tthis.inputClassDefOffset = p.Offset16;\n\t\t\tthis.lookaheadClassDefOffset = p.Offset16;\n\t\t\tthis.chainSubClassSetCount = p.uint16;\n\t\t\tthis.chainSubClassSetOffsets = [\n\t\t\t\t...new Array( this.chainSubClassSetCount ),\n\t\t\t].map( ( _ ) => p.Offset16 );\n\t\t}\n\t\tif ( this.substFormat === 3 ) {\n\t\t\tundoCoverageOffsetParsing( this );\n\t\t\tthis.backtrackGlyphCount = p.uint16;\n\t\t\tthis.backtrackCoverageOffsets = [\n\t\t\t\t...new Array( this.backtrackGlyphCount ),\n\t\t\t].map( ( _ ) => p.Offset16 );\n\t\t\tthis.inputGlyphCount = p.uint16;\n\t\t\tthis.inputCoverageOffsets = [\n\t\t\t\t...new Array( this.inputGlyphCount ),\n\t\t\t].map( ( _ ) => p.Offset16 );\n\t\t\tthis.lookaheadGlyphCount = p.uint16;\n\t\t\tthis.lookaheadCoverageOffsets = [\n\t\t\t\t...new Array( this.lookaheadGlyphCount ),\n\t\t\t].map( ( _ ) => p.Offset16 );\n\t\t\tthis.seqLookupCount = p.uint16;\n\t\t\tthis.seqLookupRecords = [\n\t\t\t\t...new Array( this.substitutionCount ),\n\t\t\t].map( ( _ ) => new SequenceLookupRecord( p ) );\n\t\t}\n\t}\n\tgetChainSubRuleSet( index ) {\n\t\tif ( this.substFormat !== 1 )\n\t\t\tthrow new Error(\n\t\t\t\t`lookup type 6.${ this.substFormat } has no chainsubrule sets.`\n\t\t\t);\n\t\tlet p = this.parser;\n\t\tp.currentPosition = this.start + this.chainSubRuleSetOffsets[ index ];\n\t\treturn new ChainSubRuleSetTable( p );\n\t}\n\tgetChainSubClassSet( index ) {\n\t\tif ( this.substFormat !== 2 )\n\t\t\tthrow new Error(\n\t\t\t\t`lookup type 6.${ this.substFormat } has no chainsubclass sets.`\n\t\t\t);\n\t\tlet p = this.parser;\n\t\tp.currentPosition = this.start + this.chainSubClassSetOffsets[ index ];\n\t\treturn new ChainSubClassSetTable( p );\n\t}\n\tgetCoverageFromOffset( offset ) {\n\t\tif ( this.substFormat !== 3 )\n\t\t\tthrow new Error(\n\t\t\t\t`lookup type 6.${ this.substFormat } does not use contextual coverage offsets.`\n\t\t\t);\n\t\tlet p = this.parser;\n\t\tp.currentPosition = this.start + offset;\n\t\treturn new CoverageTable( p );\n\t}\n}\nclass ChainSubRuleSetTable extends ParsedData {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.chainSubRuleCount = p.uint16;\n\t\tthis.chainSubRuleOffsets = [\n\t\t\t...new Array( this.chainSubRuleCount ),\n\t\t].map( ( _ ) => p.Offset16 );\n\t}\n\tgetSubRule( index ) {\n\t\tlet p = this.parser;\n\t\tp.currentPosition = this.start + this.chainSubRuleOffsets[ index ];\n\t\treturn new ChainSubRuleTable( p );\n\t}\n}\nclass ChainSubRuleTable {\n\tconstructor( p ) {\n\t\tthis.backtrackGlyphCount = p.uint16;\n\t\tthis.backtrackSequence = [\n\t\t\t...new Array( this.backtrackGlyphCount ),\n\t\t].map( ( _ ) => p.uint16 );\n\t\tthis.inputGlyphCount = p.uint16;\n\t\tthis.inputSequence = [ ...new Array( this.inputGlyphCount - 1 ) ].map(\n\t\t\t( _ ) => p.uint16\n\t\t);\n\t\tthis.lookaheadGlyphCount = p.uint16;\n\t\tthis.lookAheadSequence = [\n\t\t\t...new Array( this.lookAheadGlyphCount ),\n\t\t].map( ( _ ) => p.uint16 );\n\t\tthis.substitutionCount = p.uint16;\n\t\tthis.substLookupRecords = [ ...new Array( this.SubstCount ) ].map(\n\t\t\t( _ ) => new SubstLookupRecord( p )\n\t\t);\n\t}\n}\nclass ChainSubClassSetTable extends ParsedData {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.chainSubClassRuleCount = p.uint16;\n\t\tthis.chainSubClassRuleOffsets = [\n\t\t\t...new Array( this.chainSubClassRuleCount ),\n\t\t].map( ( _ ) => p.Offset16 );\n\t}\n\tgetSubClass( index ) {\n\t\tlet p = this.parser;\n\t\tp.currentPosition = this.start + this.chainSubRuleOffsets[ index ];\n\t\treturn new ChainSubClassRuleTable( p );\n\t}\n}\nclass ChainSubClassRuleTable {\n\tconstructor( p ) {\n\t\tthis.backtrackGlyphCount = p.uint16;\n\t\tthis.backtrackSequence = [\n\t\t\t...new Array( this.backtrackGlyphCount ),\n\t\t].map( ( _ ) => p.uint16 );\n\t\tthis.inputGlyphCount = p.uint16;\n\t\tthis.inputSequence = [ ...new Array( this.inputGlyphCount - 1 ) ].map(\n\t\t\t( _ ) => p.uint16\n\t\t);\n\t\tthis.lookaheadGlyphCount = p.uint16;\n\t\tthis.lookAheadSequence = [\n\t\t\t...new Array( this.lookAheadGlyphCount ),\n\t\t].map( ( _ ) => p.uint16 );\n\t\tthis.substitutionCount = p.uint16;\n\t\tthis.substLookupRecords = [\n\t\t\t...new Array( this.substitutionCount ),\n\t\t].map( ( _ ) => new SequenceLookupRecord( p ) );\n\t}\n}\nclass SequenceLookupRecord extends ParsedData {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.sequenceIndex = p.uint16;\n\t\tthis.lookupListIndex = p.uint16;\n\t}\n}\nclass LookupType7$1 extends ParsedData {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.substFormat = p.uint16;\n\t\tthis.extensionLookupType = p.uint16;\n\t\tthis.extensionOffset = p.Offset32;\n\t}\n}\nclass LookupType8$1 extends LookupType$1 {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.backtrackGlyphCount = p.uint16;\n\t\tthis.backtrackCoverageOffsets = [\n\t\t\t...new Array( this.backtrackGlyphCount ),\n\t\t].map( ( _ ) => p.Offset16 );\n\t\tthis.lookaheadGlyphCount = p.uint16;\n\t\tthis.lookaheadCoverageOffsets = [\n\t\t\tnew Array( this.lookaheadGlyphCount ),\n\t\t].map( ( _ ) => p.Offset16 );\n\t\tthis.glyphCount = p.uint16;\n\t\tthis.substituteGlyphIDs = [ ...new Array( this.glyphCount ) ].map(\n\t\t\t( _ ) => p.uint16\n\t\t);\n\t}\n}\nvar GSUBtables = {\n\tbuildSubtable: function ( type, p ) {\n\t\tconst subtable = new [\n\t\t\tundefined,\n\t\t\tLookupType1$1,\n\t\t\tLookupType2$1,\n\t\t\tLookupType3$1,\n\t\t\tLookupType4$1,\n\t\t\tLookupType5$1,\n\t\t\tLookupType6$1,\n\t\t\tLookupType7$1,\n\t\t\tLookupType8$1,\n\t\t][ type ]( p );\n\t\tsubtable.type = type;\n\t\treturn subtable;\n\t},\n};\nclass LookupType extends ParsedData {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t}\n}\nclass LookupType1 extends LookupType {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tconsole.log( `lookup type 1` );\n\t}\n}\nclass LookupType2 extends LookupType {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tconsole.log( `lookup type 2` );\n\t}\n}\nclass LookupType3 extends LookupType {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tconsole.log( `lookup type 3` );\n\t}\n}\nclass LookupType4 extends LookupType {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tconsole.log( `lookup type 4` );\n\t}\n}\nclass LookupType5 extends LookupType {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tconsole.log( `lookup type 5` );\n\t}\n}\nclass LookupType6 extends LookupType {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tconsole.log( `lookup type 6` );\n\t}\n}\nclass LookupType7 extends LookupType {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tconsole.log( `lookup type 7` );\n\t}\n}\nclass LookupType8 extends LookupType {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tconsole.log( `lookup type 8` );\n\t}\n}\nclass LookupType9 extends LookupType {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tconsole.log( `lookup type 9` );\n\t}\n}\nvar GPOStables = {\n\tbuildSubtable: function ( type, p ) {\n\t\tconst subtable = new [\n\t\t\tundefined,\n\t\t\tLookupType1,\n\t\t\tLookupType2,\n\t\t\tLookupType3,\n\t\t\tLookupType4,\n\t\t\tLookupType5,\n\t\t\tLookupType6,\n\t\t\tLookupType7,\n\t\t\tLookupType8,\n\t\t\tLookupType9,\n\t\t][ type ]( p );\n\t\tsubtable.type = type;\n\t\treturn subtable;\n\t},\n};\nclass LookupList extends ParsedData {\n\tstatic EMPTY = { lookupCount: 0, lookups: [] };\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.lookupCount = p.uint16;\n\t\tthis.lookups = [ ...new Array( this.lookupCount ) ].map(\n\t\t\t( _ ) => p.Offset16\n\t\t);\n\t}\n}\nclass LookupTable extends ParsedData {\n\tconstructor( p, type ) {\n\t\tsuper( p );\n\t\tthis.ctType = type;\n\t\tthis.lookupType = p.uint16;\n\t\tthis.lookupFlag = p.uint16;\n\t\tthis.subTableCount = p.uint16;\n\t\tthis.subtableOffsets = [ ...new Array( this.subTableCount ) ].map(\n\t\t\t( _ ) => p.Offset16\n\t\t);\n\t\tthis.markFilteringSet = p.uint16;\n\t}\n\tget rightToLeft() {\n\t\treturn this.lookupFlag & ( 1 === 1 );\n\t}\n\tget ignoreBaseGlyphs() {\n\t\treturn this.lookupFlag & ( 2 === 2 );\n\t}\n\tget ignoreLigatures() {\n\t\treturn this.lookupFlag & ( 4 === 4 );\n\t}\n\tget ignoreMarks() {\n\t\treturn this.lookupFlag & ( 8 === 8 );\n\t}\n\tget useMarkFilteringSet() {\n\t\treturn this.lookupFlag & ( 16 === 16 );\n\t}\n\tget markAttachmentType() {\n\t\treturn this.lookupFlag & ( 65280 === 65280 );\n\t}\n\tgetSubTable( index ) {\n\t\tconst builder = this.ctType === `GSUB` ? GSUBtables : GPOStables;\n\t\tthis.parser.currentPosition =\n\t\t\tthis.start + this.subtableOffsets[ index ];\n\t\treturn builder.buildSubtable( this.lookupType, this.parser );\n\t}\n}\nclass CommonLayoutTable extends SimpleTable {\n\tconstructor( dict, dataview, name ) {\n\t\tconst { p: p, tableStart: tableStart } = super( dict, dataview, name );\n\t\tthis.majorVersion = p.uint16;\n\t\tthis.minorVersion = p.uint16;\n\t\tthis.scriptListOffset = p.Offset16;\n\t\tthis.featureListOffset = p.Offset16;\n\t\tthis.lookupListOffset = p.Offset16;\n\t\tif ( this.majorVersion === 1 && this.minorVersion === 1 ) {\n\t\t\tthis.featureVariationsOffset = p.Offset32;\n\t\t}\n\t\tconst no_content = ! (\n\t\t\tthis.scriptListOffset ||\n\t\t\tthis.featureListOffset ||\n\t\t\tthis.lookupListOffset\n\t\t);\n\t\tlazy$1( this, `scriptList`, () => {\n\t\t\tif ( no_content ) return ScriptList.EMPTY;\n\t\t\tp.currentPosition = tableStart + this.scriptListOffset;\n\t\t\treturn new ScriptList( p );\n\t\t} );\n\t\tlazy$1( this, `featureList`, () => {\n\t\t\tif ( no_content ) return FeatureList.EMPTY;\n\t\t\tp.currentPosition = tableStart + this.featureListOffset;\n\t\t\treturn new FeatureList( p );\n\t\t} );\n\t\tlazy$1( this, `lookupList`, () => {\n\t\t\tif ( no_content ) return LookupList.EMPTY;\n\t\t\tp.currentPosition = tableStart + this.lookupListOffset;\n\t\t\treturn new LookupList( p );\n\t\t} );\n\t\tif ( this.featureVariationsOffset ) {\n\t\t\tlazy$1( this, `featureVariations`, () => {\n\t\t\t\tif ( no_content ) return FeatureVariations.EMPTY;\n\t\t\t\tp.currentPosition = tableStart + this.featureVariationsOffset;\n\t\t\t\treturn new FeatureVariations( p );\n\t\t\t} );\n\t\t}\n\t}\n\tgetSupportedScripts() {\n\t\treturn this.scriptList.scriptRecords.map( ( r ) => r.scriptTag );\n\t}\n\tgetScriptTable( scriptTag ) {\n\t\tlet record = this.scriptList.scriptRecords.find(\n\t\t\t( r ) => r.scriptTag === scriptTag\n\t\t);\n\t\tthis.parser.currentPosition =\n\t\t\tthis.scriptList.start + record.scriptOffset;\n\t\tlet table = new ScriptTable( this.parser );\n\t\ttable.scriptTag = scriptTag;\n\t\treturn table;\n\t}\n\tensureScriptTable( arg ) {\n\t\tif ( typeof arg === 'string' ) {\n\t\t\treturn this.getScriptTable( arg );\n\t\t}\n\t\treturn arg;\n\t}\n\tgetSupportedLangSys( scriptTable ) {\n\t\tscriptTable = this.ensureScriptTable( scriptTable );\n\t\tconst hasDefault = scriptTable.defaultLangSys !== 0;\n\t\tconst supported = scriptTable.langSysRecords.map(\n\t\t\t( l ) => l.langSysTag\n\t\t);\n\t\tif ( hasDefault ) supported.unshift( `dflt` );\n\t\treturn supported;\n\t}\n\tgetDefaultLangSysTable( scriptTable ) {\n\t\tscriptTable = this.ensureScriptTable( scriptTable );\n\t\tlet offset = scriptTable.defaultLangSys;\n\t\tif ( offset !== 0 ) {\n\t\t\tthis.parser.currentPosition = scriptTable.start + offset;\n\t\t\tlet table = new LangSysTable( this.parser );\n\t\t\ttable.langSysTag = ``;\n\t\t\ttable.defaultForScript = scriptTable.scriptTag;\n\t\t\treturn table;\n\t\t}\n\t}\n\tgetLangSysTable( scriptTable, langSysTag = `dflt` ) {\n\t\tif ( langSysTag === `dflt` )\n\t\t\treturn this.getDefaultLangSysTable( scriptTable );\n\t\tscriptTable = this.ensureScriptTable( scriptTable );\n\t\tlet record = scriptTable.langSysRecords.find(\n\t\t\t( l ) => l.langSysTag === langSysTag\n\t\t);\n\t\tthis.parser.currentPosition = scriptTable.start + record.langSysOffset;\n\t\tlet table = new LangSysTable( this.parser );\n\t\ttable.langSysTag = langSysTag;\n\t\treturn table;\n\t}\n\tgetFeatures( langSysTable ) {\n\t\treturn langSysTable.featureIndices.map( ( index ) =>\n\t\t\tthis.getFeature( index )\n\t\t);\n\t}\n\tgetFeature( indexOrTag ) {\n\t\tlet record;\n\t\tif ( parseInt( indexOrTag ) == indexOrTag ) {\n\t\t\trecord = this.featureList.featureRecords[ indexOrTag ];\n\t\t} else {\n\t\t\trecord = this.featureList.featureRecords.find(\n\t\t\t\t( f ) => f.featureTag === indexOrTag\n\t\t\t);\n\t\t}\n\t\tif ( ! record ) return;\n\t\tthis.parser.currentPosition =\n\t\t\tthis.featureList.start + record.featureOffset;\n\t\tlet table = new FeatureTable( this.parser );\n\t\ttable.featureTag = record.featureTag;\n\t\treturn table;\n\t}\n\tgetLookups( featureTable ) {\n\t\treturn featureTable.lookupListIndices.map( ( index ) =>\n\t\t\tthis.getLookup( index )\n\t\t);\n\t}\n\tgetLookup( lookupIndex, type ) {\n\t\tlet lookupOffset = this.lookupList.lookups[ lookupIndex ];\n\t\tthis.parser.currentPosition = this.lookupList.start + lookupOffset;\n\t\treturn new LookupTable( this.parser, type );\n\t}\n}\nclass GSUB extends CommonLayoutTable {\n\tconstructor( dict, dataview ) {\n\t\tsuper( dict, dataview, `GSUB` );\n\t}\n\tgetLookup( lookupIndex ) {\n\t\treturn super.getLookup( lookupIndex, `GSUB` );\n\t}\n}\nvar GSUB$1 = Object.freeze( { __proto__: null, GSUB: GSUB } );\nclass GPOS extends CommonLayoutTable {\n\tconstructor( dict, dataview ) {\n\t\tsuper( dict, dataview, `GPOS` );\n\t}\n\tgetLookup( lookupIndex ) {\n\t\treturn super.getLookup( lookupIndex, `GPOS` );\n\t}\n}\nvar GPOS$1 = Object.freeze( { __proto__: null, GPOS: GPOS } );\nclass SVG extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.version = p.uint16;\n\t\tthis.offsetToSVGDocumentList = p.Offset32;\n\t\tp.currentPosition = this.tableStart + this.offsetToSVGDocumentList;\n\t\tthis.documentList = new SVGDocumentList( p );\n\t}\n}\nclass SVGDocumentList extends ParsedData {\n\tconstructor( p ) {\n\t\tsuper( p );\n\t\tthis.numEntries = p.uint16;\n\t\tthis.documentRecords = [ ...new Array( this.numEntries ) ].map(\n\t\t\t( _ ) => new SVGDocumentRecord( p )\n\t\t);\n\t}\n\tgetDocument( documentID ) {\n\t\tlet record = this.documentRecords[ documentID ];\n\t\tif ( ! record ) return '';\n\t\tlet offset = this.start + record.svgDocOffset;\n\t\tthis.parser.currentPosition = offset;\n\t\treturn this.parser.readBytes( record.svgDocLength );\n\t}\n\tgetDocumentForGlyph( glyphID ) {\n\t\tlet id = this.documentRecords.findIndex(\n\t\t\t( d ) => d.startGlyphID <= glyphID && glyphID <= d.endGlyphID\n\t\t);\n\t\tif ( id === -1 ) return '';\n\t\treturn this.getDocument( id );\n\t}\n}\nclass SVGDocumentRecord {\n\tconstructor( p ) {\n\t\tthis.startGlyphID = p.uint16;\n\t\tthis.endGlyphID = p.uint16;\n\t\tthis.svgDocOffset = p.Offset32;\n\t\tthis.svgDocLength = p.uint32;\n\t}\n}\nvar SVG$1 = Object.freeze( { __proto__: null, SVG: SVG } );\nclass fvar extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.majorVersion = p.uint16;\n\t\tthis.minorVersion = p.uint16;\n\t\tthis.axesArrayOffset = p.Offset16;\n\t\tp.uint16;\n\t\tthis.axisCount = p.uint16;\n\t\tthis.axisSize = p.uint16;\n\t\tthis.instanceCount = p.uint16;\n\t\tthis.instanceSize = p.uint16;\n\t\tconst axisStart = this.tableStart + this.axesArrayOffset;\n\t\tlazy$1( this, `axes`, () => {\n\t\t\tp.currentPosition = axisStart;\n\t\t\treturn [ ...new Array( this.axisCount ) ].map(\n\t\t\t\t( _ ) => new VariationAxisRecord( p )\n\t\t\t);\n\t\t} );\n\t\tconst instanceStart = axisStart + this.axisCount * this.axisSize;\n\t\tlazy$1( this, `instances`, () => {\n\t\t\tlet instances = [];\n\t\t\tfor ( let i = 0; i < this.instanceCount; i++ ) {\n\t\t\t\tp.currentPosition = instanceStart + i * this.instanceSize;\n\t\t\t\tinstances.push(\n\t\t\t\t\tnew InstanceRecord( p, this.axisCount, this.instanceSize )\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn instances;\n\t\t} );\n\t}\n\tgetSupportedAxes() {\n\t\treturn this.axes.map( ( a ) => a.tag );\n\t}\n\tgetAxis( name ) {\n\t\treturn this.axes.find( ( a ) => a.tag === name );\n\t}\n}\nclass VariationAxisRecord {\n\tconstructor( p ) {\n\t\tthis.tag = p.tag;\n\t\tthis.minValue = p.fixed;\n\t\tthis.defaultValue = p.fixed;\n\t\tthis.maxValue = p.fixed;\n\t\tthis.flags = p.flags( 16 );\n\t\tthis.axisNameID = p.uint16;\n\t}\n}\nclass InstanceRecord {\n\tconstructor( p, axisCount, size ) {\n\t\tlet start = p.currentPosition;\n\t\tthis.subfamilyNameID = p.uint16;\n\t\tp.uint16;\n\t\tthis.coordinates = [ ...new Array( axisCount ) ].map(\n\t\t\t( _ ) => p.fixed\n\t\t);\n\t\tif ( p.currentPosition - start < size ) {\n\t\t\tthis.postScriptNameID = p.uint16;\n\t\t}\n\t}\n}\nvar fvar$1 = Object.freeze( { __proto__: null, fvar: fvar } );\nclass cvt extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tconst n = dict.length / 2;\n\t\tlazy$1( this, `items`, () =>\n\t\t\t[ ...new Array( n ) ].map( ( _ ) => p.fword )\n\t\t);\n\t}\n}\nvar cvt$1 = Object.freeze( { __proto__: null, cvt: cvt } );\nclass fpgm extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tlazy$1( this, `instructions`, () =>\n\t\t\t[ ...new Array( dict.length ) ].map( ( _ ) => p.uint8 )\n\t\t);\n\t}\n}\nvar fpgm$1 = Object.freeze( { __proto__: null, fpgm: fpgm } );\nclass gasp extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.version = p.uint16;\n\t\tthis.numRanges = p.uint16;\n\t\tconst getter = () =>\n\t\t\t[ ...new Array( this.numRanges ) ].map(\n\t\t\t\t( _ ) => new GASPRange( p )\n\t\t\t);\n\t\tlazy$1( this, `gaspRanges`, getter );\n\t}\n}\nclass GASPRange {\n\tconstructor( p ) {\n\t\tthis.rangeMaxPPEM = p.uint16;\n\t\tthis.rangeGaspBehavior = p.uint16;\n\t}\n}\nvar gasp$1 = Object.freeze( { __proto__: null, gasp: gasp } );\nclass glyf extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tsuper( dict, dataview );\n\t}\n\tgetGlyphData( offset, length ) {\n\t\tthis.parser.currentPosition = this.tableStart + offset;\n\t\treturn this.parser.readBytes( length );\n\t}\n}\nvar glyf$1 = Object.freeze( { __proto__: null, glyf: glyf } );\nclass loca extends SimpleTable {\n\tconstructor( dict, dataview, tables ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tconst n = tables.maxp.numGlyphs + 1;\n\t\tif ( tables.head.indexToLocFormat === 0 ) {\n\t\t\tthis.x2 = true;\n\t\t\tlazy$1( this, `offsets`, () =>\n\t\t\t\t[ ...new Array( n ) ].map( ( _ ) => p.Offset16 )\n\t\t\t);\n\t\t} else {\n\t\t\tlazy$1( this, `offsets`, () =>\n\t\t\t\t[ ...new Array( n ) ].map( ( _ ) => p.Offset32 )\n\t\t\t);\n\t\t}\n\t}\n\tgetGlyphDataOffsetAndLength( glyphID ) {\n\t\tlet offset = this.offsets[ glyphID ] * this.x2 ? 2 : 1;\n\t\tlet nextOffset = this.offsets[ glyphID + 1 ] * this.x2 ? 2 : 1;\n\t\treturn { offset: offset, length: nextOffset - offset };\n\t}\n}\nvar loca$1 = Object.freeze( { __proto__: null, loca: loca } );\nclass prep extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tlazy$1( this, `instructions`, () =>\n\t\t\t[ ...new Array( dict.length ) ].map( ( _ ) => p.uint8 )\n\t\t);\n\t}\n}\nvar prep$1 = Object.freeze( { __proto__: null, prep: prep } );\nclass CFF extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tlazy$1( this, `data`, () => p.readBytes() );\n\t}\n}\nvar CFF$1 = Object.freeze( { __proto__: null, CFF: CFF } );\nclass CFF2 extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tlazy$1( this, `data`, () => p.readBytes() );\n\t}\n}\nvar CFF2$1 = Object.freeze( { __proto__: null, CFF2: CFF2 } );\nclass VORG extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.majorVersion = p.uint16;\n\t\tthis.minorVersion = p.uint16;\n\t\tthis.defaultVertOriginY = p.int16;\n\t\tthis.numVertOriginYMetrics = p.uint16;\n\t\tlazy$1( this, `vertORiginYMetrics`, () =>\n\t\t\t[ ...new Array( this.numVertOriginYMetrics ) ].map(\n\t\t\t\t( _ ) => new VertOriginYMetric( p )\n\t\t\t)\n\t\t);\n\t}\n}\nclass VertOriginYMetric {\n\tconstructor( p ) {\n\t\tthis.glyphIndex = p.uint16;\n\t\tthis.vertOriginY = p.int16;\n\t}\n}\nvar VORG$1 = Object.freeze( { __proto__: null, VORG: VORG } );\nclass BitmapSize {\n\tconstructor( p ) {\n\t\tthis.indexSubTableArrayOffset = p.Offset32;\n\t\tthis.indexTablesSize = p.uint32;\n\t\tthis.numberofIndexSubTables = p.uint32;\n\t\tthis.colorRef = p.uint32;\n\t\tthis.hori = new SbitLineMetrics( p );\n\t\tthis.vert = new SbitLineMetrics( p );\n\t\tthis.startGlyphIndex = p.uint16;\n\t\tthis.endGlyphIndex = p.uint16;\n\t\tthis.ppemX = p.uint8;\n\t\tthis.ppemY = p.uint8;\n\t\tthis.bitDepth = p.uint8;\n\t\tthis.flags = p.int8;\n\t}\n}\nclass BitmapScale {\n\tconstructor( p ) {\n\t\tthis.hori = new SbitLineMetrics( p );\n\t\tthis.vert = new SbitLineMetrics( p );\n\t\tthis.ppemX = p.uint8;\n\t\tthis.ppemY = p.uint8;\n\t\tthis.substitutePpemX = p.uint8;\n\t\tthis.substitutePpemY = p.uint8;\n\t}\n}\nclass SbitLineMetrics {\n\tconstructor( p ) {\n\t\tthis.ascender = p.int8;\n\t\tthis.descender = p.int8;\n\t\tthis.widthMax = p.uint8;\n\t\tthis.caretSlopeNumerator = p.int8;\n\t\tthis.caretSlopeDenominator = p.int8;\n\t\tthis.caretOffset = p.int8;\n\t\tthis.minOriginSB = p.int8;\n\t\tthis.minAdvanceSB = p.int8;\n\t\tthis.maxBeforeBL = p.int8;\n\t\tthis.minAfterBL = p.int8;\n\t\tthis.pad1 = p.int8;\n\t\tthis.pad2 = p.int8;\n\t}\n}\nclass EBLC extends SimpleTable {\n\tconstructor( dict, dataview, name ) {\n\t\tconst { p: p } = super( dict, dataview, name );\n\t\tthis.majorVersion = p.uint16;\n\t\tthis.minorVersion = p.uint16;\n\t\tthis.numSizes = p.uint32;\n\t\tlazy$1( this, `bitMapSizes`, () =>\n\t\t\t[ ...new Array( this.numSizes ) ].map(\n\t\t\t\t( _ ) => new BitmapSize( p )\n\t\t\t)\n\t\t);\n\t}\n}\nvar EBLC$1 = Object.freeze( { __proto__: null, EBLC: EBLC } );\nclass EBDT extends SimpleTable {\n\tconstructor( dict, dataview, name ) {\n\t\tconst { p: p } = super( dict, dataview, name );\n\t\tthis.majorVersion = p.uint16;\n\t\tthis.minorVersion = p.uint16;\n\t}\n}\nvar EBDT$1 = Object.freeze( { __proto__: null, EBDT: EBDT } );\nclass EBSC extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.majorVersion = p.uint16;\n\t\tthis.minorVersion = p.uint16;\n\t\tthis.numSizes = p.uint32;\n\t\tlazy$1( this, `bitmapScales`, () =>\n\t\t\t[ ...new Array( this.numSizes ) ].map(\n\t\t\t\t( _ ) => new BitmapScale( p )\n\t\t\t)\n\t\t);\n\t}\n}\nvar EBSC$1 = Object.freeze( { __proto__: null, EBSC: EBSC } );\nclass CBLC extends EBLC {\n\tconstructor( dict, dataview ) {\n\t\tsuper( dict, dataview, `CBLC` );\n\t}\n}\nvar CBLC$1 = Object.freeze( { __proto__: null, CBLC: CBLC } );\nclass CBDT extends EBDT {\n\tconstructor( dict, dataview ) {\n\t\tsuper( dict, dataview, `CBDT` );\n\t}\n}\nvar CBDT$1 = Object.freeze( { __proto__: null, CBDT: CBDT } );\nclass sbix extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.version = p.uint16;\n\t\tthis.flags = p.flags( 16 );\n\t\tthis.numStrikes = p.uint32;\n\t\tlazy$1( this, `strikeOffsets`, () =>\n\t\t\t[ ...new Array( this.numStrikes ) ].map( ( _ ) => p.Offset32 )\n\t\t);\n\t}\n}\nvar sbix$1 = Object.freeze( { __proto__: null, sbix: sbix } );\nclass COLR extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.version = p.uint16;\n\t\tthis.numBaseGlyphRecords = p.uint16;\n\t\tthis.baseGlyphRecordsOffset = p.Offset32;\n\t\tthis.layerRecordsOffset = p.Offset32;\n\t\tthis.numLayerRecords = p.uint16;\n\t}\n\tgetBaseGlyphRecord( glyphID ) {\n\t\tlet start = this.tableStart + this.baseGlyphRecordsOffset;\n\t\tthis.parser.currentPosition = start;\n\t\tlet first = new BaseGlyphRecord( this.parser );\n\t\tlet firstID = first.gID;\n\t\tlet end = this.tableStart + this.layerRecordsOffset - 6;\n\t\tthis.parser.currentPosition = end;\n\t\tlet last = new BaseGlyphRecord( this.parser );\n\t\tlet lastID = last.gID;\n\t\tif ( firstID === glyphID ) return first;\n\t\tif ( lastID === glyphID ) return last;\n\t\twhile ( true ) {\n\t\t\tif ( start === end ) break;\n\t\t\tlet mid = start + ( end - start ) / 12;\n\t\t\tthis.parser.currentPosition = mid;\n\t\t\tlet middle = new BaseGlyphRecord( this.parser );\n\t\t\tlet midID = middle.gID;\n\t\t\tif ( midID === glyphID ) return middle;\n\t\t\telse if ( midID > glyphID ) {\n\t\t\t\tend = mid;\n\t\t\t} else if ( midID < glyphID ) {\n\t\t\t\tstart = mid;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tgetLayers( glyphID ) {\n\t\tlet record = this.getBaseGlyphRecord( glyphID );\n\t\tthis.parser.currentPosition =\n\t\t\tthis.tableStart +\n\t\t\tthis.layerRecordsOffset +\n\t\t\t4 * record.firstLayerIndex;\n\t\treturn [ ...new Array( record.numLayers ) ].map(\n\t\t\t( _ ) => new LayerRecord( p )\n\t\t);\n\t}\n}\nclass BaseGlyphRecord {\n\tconstructor( p ) {\n\t\tthis.gID = p.uint16;\n\t\tthis.firstLayerIndex = p.uint16;\n\t\tthis.numLayers = p.uint16;\n\t}\n}\nclass LayerRecord {\n\tconstructor( p ) {\n\t\tthis.gID = p.uint16;\n\t\tthis.paletteIndex = p.uint16;\n\t}\n}\nvar COLR$1 = Object.freeze( { __proto__: null, COLR: COLR } );\nclass CPAL extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.version = p.uint16;\n\t\tthis.numPaletteEntries = p.uint16;\n\t\tconst numPalettes = ( this.numPalettes = p.uint16 );\n\t\tthis.numColorRecords = p.uint16;\n\t\tthis.offsetFirstColorRecord = p.Offset32;\n\t\tthis.colorRecordIndices = [ ...new Array( this.numPalettes ) ].map(\n\t\t\t( _ ) => p.uint16\n\t\t);\n\t\tlazy$1( this, `colorRecords`, () => {\n\t\t\tp.currentPosition = this.tableStart + this.offsetFirstColorRecord;\n\t\t\treturn [ ...new Array( this.numColorRecords ) ].map(\n\t\t\t\t( _ ) => new ColorRecord( p )\n\t\t\t);\n\t\t} );\n\t\tif ( this.version === 1 ) {\n\t\t\tthis.offsetPaletteTypeArray = p.Offset32;\n\t\t\tthis.offsetPaletteLabelArray = p.Offset32;\n\t\t\tthis.offsetPaletteEntryLabelArray = p.Offset32;\n\t\t\tlazy$1( this, `paletteTypeArray`, () => {\n\t\t\t\tp.currentPosition =\n\t\t\t\t\tthis.tableStart + this.offsetPaletteTypeArray;\n\t\t\t\treturn new PaletteTypeArray( p, numPalettes );\n\t\t\t} );\n\t\t\tlazy$1( this, `paletteLabelArray`, () => {\n\t\t\t\tp.currentPosition =\n\t\t\t\t\tthis.tableStart + this.offsetPaletteLabelArray;\n\t\t\t\treturn new PaletteLabelsArray( p, numPalettes );\n\t\t\t} );\n\t\t\tlazy$1( this, `paletteEntryLabelArray`, () => {\n\t\t\t\tp.currentPosition =\n\t\t\t\t\tthis.tableStart + this.offsetPaletteEntryLabelArray;\n\t\t\t\treturn new PaletteEntryLabelArray( p, numPalettes );\n\t\t\t} );\n\t\t}\n\t}\n}\nclass ColorRecord {\n\tconstructor( p ) {\n\t\tthis.blue = p.uint8;\n\t\tthis.green = p.uint8;\n\t\tthis.red = p.uint8;\n\t\tthis.alpha = p.uint8;\n\t}\n}\nclass PaletteTypeArray {\n\tconstructor( p, numPalettes ) {\n\t\tthis.paletteTypes = [ ...new Array( numPalettes ) ].map(\n\t\t\t( _ ) => p.uint32\n\t\t);\n\t}\n}\nclass PaletteLabelsArray {\n\tconstructor( p, numPalettes ) {\n\t\tthis.paletteLabels = [ ...new Array( numPalettes ) ].map(\n\t\t\t( _ ) => p.uint16\n\t\t);\n\t}\n}\nclass PaletteEntryLabelArray {\n\tconstructor( p, numPalettes ) {\n\t\tthis.paletteEntryLabels = [ ...new Array( numPalettes ) ].map(\n\t\t\t( _ ) => p.uint16\n\t\t);\n\t}\n}\nvar CPAL$1 = Object.freeze( { __proto__: null, CPAL: CPAL } );\nclass DSIG extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.version = p.uint32;\n\t\tthis.numSignatures = p.uint16;\n\t\tthis.flags = p.uint16;\n\t\tthis.signatureRecords = [ ...new Array( this.numSignatures ) ].map(\n\t\t\t( _ ) => new SignatureRecord( p )\n\t\t);\n\t}\n\tgetData( signatureID ) {\n\t\tconst record = this.signatureRecords[ signatureID ];\n\t\tthis.parser.currentPosition = this.tableStart + record.offset;\n\t\treturn new SignatureBlockFormat1( this.parser );\n\t}\n}\nclass SignatureRecord {\n\tconstructor( p ) {\n\t\tthis.format = p.uint32;\n\t\tthis.length = p.uint32;\n\t\tthis.offset = p.Offset32;\n\t}\n}\nclass SignatureBlockFormat1 {\n\tconstructor( p ) {\n\t\tp.uint16;\n\t\tp.uint16;\n\t\tthis.signatureLength = p.uint32;\n\t\tthis.signature = p.readBytes( this.signatureLength );\n\t}\n}\nvar DSIG$1 = Object.freeze( { __proto__: null, DSIG: DSIG } );\nclass hdmx extends SimpleTable {\n\tconstructor( dict, dataview, tables ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tconst numGlyphs = tables.hmtx.numGlyphs;\n\t\tthis.version = p.uint16;\n\t\tthis.numRecords = p.int16;\n\t\tthis.sizeDeviceRecord = p.int32;\n\t\tthis.records = [ ...new Array( numRecords ) ].map(\n\t\t\t( _ ) => new DeviceRecord( p, numGlyphs )\n\t\t);\n\t}\n}\nclass DeviceRecord {\n\tconstructor( p, numGlyphs ) {\n\t\tthis.pixelSize = p.uint8;\n\t\tthis.maxWidth = p.uint8;\n\t\tthis.widths = p.readBytes( numGlyphs );\n\t}\n}\nvar hdmx$1 = Object.freeze( { __proto__: null, hdmx: hdmx } );\nclass kern extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.version = p.uint16;\n\t\tthis.nTables = p.uint16;\n\t\tlazy$1( this, `tables`, () => {\n\t\t\tlet offset = this.tableStart + 4;\n\t\t\tconst tables = [];\n\t\t\tfor ( let i = 0; i < this.nTables; i++ ) {\n\t\t\t\tp.currentPosition = offset;\n\t\t\t\tlet subtable = new KernSubTable( p );\n\t\t\t\ttables.push( subtable );\n\t\t\t\toffset += subtable;\n\t\t\t}\n\t\t\treturn tables;\n\t\t} );\n\t}\n}\nclass KernSubTable {\n\tconstructor( p ) {\n\t\tthis.version = p.uint16;\n\t\tthis.length = p.uint16;\n\t\tthis.coverage = p.flags( 8 );\n\t\tthis.format = p.uint8;\n\t\tif ( this.format === 0 ) {\n\t\t\tthis.nPairs = p.uint16;\n\t\t\tthis.searchRange = p.uint16;\n\t\t\tthis.entrySelector = p.uint16;\n\t\t\tthis.rangeShift = p.uint16;\n\t\t\tlazy$1( this, `pairs`, () =>\n\t\t\t\t[ ...new Array( this.nPairs ) ].map( ( _ ) => new Pair( p ) )\n\t\t\t);\n\t\t}\n\t\tif ( this.format === 2 ) {\n\t\t\tconsole.warn(\n\t\t\t\t`Kern subtable format 2 is not supported: this parser currently only parses universal table data.`\n\t\t\t);\n\t\t}\n\t}\n\tget horizontal() {\n\t\treturn this.coverage[ 0 ];\n\t}\n\tget minimum() {\n\t\treturn this.coverage[ 1 ];\n\t}\n\tget crossstream() {\n\t\treturn this.coverage[ 2 ];\n\t}\n\tget override() {\n\t\treturn this.coverage[ 3 ];\n\t}\n}\nclass Pair {\n\tconstructor( p ) {\n\t\tthis.left = p.uint16;\n\t\tthis.right = p.uint16;\n\t\tthis.value = p.fword;\n\t}\n}\nvar kern$1 = Object.freeze( { __proto__: null, kern: kern } );\nclass LTSH extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.version = p.uint16;\n\t\tthis.numGlyphs = p.uint16;\n\t\tthis.yPels = p.readBytes( this.numGlyphs );\n\t}\n}\nvar LTSH$1 = Object.freeze( { __proto__: null, LTSH: LTSH } );\nclass MERG extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.version = p.uint16;\n\t\tthis.mergeClassCount = p.uint16;\n\t\tthis.mergeDataOffset = p.Offset16;\n\t\tthis.classDefCount = p.uint16;\n\t\tthis.offsetToClassDefOffsets = p.Offset16;\n\t\tlazy$1( this, `mergeEntryMatrix`, () =>\n\t\t\t[ ...new Array( this.mergeClassCount ) ].map( ( _ ) =>\n\t\t\t\tp.readBytes( this.mergeClassCount )\n\t\t\t)\n\t\t);\n\t\tconsole.warn( `Full MERG parsing is currently not supported.` );\n\t\tconsole.warn(\n\t\t\t`If you need this table parsed, please file an issue, or better yet, a PR.`\n\t\t);\n\t}\n}\nvar MERG$1 = Object.freeze( { __proto__: null, MERG: MERG } );\nclass meta extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.version = p.uint32;\n\t\tthis.flags = p.uint32;\n\t\tp.uint32;\n\t\tthis.dataMapsCount = p.uint32;\n\t\tthis.dataMaps = [ ...new Array( this.dataMapsCount ) ].map(\n\t\t\t( _ ) => new DataMap( this.tableStart, p )\n\t\t);\n\t}\n}\nclass DataMap {\n\tconstructor( tableStart, p ) {\n\t\tthis.tableStart = tableStart;\n\t\tthis.parser = p;\n\t\tthis.tag = p.tag;\n\t\tthis.dataOffset = p.Offset32;\n\t\tthis.dataLength = p.uint32;\n\t}\n\tgetData() {\n\t\tthis.parser.currentField = this.tableStart + this.dataOffset;\n\t\treturn this.parser.readBytes( this.dataLength );\n\t}\n}\nvar meta$1 = Object.freeze( { __proto__: null, meta: meta } );\nclass PCLT extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tsuper( dict, dataview );\n\t\tconsole.warn(\n\t\t\t`This font uses a PCLT table, which is currently not supported by this parser.`\n\t\t);\n\t\tconsole.warn(\n\t\t\t`If you need this table parsed, please file an issue, or better yet, a PR.`\n\t\t);\n\t}\n}\nvar PCLT$1 = Object.freeze( { __proto__: null, PCLT: PCLT } );\nclass VDMX extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.version = p.uint16;\n\t\tthis.numRecs = p.uint16;\n\t\tthis.numRatios = p.uint16;\n\t\tthis.ratRanges = [ ...new Array( this.numRatios ) ].map(\n\t\t\t( _ ) => new RatioRange( p )\n\t\t);\n\t\tthis.offsets = [ ...new Array( this.numRatios ) ].map(\n\t\t\t( _ ) => p.Offset16\n\t\t);\n\t\tthis.VDMXGroups = [ ...new Array( this.numRecs ) ].map(\n\t\t\t( _ ) => new VDMXGroup( p )\n\t\t);\n\t}\n}\nclass RatioRange {\n\tconstructor( p ) {\n\t\tthis.bCharSet = p.uint8;\n\t\tthis.xRatio = p.uint8;\n\t\tthis.yStartRatio = p.uint8;\n\t\tthis.yEndRatio = p.uint8;\n\t}\n}\nclass VDMXGroup {\n\tconstructor( p ) {\n\t\tthis.recs = p.uint16;\n\t\tthis.startsz = p.uint8;\n\t\tthis.endsz = p.uint8;\n\t\tthis.records = [ ...new Array( this.recs ) ].map(\n\t\t\t( _ ) => new vTable( p )\n\t\t);\n\t}\n}\nclass vTable {\n\tconstructor( p ) {\n\t\tthis.yPelHeight = p.uint16;\n\t\tthis.yMax = p.int16;\n\t\tthis.yMin = p.int16;\n\t}\n}\nvar VDMX$1 = Object.freeze( { __proto__: null, VDMX: VDMX } );\nclass vhea extends SimpleTable {\n\tconstructor( dict, dataview ) {\n\t\tconst { p: p } = super( dict, dataview );\n\t\tthis.version = p.fixed;\n\t\tthis.ascent = this.vertTypoAscender = p.int16;\n\t\tthis.descent = this.vertTypoDescender = p.int16;\n\t\tthis.lineGap = this.vertTypoLineGap = p.int16;\n\t\tthis.advanceHeightMax = p.int16;\n\t\tthis.minTopSideBearing = p.int16;\n\t\tthis.minBottomSideBearing = p.int16;\n\t\tthis.yMaxExtent = p.int16;\n\t\tthis.caretSlopeRise = p.int16;\n\t\tthis.caretSlopeRun = p.int16;\n\t\tthis.caretOffset = p.int16;\n\t\tthis.reserved = p.int16;\n\t\tthis.reserved = p.int16;\n\t\tthis.reserved = p.int16;\n\t\tthis.reserved = p.int16;\n\t\tthis.metricDataFormat = p.int16;\n\t\tthis.numOfLongVerMetrics = p.uint16;\n\t\tp.verifyLength();\n\t}\n}\nvar vhea$1 = Object.freeze( { __proto__: null, vhea: vhea } );\nclass vmtx extends SimpleTable {\n\tconstructor( dict, dataview, tables ) {\n\t\tsuper( dict, dataview );\n\t\tconst numOfLongVerMetrics = tables.vhea.numOfLongVerMetrics;\n\t\tconst numGlyphs = tables.maxp.numGlyphs;\n\t\tconst metricsStart = p.currentPosition;\n\t\tlazy( this, `vMetrics`, () => {\n\t\t\tp.currentPosition = metricsStart;\n\t\t\treturn [ ...new Array( numOfLongVerMetrics ) ].map(\n\t\t\t\t( _ ) => new LongVertMetric( p.uint16, p.int16 )\n\t\t\t);\n\t\t} );\n\t\tif ( numOfLongVerMetrics < numGlyphs ) {\n\t\t\tconst tsbStart = metricsStart + numOfLongVerMetrics * 4;\n\t\t\tlazy( this, `topSideBearings`, () => {\n\t\t\t\tp.currentPosition = tsbStart;\n\t\t\t\treturn [ ...new Array( numGlyphs - numOfLongVerMetrics ) ].map(\n\t\t\t\t\t( _ ) => p.int16\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\t}\n}\nclass LongVertMetric {\n\tconstructor( h, b ) {\n\t\tthis.advanceHeight = h;\n\t\tthis.topSideBearing = b;\n\t}\n}\nvar vmtx$1 = Object.freeze( { __proto__: null, vmtx: vmtx } );\nexport { Font };\n/* eslint-enable */\n", "/**\n * WordPress dependencies\n */\nimport { privateApis as componentsPrivateApis } from '@wordpress/components';\nimport type { FontFamily, FontFace } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { kebabCase } = unlock( componentsPrivateApis );\n\nexport default function makeFamiliesFromFaces(\n\tfontFaces: FontFace[]\n): FontFamily[] {\n\tconst fontFamiliesObject = fontFaces.reduce(\n\t\t( acc: Record< string, FontFamily >, item: FontFace ) => {\n\t\t\tif ( ! acc[ item.fontFamily ] ) {\n\t\t\t\tacc[ item.fontFamily ] = {\n\t\t\t\t\tname: item.fontFamily,\n\t\t\t\t\tfontFamily: item.fontFamily,\n\t\t\t\t\tslug: kebabCase( item.fontFamily.toLowerCase() ),\n\t\t\t\t\tfontFace: [],\n\t\t\t\t};\n\t\t\t}\n\t\t\t// @ts-expect-error\n\t\t\tacc[ item.fontFamily ].fontFace.push( item );\n\t\t\treturn acc;\n\t\t},\n\t\t{}\n\t);\n\treturn Object.values( fontFamiliesObject ) as FontFamily[];\n}\n", "/**\n * WordPress dependencies\n */\nimport { _n, sprintf } from '@wordpress/i18n';\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalItem as Item,\n\tFlexItem,\n} from '@wordpress/components';\nimport { useContext } from '@wordpress/element';\nimport type { FontFamily } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { FontLibraryContext } from './font-library/context';\nimport { getFamilyPreviewStyle } from './font-library/utils/preview-styles';\n\ninterface FontFamilyItemProps {\n\tfont: FontFamily;\n}\n\nfunction FontFamilyItem( { font }: FontFamilyItemProps ) {\n\tconst { handleSetLibraryFontSelected, setModalTabOpen } =\n\t\tuseContext( FontLibraryContext );\n\n\tconst variantsCount = font?.fontFace?.length || 1;\n\n\tconst handleClick = () => {\n\t\thandleSetLibraryFontSelected?.( font );\n\t\tsetModalTabOpen?.( 'installed-fonts' );\n\t};\n\n\tconst previewStyle = getFamilyPreviewStyle( font );\n\n\treturn (\n\t\t<Item onClick={ handleClick }>\n\t\t\t<HStack justify=\"space-between\">\n\t\t\t\t<FlexItem style={ previewStyle }>{ font.name }</FlexItem>\n\t\t\t\t<FlexItem className=\"global-styles-ui-screen-typography__font-variants-count\">\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %d: Number of font variants. */\n\t\t\t\t\t\t_n( '%d variant', '%d variants', variantsCount ),\n\t\t\t\t\t\tvariantsCount\n\t\t\t\t\t) }\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t</Item>\n\t);\n}\n\nexport default FontFamilyItem;\n", "/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n\tFlexItem,\n} from '@wordpress/components';\nimport { Icon, chevronLeft, chevronRight } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { Subtitle } from '../subtitle';\nimport { NavigationButtonAsItem } from '../navigation-button';\n\nfunction FontSizes() {\n\treturn (\n\t\t<VStack spacing={ 2 }>\n\t\t\t<HStack justify=\"space-between\">\n\t\t\t\t<Subtitle level={ 3 }>{ __( 'Font Sizes' ) }</Subtitle>\n\t\t\t</HStack>\n\t\t\t<ItemGroup isBordered isSeparated>\n\t\t\t\t<NavigationButtonAsItem path=\"/typography/font-sizes\">\n\t\t\t\t\t<HStack direction=\"row\">\n\t\t\t\t\t\t<FlexItem>{ __( 'Font size presets' ) }</FlexItem>\n\t\t\t\t\t\t<Icon icon={ isRTL() ? chevronLeft : chevronRight } />\n\t\t\t\t\t</HStack>\n\t\t\t\t</NavigationButtonAsItem>\n\t\t\t</ItemGroup>\n\t\t</VStack>\n\t);\n}\n\nexport default FontSizes;\n", "/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalSpacer as Spacer,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport TypographyPanel from './typography-panel';\nimport { ScreenHeader } from './screen-header';\nimport TypographyPreview from './typography-preview';\n\nconst elements = {\n\ttext: {\n\t\tdescription: __( 'Manage the fonts used on the site.' ),\n\t\ttitle: __( 'Text' ),\n\t},\n\tlink: {\n\t\tdescription: __( 'Manage the fonts and typography used on the links.' ),\n\t\ttitle: __( 'Links' ),\n\t},\n\theading: {\n\t\tdescription: __( 'Manage the fonts and typography used on headings.' ),\n\t\ttitle: __( 'Headings' ),\n\t},\n\tcaption: {\n\t\tdescription: __( 'Manage the fonts and typography used on captions.' ),\n\t\ttitle: __( 'Captions' ),\n\t},\n\tbutton: {\n\t\tdescription: __( 'Manage the fonts and typography used on buttons.' ),\n\t\ttitle: __( 'Buttons' ),\n\t},\n};\n\ninterface ScreenTypographyElementProps {\n\telement: keyof typeof elements;\n}\n\nfunction ScreenTypographyElement( { element }: ScreenTypographyElementProps ) {\n\tconst [ headingLevel, setHeadingLevel ] = useState( 'heading' );\n\n\treturn (\n\t\t<>\n\t\t\t<ScreenHeader\n\t\t\t\ttitle={ elements[ element ].title }\n\t\t\t\tdescription={ elements[ element ].description }\n\t\t\t/>\n\t\t\t<Spacer marginX={ 4 }>\n\t\t\t\t<TypographyPreview\n\t\t\t\t\telement={ element }\n\t\t\t\t\theadingLevel={ headingLevel }\n\t\t\t\t/>\n\t\t\t</Spacer>\n\t\t\t{ element === 'heading' && (\n\t\t\t\t<Spacer marginX={ 4 } marginBottom=\"1em\">\n\t\t\t\t\t<ToggleGroupControl\n\t\t\t\t\t\tlabel={ __( 'Select heading level' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\tvalue={ headingLevel }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetHeadingLevel( value as string )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisBlock\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"heading\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'All headings' ) }\n\t\t\t\t\t\t\tlabel={ _x( 'All', 'heading levels' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"h1\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'Heading 1' ) }\n\t\t\t\t\t\t\tlabel={ __( 'H1' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"h2\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'Heading 2' ) }\n\t\t\t\t\t\t\tlabel={ __( 'H2' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"h3\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'Heading 3' ) }\n\t\t\t\t\t\t\tlabel={ __( 'H3' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"h4\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'Heading 4' ) }\n\t\t\t\t\t\t\tlabel={ __( 'H4' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"h5\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'Heading 5' ) }\n\t\t\t\t\t\t\tlabel={ __( 'H5' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tvalue=\"h6\"\n\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\taria-label={ __( 'Heading 6' ) }\n\t\t\t\t\t\t\tlabel={ __( 'H6' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToggleGroupControl>\n\t\t\t\t</Spacer>\n\t\t\t) }\n\t\t\t<TypographyPanel\n\t\t\t\telement={ element }\n\t\t\t\theadingLevel={ headingLevel }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default ScreenTypographyElement;\n", "/**\n * WordPress dependencies\n */\n// @ts-expect-error: Not typed yet.\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { useStyle, useSetting } from './hooks';\nimport { unlock } from './lock-unlock';\n\nconst { useSettingsForBlockElement, TypographyPanel: StylesTypographyPanel } =\n\tunlock( blockEditorPrivateApis );\n\ninterface TypographyPanelProps {\n\telement: string;\n\theadingLevel: string;\n}\n\nexport default function TypographyPanel( {\n\telement,\n\theadingLevel,\n}: TypographyPanelProps ) {\n\tlet prefixParts: string[] = [];\n\tif ( element === 'heading' ) {\n\t\tprefixParts = prefixParts.concat( [ 'elements', headingLevel ] );\n\t} else if ( element && element !== 'text' ) {\n\t\tprefixParts = prefixParts.concat( [ 'elements', element ] );\n\t}\n\tconst prefix = prefixParts.join( '.' );\n\n\tconst [ style ] = useStyle( prefix, '', 'user', false );\n\tconst [ inheritedStyle, setStyle ] = useStyle(\n\t\tprefix,\n\t\t'',\n\t\t'merged',\n\t\tfalse\n\t);\n\tconst [ rawSettings ] = useSetting( '' );\n\tconst usedElement = element === 'heading' ? headingLevel : element;\n\tconst settings = useSettingsForBlockElement(\n\t\trawSettings,\n\t\tundefined,\n\t\tusedElement\n\t);\n\n\treturn (\n\t\t<StylesTypographyPanel\n\t\t\tinheritedValue={ inheritedStyle }\n\t\t\tvalue={ style }\n\t\t\tonChange={ setStyle }\n\t\t\tsettings={ settings }\n\t\t/>\n\t);\n}\n", "/**\n * Internal dependencies\n */\nimport { useStyle } from './hooks';\n\ninterface TypographyPreviewProps {\n\tname?: string;\n\telement: string;\n\theadingLevel: string;\n}\n\nexport default function TypographyPreview( {\n\tname,\n\telement,\n\theadingLevel,\n}: TypographyPreviewProps ) {\n\tlet prefix = '';\n\tif ( element === 'heading' ) {\n\t\tprefix = `elements.${ headingLevel }.`;\n\t} else if ( element && element !== 'text' ) {\n\t\tprefix = `elements.${ element }.`;\n\t}\n\n\tconst [ fontFamily ] = useStyle( prefix + 'typography.fontFamily', name );\n\tconst [ gradientValue ] = useStyle( prefix + 'color.gradient', name );\n\tconst [ backgroundColor ] = useStyle( prefix + 'color.background', name );\n\tconst [ fallbackBackgroundColor ] = useStyle( 'color.background' );\n\tconst [ color ] = useStyle( prefix + 'color.text', name );\n\tconst [ fontSize ] = useStyle( prefix + 'typography.fontSize', name );\n\tconst [ fontStyle ] = useStyle( prefix + 'typography.fontStyle', name );\n\tconst [ fontWeight ] = useStyle( prefix + 'typography.fontWeight', name );\n\tconst [ letterSpacing ] = useStyle(\n\t\tprefix + 'typography.letterSpacing',\n\t\tname\n\t);\n\tconst extraStyles =\n\t\telement === 'link'\n\t\t\t? {\n\t\t\t\t\ttextDecoration: 'underline',\n\t\t\t  }\n\t\t\t: {};\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"global-styles-ui-typography-preview\"\n\t\t\tstyle={ {\n\t\t\t\tfontFamily: fontFamily ?? 'serif',\n\t\t\t\tbackground:\n\t\t\t\t\tgradientValue ?? backgroundColor ?? fallbackBackgroundColor,\n\t\t\t\tcolor,\n\t\t\t\tfontSize,\n\t\t\t\tfontStyle,\n\t\t\t\tfontWeight,\n\t\t\t\tletterSpacing,\n\t\t\t\t...extraStyles,\n\t\t\t} }\n\t\t>\n\t\t\tAa\n\t\t</div>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { __experimentalVStack as VStack } from '@wordpress/components';\n// @ts-expect-error: Not typed yet.\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport type {\n\tGlobalStylesStyles,\n\tGlobalStylesSettings,\n} from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { ScreenHeader } from './screen-header';\nimport { ScreenBody } from './screen-body';\nimport Palette from './palette';\nimport { useStyle, useSetting } from './hooks';\nimport { unlock } from './lock-unlock';\n\nconst { useSettingsForBlockElement, ColorPanel: StylesColorPanel } = unlock(\n\tblockEditorPrivateApis\n);\n\nfunction ScreenColors() {\n\t// Get user styles for editing\n\tconst [ style, setStyle ] = useStyle< GlobalStylesStyles >(\n\t\t'',\n\t\tundefined,\n\t\t'user',\n\t\tfalse\n\t);\n\t// Get inherited styles for display\n\tconst [ inheritedStyle ] = useStyle< GlobalStylesStyles >(\n\t\t'',\n\t\tundefined,\n\t\t'merged',\n\t\tfalse\n\t);\n\t// Get settings for the color panel\n\tconst [ rawSettings ] = useSetting< GlobalStylesSettings >( '' );\n\tconst settings = useSettingsForBlockElement( rawSettings );\n\n\treturn (\n\t\t<>\n\t\t\t<ScreenHeader\n\t\t\t\ttitle={ __( 'Colors' ) }\n\t\t\t\tdescription={ __(\n\t\t\t\t\t'Palette colors and the application of those colors on site elements.'\n\t\t\t\t) }\n\t\t\t/>\n\t\t\t<ScreenBody>\n\t\t\t\t<VStack spacing={ 7 }>\n\t\t\t\t\t<Palette />\n\t\t\t\t</VStack>\n\t\t\t</ScreenBody>\n\t\t\t<StylesColorPanel\n\t\t\t\tinheritedValue={ inheritedStyle }\n\t\t\t\tvalue={ style }\n\t\t\t\tonChange={ setStyle }\n\t\t\t\tsettings={ settings }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default ScreenColors;\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\tFlexItem,\n\t__experimentalHStack as HStack,\n\t__experimentalZStack as ZStack,\n\t__experimentalVStack as VStack,\n\tColorIndicator,\n} from '@wordpress/components';\nimport { isRTL, __ } from '@wordpress/i18n';\nimport { Icon, chevronLeft, chevronRight } from '@wordpress/icons';\nimport { useMemo } from '@wordpress/element';\nimport type { Color } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { Subtitle } from './subtitle';\nimport { NavigationButtonAsItem } from './navigation-button';\nimport ColorIndicatorWrapper from './color-indicator-wrapper';\nimport { useSetting } from './hooks';\n\nconst EMPTY_COLORS: Color[] = [];\n\ninterface PaletteProps {\n\tname?: string;\n}\n\nfunction Palette( { name }: PaletteProps ) {\n\tconst [ customColors ] = useSetting< Color[] >( 'color.palette.custom' );\n\tconst [ themeColors ] = useSetting< Color[] >( 'color.palette.theme' );\n\tconst [ defaultColors ] = useSetting< Color[] >( 'color.palette.default' );\n\tconst [ defaultPaletteEnabled ] = useSetting< boolean >(\n\t\t'color.defaultPalette',\n\t\tname\n\t);\n\n\tconst safeCustomColors = customColors || EMPTY_COLORS;\n\tconst safeThemeColors = themeColors || EMPTY_COLORS;\n\tconst safeDefaultColors = defaultColors || EMPTY_COLORS;\n\tconst safeDefaultPaletteEnabled = defaultPaletteEnabled ?? true;\n\n\tconst colors = useMemo(\n\t\t() => [\n\t\t\t...safeCustomColors,\n\t\t\t...safeThemeColors,\n\t\t\t...( safeDefaultColors && safeDefaultPaletteEnabled\n\t\t\t\t? safeDefaultColors\n\t\t\t\t: EMPTY_COLORS ),\n\t\t],\n\t\t[\n\t\t\tsafeCustomColors,\n\t\t\tsafeThemeColors,\n\t\t\tsafeDefaultColors,\n\t\t\tsafeDefaultPaletteEnabled,\n\t\t]\n\t);\n\n\tconst screenPath = ! name\n\t\t? '/colors/palette'\n\t\t: '/blocks/' + encodeURIComponent( name ) + '/colors/palette';\n\n\treturn (\n\t\t<VStack spacing={ 3 }>\n\t\t\t<Subtitle level={ 3 }>{ __( 'Palette' ) }</Subtitle>\n\t\t\t<ItemGroup isBordered isSeparated>\n\t\t\t\t<NavigationButtonAsItem path={ screenPath }>\n\t\t\t\t\t<HStack direction=\"row\">\n\t\t\t\t\t\t{ colors.length > 0 ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<ZStack isLayered={ false } offset={ -8 }>\n\t\t\t\t\t\t\t\t\t{ colors\n\t\t\t\t\t\t\t\t\t\t.slice( 0, 5 )\n\t\t\t\t\t\t\t\t\t\t.map( ( { color }, index ) => (\n\t\t\t\t\t\t\t\t\t\t\t<ColorIndicatorWrapper\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ `${ color }-${ index }` }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<ColorIndicator\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolorValue={ color }\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</ColorIndicatorWrapper>\n\t\t\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t</ZStack>\n\t\t\t\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t\t\t\t{ __( 'Edit palette' ) }\n\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<FlexItem>{ __( 'Add colors' ) }</FlexItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<Icon icon={ isRTL() ? chevronLeft : chevronRight } />\n\t\t\t\t\t</HStack>\n\t\t\t\t</NavigationButtonAsItem>\n\t\t\t</ItemGroup>\n\t\t</VStack>\n\t);\n}\n\nexport default Palette;\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { Flex } from '@wordpress/components';\n\ninterface ColorIndicatorWrapperProps {\n\tclassName?: string;\n\t[ key: string ]: any;\n}\n\nfunction ColorIndicatorWrapper( {\n\tclassName,\n\tchildren,\n\t...props\n}: ColorIndicatorWrapperProps ) {\n\treturn (\n\t\t<Flex\n\t\t\tclassName={ clsx(\n\t\t\t\t'global-styles-ui__color-indicator-wrapper',\n\t\t\t\tclassName\n\t\t\t) }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t{ children }\n\t\t</Flex>\n\t);\n}\n\nexport default ColorIndicatorWrapper;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n// @ts-ignore - WordPress private APIs\nimport { privateApis as componentsPrivateApis } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { ScreenHeader } from './screen-header';\nimport ColorPalettePanel from './color-palette-panel';\nimport GradientPalettePanel from './gradients-palette-panel';\n\n/**\n * External dependencies\n */\nimport { unlock } from './lock-unlock';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nfunction ScreenColorPalette( { name }: { name?: string } ) {\n\treturn (\n\t\t<>\n\t\t\t<ScreenHeader\n\t\t\t\ttitle={ __( 'Edit palette' ) }\n\t\t\t\tdescription={ __(\n\t\t\t\t\t'The combination of colors used across the site and in color pickers.'\n\t\t\t\t) }\n\t\t\t/>\n\t\t\t<Tabs>\n\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t<Tabs.Tab tabId=\"color\">{ __( 'Color' ) }</Tabs.Tab>\n\t\t\t\t\t<Tabs.Tab tabId=\"gradient\">{ __( 'Gradient' ) }</Tabs.Tab>\n\t\t\t\t</Tabs.TabList>\n\t\t\t\t<Tabs.TabPanel tabId=\"color\" focusable={ false }>\n\t\t\t\t\t<ColorPalettePanel name={ name } />\n\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t<Tabs.TabPanel tabId=\"gradient\" focusable={ false }>\n\t\t\t\t\t<GradientPalettePanel name={ name } />\n\t\t\t\t</Tabs.TabPanel>\n\t\t\t</Tabs>\n\t\t</>\n\t);\n}\n\nexport default ScreenColorPalette;\n", "/**\n * WordPress dependencies\n */\nimport type { Color } from '@wordpress/global-styles-engine';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalPaletteEdit as PaletteEdit,\n\t__experimentalVStack as VStack,\n\tButton,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { shuffle } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { useSetting, useColorRandomizer } from './hooks';\nimport ColorVariations from './variations/variations-color';\n\nconst mobilePopoverProps = { placement: 'bottom-start' as const, offset: 8 };\n\ninterface ColorPalettePanelProps {\n\tname?: string;\n}\n\nexport default function ColorPalettePanel( { name }: ColorPalettePanelProps ) {\n\tconst [ themeColors, setThemeColors ] = useSetting< Color[] >(\n\t\t'color.palette.theme',\n\t\tname\n\t);\n\tconst [ baseThemeColors ] = useSetting< Color[] >(\n\t\t'color.palette.theme',\n\t\tname,\n\t\t'base'\n\t);\n\tconst [ defaultColors, setDefaultColors ] = useSetting< Color[] >(\n\t\t'color.palette.default',\n\t\tname\n\t);\n\tconst [ baseDefaultColors ] = useSetting< Color[] >(\n\t\t'color.palette.default',\n\t\tname,\n\t\t'base'\n\t);\n\tconst [ customColors, setCustomColors ] = useSetting< Color[] >(\n\t\t'color.palette.custom',\n\t\tname\n\t);\n\n\tconst [ defaultPaletteEnabled ] = useSetting< boolean >(\n\t\t'color.defaultPalette',\n\t\tname\n\t);\n\n\tconst isMobileViewport = useViewportMatch( 'small', '<' );\n\tconst popoverProps = isMobileViewport ? mobilePopoverProps : undefined;\n\n\tconst [ randomizeThemeColors ] = useColorRandomizer( name );\n\n\treturn (\n\t\t<VStack className=\"global-styles-ui-color-palette-panel\" spacing={ 8 }>\n\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t{ !! themeColors && !! themeColors.length && (\n\t\t\t\t\t<PaletteEdit\n\t\t\t\t\t\tcanReset={ themeColors !== baseThemeColors }\n\t\t\t\t\t\tcanOnlyChangeValues\n\t\t\t\t\t\tcolors={ themeColors }\n\t\t\t\t\t\tonChange={ setThemeColors }\n\t\t\t\t\t\tpaletteLabel={ __( 'Theme' ) }\n\t\t\t\t\t\tpaletteLabelHeadingLevel={ 3 }\n\t\t\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ ( window as any ).__experimentalEnableColorRandomizer &&\n\t\t\t\t\tthemeColors?.length > 0 &&\n\t\t\t\t\trandomizeThemeColors && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\ticon={ shuffle }\n\t\t\t\t\t\t\tonClick={ randomizeThemeColors }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Randomize colors' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t</VStack>\n\t\t\t{ !! defaultColors &&\n\t\t\t\t!! defaultColors.length &&\n\t\t\t\t!! defaultPaletteEnabled && (\n\t\t\t\t\t<PaletteEdit\n\t\t\t\t\t\tcanReset={ defaultColors !== baseDefaultColors }\n\t\t\t\t\t\tcanOnlyChangeValues\n\t\t\t\t\t\tcolors={ defaultColors }\n\t\t\t\t\t\tonChange={ setDefaultColors }\n\t\t\t\t\t\tpaletteLabel={ __( 'Default' ) }\n\t\t\t\t\t\tpaletteLabelHeadingLevel={ 3 }\n\t\t\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t<PaletteEdit\n\t\t\t\tcolors={ customColors }\n\t\t\t\tonChange={ setCustomColors }\n\t\t\t\tpaletteLabel={ __( 'Custom' ) }\n\t\t\t\tpaletteLabelHeadingLevel={ 3 }\n\t\t\t\tslugPrefix=\"custom-\"\n\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t/>\n\t\t\t<ColorVariations title={ __( 'Palettes' ) } />\n\t\t</VStack>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalGrid as Grid,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport StylesPreviewColors from '../preview-colors';\nimport { useCurrentMergeThemeStyleVariationsWithUserConfig } from '../hooks';\nimport { Subtitle } from '../subtitle';\nimport Variation from './variation';\n\ninterface ColorVariationsProps {\n\ttitle?: string;\n\tgap?: number;\n}\n\nconst propertiesToFilter = [ 'color' ];\n\nexport default function ColorVariations( {\n\ttitle,\n\tgap = 2,\n}: ColorVariationsProps ) {\n\tconst colorVariations =\n\t\tuseCurrentMergeThemeStyleVariationsWithUserConfig( propertiesToFilter );\n\n\t// Return null if there is only one variation (the default).\n\tif ( colorVariations?.length <= 1 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<VStack spacing={ 3 }>\n\t\t\t{ title && <Subtitle level={ 3 }>{ title }</Subtitle> }\n\t\t\t<Grid gap={ gap }>\n\t\t\t\t{ colorVariations.map( ( variation: any, index: number ) => (\n\t\t\t\t\t<Variation\n\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\tvariation={ variation }\n\t\t\t\t\t\tisPill\n\t\t\t\t\t\tproperties={ propertiesToFilter }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t>\n\t\t\t\t\t\t{ () => <StylesPreviewColors /> }\n\t\t\t\t\t</Variation>\n\t\t\t\t) ) }\n\t\t\t</Grid>\n\t\t</VStack>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__unstableMotion as motion,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport PresetColors from './preset-colors';\nimport PreviewWrapper from './preview-wrapper';\n\nconst firstFrameVariants = {\n\tstart: {\n\t\tscale: 1,\n\t\topacity: 1,\n\t},\n\thover: {\n\t\tscale: 0,\n\t\topacity: 0,\n\t},\n};\n\ninterface StylesPreviewColorsProps {\n\tlabel?: string;\n\tisFocused?: boolean;\n\twithHoverView?: boolean;\n}\n\nconst StylesPreviewColors = ( {\n\tlabel,\n\tisFocused,\n\twithHoverView,\n}: StylesPreviewColorsProps ) => {\n\treturn (\n\t\t<PreviewWrapper\n\t\t\tlabel={ label }\n\t\t\tisFocused={ isFocused }\n\t\t\twithHoverView={ withHoverView }\n\t\t>\n\t\t\t{ ( { key } ) => (\n\t\t\t\t<motion.div\n\t\t\t\t\tkey={ key }\n\t\t\t\t\tvariants={ firstFrameVariants }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tspacing={ 0 }\n\t\t\t\t\t\tjustify=\"center\"\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<PresetColors />\n\t\t\t\t\t</HStack>\n\t\t\t\t</motion.div>\n\t\t\t) }\n\t\t</PreviewWrapper>\n\t);\n};\n\nexport default StylesPreviewColors;\n", "/**\n * Internal dependencies\n */\nimport { useStylesPreviewColors } from './preview-hooks';\n\nexport default function PresetColors() {\n\tconst { paletteColors } = useStylesPreviewColors();\n\treturn paletteColors.slice( 0, 4 ).map( ( { slug, color }, index ) => (\n\t\t<div\n\t\t\tkey={ `${ slug }-${ index }` }\n\t\t\tstyle={ {\n\t\t\t\tflexGrow: 1,\n\t\t\t\theight: '100%',\n\t\t\t\tbackground: color,\n\t\t\t} }\n\t\t/>\n\t) );\n}\n", "/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalPaletteEdit as PaletteEdit,\n\t__experimentalSpacer as Spacer,\n\tDuotonePicker,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport type { Gradient } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { Subtitle } from './subtitle';\nimport { useSetting } from './hooks';\n\nconst mobilePopoverProps = { placement: 'bottom-start' as const, offset: 8 };\n\nconst noop = () => {};\n\ninterface GradientPalettePanelProps {\n\tname?: string;\n}\n\nexport default function GradientPalettePanel( {\n\tname,\n}: GradientPalettePanelProps ) {\n\tconst [ themeGradients, setThemeGradients ] = useSetting< Gradient[] >(\n\t\t'color.gradients.theme',\n\t\tname\n\t);\n\tconst [ baseThemeGradients ] = useSetting< Gradient[] >(\n\t\t'color.gradients.theme',\n\t\tname,\n\t\t'base'\n\t);\n\tconst [ defaultGradients, setDefaultGradients ] = useSetting< Gradient[] >(\n\t\t'color.gradients.default',\n\t\tname\n\t);\n\tconst [ baseDefaultGradients ] = useSetting< Gradient[] >(\n\t\t'color.gradients.default',\n\t\tname,\n\t\t'base'\n\t);\n\tconst [ customGradients, setCustomGradients ] = useSetting< Gradient[] >(\n\t\t'color.gradients.custom',\n\t\tname\n\t);\n\n\tconst [ defaultPaletteEnabled ] = useSetting< boolean >(\n\t\t'color.defaultGradients',\n\t\tname\n\t);\n\n\tconst [ customDuotone ] = useSetting( 'color.duotone.custom' ) || [];\n\tconst [ defaultDuotone ] = useSetting( 'color.duotone.default' ) || [];\n\tconst [ themeDuotone ] = useSetting( 'color.duotone.theme' ) || [];\n\tconst [ defaultDuotoneEnabled ] = useSetting( 'color.defaultDuotone' );\n\n\tconst duotonePalette = [\n\t\t...( customDuotone || [] ),\n\t\t...( themeDuotone || [] ),\n\t\t...( defaultDuotone && defaultDuotoneEnabled ? defaultDuotone : [] ),\n\t];\n\n\tconst isMobileViewport = useViewportMatch( 'small', '<' );\n\tconst popoverProps = isMobileViewport ? mobilePopoverProps : undefined;\n\n\treturn (\n\t\t<VStack\n\t\t\tclassName=\"global-styles-ui-gradient-palette-panel\"\n\t\t\tspacing={ 8 }\n\t\t>\n\t\t\t{ !! themeGradients && !! themeGradients.length && (\n\t\t\t\t<PaletteEdit\n\t\t\t\t\tcanReset={ themeGradients !== baseThemeGradients }\n\t\t\t\t\tcanOnlyChangeValues\n\t\t\t\t\tgradients={ themeGradients }\n\t\t\t\t\tonChange={ setThemeGradients }\n\t\t\t\t\tpaletteLabel={ __( 'Theme' ) }\n\t\t\t\t\tpaletteLabelHeadingLevel={ 3 }\n\t\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ !! defaultGradients &&\n\t\t\t\t!! defaultGradients.length &&\n\t\t\t\t!! defaultPaletteEnabled && (\n\t\t\t\t\t<PaletteEdit\n\t\t\t\t\t\tcanReset={ defaultGradients !== baseDefaultGradients }\n\t\t\t\t\t\tcanOnlyChangeValues\n\t\t\t\t\t\tgradients={ defaultGradients }\n\t\t\t\t\t\tonChange={ setDefaultGradients }\n\t\t\t\t\t\tpaletteLabel={ __( 'Default' ) }\n\t\t\t\t\t\tpaletteLabelHeadingLevel={ 3 }\n\t\t\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t<PaletteEdit\n\t\t\t\tgradients={ customGradients }\n\t\t\t\tonChange={ setCustomGradients }\n\t\t\t\tpaletteLabel={ __( 'Custom' ) }\n\t\t\t\tpaletteLabelHeadingLevel={ 3 }\n\t\t\t\tslugPrefix=\"custom-\"\n\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t/>\n\t\t\t{ !! duotonePalette && !! duotonePalette.length && (\n\t\t\t\t<div>\n\t\t\t\t\t<Subtitle level={ 3 }>{ __( 'Duotone' ) }</Subtitle>\n\t\t\t\t\t<Spacer margin={ 3 } />\n\t\t\t\t\t<DuotonePicker\n\t\t\t\t\t\tduotonePalette={ duotonePalette }\n\t\t\t\t\t\tdisableCustomDuotone\n\t\t\t\t\t\tdisableCustomColors\n\t\t\t\t\t\tclearable={ false }\n\t\t\t\t\t\tonChange={ noop }\n\t\t\t\t\t\tcolorPalette={ [] }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n// @ts-expect-error: Not typed yet.\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { __experimentalText as Text } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BackgroundPanel from './background-panel';\nimport { ScreenHeader } from './screen-header';\nimport { useSetting } from './hooks';\nimport { unlock } from './lock-unlock';\n\nconst { useHasBackgroundPanel } = unlock( blockEditorPrivateApis );\n\nfunction ScreenBackground() {\n\tconst [ settings ] = useSetting( '' );\n\tconst hasBackgroundPanel = useHasBackgroundPanel( settings );\n\treturn (\n\t\t<>\n\t\t\t<ScreenHeader\n\t\t\t\ttitle={ __( 'Background' ) }\n\t\t\t\tdescription={\n\t\t\t\t\t<Text>\n\t\t\t\t\t\t{ __( \"Set styles for the site's background.\" ) }\n\t\t\t\t\t</Text>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ hasBackgroundPanel && <BackgroundPanel /> }\n\t\t</>\n\t);\n}\n\nexport default ScreenBackground;\n", "/**\n * WordPress dependencies\n */\n// @ts-expect-error: Not typed yet.\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { useStyle, useSetting } from './hooks';\nimport { unlock } from './lock-unlock';\n\n// Initial control values where no block style is set.\nconst BACKGROUND_DEFAULT_VALUES = {\n\tbackgroundSize: 'auto',\n};\n\nconst { BackgroundPanel: StylesBackgroundPanel } = unlock(\n\tblockEditorPrivateApis\n);\n\n/**\n * Checks if there is a current value in the background image block support\n * attributes.\n *\n * @param style Style attribute.\n * @return Whether the block has a background image value set.\n */\nexport function hasBackgroundImageValue( style: any ): boolean {\n\treturn (\n\t\t!! style?.background?.backgroundImage?.id ||\n\t\t!! style?.background?.backgroundImage?.url ||\n\t\ttypeof style?.background?.backgroundImage === 'string'\n\t);\n}\n\nexport default function BackgroundPanel() {\n\tconst [ style ] = useStyle( '', undefined, 'user', false );\n\tconst [ inheritedStyle, setStyle ] = useStyle(\n\t\t'',\n\t\tundefined,\n\t\t'merged',\n\t\tfalse\n\t);\n\tconst [ settings ] = useSetting( '' );\n\n\treturn (\n\t\t<StylesBackgroundPanel\n\t\t\tinheritedValue={ inheritedStyle }\n\t\t\tvalue={ style }\n\t\t\tonChange={ setStyle }\n\t\t\tsettings={ settings }\n\t\t\tdefaultValues={ BACKGROUND_DEFAULT_VALUES }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalItemGroup as ItemGroup,\n\tButton,\n\tFlexItem,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, sprintf, isRTL } from '@wordpress/i18n';\nimport {\n\tplus,\n\tIcon,\n\tchevronLeft,\n\tchevronRight,\n\tmoreVertical,\n} from '@wordpress/icons';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { Subtitle } from './subtitle';\nimport { NavigationButtonAsItem } from './navigation-button';\nimport { ScreenHeader } from './screen-header';\nimport { ScreenBody } from './screen-body';\nimport { getNewIndexFromPresets } from './utils';\nimport ConfirmResetShadowDialog from './confirm-reset-shadow-dialog';\nimport { useSetting } from './hooks';\nimport { unlock } from './lock-unlock';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\nexport const defaultShadow = '6px 6px 9px rgba(0, 0, 0, 0.2)';\n\nexport default function ShadowsPanel() {\n\tconst [ defaultShadows ] = useSetting( 'shadow.presets.default' );\n\tconst [ defaultShadowsEnabled ] = useSetting( 'shadow.defaultPresets' );\n\tconst [ themeShadows ] = useSetting( 'shadow.presets.theme' );\n\tconst [ customShadows, setCustomShadows ] = useSetting(\n\t\t'shadow.presets.custom'\n\t);\n\n\tconst onCreateShadow = ( shadow: any ) => {\n\t\tsetCustomShadows( [ ...( customShadows || [] ), shadow ] );\n\t};\n\n\tconst handleResetShadows = () => {\n\t\tsetCustomShadows( [] );\n\t};\n\n\tconst [ isResetDialogOpen, setIsResetDialogOpen ] = useState( false );\n\n\tconst toggleResetDialog = () => setIsResetDialogOpen( ! isResetDialogOpen );\n\n\treturn (\n\t\t<>\n\t\t\t{ isResetDialogOpen && (\n\t\t\t\t<ConfirmResetShadowDialog\n\t\t\t\t\ttext={ __(\n\t\t\t\t\t\t'Are you sure you want to remove all custom shadows?'\n\t\t\t\t\t) }\n\t\t\t\t\tconfirmButtonText={ __( 'Remove' ) }\n\t\t\t\t\tisOpen={ isResetDialogOpen }\n\t\t\t\t\ttoggleOpen={ toggleResetDialog }\n\t\t\t\t\tonConfirm={ handleResetShadows }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<ScreenHeader\n\t\t\t\ttitle={ __( 'Shadows' ) }\n\t\t\t\tdescription={ __(\n\t\t\t\t\t'Manage and create shadow styles for use across the site.'\n\t\t\t\t) }\n\t\t\t/>\n\t\t\t<ScreenBody>\n\t\t\t\t<VStack\n\t\t\t\t\tclassName=\"global-styles-ui__shadows-panel\"\n\t\t\t\t\tspacing={ 7 }\n\t\t\t\t>\n\t\t\t\t\t{ defaultShadowsEnabled && (\n\t\t\t\t\t\t<ShadowList\n\t\t\t\t\t\t\tlabel={ __( 'Default' ) }\n\t\t\t\t\t\t\tshadows={ defaultShadows || [] }\n\t\t\t\t\t\t\tcategory=\"default\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ themeShadows && themeShadows.length > 0 && (\n\t\t\t\t\t\t<ShadowList\n\t\t\t\t\t\t\tlabel={ __( 'Theme' ) }\n\t\t\t\t\t\t\tshadows={ themeShadows || [] }\n\t\t\t\t\t\t\tcategory=\"theme\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<ShadowList\n\t\t\t\t\t\tlabel={ __( 'Custom' ) }\n\t\t\t\t\t\tshadows={ customShadows || [] }\n\t\t\t\t\t\tcategory=\"custom\"\n\t\t\t\t\t\tcanCreate\n\t\t\t\t\t\tonCreate={ onCreateShadow }\n\t\t\t\t\t\tonReset={ toggleResetDialog }\n\t\t\t\t\t/>\n\t\t\t\t</VStack>\n\t\t\t</ScreenBody>\n\t\t</>\n\t);\n}\n\ninterface ShadowListProps {\n\tlabel: string;\n\tshadows: any[];\n\tcategory: string;\n\tcanCreate?: boolean;\n\tonCreate?: ( shadow: any ) => void;\n\tonReset?: () => void;\n}\n\nfunction ShadowList( {\n\tlabel,\n\tshadows,\n\tcategory,\n\tcanCreate,\n\tonCreate,\n\tonReset,\n}: ShadowListProps ) {\n\tconst handleAddShadow = () => {\n\t\tconst newIndex = getNewIndexFromPresets( shadows, 'shadow-' );\n\t\tonCreate?.( {\n\t\t\tname: sprintf(\n\t\t\t\t/* translators: %d: is an index for a preset */\n\t\t\t\t__( 'Shadow %d' ),\n\t\t\t\tnewIndex\n\t\t\t),\n\t\t\tshadow: defaultShadow,\n\t\t\tslug: `shadow-${ newIndex }`,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<VStack spacing={ 2 }>\n\t\t\t<HStack justify=\"space-between\">\n\t\t\t\t<Subtitle level={ 3 }>{ label }</Subtitle>\n\t\t\t\t<FlexItem className=\"global-styles-ui__shadows-panel__options-container\">\n\t\t\t\t\t{ canCreate && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\ticon={ plus }\n\t\t\t\t\t\t\tlabel={ __( 'Add shadow' ) }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\thandleAddShadow();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ !! shadows?.length && category === 'custom' && (\n\t\t\t\t\t\t<Menu>\n\t\t\t\t\t\t\t<Menu.TriggerButton\n\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Shadow options' ) }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Menu.Popover>\n\t\t\t\t\t\t\t\t<Menu.Item onClick={ onReset }>\n\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Remove all custom shadows' ) }\n\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t</Menu.Popover>\n\t\t\t\t\t\t</Menu>\n\t\t\t\t\t) }\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t\t{ shadows.length > 0 && (\n\t\t\t\t<ItemGroup isBordered isSeparated>\n\t\t\t\t\t{ shadows.map( ( shadow ) => (\n\t\t\t\t\t\t<ShadowItem\n\t\t\t\t\t\t\tkey={ shadow.slug }\n\t\t\t\t\t\t\tshadow={ shadow }\n\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</ItemGroup>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\ninterface ShadowItemProps {\n\tshadow: any;\n\tcategory: string;\n}\n\nfunction ShadowItem( { shadow, category }: ShadowItemProps ) {\n\treturn (\n\t\t<NavigationButtonAsItem\n\t\t\tpath={ `/shadows/edit/${ category }/${ shadow.slug }` }\n\t\t>\n\t\t\t<HStack>\n\t\t\t\t<FlexItem>{ shadow.name }</FlexItem>\n\t\t\t\t<Icon icon={ isRTL() ? chevronLeft : chevronRight } />\n\t\t\t</HStack>\n\t\t</NavigationButtonAsItem>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __experimentalConfirmDialog as ConfirmDialog } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\ninterface ConfirmResetShadowDialogProps {\n\ttext: string;\n\tconfirmButtonText: string;\n\tisOpen: boolean;\n\ttoggleOpen: () => void;\n\tonConfirm: () => void;\n}\n\nfunction ConfirmResetShadowDialog( {\n\ttext,\n\tconfirmButtonText,\n\tisOpen,\n\ttoggleOpen,\n\tonConfirm,\n}: ConfirmResetShadowDialogProps ) {\n\tconst handleConfirm = async () => {\n\t\ttoggleOpen();\n\t\tonConfirm();\n\t};\n\n\tconst handleCancel = () => {\n\t\ttoggleOpen();\n\t};\n\n\treturn (\n\t\t<ConfirmDialog\n\t\t\tisOpen={ isOpen }\n\t\t\tcancelButtonText={ __( 'Cancel' ) }\n\t\t\tconfirmButtonText={ confirmButtonText }\n\t\t\tonCancel={ handleCancel }\n\t\t\tonConfirm={ handleConfirm }\n\t\t\tsize=\"medium\"\n\t\t>\n\t\t\t{ text }\n\t\t</ConfirmDialog>\n\t);\n}\n\nexport default ConfirmResetShadowDialog;\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalSpacer as Spacer,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalInputControl as InputControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalGrid as Grid,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n\tuseNavigator,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalConfirmDialog as ConfirmDialog,\n\tDropdown,\n\tButton,\n\tFlex,\n\tFlexItem,\n\tColorPalette,\n\tModal,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tplus,\n\tshadow as shadowIcon,\n\treset,\n\tmoreVertical,\n} from '@wordpress/icons';\nimport { useState, useMemo, useEffect, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { Subtitle } from './subtitle';\nimport { ScreenHeader } from './screen-header';\nimport { ScreenBody } from './screen-body';\nimport { defaultShadow } from './shadows-panel';\nimport {\n\tgetShadowParts,\n\tshadowStringToObject,\n\tshadowObjectToString,\n} from './shadow-utils';\nimport { useSetting } from './hooks';\nimport { unlock } from './lock-unlock';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\nconst customShadowMenuItems = [\n\t{\n\t\tlabel: __( 'Rename' ),\n\t\taction: 'rename',\n\t},\n\t{\n\t\tlabel: __( 'Delete' ),\n\t\taction: 'delete',\n\t},\n];\n\nconst presetShadowMenuItems = [\n\t{\n\t\tlabel: __( 'Reset' ),\n\t\taction: 'reset',\n\t},\n];\n\nexport default function ShadowsEditPanel() {\n\tconst { goBack, params } = useNavigator();\n\tconst { category, slug } = params;\n\n\tconst [ shadows, setShadows ] = useSetting(\n\t\t`shadow.presets.${ category }`\n\t);\n\n\tuseEffect( () => {\n\t\tconst hasCurrentShadow = shadows?.some(\n\t\t\t( shadow: any ) => shadow.slug === slug\n\t\t);\n\t\t// If the shadow being edited doesn't exist anymore in the global styles setting, navigate back\n\t\t// to prevent the user from editing a non-existent shadow entry.\n\t\t// This can happen, for example:\n\t\t// - when the user deletes the shadow\n\t\t// - when the user resets the styles while editing a custom shadow\n\t\t//\n\t\t// The check on the slug is necessary to prevent a double back navigation when the user triggers\n\t\t// a backward navigation by interacting with the screen's UI.\n\t\tif ( !! slug && ! hasCurrentShadow ) {\n\t\t\tgoBack();\n\t\t}\n\t}, [ shadows, slug, goBack ] );\n\n\tconst [ baseShadows ] = useSetting(\n\t\t`shadow.presets.${ category }`,\n\t\tundefined,\n\t\t'base'\n\t);\n\tconst [ selectedShadow, setSelectedShadow ] = useState( () =>\n\t\t( shadows || [] ).find( ( shadow: any ) => shadow.slug === slug )\n\t);\n\tconst baseSelectedShadow = useMemo(\n\t\t() => ( baseShadows || [] ).find( ( b: any ) => b.slug === slug ),\n\t\t[ baseShadows, slug ]\n\t);\n\tconst [ isConfirmDialogVisible, setIsConfirmDialogVisible ] =\n\t\tuseState( false );\n\tconst [ isRenameModalVisible, setIsRenameModalVisible ] = useState( false );\n\tconst [ shadowName, setShadowName ] = useState< string | undefined >(\n\t\tselectedShadow?.name\n\t);\n\n\tif ( ! category || ! slug ) {\n\t\treturn null;\n\t}\n\n\tconst onShadowChange = ( shadow: string ) => {\n\t\tsetSelectedShadow( { ...selectedShadow, shadow } );\n\t\tconst updatedShadows = shadows.map( ( s: any ) =>\n\t\t\ts.slug === slug ? { ...selectedShadow, shadow } : s\n\t\t);\n\t\tsetShadows( updatedShadows );\n\t};\n\n\tconst onMenuClick = ( action: string ) => {\n\t\tif ( action === 'reset' ) {\n\t\t\tconst updatedShadows = shadows.map( ( s: any ) =>\n\t\t\t\ts.slug === slug ? baseSelectedShadow : s\n\t\t\t);\n\t\t\tsetSelectedShadow( baseSelectedShadow );\n\t\t\tsetShadows( updatedShadows );\n\t\t} else if ( action === 'delete' ) {\n\t\t\tsetIsConfirmDialogVisible( true );\n\t\t} else if ( action === 'rename' ) {\n\t\t\tsetIsRenameModalVisible( true );\n\t\t}\n\t};\n\n\tconst handleShadowDelete = () => {\n\t\tsetShadows( shadows.filter( ( s: any ) => s.slug !== slug ) );\n\t};\n\n\tconst handleShadowRename = ( newName: string | undefined ) => {\n\t\tif ( ! newName ) {\n\t\t\treturn;\n\t\t}\n\t\tconst updatedShadows = shadows.map( ( s: any ) =>\n\t\t\ts.slug === slug ? { ...selectedShadow, name: newName } : s\n\t\t);\n\t\tsetSelectedShadow( { ...selectedShadow, name: newName } );\n\t\tsetShadows( updatedShadows );\n\t};\n\n\treturn ! selectedShadow ? (\n\t\t<ScreenHeader title=\"\" />\n\t) : (\n\t\t<>\n\t\t\t<HStack justify=\"space-between\">\n\t\t\t\t<ScreenHeader title={ selectedShadow.name } />\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Spacer marginTop={ 2 } marginBottom={ 0 } paddingX={ 4 }>\n\t\t\t\t\t\t<Menu>\n\t\t\t\t\t\t\t<Menu.TriggerButton\n\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Menu' ) }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Menu.Popover>\n\t\t\t\t\t\t\t\t{ ( category === 'custom'\n\t\t\t\t\t\t\t\t\t? customShadowMenuItems\n\t\t\t\t\t\t\t\t\t: presetShadowMenuItems\n\t\t\t\t\t\t\t\t).map( ( item ) => (\n\t\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\t\tkey={ item.action }\n\t\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\t\tonMenuClick( item.action )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\t\titem.action === 'reset' &&\n\t\t\t\t\t\t\t\t\t\t\tselectedShadow.shadow ===\n\t\t\t\t\t\t\t\t\t\t\t\tbaseSelectedShadow?.shadow\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t{ item.label }\n\t\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</Menu.Popover>\n\t\t\t\t\t\t</Menu>\n\t\t\t\t\t</Spacer>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t\t<ScreenBody>\n\t\t\t\t<ShadowsPreview shadow={ selectedShadow.shadow } />\n\t\t\t\t<ShadowEditor\n\t\t\t\t\tshadow={ selectedShadow.shadow }\n\t\t\t\t\tonChange={ onShadowChange }\n\t\t\t\t/>\n\t\t\t</ScreenBody>\n\t\t\t{ isConfirmDialogVisible && (\n\t\t\t\t<ConfirmDialog\n\t\t\t\t\tisOpen\n\t\t\t\t\tonConfirm={ () => {\n\t\t\t\t\t\thandleShadowDelete();\n\t\t\t\t\t\tsetIsConfirmDialogVisible( false );\n\t\t\t\t\t} }\n\t\t\t\t\tonCancel={ () => {\n\t\t\t\t\t\tsetIsConfirmDialogVisible( false );\n\t\t\t\t\t} }\n\t\t\t\t\tconfirmButtonText={ __( 'Delete' ) }\n\t\t\t\t\tsize=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %s: Name of the shadow preset. */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Are you sure you want to delete \"%s\" shadow preset?'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tselectedShadow.name\n\t\t\t\t\t) }\n\t\t\t\t</ConfirmDialog>\n\t\t\t) }\n\t\t\t{ isRenameModalVisible && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ __( 'Rename' ) }\n\t\t\t\t\tonRequestClose={ () => setIsRenameModalVisible( false ) }\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t>\n\t\t\t\t\t<form\n\t\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\thandleShadowRename( shadowName );\n\t\t\t\t\t\t\tsetIsRenameModalVisible( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\tplaceholder={ __( 'Shadow name' ) }\n\t\t\t\t\t\t\tvalue={ shadowName ?? '' }\n\t\t\t\t\t\t\tonChange={ setShadowName }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Spacer marginBottom={ 6 } />\n\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\tclassName=\"block-editor-shadow-edit-modal__actions\"\n\t\t\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetIsRenameModalVisible( false )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t</Flex>\n\t\t\t\t\t</form>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\ninterface ShadowsPreviewProps {\n\tshadow: string;\n}\n\nfunction ShadowsPreview( { shadow }: ShadowsPreviewProps ) {\n\tconst shadowStyle = {\n\t\tboxShadow: shadow,\n\t};\n\n\treturn (\n\t\t<Spacer marginBottom={ 4 } marginTop={ -2 }>\n\t\t\t<HStack\n\t\t\t\talignment=\"center\"\n\t\t\t\tjustify=\"center\"\n\t\t\t\tclassName=\"global-styles-ui__shadow-preview-panel\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"global-styles-ui__shadow-preview-block\"\n\t\t\t\t\tstyle={ shadowStyle }\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t</Spacer>\n\t);\n}\n\ninterface ShadowEditorProps {\n\tshadow: string;\n\tonChange: ( shadow: string ) => void;\n}\n\nfunction ShadowEditor( { shadow, onChange }: ShadowEditorProps ) {\n\tconst addShadowButtonRef = useRef< HTMLButtonElement >( null );\n\tconst shadowParts = useMemo( () => getShadowParts( shadow ), [ shadow ] );\n\n\tconst onChangeShadowPart = ( index: number, part: string ) => {\n\t\tconst newShadowParts = [ ...shadowParts ];\n\t\tnewShadowParts[ index ] = part;\n\t\tonChange( newShadowParts.join( ', ' ) );\n\t};\n\n\tconst onAddShadowPart = () => {\n\t\tonChange( [ ...shadowParts, defaultShadow ].join( ', ' ) );\n\t};\n\n\tconst onRemoveShadowPart = ( index: number ) => {\n\t\tonChange( shadowParts.filter( ( p, i ) => i !== index ).join( ', ' ) );\n\t\taddShadowButtonRef.current?.focus();\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<VStack spacing={ 2 }>\n\t\t\t\t<HStack justify=\"space-between\">\n\t\t\t\t\t<Subtitle level={ 3 }>{ __( 'Shadows' ) }</Subtitle>\n\t\t\t\t\t<FlexItem className=\"global-styles-ui__shadows-panel__options-container\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\ticon={ plus }\n\t\t\t\t\t\t\tlabel={ __( 'Add shadow' ) }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tonAddShadowPart();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tref={ addShadowButtonRef }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t\t<Spacer />\n\t\t\t<ItemGroup isBordered isSeparated>\n\t\t\t\t{ shadowParts.map( ( part, index ) => (\n\t\t\t\t\t<ShadowItem\n\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\tshadow={ part }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tonChangeShadowPart( index, value )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcanRemove={ shadowParts.length > 1 }\n\t\t\t\t\t\tonRemove={ () => onRemoveShadowPart( index ) }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</ItemGroup>\n\t\t</>\n\t);\n}\n\ninterface ShadowItemProps {\n\tshadow: string;\n\tonChange: ( shadow: string ) => void;\n\tcanRemove: boolean;\n\tonRemove: () => void;\n}\n\nfunction ShadowItem( {\n\tshadow,\n\tonChange,\n\tcanRemove,\n\tonRemove,\n}: ShadowItemProps ) {\n\tconst popoverProps = {\n\t\tplacement: 'left-start' as const,\n\t\toffset: 36,\n\t\tshift: true,\n\t};\n\tconst shadowObj = useMemo(\n\t\t() => shadowStringToObject( shadow ),\n\t\t[ shadow ]\n\t);\n\tconst onShadowChange = ( newShadow: any ) => {\n\t\tonChange( shadowObjectToString( newShadow ) );\n\t};\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ popoverProps }\n\t\t\tclassName=\"global-styles-ui__shadow-editor__dropdown\"\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\tconst toggleProps = {\n\t\t\t\t\tonClick: onToggle,\n\t\t\t\t\tclassName: clsx(\n\t\t\t\t\t\t'global-styles-ui__shadow-editor__dropdown-toggle',\n\t\t\t\t\t\t{ 'is-open': isOpen }\n\t\t\t\t\t),\n\t\t\t\t\t'aria-expanded': isOpen,\n\t\t\t\t};\n\t\t\t\tconst removeButtonProps = {\n\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\tif ( isOpen ) {\n\t\t\t\t\t\t\tonToggle();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonRemove();\n\t\t\t\t\t},\n\t\t\t\t\tclassName: clsx(\n\t\t\t\t\t\t'global-styles-ui__shadow-editor__remove-button',\n\t\t\t\t\t\t{ 'is-open': isOpen }\n\t\t\t\t\t),\n\t\t\t\t\tlabel: __( 'Remove shadow' ),\n\t\t\t\t};\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\ticon={ shadowIcon }\n\t\t\t\t\t\t\t{ ...toggleProps }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ shadowObj.inset\n\t\t\t\t\t\t\t\t? __( 'Inner shadow' )\n\t\t\t\t\t\t\t\t: __( 'Drop shadow' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t{ canRemove && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\ticon={ reset }\n\t\t\t\t\t\t\t\t{ ...removeButtonProps }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<DropdownContentWrapper\n\t\t\t\t\tpaddingSize=\"medium\"\n\t\t\t\t\tclassName=\"global-styles-ui__shadow-editor__dropdown-content\"\n\t\t\t\t>\n\t\t\t\t\t<ShadowPopover\n\t\t\t\t\t\tshadowObj={ shadowObj }\n\t\t\t\t\t\tonChange={ onShadowChange }\n\t\t\t\t\t/>\n\t\t\t\t</DropdownContentWrapper>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\ninterface ShadowPopoverProps {\n\tshadowObj: any;\n\tonChange: ( shadow: any ) => void;\n}\n\nfunction ShadowPopover( { shadowObj, onChange }: ShadowPopoverProps ) {\n\tconst __experimentalIsRenderedInSidebar = true;\n\tconst enableAlpha = true;\n\n\tconst onShadowChange = ( key: string, value: any ) => {\n\t\tconst newShadow = {\n\t\t\t...shadowObj,\n\t\t\t[ key ]: value,\n\t\t};\n\t\tonChange( newShadow );\n\t};\n\n\treturn (\n\t\t<VStack spacing={ 4 } className=\"global-styles-ui__shadow-editor-panel\">\n\t\t\t<ColorPalette\n\t\t\t\tclearable={ false }\n\t\t\t\tenableAlpha={ enableAlpha }\n\t\t\t\t__experimentalIsRenderedInSidebar={\n\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t}\n\t\t\t\tvalue={ shadowObj.color }\n\t\t\t\tonChange={ ( value ) => onShadowChange( 'color', value ) }\n\t\t\t/>\n\t\t\t<ToggleGroupControl\n\t\t\t\tlabel={ __( 'Shadow Type' ) }\n\t\t\t\tvalue={ shadowObj.inset ? 'inset' : 'outset' }\n\t\t\t\tisBlock\n\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\tonShadowChange( 'inset', value === 'inset' )\n\t\t\t\t}\n\t\t\t\thideLabelFromVision\n\t\t\t\t__next40pxDefaultSize\n\t\t\t>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tvalue=\"outset\"\n\t\t\t\t\tlabel={ __( 'Outset' ) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tvalue=\"inset\"\n\t\t\t\t\tlabel={ __( 'Inset' ) }\n\t\t\t\t/>\n\t\t\t</ToggleGroupControl>\n\t\t\t<Grid columns={ 2 } gap={ 4 }>\n\t\t\t\t<ShadowInputControl\n\t\t\t\t\tlabel={ __( 'X Position' ) }\n\t\t\t\t\tvalue={ shadowObj.x }\n\t\t\t\t\tonChange={ ( value ) => onShadowChange( 'x', value ) }\n\t\t\t\t/>\n\t\t\t\t<ShadowInputControl\n\t\t\t\t\tlabel={ __( 'Y Position' ) }\n\t\t\t\t\tvalue={ shadowObj.y }\n\t\t\t\t\tonChange={ ( value ) => onShadowChange( 'y', value ) }\n\t\t\t\t/>\n\t\t\t\t<ShadowInputControl\n\t\t\t\t\tlabel={ __( 'Blur' ) }\n\t\t\t\t\tvalue={ shadowObj.blur }\n\t\t\t\t\tonChange={ ( value ) => onShadowChange( 'blur', value ) }\n\t\t\t\t/>\n\t\t\t\t<ShadowInputControl\n\t\t\t\t\tlabel={ __( 'Spread' ) }\n\t\t\t\t\tvalue={ shadowObj.spread }\n\t\t\t\t\tonChange={ ( value ) => onShadowChange( 'spread', value ) }\n\t\t\t\t/>\n\t\t\t</Grid>\n\t\t</VStack>\n\t);\n}\n\ninterface ShadowInputControlProps {\n\tlabel: string;\n\tvalue: string;\n\tonChange: ( value: string ) => void;\n}\n\nfunction ShadowInputControl( {\n\tlabel,\n\tvalue,\n\tonChange,\n}: ShadowInputControlProps ) {\n\tconst onValueChange = ( next: string | undefined ) => {\n\t\tconst isNumeric = next !== undefined && ! isNaN( parseFloat( next ) );\n\t\tconst nextValue = isNumeric ? next : '0px';\n\t\tonChange( nextValue );\n\t};\n\n\treturn (\n\t\t<UnitControl\n\t\t\tlabel={ label }\n\t\t\t__next40pxDefaultSize\n\t\t\tvalue={ value }\n\t\t\tonChange={ onValueChange }\n\t\t/>\n\t);\n}\n", "/**\n * Internal dependencies\n */\nimport ShadowsPanel from './shadows-panel';\nimport ShadowsEditPanel from './shadows-edit-panel';\n\nexport function ScreenShadows() {\n\treturn <ShadowsPanel />;\n}\n\nexport function ScreenShadowsEdit() {\n\treturn <ShadowsEditPanel />;\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n// @ts-expect-error: Not typed yet.\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport type { GlobalStylesSettings } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { ScreenHeader } from './screen-header';\nimport DimensionsPanel from './dimensions-panel';\nimport { useSetting } from './hooks';\nimport { unlock } from './lock-unlock';\n\nconst { useHasDimensionsPanel, useSettingsForBlockElement } = unlock(\n\tblockEditorPrivateApis\n);\n\nfunction ScreenLayout() {\n\tconst [ rawSettings ] = useSetting< GlobalStylesSettings >( '' );\n\tconst settings = useSettingsForBlockElement( rawSettings );\n\tconst hasDimensionsPanel = useHasDimensionsPanel( settings );\n\n\treturn (\n\t\t<>\n\t\t\t<ScreenHeader title={ __( 'Layout' ) } />\n\t\t\t{ hasDimensionsPanel && <DimensionsPanel /> }\n\t\t</>\n\t);\n}\n\nexport default ScreenLayout;\n", "/**\n * WordPress dependencies\n */\n// @ts-expect-error: Not typed yet.\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { useStyle, useSetting } from './hooks';\nimport { unlock } from './lock-unlock';\n\nconst { useSettingsForBlockElement, DimensionsPanel: StylesDimensionsPanel } =\n\tunlock( blockEditorPrivateApis );\n\nconst DEFAULT_CONTROLS = {\n\tcontentSize: true,\n\twideSize: true,\n\tpadding: true,\n\tmargin: true,\n\tblockGap: true,\n\theight: true,\n\tminHeight: true,\n\twidth: true,\n\tchildLayout: false,\n};\n\nexport default function DimensionsPanel() {\n\tconst [ style ] = useStyle( '', undefined, 'user', false );\n\tconst [ inheritedStyle, setStyle ] = useStyle(\n\t\t'',\n\t\tundefined,\n\t\t'merged',\n\t\tfalse\n\t);\n\tconst [ userSettings ] = useSetting( '', undefined, 'user' );\n\tconst [ rawSettings, setSettings ] = useSetting( '' );\n\tconst settings = useSettingsForBlockElement( rawSettings );\n\n\t// These intermediary objects are needed because the \"layout\" property is stored\n\t// in settings rather than styles.\n\tconst inheritedStyleWithLayout = useMemo( () => {\n\t\treturn {\n\t\t\t...inheritedStyle,\n\t\t\tlayout: settings.layout,\n\t\t};\n\t}, [ inheritedStyle, settings.layout ] );\n\n\tconst styleWithLayout = useMemo( () => {\n\t\treturn {\n\t\t\t...style,\n\t\t\tlayout: userSettings.layout,\n\t\t};\n\t}, [ style, userSettings.layout ] );\n\n\tconst onChange = ( newStyle: any ) => {\n\t\tconst updatedStyle = { ...newStyle };\n\t\tdelete updatedStyle.layout;\n\t\tsetStyle( updatedStyle );\n\n\t\tif ( newStyle.layout !== userSettings.layout ) {\n\t\t\tconst updatedSettings = {\n\t\t\t\t...userSettings,\n\t\t\t\tlayout: newStyle.layout,\n\t\t\t};\n\n\t\t\t// Ensure any changes to layout definitions are not persisted.\n\t\t\tif ( updatedSettings.layout?.definitions ) {\n\t\t\t\tdelete updatedSettings.layout.definitions;\n\t\t\t}\n\n\t\t\tsetSettings( updatedSettings );\n\t\t}\n\t};\n\n\treturn (\n\t\t<StylesDimensionsPanel\n\t\t\tinheritedValue={ inheritedStyleWithLayout }\n\t\t\tvalue={ styleWithLayout }\n\t\t\tonChange={ onChange }\n\t\t\tsettings={ settings }\n\t\t\tincludeLayoutControls\n\t\t\tdefaultControls={ DEFAULT_CONTROLS }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { Card, CardBody } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { ScreenHeader } from './screen-header';\nimport { StyleVariationsContent } from './style-variations-content';\n\nfunction ScreenStyleVariations() {\n\treturn (\n\t\t<>\n\t\t\t<ScreenHeader\n\t\t\t\ttitle={ __( 'Browse styles' ) }\n\t\t\t\tdescription={ __(\n\t\t\t\t\t'Choose a variation to change the look of the site.'\n\t\t\t\t) }\n\t\t\t/>\n\n\t\t\t<Card\n\t\t\t\tsize=\"small\"\n\t\t\t\tisBorderless\n\t\t\t\tclassName=\"global-styles-ui-screen-style-variations\"\n\t\t\t>\n\t\t\t\t<CardBody>\n\t\t\t\t\t<StyleVariationsContent />\n\t\t\t\t</CardBody>\n\t\t\t</Card>\n\t\t</>\n\t);\n}\n\nexport default ScreenStyleVariations;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { __experimentalVStack as VStack } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport StyleVariationsContainer from './style-variations-container';\nimport TypographyVariations from './variations/variations-typography';\nimport ColorVariations from './variations/variations-color';\n\nexport function StyleVariationsContent() {\n\tconst gap = 3;\n\n\treturn (\n\t\t<VStack spacing={ 10 } className=\"global-styles-ui-variation-container\">\n\t\t\t<StyleVariationsContainer gap={ gap } />\n\t\t\t<ColorVariations title={ __( 'Color Variations' ) } gap={ gap } />\n\t\t\t<TypographyVariations title={ __( 'Typography' ) } gap={ gap } />\n\t\t</VStack>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useMemo } from '@wordpress/element';\nimport { __experimentalGrid as Grid } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport type {\n\tGlobalStylesConfig,\n\tStyleVariation,\n} from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport PreviewStyles from './preview-styles';\nimport Variation from './variations/variation';\nimport { GlobalStylesContext } from './context';\nimport { isVariationWithProperties } from './utils';\n\ninterface StyleVariationsContainerProps {\n\tgap?: number;\n}\n\nfunction StyleVariationsContainer( {\n\tgap = 2,\n}: StyleVariationsContainerProps ) {\n\tconst { user } = useContext( GlobalStylesContext );\n\tconst userStyles = user?.styles;\n\n\tconst variations = useSelect( ( select ) => {\n\t\tconst result =\n\t\t\tselect(\n\t\t\t\tcoreStore\n\t\t\t).__experimentalGetCurrentThemeGlobalStylesVariations();\n\t\t// The API might return null or an array\n\t\treturn Array.isArray( result )\n\t\t\t? ( result as GlobalStylesConfig[] )\n\t\t\t: undefined;\n\t}, [] );\n\n\t// Filter out variations that are color or typography variations.\n\tconst fullStyleVariations = variations?.filter(\n\t\t( variation: GlobalStylesConfig ) => {\n\t\t\treturn (\n\t\t\t\t! isVariationWithProperties( variation, [ 'color' ] ) &&\n\t\t\t\t! isVariationWithProperties( variation, [\n\t\t\t\t\t'typography',\n\t\t\t\t\t'spacing',\n\t\t\t\t] )\n\t\t\t);\n\t\t}\n\t);\n\n\tconst themeVariations = useMemo( () => {\n\t\tconst withEmptyVariation: StyleVariation[] = [\n\t\t\t{\n\t\t\t\ttitle: __( 'Default' ),\n\t\t\t\tsettings: {},\n\t\t\t\tstyles: {},\n\t\t\t},\n\t\t\t...( fullStyleVariations ?? [] ),\n\t\t];\n\t\treturn [\n\t\t\t...withEmptyVariation.map( ( variation: StyleVariation ) => {\n\t\t\t\tconst blockStyles = variation?.styles?.blocks\n\t\t\t\t\t? { ...variation.styles.blocks }\n\t\t\t\t\t: {};\n\n\t\t\t\t// We need to copy any user custom CSS to the variation to prevent it being lost\n\t\t\t\t// when switching variations.\n\t\t\t\tif ( userStyles?.blocks ) {\n\t\t\t\t\tObject.keys( userStyles.blocks ).forEach( ( blockName ) => {\n\t\t\t\t\t\t// First get any block specific custom CSS from the current user styles and merge with any custom CSS for\n\t\t\t\t\t\t// that block in the variation.\n\t\t\t\t\t\tif ( userStyles.blocks?.[ blockName ]?.css ) {\n\t\t\t\t\t\t\tconst variationBlockStyles =\n\t\t\t\t\t\t\t\tblockStyles[ blockName ] || {};\n\t\t\t\t\t\t\tconst customCSS = {\n\t\t\t\t\t\t\t\tcss: `${\n\t\t\t\t\t\t\t\t\tblockStyles[ blockName ]?.css || ''\n\t\t\t\t\t\t\t\t} ${\n\t\t\t\t\t\t\t\t\tuserStyles.blocks?.[\n\t\t\t\t\t\t\t\t\t\tblockName\n\t\t\t\t\t\t\t\t\t]?.css?.trim() || ''\n\t\t\t\t\t\t\t\t}`,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tblockStyles[ blockName ] = {\n\t\t\t\t\t\t\t\t...variationBlockStyles,\n\t\t\t\t\t\t\t\t...customCSS,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\t// Now merge any global custom CSS from current user styles with global custom CSS in the variation.\n\t\t\t\tconst css =\n\t\t\t\t\tuserStyles?.css || variation.styles?.css\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tcss: `${ variation.styles?.css || '' } ${\n\t\t\t\t\t\t\t\t\tuserStyles?.css || ''\n\t\t\t\t\t\t\t\t}`,\n\t\t\t\t\t\t  }\n\t\t\t\t\t\t: {};\n\n\t\t\t\tconst blocks =\n\t\t\t\t\tObject.keys( blockStyles ).length > 0\n\t\t\t\t\t\t? { blocks: blockStyles }\n\t\t\t\t\t\t: {};\n\n\t\t\t\tconst styles = {\n\t\t\t\t\t...variation.styles,\n\t\t\t\t\t...css,\n\t\t\t\t\t...blocks,\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\t...variation,\n\t\t\t\t\tsettings: variation.settings ?? {},\n\t\t\t\t\tstyles,\n\t\t\t\t};\n\t\t\t} ),\n\t\t];\n\t}, [ fullStyleVariations, userStyles?.blocks, userStyles?.css ] );\n\n\tif ( ! fullStyleVariations || fullStyleVariations.length < 1 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Grid\n\t\t\tcolumns={ 2 }\n\t\t\tclassName=\"global-styles-ui-style-variations-container\"\n\t\t\tgap={ gap }\n\t\t>\n\t\t\t{ themeVariations.map(\n\t\t\t\t( variation: StyleVariation, index: number ) => (\n\t\t\t\t\t<Variation key={ index } variation={ variation }>\n\t\t\t\t\t\t{ ( isFocused: boolean ) => (\n\t\t\t\t\t\t\t<PreviewStyles\n\t\t\t\t\t\t\t\tlabel={ variation?.title }\n\t\t\t\t\t\t\t\twithHoverView\n\t\t\t\t\t\t\t\tisFocused={ isFocused }\n\t\t\t\t\t\t\t\tvariation={ variation }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Variation>\n\t\t\t\t)\n\t\t\t) }\n\t\t</Grid>\n\t);\n}\n\nexport default StyleVariationsContainer;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { ExternalLink } from '@wordpress/components';\n// @ts-expect-error: Not typed yet.\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { ScreenHeader } from './screen-header';\nimport { useStyle } from './hooks';\nimport { unlock } from './lock-unlock';\n\n// Access AdvancedPanel from block-editor private APIs\nconst { AdvancedPanel: StylesAdvancedPanel } = unlock( blockEditorPrivateApis );\n\nfunction ScreenCSS() {\n\t// Get user-only styles (should not decode/encode to preserve raw CSS)\n\tconst [ style ] = useStyle( '', undefined, 'user', false );\n\t// Get all styles (inherited + user) for context\n\tconst [ inheritedStyle, setStyle ] = useStyle(\n\t\t'',\n\t\tundefined,\n\t\t'merged',\n\t\tfalse\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<ScreenHeader\n\t\t\t\ttitle={ __( 'Additional CSS' ) }\n\t\t\t\tdescription={\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'You can add custom CSS to further customize the appearance and layout of your site.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\thref={ __(\n\t\t\t\t\t\t\t\t'https://developer.wordpress.org/advanced-administration/wordpress/css/'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tclassName=\"global-styles-ui-screen-css-help-link\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Learn more about CSS' ) }\n\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<div className=\"global-styles-ui-screen-css\">\n\t\t\t\t<StylesAdvancedPanel\n\t\t\t\t\tvalue={ style }\n\t\t\t\t\tonChange={ setStyle }\n\t\t\t\t\tinheritedValue={ inheritedStyle }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default ScreenCSS;\n", "/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\t__experimentalConfirmDialog as ConfirmDialog,\n\tSpinner,\n\tuseNavigator,\n} from '@wordpress/components';\nimport { useContext, useState, useMemo } from '@wordpress/element';\nimport { areGlobalStylesEqual } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { ScreenHeader } from '../screen-header';\nimport { GlobalStylesContext } from '../context';\nimport useGlobalStylesRevisions from './use-global-styles-revisions';\nimport RevisionsButtons from './revisions-buttons';\nimport Pagination from '../pagination';\n\nconst PAGE_SIZE = 10;\n\ninterface ScreenRevisionsProps {\n\tonClose?: () => void;\n}\n\nfunction ScreenRevisions( { onClose }: ScreenRevisionsProps = {} ) {\n\tconst { user: currentEditorGlobalStyles, onChange: setUserConfig } =\n\t\tuseContext( GlobalStylesContext );\n\tconst { params, goTo } = useNavigator();\n\tconst { revisionId } = params;\n\tconst [ currentPage, setCurrentPage ] = useState( 1 );\n\tconst { revisions, isLoading, hasUnsavedChanges, revisionsCount } =\n\t\tuseGlobalStylesRevisions( {\n\t\t\tquery: {\n\t\t\t\tper_page: PAGE_SIZE,\n\t\t\t\tpage: currentPage,\n\t\t\t},\n\t\t} );\n\n\tconst numPages = Math.ceil( revisionsCount / PAGE_SIZE );\n\n\tconst [\n\t\tisLoadingRevisionWithUnsavedChanges,\n\t\tsetIsLoadingRevisionWithUnsavedChanges,\n\t] = useState( false );\n\n\t// Derive the currently selected revision from the path parameter\n\tconst currentlySelectedRevision = useMemo( () => {\n\t\tif ( ! revisionId ) {\n\t\t\treturn currentEditorGlobalStyles;\n\t\t}\n\t\tconst revision = revisions.find(\n\t\t\t( rev ) => String( rev.id ) === String( revisionId )\n\t\t);\n\t\treturn revision || currentEditorGlobalStyles;\n\t}, [ revisionId, revisions, currentEditorGlobalStyles ] );\n\n\tconst selectedRevisionMatchesEditorStyles = areGlobalStylesEqual(\n\t\tcurrentlySelectedRevision,\n\t\tcurrentEditorGlobalStyles\n\t);\n\n\tconst onCloseRevisions = () => {\n\t\tif ( onClose ) {\n\t\t\tonClose();\n\t\t}\n\t};\n\n\tconst restoreRevision = ( revision: any ) => {\n\t\tsetUserConfig( revision );\n\t\tsetIsLoadingRevisionWithUnsavedChanges( false );\n\t\tonCloseRevisions();\n\t};\n\n\tconst handleRevisionSelect = ( revision: any ) => {\n\t\tgoTo( `/revisions/${ revision.id }` );\n\t};\n\n\tconst currentlySelectedRevisionId =\n\t\t// @ts-expect-error: revision id is not present in the fallback (default object).\n\t\tcurrentlySelectedRevision?.id ?? revisions[ 0 ]?.id;\n\n\t// Only display load button if there is a revision to load,\n\t// and it is different from the current editor styles.\n\tconst isLoadButtonEnabled =\n\t\t!! currentlySelectedRevisionId &&\n\t\tcurrentlySelectedRevisionId !== 'unsaved' &&\n\t\t! selectedRevisionMatchesEditorStyles;\n\tconst hasRevisions = !! revisions.length;\n\n\treturn (\n\t\t<>\n\t\t\t<ScreenHeader\n\t\t\t\ttitle={\n\t\t\t\t\trevisionsCount\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: %d: number of revisions.\n\t\t\t\t\t\t\t\t__( 'Revisions (%d)' ),\n\t\t\t\t\t\t\t\trevisionsCount\n\t\t\t\t\t\t  )\n\t\t\t\t\t\t: __( 'Revisions' )\n\t\t\t\t}\n\t\t\t\tdescription={ __(\n\t\t\t\t\t'Click on previously saved styles to preview them. To restore a selected version to the editor, hit \"Apply.\" When you\\'re ready, use the Save button to save your changes.'\n\t\t\t\t) }\n\t\t\t\tonBack={ onCloseRevisions }\n\t\t\t/>\n\t\t\t{ ! hasRevisions && (\n\t\t\t\t<Spinner className=\"global-styles-ui-screen-revisions__loading\" />\n\t\t\t) }\n\t\t\t<RevisionsButtons\n\t\t\t\tonChange={ handleRevisionSelect }\n\t\t\t\tselectedRevisionId={ currentlySelectedRevisionId }\n\t\t\t\tuserRevisions={ revisions }\n\t\t\t\tcanApplyRevision={ isLoadButtonEnabled }\n\t\t\t\tonApplyRevision={ () =>\n\t\t\t\t\thasUnsavedChanges\n\t\t\t\t\t\t? setIsLoadingRevisionWithUnsavedChanges( true )\n\t\t\t\t\t\t: restoreRevision( currentlySelectedRevision )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ numPages > 1 && (\n\t\t\t\t<div className=\"global-styles-ui-screen-revisions__footer\">\n\t\t\t\t\t<Pagination\n\t\t\t\t\t\tclassName=\"global-styles-ui-screen-revisions__pagination\"\n\t\t\t\t\t\tcurrentPage={ currentPage }\n\t\t\t\t\t\tnumPages={ numPages }\n\t\t\t\t\t\tchangePage={ setCurrentPage }\n\t\t\t\t\t\ttotalItems={ revisionsCount }\n\t\t\t\t\t\tdisabled={ isLoading }\n\t\t\t\t\t\tlabel={ __( 'Global Styles pagination' ) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isLoadingRevisionWithUnsavedChanges && (\n\t\t\t\t<ConfirmDialog\n\t\t\t\t\tisOpen={ isLoadingRevisionWithUnsavedChanges }\n\t\t\t\t\tconfirmButtonText={ __( 'Apply' ) }\n\t\t\t\t\tonConfirm={ () =>\n\t\t\t\t\t\trestoreRevision( currentlySelectedRevision )\n\t\t\t\t\t}\n\t\t\t\t\tonCancel={ () =>\n\t\t\t\t\t\tsetIsLoadingRevisionWithUnsavedChanges( false )\n\t\t\t\t\t}\n\t\t\t\t\tsize=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Are you sure you want to apply this revision? Any unsaved changes will be lost.'\n\t\t\t\t\t) }\n\t\t\t\t</ConfirmDialog>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ScreenRevisions;\n", "/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\tstore as coreStore,\n\ttype GlobalStylesRevision,\n} from '@wordpress/core-data';\nimport { useContext, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { GlobalStylesContext } from '../context';\nimport type { Revision, User } from './types';\n\ninterface RawRevision extends Omit< Revision, 'author' > {\n\tauthor?: number;\n}\n\ninterface Query {\n\tper_page?: number;\n\tpage?: number;\n}\n\ninterface UseGlobalStylesRevisionsParams {\n\tquery?: Query;\n}\n\ninterface UseGlobalStylesRevisionsReturn {\n\trevisions: Revision[];\n\thasUnsavedChanges: boolean;\n\tisLoading: boolean;\n\trevisionsCount: number;\n}\n\nconst SITE_EDITOR_AUTHORS_QUERY = {\n\tper_page: -1,\n\t_fields: 'id,name,avatar_urls',\n\tcontext: 'view',\n\tcapabilities: [ 'edit_theme_options' ],\n};\nconst DEFAULT_QUERY = { per_page: 100, page: 1 };\nconst EMPTY_ARRAY: [] = [];\n\nexport default function useGlobalStylesRevisions( {\n\tquery,\n}: UseGlobalStylesRevisionsParams = {} ): UseGlobalStylesRevisionsReturn {\n\tconst { user: userConfig } = useContext( GlobalStylesContext );\n\tconst _query: Query = useMemo(\n\t\t() => ( { ...DEFAULT_QUERY, ...query } ),\n\t\t[ query ]\n\t);\n\tconst {\n\t\tauthors,\n\t\tcurrentUser,\n\t\tisDirty,\n\t\trevisions,\n\t\tisLoadingGlobalStylesRevisions,\n\t\trevisionsCount,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\t__experimentalGetDirtyEntityRecords,\n\t\t\t\tgetCurrentUser,\n\t\t\t\tgetUsers,\n\t\t\t\tgetRevisions,\n\t\t\t\t__experimentalGetCurrentGlobalStylesId,\n\t\t\t\tgetEntityRecord,\n\t\t\t\t// @ts-expect-error\n\t\t\t\tisResolving,\n\t\t\t} = select( coreStore );\n\t\t\tconst dirtyEntityRecords =\n\t\t\t\t__experimentalGetDirtyEntityRecords() || [];\n\t\t\tconst _currentUser = getCurrentUser();\n\t\t\tconst _isDirty = dirtyEntityRecords.length > 0;\n\t\t\tconst globalStylesId = __experimentalGetCurrentGlobalStylesId();\n\t\t\tconst globalStyles = globalStylesId\n\t\t\t\t? getEntityRecord< GlobalStylesRevision >(\n\t\t\t\t\t\t'root',\n\t\t\t\t\t\t'globalStyles',\n\t\t\t\t\t\tglobalStylesId\n\t\t\t\t  )\n\t\t\t\t: undefined;\n\t\t\tconst _revisionsCount: number =\n\t\t\t\t// @ts-expect-error - _links is not typed in GlobalStylesRevision\n\t\t\t\tglobalStyles?._links?.[ 'version-history' ]?.[ 0 ]?.count ?? 0;\n\t\t\t// @ts-expect-error - getRevisions is not fully typed\n\t\t\tconst globalStylesRevisions: RawRevision[] = globalStylesId\n\t\t\t\t? getRevisions(\n\t\t\t\t\t\t'root',\n\t\t\t\t\t\t'globalStyles',\n\t\t\t\t\t\tglobalStylesId,\n\t\t\t\t\t\t_query\n\t\t\t\t  ) || EMPTY_ARRAY\n\t\t\t\t: EMPTY_ARRAY;\n\t\t\t// @ts-expect-error - getUsers is not fully typed\n\t\t\tconst _authors: User[] =\n\t\t\t\tgetUsers( SITE_EDITOR_AUTHORS_QUERY ) || EMPTY_ARRAY;\n\t\t\tconst _isResolving = globalStylesId\n\t\t\t\t? isResolving( 'getRevisions', [\n\t\t\t\t\t\t'root',\n\t\t\t\t\t\t'globalStyles',\n\t\t\t\t\t\tglobalStylesId,\n\t\t\t\t\t\t_query,\n\t\t\t\t  ] )\n\t\t\t\t: false;\n\t\t\treturn {\n\t\t\t\tauthors: _authors,\n\t\t\t\tcurrentUser: _currentUser,\n\t\t\t\tisDirty: _isDirty,\n\t\t\t\trevisions: globalStylesRevisions,\n\t\t\t\tisLoadingGlobalStylesRevisions: _isResolving,\n\t\t\t\trevisionsCount: _revisionsCount,\n\t\t\t};\n\t\t},\n\t\t[ _query ]\n\t);\n\treturn useMemo( (): UseGlobalStylesRevisionsReturn => {\n\t\tif ( ! authors.length || isLoadingGlobalStylesRevisions ) {\n\t\t\treturn {\n\t\t\t\trevisions: EMPTY_ARRAY as Revision[],\n\t\t\t\thasUnsavedChanges: isDirty,\n\t\t\t\tisLoading: true,\n\t\t\t\trevisionsCount,\n\t\t\t};\n\t\t}\n\n\t\t// Adds author details to each revision.\n\t\tconst _modifiedRevisions: Revision[] = revisions.map( ( revision ) => {\n\t\t\treturn {\n\t\t\t\t...revision,\n\t\t\t\tauthor: authors.find(\n\t\t\t\t\t( author ) => author.id === revision.author\n\t\t\t\t),\n\t\t\t};\n\t\t} );\n\n\t\tconst fetchedRevisionsCount = revisions.length;\n\n\t\tif ( fetchedRevisionsCount ) {\n\t\t\t// Flags the most current saved revision.\n\t\t\tif (\n\t\t\t\t_modifiedRevisions[ 0 ].id !== 'unsaved' &&\n\t\t\t\t_query.page === 1\n\t\t\t) {\n\t\t\t\t_modifiedRevisions[ 0 ].isLatest = true;\n\t\t\t}\n\n\t\t\t// Adds an item for unsaved changes.\n\t\t\tif (\n\t\t\t\tisDirty &&\n\t\t\t\tuserConfig &&\n\t\t\t\tObject.keys( userConfig ).length > 0 &&\n\t\t\t\tcurrentUser &&\n\t\t\t\t_query.page === 1\n\t\t\t) {\n\t\t\t\tconst unsavedRevision: Revision = {\n\t\t\t\t\tid: 'unsaved',\n\t\t\t\t\tstyles: userConfig?.styles,\n\t\t\t\t\tsettings: userConfig?.settings,\n\t\t\t\t\t_links: userConfig?._links,\n\t\t\t\t\tauthor: {\n\t\t\t\t\t\tname: currentUser?.name || '',\n\t\t\t\t\t\t// @ts-expect-error - avatar_urls is not typed in User\n\t\t\t\t\t\tavatar_urls: currentUser?.avatar_urls || {},\n\t\t\t\t\t},\n\t\t\t\t\tmodified: new Date(),\n\t\t\t\t};\n\n\t\t\t\t_modifiedRevisions.unshift( unsavedRevision );\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t_query.per_page &&\n\t\t\t\t_query.page === Math.ceil( revisionsCount / _query.per_page )\n\t\t\t) {\n\t\t\t\t// Adds an item for the default theme styles.\n\t\t\t\t_modifiedRevisions.push( {\n\t\t\t\t\tid: 'parent',\n\t\t\t\t\tstyles: {},\n\t\t\t\t\tsettings: {},\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\trevisions: _modifiedRevisions,\n\t\t\thasUnsavedChanges: isDirty,\n\t\t\tisLoading: false,\n\t\t\trevisionsCount,\n\t\t};\n\t}, [\n\t\tisDirty,\n\t\trevisions,\n\t\tcurrentUser,\n\t\tauthors,\n\t\tuserConfig,\n\t\tisLoadingGlobalStylesRevisions,\n\t\trevisionsCount,\n\t\t_query.page,\n\t\t_query.per_page,\n\t] );\n}\n", "/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { Button, Composite } from '@wordpress/components';\nimport { dateI18n, getDate, humanTimeDiff, getSettings } from '@wordpress/date';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { getGlobalStylesChanges } from '@wordpress/global-styles-engine';\nimport { ENTER, SPACE } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport type { Revision } from './types';\n\nconst DAY_IN_MILLISECONDS = 60 * 60 * 1000 * 24;\n\ninterface ChangesSummaryProps {\n\trevision: Revision;\n\tpreviousRevision?: Revision;\n}\n\nfunction ChangesSummary( { revision, previousRevision }: ChangesSummaryProps ) {\n\tconst changes: string[] = getGlobalStylesChanges(\n\t\trevision,\n\t\tpreviousRevision,\n\t\t{\n\t\t\tmaxResults: 7,\n\t\t}\n\t);\n\n\tif ( ! changes.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<ul\n\t\t\tdata-testid=\"global-styles-revision-changes\"\n\t\t\tclassName=\"global-styles-ui-screen-revisions__changes\"\n\t\t>\n\t\t\t{ changes.map( ( change ) => (\n\t\t\t\t<li key={ change }>{ change }</li>\n\t\t\t) ) }\n\t\t</ul>\n\t);\n}\n\n/**\n * Returns a button label for the revision.\n * @param id\n * @param authorDisplayName\n * @param formattedModifiedDate\n * @param areStylesEqual\n */\nfunction getRevisionLabel(\n\tid: string | number,\n\tauthorDisplayName: string,\n\tformattedModifiedDate: string,\n\tareStylesEqual: boolean\n): string {\n\tif ( 'parent' === id ) {\n\t\treturn __( 'Reset the styles to the theme defaults' );\n\t}\n\n\tif ( 'unsaved' === id ) {\n\t\treturn sprintf(\n\t\t\t/* translators: %s: author display name */\n\t\t\t__( 'Unsaved changes by %s' ),\n\t\t\tauthorDisplayName\n\t\t);\n\t}\n\n\treturn areStylesEqual\n\t\t? sprintf(\n\t\t\t\t// translators: 1: author display name. 2: revision creation date.\n\t\t\t\t__(\n\t\t\t\t\t'Changes saved by %1$s on %2$s. This revision matches current editor styles.'\n\t\t\t\t),\n\t\t\t\tauthorDisplayName,\n\t\t\t\tformattedModifiedDate\n\t\t  )\n\t\t: sprintf(\n\t\t\t\t// translators: 1: author display name. 2: revision creation date.\n\t\t\t\t__( 'Changes saved by %1$s on %2$s' ),\n\t\t\t\tauthorDisplayName,\n\t\t\t\tformattedModifiedDate\n\t\t  );\n}\n\ninterface RevisionButtonsProps {\n\tuserRevisions: Revision[];\n\tselectedRevisionId?: string | number;\n\tonChange: ( revision: Revision ) => void;\n\tcanApplyRevision?: boolean;\n\tonApplyRevision?: () => void;\n}\n\n/**\n * Returns a rendered list of revisions buttons.\n * @param root0\n * @param root0.userRevisions\n * @param root0.selectedRevisionId\n * @param root0.onChange\n * @param root0.canApplyRevision\n * @param root0.onApplyRevision\n */\nfunction RevisionsButtons( {\n\tuserRevisions,\n\tselectedRevisionId,\n\tonChange,\n\tcanApplyRevision,\n\tonApplyRevision,\n}: RevisionButtonsProps ) {\n\tconst { currentThemeName, currentUser } = useSelect( ( select ) => {\n\t\tconst { getCurrentTheme, getCurrentUser } = select( coreStore );\n\t\tconst currentTheme = getCurrentTheme();\n\t\treturn {\n\t\t\tcurrentThemeName:\n\t\t\t\tcurrentTheme?.name?.rendered || currentTheme?.stylesheet,\n\t\t\tcurrentUser: getCurrentUser(),\n\t\t};\n\t}, [] );\n\tconst dateNowInMs = getDate( null ).getTime();\n\tconst { datetimeAbbreviated } = getSettings().formats;\n\n\treturn (\n\t\t<Composite\n\t\t\torientation=\"vertical\"\n\t\t\tclassName=\"global-styles-ui-screen-revisions__revisions-list\"\n\t\t\taria-label={ __( 'Global styles revisions list' ) }\n\t\t\trole=\"listbox\"\n\t\t>\n\t\t\t{ userRevisions.map( ( revision, index ) => {\n\t\t\t\tconst { id, author, modified } = revision;\n\t\t\t\tconst isUnsaved = 'unsaved' === id;\n\t\t\t\t// Unsaved changes are created by the current user.\n\t\t\t\tconst revisionAuthor = isUnsaved ? currentUser : author;\n\t\t\t\tconst authorDisplayName = revisionAuthor?.name || __( 'User' );\n\t\t\t\tconst authorAvatar = revisionAuthor?.avatar_urls?.[ '48' ];\n\t\t\t\tconst isFirstItem = index === 0;\n\t\t\t\tconst isSelected = selectedRevisionId\n\t\t\t\t\t? selectedRevisionId === id\n\t\t\t\t\t: isFirstItem;\n\t\t\t\tconst areStylesEqual = ! canApplyRevision && isSelected;\n\t\t\t\tconst isReset = 'parent' === id;\n\t\t\t\t// Convert modified to string if it's a Date, for type compatibility\n\t\t\t\tconst modifiedString =\n\t\t\t\t\tmodified instanceof Date\n\t\t\t\t\t\t? modified.toISOString()\n\t\t\t\t\t\t: modified;\n\t\t\t\tconst modifiedDate = getDate( modifiedString ?? null );\n\t\t\t\tconst displayDate =\n\t\t\t\t\tmodifiedString &&\n\t\t\t\t\tdateNowInMs - modifiedDate.getTime() > DAY_IN_MILLISECONDS\n\t\t\t\t\t\t? dateI18n( datetimeAbbreviated, modifiedDate )\n\t\t\t\t\t\t: humanTimeDiff(\n\t\t\t\t\t\t\t\tmodifiedString ?? modifiedDate,\n\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t  );\n\t\t\t\tconst revisionLabel = getRevisionLabel(\n\t\t\t\t\tid,\n\t\t\t\t\tauthorDisplayName,\n\t\t\t\t\tdateI18n( datetimeAbbreviated, modifiedDate ),\n\t\t\t\t\tareStylesEqual\n\t\t\t\t);\n\n\t\t\t\treturn (\n\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\tclassName=\"global-styles-ui-screen-revisions__revision-item\"\n\t\t\t\t\t\taria-current={ isSelected }\n\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\tconst { keyCode } = event;\n\t\t\t\t\t\t\tif ( keyCode === ENTER || keyCode === SPACE ) {\n\t\t\t\t\t\t\t\tonChange( revision );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tonChange( revision );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\taria-selected={ isSelected }\n\t\t\t\t\t\taria-label={ revisionLabel }\n\t\t\t\t\t\trender={ <div /> }\n\t\t\t\t\t>\n\t\t\t\t\t\t<span className=\"global-styles-ui-screen-revisions__revision-item-wrapper\">\n\t\t\t\t\t\t\t{ isReset ? (\n\t\t\t\t\t\t\t\t<span className=\"global-styles-ui-screen-revisions__description\">\n\t\t\t\t\t\t\t\t\t{ __( 'Default styles' ) }\n\t\t\t\t\t\t\t\t\t<span className=\"global-styles-ui-screen-revisions__meta\">\n\t\t\t\t\t\t\t\t\t\t{ currentThemeName }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<span className=\"global-styles-ui-screen-revisions__description\">\n\t\t\t\t\t\t\t\t\t{ isUnsaved ? (\n\t\t\t\t\t\t\t\t\t\t<span className=\"global-styles-ui-screen-revisions__date\">\n\t\t\t\t\t\t\t\t\t\t\t{ __( '(Unsaved)' ) }\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<time\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"global-styles-ui-screen-revisions__date\"\n\t\t\t\t\t\t\t\t\t\t\tdateTime={ modifiedString }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ displayDate }\n\t\t\t\t\t\t\t\t\t\t</time>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t<span className=\"global-styles-ui-screen-revisions__meta\">\n\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\talt={ authorDisplayName }\n\t\t\t\t\t\t\t\t\t\t\tsrc={ authorAvatar }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t{ authorDisplayName }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t{ isSelected && (\n\t\t\t\t\t\t\t\t\t\t<ChangesSummary\n\t\t\t\t\t\t\t\t\t\t\trevision={ revision }\n\t\t\t\t\t\t\t\t\t\t\tpreviousRevision={\n\t\t\t\t\t\t\t\t\t\t\t\tindex < userRevisions.length\n\t\t\t\t\t\t\t\t\t\t\t\t\t? userRevisions[ index + 1 ]\n\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t{ isSelected &&\n\t\t\t\t\t\t\t( areStylesEqual ? (\n\t\t\t\t\t\t\t\t<p className=\"global-styles-ui-screen-revisions__applied-text\">\n\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t'These styles are already applied to your site.'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\tclassName=\"global-styles-ui-screen-revisions__apply-button\"\n\t\t\t\t\t\t\t\t\tonClick={ onApplyRevision }\n\t\t\t\t\t\t\t\t\taria-label={ __(\n\t\t\t\t\t\t\t\t\t\t'Apply the selected revision to your site.'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ isReset\n\t\t\t\t\t\t\t\t\t\t? __( 'Reset to defaults' )\n\t\t\t\t\t\t\t\t\t\t: __( 'Apply' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Composite.Item>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Composite>\n\t);\n}\n\nexport default RevisionsButtons;\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalText as Text,\n\tButton,\n} from '@wordpress/components';\nimport { __, _x, _n, sprintf, isRTL } from '@wordpress/i18n';\nimport { previous, chevronLeft, chevronRight, next } from '@wordpress/icons';\n\ninterface PaginationProps {\n\tcurrentPage: number;\n\tnumPages: number;\n\tchangePage: ( page: number ) => void;\n\ttotalItems: number;\n\tclassName?: string;\n\tdisabled?: boolean;\n\tbuttonVariant?: 'primary' | 'secondary' | 'tertiary';\n\tlabel?: string;\n}\n\nexport default function Pagination( {\n\tcurrentPage,\n\tnumPages,\n\tchangePage,\n\ttotalItems,\n\tclassName,\n\tdisabled = false,\n\tbuttonVariant = 'tertiary',\n\tlabel = __( 'Pagination' ),\n}: PaginationProps ) {\n\treturn (\n\t\t<HStack\n\t\t\texpanded={ false }\n\t\t\tas=\"nav\"\n\t\t\taria-label={ label }\n\t\t\tspacing={ 3 }\n\t\t\tjustify=\"flex-start\"\n\t\t\tclassName={ clsx( 'global-styles-ui-pagination', className ) }\n\t\t>\n\t\t\t<Text\n\t\t\t\tvariant=\"muted\"\n\t\t\t\tclassName=\"global-styles-ui-pagination__total\"\n\t\t\t>\n\t\t\t\t{ sprintf(\n\t\t\t\t\t// translators: %d: Total number of patterns.\n\t\t\t\t\t_n( '%d item', '%d items', totalItems ),\n\t\t\t\t\ttotalItems\n\t\t\t\t) }\n\t\t\t</Text>\n\t\t\t<HStack expanded={ false } spacing={ 1 }>\n\t\t\t\t<Button\n\t\t\t\t\tvariant={ buttonVariant }\n\t\t\t\t\tonClick={ () => changePage( 1 ) }\n\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\tdisabled={ disabled || currentPage === 1 }\n\t\t\t\t\tlabel={ __( 'First page' ) }\n\t\t\t\t\ticon={ isRTL() ? next : previous }\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t/>\n\t\t\t\t<Button\n\t\t\t\t\tvariant={ buttonVariant }\n\t\t\t\t\tonClick={ () => changePage( currentPage - 1 ) }\n\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\tdisabled={ disabled || currentPage === 1 }\n\t\t\t\t\tlabel={ __( 'Previous page' ) }\n\t\t\t\t\ticon={ isRTL() ? chevronRight : chevronLeft }\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t\t<Text variant=\"muted\">\n\t\t\t\t{ sprintf(\n\t\t\t\t\t// translators: 1: Current page number. 2: Total number of pages.\n\t\t\t\t\t_x( '%1$d of %2$d', 'paging' ),\n\t\t\t\t\tcurrentPage,\n\t\t\t\t\tnumPages\n\t\t\t\t) }\n\t\t\t</Text>\n\t\t\t<HStack expanded={ false } spacing={ 1 }>\n\t\t\t\t<Button\n\t\t\t\t\tvariant={ buttonVariant }\n\t\t\t\t\tonClick={ () => changePage( currentPage + 1 ) }\n\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\tdisabled={ disabled || currentPage === numPages }\n\t\t\t\t\tlabel={ __( 'Next page' ) }\n\t\t\t\t\ticon={ isRTL() ? chevronLeft : chevronRight }\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t/>\n\t\t\t\t<Button\n\t\t\t\t\tvariant={ buttonVariant }\n\t\t\t\t\tonClick={ () => changePage( numPages ) }\n\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\tdisabled={ disabled || currentPage === numPages }\n\t\t\t\t\tlabel={ __( 'Last page' ) }\n\t\t\t\t\ticon={ isRTL() ? previous : next }\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t</HStack>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __, sprintf, isRTL } from '@wordpress/i18n';\nimport {\n\tprivateApis as componentsPrivateApis,\n\t__experimentalSpacer as Spacer,\n\t__experimentalView as View,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n\tFlexItem,\n\tButton,\n} from '@wordpress/components';\nimport {\n\tIcon,\n\tplus,\n\tmoreVertical,\n\tchevronLeft,\n\tchevronRight,\n} from '@wordpress/icons';\nimport { useState } from '@wordpress/element';\nimport type { FontSize } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { Subtitle } from '../subtitle';\nimport { NavigationButtonAsItem } from '../navigation-button';\nimport { getNewIndexFromPresets } from '../utils';\nimport { ScreenHeader } from '../screen-header';\nimport ConfirmResetFontSizesDialog from './confirm-reset-font-sizes-dialog';\nimport { useSetting } from '../hooks';\nimport { unlock } from '../lock-unlock';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\ninterface FontSizeGroupProps {\n\tlabel: string;\n\torigin: string;\n\tsizes: FontSize[];\n\thandleAddFontSize: () => void;\n\thandleResetFontSizes?: () => void;\n}\n\nfunction FontSizeGroup( {\n\tlabel,\n\torigin,\n\tsizes,\n\thandleAddFontSize,\n\thandleResetFontSizes,\n}: FontSizeGroupProps ) {\n\tconst [ isResetDialogOpen, setIsResetDialogOpen ] = useState( false );\n\n\tconst toggleResetDialog = () => setIsResetDialogOpen( ! isResetDialogOpen );\n\n\tconst resetDialogText =\n\t\torigin === 'custom'\n\t\t\t? __(\n\t\t\t\t\t'Are you sure you want to remove all custom font size presets?'\n\t\t\t  )\n\t\t\t: __(\n\t\t\t\t\t'Are you sure you want to reset all font size presets to their default values?'\n\t\t\t  );\n\n\treturn (\n\t\t<>\n\t\t\t{ handleResetFontSizes && isResetDialogOpen && (\n\t\t\t\t<ConfirmResetFontSizesDialog\n\t\t\t\t\ttext={ resetDialogText }\n\t\t\t\t\tconfirmButtonText={\n\t\t\t\t\t\torigin === 'custom' ? __( 'Remove' ) : __( 'Reset' )\n\t\t\t\t\t}\n\t\t\t\t\tisOpen={ isResetDialogOpen }\n\t\t\t\t\ttoggleOpen={ toggleResetDialog }\n\t\t\t\t\tonConfirm={ handleResetFontSizes }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t<HStack>\n\t\t\t\t\t<Subtitle level={ 3 }>{ label }</Subtitle>\n\t\t\t\t\t<FlexItem className=\"global-styles-ui__typography-panel__options-container\">\n\t\t\t\t\t\t{ origin === 'custom' && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tlabel={ __( 'Add font size' ) }\n\t\t\t\t\t\t\t\ticon={ plus }\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tonClick={ handleAddFontSize }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ !! handleResetFontSizes && (\n\t\t\t\t\t\t\t<Menu>\n\t\t\t\t\t\t\t\t<Menu.TriggerButton\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\t\tlabel={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t'Font size presets options'\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Menu.Popover>\n\t\t\t\t\t\t\t\t\t<Menu.Item onClick={ toggleResetDialog }>\n\t\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t{ origin === 'custom'\n\t\t\t\t\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'Remove font size presets'\n\t\t\t\t\t\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'Reset font size presets'\n\t\t\t\t\t\t\t\t\t\t\t\t  ) }\n\t\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t\t</Menu.Popover>\n\t\t\t\t\t\t\t</Menu>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</HStack>\n\n\t\t\t\t{ !! sizes.length && (\n\t\t\t\t\t<ItemGroup isBordered isSeparated>\n\t\t\t\t\t\t{ sizes.map( ( size ) => (\n\t\t\t\t\t\t\t<NavigationButtonAsItem\n\t\t\t\t\t\t\t\tkey={ size.slug }\n\t\t\t\t\t\t\t\tpath={ `/typography/font-sizes/${ origin }/${ size.slug }` }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t\t<FlexItem className=\"global-styles-ui-font-size__item\">\n\t\t\t\t\t\t\t\t\t\t{ size.name }\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t<FlexItem display=\"flex\">\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tisRTL()\n\t\t\t\t\t\t\t\t\t\t\t\t\t? chevronLeft\n\t\t\t\t\t\t\t\t\t\t\t\t\t: chevronRight\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t</NavigationButtonAsItem>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</ItemGroup>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t</>\n\t);\n}\n\nfunction FontSizes() {\n\tconst [ themeFontSizes, setThemeFontSizes ] = useSetting(\n\t\t'typography.fontSizes.theme'\n\t);\n\n\tconst [ baseThemeFontSizes ] = useSetting(\n\t\t'typography.fontSizes.theme',\n\t\t'base'\n\t);\n\tconst [ defaultFontSizes, setDefaultFontSizes ] = useSetting(\n\t\t'typography.fontSizes.default'\n\t);\n\n\tconst [ baseDefaultFontSizes ] = useSetting(\n\t\t'typography.fontSizes.default',\n\t\t'base'\n\t);\n\n\tconst [ customFontSizes = [], setCustomFontSizes ] = useSetting(\n\t\t'typography.fontSizes.custom'\n\t);\n\n\tconst [ defaultFontSizesEnabled ] = useSetting(\n\t\t'typography.defaultFontSizes'\n\t);\n\n\tconst handleAddFontSize = () => {\n\t\tconst index = getNewIndexFromPresets( customFontSizes, 'custom-' );\n\t\tconst newFontSize = {\n\t\t\t/* translators: %d: font size index */\n\t\t\tname: sprintf( __( 'New Font Size %d' ), index ),\n\t\t\tsize: '16px',\n\t\t\tslug: `custom-${ index }`,\n\t\t};\n\n\t\tsetCustomFontSizes( [ ...customFontSizes, newFontSize ] );\n\t};\n\n\tconst hasSameSizeValues = ( arr1: FontSize[], arr2: FontSize[] ): boolean =>\n\t\tarr1.map( ( item ) => item.size ).join( '' ) ===\n\t\tarr2.map( ( item ) => item.size ).join( '' );\n\n\treturn (\n\t\t<VStack spacing={ 2 }>\n\t\t\t<ScreenHeader\n\t\t\t\ttitle={ __( 'Font size presets' ) }\n\t\t\t\tdescription={ __(\n\t\t\t\t\t'Create and edit the presets used for font sizes across the site.'\n\t\t\t\t) }\n\t\t\t/>\n\n\t\t\t<View>\n\t\t\t\t<Spacer paddingX={ 4 }>\n\t\t\t\t\t<VStack spacing={ 8 }>\n\t\t\t\t\t\t{ !! themeFontSizes?.length && (\n\t\t\t\t\t\t\t<FontSizeGroup\n\t\t\t\t\t\t\t\tlabel={ __( 'Theme' ) }\n\t\t\t\t\t\t\t\torigin=\"theme\"\n\t\t\t\t\t\t\t\tsizes={ themeFontSizes }\n\t\t\t\t\t\t\t\thandleAddFontSize={ handleAddFontSize }\n\t\t\t\t\t\t\t\thandleResetFontSizes={\n\t\t\t\t\t\t\t\t\thasSameSizeValues(\n\t\t\t\t\t\t\t\t\t\tthemeFontSizes,\n\t\t\t\t\t\t\t\t\t\tbaseThemeFontSizes\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t: () =>\n\t\t\t\t\t\t\t\t\t\t\t\tsetThemeFontSizes(\n\t\t\t\t\t\t\t\t\t\t\t\t\tbaseThemeFontSizes\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t{ defaultFontSizesEnabled &&\n\t\t\t\t\t\t\t!! defaultFontSizes?.length && (\n\t\t\t\t\t\t\t\t<FontSizeGroup\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Default' ) }\n\t\t\t\t\t\t\t\t\torigin=\"default\"\n\t\t\t\t\t\t\t\t\tsizes={ defaultFontSizes }\n\t\t\t\t\t\t\t\t\thandleAddFontSize={ handleAddFontSize }\n\t\t\t\t\t\t\t\t\thandleResetFontSizes={\n\t\t\t\t\t\t\t\t\t\thasSameSizeValues(\n\t\t\t\t\t\t\t\t\t\t\tdefaultFontSizes,\n\t\t\t\t\t\t\t\t\t\t\tbaseDefaultFontSizes\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t\t: () =>\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetDefaultFontSizes(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbaseDefaultFontSizes\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t<FontSizeGroup\n\t\t\t\t\t\t\tlabel={ __( 'Custom' ) }\n\t\t\t\t\t\t\torigin=\"custom\"\n\t\t\t\t\t\t\tsizes={ customFontSizes }\n\t\t\t\t\t\t\thandleAddFontSize={ handleAddFontSize }\n\t\t\t\t\t\t\thandleResetFontSizes={\n\t\t\t\t\t\t\t\tcustomFontSizes.length > 0\n\t\t\t\t\t\t\t\t\t? () => setCustomFontSizes( [] )\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</VStack>\n\t\t\t\t</Spacer>\n\t\t\t</View>\n\t\t</VStack>\n\t);\n}\n\nexport default FontSizes;\n", "/**\n * WordPress dependencies\n */\nimport { __experimentalConfirmDialog as ConfirmDialog } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\ninterface ConfirmResetFontSizesDialogProps {\n\ttext: string;\n\tconfirmButtonText: string;\n\tisOpen: boolean;\n\ttoggleOpen: () => void;\n\tonConfirm: () => void;\n}\n\nfunction ConfirmResetFontSizesDialog( {\n\ttext,\n\tconfirmButtonText,\n\tisOpen,\n\ttoggleOpen,\n\tonConfirm,\n}: ConfirmResetFontSizesDialogProps ) {\n\tconst handleConfirm = async () => {\n\t\ttoggleOpen();\n\t\tonConfirm();\n\t};\n\n\tconst handleCancel = () => {\n\t\ttoggleOpen();\n\t};\n\n\treturn (\n\t\t<ConfirmDialog\n\t\t\tisOpen={ isOpen }\n\t\t\tcancelButtonText={ __( 'Cancel' ) }\n\t\t\tconfirmButtonText={ confirmButtonText }\n\t\t\tonCancel={ handleCancel }\n\t\t\tonConfirm={ handleConfirm }\n\t\t\tsize=\"medium\"\n\t\t>\n\t\t\t{ text }\n\t\t</ConfirmDialog>\n\t);\n}\n\nexport default ConfirmResetFontSizesDialog;\n", "/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\t__experimentalSpacer as Spacer,\n\tuseNavigator,\n\t__experimentalView as View,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tprivateApis as componentsPrivateApis,\n\tButton,\n\tFlexItem,\n\tToggleControl,\n} from '@wordpress/components';\nimport { moreVertical } from '@wordpress/icons';\nimport { useState, useEffect } from '@wordpress/element';\nimport type {\n\tTypographyPreset,\n\tFluidTypographySettings,\n\tFontSize,\n\tFluidTypographyConfig,\n} from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { ScreenHeader } from '../screen-header';\nimport FontSizePreview from './font-size-preview';\nimport ConfirmDeleteFontSizeDialog from './confirm-delete-font-size-dialog';\nimport RenameFontSizeDialog from './rename-font-size-dialog';\nimport { SizeControl } from '../size-control';\nimport { useSetting } from '../hooks';\nimport { unlock } from '../lock-unlock';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\nfunction FontSize() {\n\tconst [ isDeleteConfirmOpen, setIsDeleteConfirmOpen ] = useState( false );\n\tconst [ isRenameDialogOpen, setIsRenameDialogOpen ] = useState( false );\n\n\tconst {\n\t\tparams: { origin, slug },\n\t\tgoBack,\n\t} = useNavigator();\n\n\tconst [ fontSizes, setFontSizes ] = useSetting<\n\t\tRecord< string, TypographyPreset[] > | undefined\n\t>( 'typography.fontSizes' );\n\tconst [ globalFluid ] = useSetting<\n\t\tboolean | FluidTypographySettings | undefined\n\t>( 'typography.fluid' );\n\n\t// Get the font sizes from the origin, default to empty array.\n\tconst sizes = fontSizes?.[ origin as string ] ?? [];\n\n\t// Get the font size by slug.\n\tconst fontSize: FontSize | undefined = sizes.find(\n\t\t( size ) => size.slug === slug\n\t);\n\n\t// Navigate to the font sizes list if the font size is not available.\n\tuseEffect( () => {\n\t\tif ( !! slug && ! fontSize ) {\n\t\t\tgoBack();\n\t\t}\n\t}, [ slug, fontSize, goBack ] );\n\n\tif ( ! origin || ! slug || ! fontSize ) {\n\t\treturn null;\n\t}\n\n\t// Whether the font size is fluid. If not defined, use the global fluid value of the theme.\n\tconst isFluid =\n\t\tfontSize?.fluid !== undefined ? !! fontSize.fluid : !! globalFluid;\n\n\t// Whether custom fluid values are used.\n\tconst isCustomFluid = typeof fontSize?.fluid === 'object';\n\n\tconst handleNameChange = ( value: string ) => {\n\t\tupdateFontSize( 'name', value );\n\t};\n\n\tconst handleFontSizeChange = ( value: string | undefined ) => {\n\t\tupdateFontSize( 'size', value );\n\t};\n\n\tconst handleFluidChange = ( value: boolean ) => {\n\t\tupdateFontSize( 'fluid', value );\n\t};\n\n\tconst handleCustomFluidValues = ( value: boolean ) => {\n\t\tif ( value ) {\n\t\t\t// If custom values are used, init the values with the current ones.\n\t\t\tupdateFontSize( 'fluid', {\n\t\t\t\tmin: fontSize.size,\n\t\t\t\tmax: fontSize.size,\n\t\t\t} );\n\t\t} else {\n\t\t\t// If custom fluid values are disabled, set fluid to true.\n\t\t\tupdateFontSize( 'fluid', true );\n\t\t}\n\t};\n\n\tconst handleMinChange = ( value: string | undefined ) => {\n\t\tconst fluid: FluidTypographyConfig =\n\t\t\ttypeof fontSize.fluid === 'object' ? fontSize.fluid : {};\n\t\tupdateFontSize( 'fluid', { ...fluid, min: value } );\n\t};\n\n\tconst handleMaxChange = ( value: string | undefined ) => {\n\t\tconst fluid: FluidTypographyConfig =\n\t\t\ttypeof fontSize.fluid === 'object' ? fontSize.fluid : {};\n\t\tupdateFontSize( 'fluid', { ...fluid, max: value } );\n\t};\n\n\tconst updateFontSize = ( key: string, value: any ) => {\n\t\tconst newFontSizes = sizes.map( ( size ) => {\n\t\t\tif ( size.slug === slug ) {\n\t\t\t\treturn { ...size, [ key ]: value }; // Create a new object with updated key\n\t\t\t}\n\t\t\treturn size;\n\t\t} );\n\n\t\tsetFontSizes( {\n\t\t\t...fontSizes,\n\t\t\t[ origin as string ]: newFontSizes,\n\t\t} );\n\t};\n\n\tconst handleRemoveFontSize = () => {\n\t\tconst newFontSizes = sizes.filter( ( size ) => size.slug !== slug );\n\t\tsetFontSizes( {\n\t\t\t...fontSizes,\n\t\t\t[ origin as string ]: newFontSizes,\n\t\t} );\n\t};\n\n\tconst toggleDeleteConfirm = () => {\n\t\tsetIsDeleteConfirmOpen( ! isDeleteConfirmOpen );\n\t};\n\n\tconst toggleRenameDialog = () => {\n\t\tsetIsRenameDialogOpen( ! isRenameDialogOpen );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<ConfirmDeleteFontSizeDialog\n\t\t\t\tfontSize={ fontSize }\n\t\t\t\tisOpen={ isDeleteConfirmOpen }\n\t\t\t\ttoggleOpen={ toggleDeleteConfirm }\n\t\t\t\thandleRemoveFontSize={ handleRemoveFontSize }\n\t\t\t/>\n\n\t\t\t{ isRenameDialogOpen && (\n\t\t\t\t<RenameFontSizeDialog\n\t\t\t\t\tfontSize={ fontSize }\n\t\t\t\t\ttoggleOpen={ toggleRenameDialog }\n\t\t\t\t\thandleRename={ handleNameChange }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t<HStack justify=\"space-between\" alignment=\"flex-start\">\n\t\t\t\t\t<ScreenHeader\n\t\t\t\t\t\ttitle={ fontSize.name }\n\t\t\t\t\t\tdescription={ sprintf(\n\t\t\t\t\t\t\t/* translators: %s: font size preset name. */\n\t\t\t\t\t\t\t__( 'Manage the font size %s.' ),\n\t\t\t\t\t\t\tfontSize.name\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ origin === 'custom' && (\n\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t<Spacer\n\t\t\t\t\t\t\t\tmarginTop={ 3 }\n\t\t\t\t\t\t\t\tmarginBottom={ 0 }\n\t\t\t\t\t\t\t\tpaddingX={ 4 }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Menu>\n\t\t\t\t\t\t\t\t\t<Menu.TriggerButton\n\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Font size options'\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<Menu.Popover>\n\t\t\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\t\t\tonClick={ toggleRenameDialog }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t{ __( 'Rename' ) }\n\t\t\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\t\t\tonClick={ toggleDeleteConfirm }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t\t\t</Menu.Popover>\n\t\t\t\t\t\t\t\t</Menu>\n\t\t\t\t\t\t\t</Spacer>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t) }\n\t\t\t\t</HStack>\n\n\t\t\t\t<View>\n\t\t\t\t\t<Spacer\n\t\t\t\t\t\tpaddingX={ 4 }\n\t\t\t\t\t\tmarginBottom={ 0 }\n\t\t\t\t\t\tpaddingBottom={ 6 }\n\t\t\t\t\t>\n\t\t\t\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t<FontSizePreview fontSize={ fontSize } />\n\t\t\t\t\t\t\t</FlexItem>\n\n\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Size' ) }\n\t\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t\t! isCustomFluid && fontSize.size\n\t\t\t\t\t\t\t\t\t\t? String( fontSize.size )\n\t\t\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonChange={ handleFontSizeChange }\n\t\t\t\t\t\t\t\tdisabled={ isCustomFluid }\n\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Fluid typography' ) }\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Scale the font size dynamically to fit the screen or viewport.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tchecked={ isFluid }\n\t\t\t\t\t\t\t\tonChange={ handleFluidChange }\n\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t{ isFluid && (\n\t\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Custom fluid values' ) }\n\t\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t\t'Set custom min and max values for the fluid font size.'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\tchecked={ isCustomFluid }\n\t\t\t\t\t\t\t\t\tonChange={ handleCustomFluidValues }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t\t{ isCustomFluid && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Minimum' ) }\n\t\t\t\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t\t\t\ttypeof fontSize?.fluid === 'object'\n\t\t\t\t\t\t\t\t\t\t\t\t? fontSize.fluid?.min\n\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonChange={ handleMinChange }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Maximum' ) }\n\t\t\t\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t\t\t\ttypeof fontSize?.fluid === 'object'\n\t\t\t\t\t\t\t\t\t\t\t\t? fontSize.fluid?.max\n\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonChange={ handleMaxChange }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</VStack>\n\t\t\t\t\t</Spacer>\n\t\t\t\t</View>\n\t\t\t</VStack>\n\t\t</>\n\t);\n}\n\nexport default FontSize;\n", "/**\n * WordPress dependencies\n */\n// @ts-expect-error: Not typed yet.\nimport { getComputedFluidTypographyValue } from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport type { FontSize } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { useStyle } from '../hooks';\n\ninterface FontSizePreviewProps {\n\tfontSize: FontSize;\n}\n\nfunction FontSizePreview( { fontSize }: FontSizePreviewProps ) {\n\tconst [ font ] = useStyle< { fontFamily?: string } >( 'typography' );\n\n\tconst input =\n\t\ttypeof fontSize?.fluid === 'object' &&\n\t\tfontSize?.fluid?.min &&\n\t\tfontSize?.fluid?.max\n\t\t\t? {\n\t\t\t\t\tminimumFontSize: fontSize.fluid.min,\n\t\t\t\t\tmaximumFontSize: fontSize.fluid.max,\n\t\t\t  }\n\t\t\t: {\n\t\t\t\t\tfontSize: fontSize.size,\n\t\t\t  };\n\n\tconst computedFontSize = getComputedFluidTypographyValue( input );\n\treturn (\n\t\t<div\n\t\t\tclassName=\"global-styles-ui-typography-preview\"\n\t\t\tstyle={ {\n\t\t\t\tfontSize: computedFontSize,\n\t\t\t\tfontFamily: font?.fontFamily ?? 'serif',\n\t\t\t} }\n\t\t>\n\t\t\t{ __( 'Aa' ) }\n\t\t</div>\n\t);\n}\n\nexport default FontSizePreview;\n", "/**\n * WordPress dependencies\n */\nimport { __experimentalConfirmDialog as ConfirmDialog } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport type { FontSize } from '@wordpress/global-styles-engine';\n\ninterface ConfirmDeleteFontSizeDialogProps {\n\tfontSize: FontSize;\n\tisOpen: boolean;\n\ttoggleOpen: () => void;\n\thandleRemoveFontSize: ( fontSize: FontSize ) => void;\n}\n\nfunction ConfirmDeleteFontSizeDialog( {\n\tfontSize,\n\tisOpen,\n\ttoggleOpen,\n\thandleRemoveFontSize,\n}: ConfirmDeleteFontSizeDialogProps ) {\n\tconst handleConfirm = async () => {\n\t\ttoggleOpen();\n\t\thandleRemoveFontSize( fontSize );\n\t};\n\n\tconst handleCancel = () => {\n\t\ttoggleOpen();\n\t};\n\n\treturn (\n\t\t<ConfirmDialog\n\t\t\tisOpen={ isOpen }\n\t\t\tcancelButtonText={ __( 'Cancel' ) }\n\t\t\tconfirmButtonText={ __( 'Delete' ) }\n\t\t\tonCancel={ handleCancel }\n\t\t\tonConfirm={ handleConfirm }\n\t\t\tsize=\"medium\"\n\t\t>\n\t\t\t{ fontSize &&\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: Name of the font size preset. */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Are you sure you want to delete \"%s\" font size preset?'\n\t\t\t\t\t),\n\t\t\t\t\tfontSize.name\n\t\t\t\t) }\n\t\t</ConfirmDialog>\n\t);\n}\n\nexport default ConfirmDeleteFontSizeDialog;\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalInputControl as InputControl,\n\t__experimentalVStack as VStack,\n\t__experimentalHStack as HStack,\n\tButton,\n\tModal,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport type { FontSize } from '@wordpress/global-styles-engine';\n\ninterface RenameFontSizeDialogProps {\n\tfontSize: FontSize;\n\ttoggleOpen: () => void;\n\thandleRename: ( newName: string ) => void;\n}\n\nfunction RenameFontSizeDialog( {\n\tfontSize,\n\ttoggleOpen,\n\thandleRename,\n}: RenameFontSizeDialogProps ) {\n\tconst [ newName, setNewName ] = useState< string | undefined >(\n\t\tfontSize.name\n\t);\n\n\tconst handleConfirm = () => {\n\t\t// If the new name is not empty, call the handleRename function\n\t\tif ( newName && newName.trim() ) {\n\t\t\thandleRename( newName );\n\t\t}\n\t\ttoggleOpen();\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\tonRequestClose={ toggleOpen }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\ttitle={ __( 'Rename' ) }\n\t\t\tsize=\"small\"\n\t\t>\n\t\t\t<form\n\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\thandleConfirm();\n\t\t\t\t\ttoggleOpen();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<VStack spacing=\"3\">\n\t\t\t\t\t<InputControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\tvalue={ newName }\n\t\t\t\t\t\tonChange={ setNewName }\n\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\tplaceholder={ __( 'Font size preset name' ) }\n\t\t\t\t\t/>\n\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ toggleOpen }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</VStack>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n\nexport default RenameFontSizeDialog;\n", "/**\n * WordPress dependencies\n */\nimport {\n\tBaseControl,\n\tRangeControl,\n\tFlex,\n\tFlexItem,\n\tuseBaseControlProps,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalSpacer as Spacer,\n} from '@wordpress/components';\n\nconst DEFAULT_UNITS = [ 'px', 'em', 'rem', 'vw', 'vh' ];\n\ninterface SizeControlProps {\n\tvalue?: string;\n\tonChange?: ( value: string | undefined ) => void;\n\tfallbackValue?: number;\n\tdisabled?: boolean;\n\tlabel?: string;\n}\n\nfunction SizeControl( props: SizeControlProps ) {\n\tconst { baseControlProps } = useBaseControlProps( props );\n\tconst { value, onChange, fallbackValue, disabled, label } = props;\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: DEFAULT_UNITS,\n\t} );\n\n\tconst [ valueQuantity, valueUnit = 'px' ] =\n\t\tparseQuantityAndUnitFromRawValue( value, units );\n\n\tconst isValueUnitRelative =\n\t\t!! valueUnit && [ 'em', 'rem', 'vw', 'vh' ].includes( valueUnit );\n\n\t// Receives the new value from the UnitControl component as a string containing the value and unit.\n\tconst handleUnitControlChange = ( newValue: string | undefined ) => {\n\t\tonChange?.( newValue );\n\t};\n\n\t// Receives the new value from the RangeControl component as a number.\n\tconst handleRangeControlChange = ( newValue: number | undefined ) => {\n\t\tif ( newValue !== undefined ) {\n\t\t\tonChange?.( newValue + valueUnit );\n\t\t} else {\n\t\t\tonChange?.( undefined );\n\t\t}\n\t};\n\n\treturn (\n\t\t<BaseControl { ...baseControlProps }>\n\t\t\t<Flex>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ handleUnitControlChange }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<Spacer marginX={ 2 } marginBottom={ 0 }>\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\tvalue={ valueQuantity }\n\t\t\t\t\t\t\tinitialPosition={ fallbackValue }\n\t\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\t\tonChange={ handleRangeControlChange }\n\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\tmax={ isValueUnitRelative ? 10 : 100 }\n\t\t\t\t\t\t\tstep={ isValueUnitRelative ? 0.1 : 1 }\n\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Spacer>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t</BaseControl>\n\t);\n}\n\nexport { SizeControl };\n", "/**\n * WordPress dependencies\n */\nimport type { GlobalStylesConfig } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { GlobalStylesProvider } from './provider';\n\ninterface GlobalStylesProviderProps {\n\tvalue: GlobalStylesConfig;\n\tbaseValue: GlobalStylesConfig;\n\tonChange: ( config: GlobalStylesConfig ) => void;\n}\n\n/**\n * Higher-order component that wraps a component with GlobalStylesProvider.\n * This allows components to access GlobalStylesContext without exposing\n * the provider directly in the public API.\n *\n * @param Component - The component to wrap\n * @return A wrapped component that accepts value, baseValue, and onChange props\n */\nexport function withGlobalStylesProvider< P extends object >(\n\tComponent: React.ComponentType< P >\n) {\n\treturn function WrappedComponent( {\n\t\tvalue,\n\t\tbaseValue,\n\t\tonChange,\n\t\t...props\n\t}: P & GlobalStylesProviderProps ) {\n\t\treturn (\n\t\t\t<GlobalStylesProvider\n\t\t\t\tvalue={ value }\n\t\t\t\tbaseValue={ baseValue }\n\t\t\t\tonChange={ onChange }\n\t\t\t>\n\t\t\t\t<Component { ...( props as P ) } />\n\t\t\t</GlobalStylesProvider>\n\t\t);\n\t};\n}\n", "/**\n * WordPress dependencies\n */\nimport type { GlobalStylesConfig } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport StyleVariationsContainer from './style-variations-container';\nimport { withGlobalStylesProvider } from './with-global-styles-provider';\n\nexport interface StyleVariationsProps {\n\tvalue: GlobalStylesConfig;\n\tbaseValue: GlobalStylesConfig;\n\tonChange: ( config: GlobalStylesConfig ) => void;\n\tgap?: number;\n}\n\n/**\n * Render Style Variations.\n *\n * @example\n * ```tsx\n * <StyleVariations\n *   value={userConfig}\n *   baseValue={baseConfig}\n *   onChange={setUserConfig}\n *   gap={3}\n * />\n * ```\n */\nexport const StyleVariations: React.ComponentType< StyleVariationsProps > =\n\twithGlobalStylesProvider( StyleVariationsContainer );\n", "/**\n * WordPress dependencies\n */\nimport type { GlobalStylesConfig } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport ColorVariationsInternal from './variations/variations-color';\nimport { withGlobalStylesProvider } from './with-global-styles-provider';\n\nexport interface ColorVariationsProps {\n\tvalue: GlobalStylesConfig;\n\tbaseValue: GlobalStylesConfig;\n\tonChange: ( config: GlobalStylesConfig ) => void;\n\ttitle?: string;\n\tgap?: number;\n}\n\n/**\n * Render Global Styles Color Variations.\n *\n * @example\n * ```tsx\n * <ColorVariations\n *   value={userConfig}\n *   baseValue={baseConfig}\n *   onChange={setUserConfig}\n *   title=\"Palettes\"\n *   gap={3}\n * />\n * ```\n */\nexport const ColorVariations: React.ComponentType< ColorVariationsProps > =\n\twithGlobalStylesProvider( ColorVariationsInternal );\n", "/**\n * WordPress dependencies\n */\nimport type { GlobalStylesConfig } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport TypographyVariationsInternal from './variations/variations-typography';\nimport { withGlobalStylesProvider } from './with-global-styles-provider';\n\nexport interface TypographyVariationsProps {\n\tvalue: GlobalStylesConfig;\n\tbaseValue: GlobalStylesConfig;\n\tonChange: ( config: GlobalStylesConfig ) => void;\n\ttitle?: string;\n\tgap?: number;\n}\n\n/**\n * Render Typography Variations.\n *\n * @example\n * ```tsx\n * <TypographyVariations\n *   value={userConfig}\n *   baseValue={baseConfig}\n *   onChange={setUserConfig}\n *   title=\"Typography\"\n *   gap={3}\n * />\n * ```\n */\nexport const TypographyVariations: React.ComponentType< TypographyVariationsProps > =\n\twithGlobalStylesProvider( TypographyVariationsInternal );\n", "/**\n * WordPress dependencies\n */\n\n/**\n * Internal dependencies\n */\nimport { GlobalStylesProvider } from '../provider';\nimport FontLibraryProvider from './context';\nimport InstalledFonts from './installed-fonts';\nimport UploadFonts from './upload-fonts';\nimport FontCollection from './font-collection';\n\ninterface FontLibraryProps {\n\tvalue: any;\n\tbaseValue: any;\n\tonChange: ( value: any ) => void;\n\tactiveTab?: string;\n\tonTabChange?: ( tab: string ) => void;\n}\n\nexport function FontLibrary( {\n\tvalue,\n\tbaseValue,\n\tonChange,\n\tactiveTab = 'installed-fonts',\n}: FontLibraryProps ) {\n\tlet content;\n\tswitch ( activeTab ) {\n\t\tcase 'upload-fonts':\n\t\t\tcontent = <UploadFonts />;\n\t\t\tbreak;\n\t\tcase 'installed-fonts':\n\t\t\tcontent = <InstalledFonts />;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tcontent = <FontCollection slug={ activeTab } />;\n\t}\n\n\treturn (\n\t\t<GlobalStylesProvider\n\t\t\tvalue={ value }\n\t\t\tbaseValue={ baseValue }\n\t\t\tonChange={ onChange }\n\t\t>\n\t\t\t<FontLibraryProvider>{ content }</FontLibraryProvider>\n\t\t</GlobalStylesProvider>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { _n, sprintf } from '@wordpress/i18n';\nimport { addQueryArgs } from '@wordpress/url';\nimport { __experimentalItemGroup as ItemGroup } from '@wordpress/components';\nimport { backup } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport SidebarNavigationItem from '../sidebar-navigation-item';\n\nexport default function SidebarNavigationScreenDetailsFooter( {\n\trecord,\n\trevisionsCount,\n\t...otherProps\n} ) {\n\t/*\n\t * There might be other items in the future,\n\t * but for now it's just modified date.\n\t * Later we might render a list of items and isolate\n\t * the following logic.\n\t */\n\tconst hrefProps = {};\n\tconst lastRevisionId =\n\t\trecord?._links?.[ 'predecessor-version' ]?.[ 0 ]?.id ?? null;\n\n\t// Use incoming prop first, then the record's version history, if available.\n\trevisionsCount =\n\t\trevisionsCount ||\n\t\trecord?._links?.[ 'version-history' ]?.[ 0 ]?.count ||\n\t\t0;\n\n\t/*\n\t * Enable the revisions link if there is a last revision and there is more than one revision.\n\t * This link is used for theme assets, e.g., templates, which have no database record until they're edited.\n\t * For these files there's only a \"revision\" after they're edited twice,\n\t * which means the revision.php page won't display a proper diff.\n\t * See: https://github.com/WordPress/gutenberg/issues/49164.\n\t */\n\tif ( lastRevisionId && revisionsCount > 1 ) {\n\t\threfProps.href = addQueryArgs( 'revision.php', {\n\t\t\trevision: record?._links[ 'predecessor-version' ][ 0 ].id,\n\t\t} );\n\t\threfProps.as = 'a';\n\t}\n\treturn (\n\t\t<ItemGroup\n\t\t\tsize=\"large\"\n\t\t\tclassName=\"edit-site-sidebar-navigation-screen-details-footer\"\n\t\t>\n\t\t\t<SidebarNavigationItem\n\t\t\t\ticon={ backup }\n\t\t\t\t{ ...hrefProps }\n\t\t\t\t{ ...otherProps }\n\t\t\t>\n\t\t\t\t{ sprintf(\n\t\t\t\t\t/* translators: %d: Number of Styles revisions. */\n\t\t\t\t\t_n( '%d Revision', '%d Revisions', revisionsCount ),\n\t\t\t\t\trevisionsCount\n\t\t\t\t) }\n\t\t\t</SidebarNavigationItem>\n\t\t</ItemGroup>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Notice, __experimentalSpacer as Spacer } from '@wordpress/components';\n\nexport default function SidebarNavigationScreenUnsupported() {\n\treturn (\n\t\t<Spacer padding={ 3 }>\n\t\t\t<Notice status=\"warning\" isDismissible={ false }>\n\t\t\t\t{ __(\n\t\t\t\t\t'The theme you are currently using does not support this screen.'\n\t\t\t\t) }\n\t\t\t</Notice>\n\t\t</Spacer>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { Button, __unstableMotion as motion } from '@wordpress/components';\nimport { useInstanceId, useReducedMotion } from '@wordpress/compose';\nimport {\n\tEditorKeyboardShortcutsRegister,\n\tprivateApis as editorPrivateApis,\n} from '@wordpress/editor';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport { privateApis as blockLibraryPrivateApis } from '@wordpress/block-library';\nimport { useCallback } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { Icon, arrowUpLeft } from '@wordpress/icons';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport WelcomeGuide from '../welcome-guide';\nimport CanvasLoader from '../canvas-loader';\nimport { unlock } from '../../lock-unlock';\nimport { useSpecificEditorSettings } from '../block-editor/use-site-editor-settings';\nimport PluginTemplateSettingPanel from '../plugin-template-setting-panel';\nimport { isPreviewingTheme } from '../../utils/is-previewing-theme';\nimport SaveButton from '../save-button';\nimport SavePanel from '../save-panel';\nimport SiteEditorMoreMenu from '../more-menu';\nimport SiteIcon from '../site-icon';\nimport useEditorIframeProps from '../block-editor/use-editor-iframe-props';\nimport useEditorTitle from './use-editor-title';\nimport { useIsSiteEditorLoading } from '../layout/hooks';\nimport { useAdaptEditorToCanvas } from './use-adapt-editor-to-canvas';\nimport {\n\tuseResolveEditedEntity,\n\tuseSyncDeprecatedEntityIntoState,\n} from './use-resolve-edited-entity';\nimport SitePreview from './site-preview';\n\nconst { Editor, BackButton } = unlock( editorPrivateApis );\nconst { useHistory, useLocation } = unlock( routerPrivateApis );\nconst { BlockKeyboardShortcuts } = unlock( blockLibraryPrivateApis );\n\nconst toggleHomeIconVariants = {\n\tedit: {\n\t\topacity: 0,\n\t\tscale: 0.2,\n\t},\n\thover: {\n\t\topacity: 1,\n\t\tscale: 1,\n\t\tclipPath: 'inset( 22% round 2px )',\n\t},\n};\n\nconst siteIconVariants = {\n\tedit: {\n\t\tclipPath: 'inset(0% round 0px)',\n\t},\n\thover: {\n\t\tclipPath: 'inset( 22% round 2px )',\n\t},\n\ttap: {\n\t\tclipPath: 'inset(0% round 0px)',\n\t},\n};\n\nfunction getListPathForPostType( postType ) {\n\tswitch ( postType ) {\n\t\tcase 'navigation':\n\t\t\treturn '/navigation';\n\t\tcase 'wp_block':\n\t\t\treturn '/pattern?postType=wp_block';\n\t\tcase 'wp_template_part':\n\t\t\treturn '/pattern?postType=wp_template_part';\n\t\tcase 'wp_template':\n\t\t\treturn '/template';\n\t\tcase 'page':\n\t\t\treturn '/page';\n\t\tcase 'post':\n\t\t\treturn '/';\n\t}\n\tthrow 'Unknown post type';\n}\n\nfunction getNavigationPath( location, postType ) {\n\tconst { path, name } = location;\n\tif (\n\t\t[\n\t\t\t'pattern-item',\n\t\t\t'template-part-item',\n\t\t\t'page-item',\n\t\t\t'template-item',\n\t\t\t'static-template-item',\n\t\t\t'post-item',\n\t\t].includes( name )\n\t) {\n\t\treturn getListPathForPostType( postType );\n\t}\n\treturn addQueryArgs( path, { canvas: undefined } );\n}\n\nexport default function EditSiteEditor( { isHomeRoute = false } ) {\n\tconst disableMotion = useReducedMotion();\n\tconst location = useLocation();\n\tconst { canvas = 'view' } = location.query;\n\tconst isLoading = useIsSiteEditorLoading();\n\tuseAdaptEditorToCanvas( canvas );\n\tconst entity = useResolveEditedEntity();\n\t// deprecated sync state with url\n\tuseSyncDeprecatedEntityIntoState( entity );\n\tconst { postType, postId, context } = entity;\n\tconst { isBlockBasedTheme, hasSiteIcon } = useSelect( ( select ) => {\n\t\tconst { getCurrentTheme, getEntityRecord } = select( coreDataStore );\n\t\tconst siteData = getEntityRecord( 'root', '__unstableBase', undefined );\n\n\t\treturn {\n\t\t\tisBlockBasedTheme: getCurrentTheme()?.is_block_theme,\n\t\t\thasSiteIcon: !! siteData?.site_icon_url,\n\t\t};\n\t}, [] );\n\tconst postWithTemplate = !! context?.postId;\n\tuseEditorTitle(\n\t\tpostWithTemplate ? context.postType : postType,\n\t\tpostWithTemplate ? context.postId : postId\n\t);\n\tconst _isPreviewingTheme = isPreviewingTheme();\n\tconst iframeProps = useEditorIframeProps();\n\tconst isEditMode = canvas === 'edit';\n\tconst loadingProgressId = useInstanceId(\n\t\tCanvasLoader,\n\t\t'edit-site-editor__loading-progress'\n\t);\n\n\tconst settings = useSpecificEditorSettings();\n\tconst { initialBlockSelection, ...editorSettings } = settings;\n\tconst { resetZoomLevel } = unlock( useDispatch( blockEditorStore ) );\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst history = useHistory();\n\tconst onActionPerformed = useCallback(\n\t\t( actionId, items ) => {\n\t\t\tswitch ( actionId ) {\n\t\t\t\tcase 'move-to-trash':\n\t\t\t\tcase 'delete-post':\n\t\t\t\t\t{\n\t\t\t\t\t\thistory.navigate(\n\t\t\t\t\t\t\tgetListPathForPostType(\n\t\t\t\t\t\t\t\tpostWithTemplate ? context.postType : postType\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'duplicate-post':\n\t\t\t\t\t{\n\t\t\t\t\t\tconst newItem = items[ 0 ];\n\t\t\t\t\t\tconst _title =\n\t\t\t\t\t\t\ttypeof newItem.title === 'string'\n\t\t\t\t\t\t\t\t? newItem.title\n\t\t\t\t\t\t\t\t: newItem.title?.rendered;\n\t\t\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Title of the created post or template, e.g: \"Hello world\".\n\t\t\t\t\t\t\t\t__( '\"%s\" successfully created.' ),\n\t\t\t\t\t\t\t\tdecodeEntities( _title ) || __( '(no title)' )\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\t\tid: 'duplicate-post-action',\n\t\t\t\t\t\t\t\tactions: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tlabel: __( 'Edit' ),\n\t\t\t\t\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\t\t\t\t\thistory.navigate(\n\t\t\t\t\t\t\t\t\t\t\t\t`/${ newItem.type }/${ newItem.id }?canvas=edit`\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tpostType,\n\t\t\tcontext?.postType,\n\t\t\tpostWithTemplate,\n\t\t\thistory,\n\t\t\tcreateSuccessNotice,\n\t\t]\n\t);\n\n\tconst isReady = ! isLoading;\n\tconst transition = {\n\t\tduration: disableMotion ? 0 : 0.2,\n\t};\n\n\treturn ! isBlockBasedTheme && isHomeRoute ? (\n\t\t<SitePreview />\n\t) : (\n\t\t<>\n\t\t\t<EditorKeyboardShortcutsRegister />\n\t\t\t{ isEditMode && <BlockKeyboardShortcuts /> }\n\t\t\t{ ! isReady ? <CanvasLoader id={ loadingProgressId } /> : null }\n\t\t\t{ isEditMode && (\n\t\t\t\t<WelcomeGuide\n\t\t\t\t\tpostType={ postWithTemplate ? context.postType : postType }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isReady && (\n\t\t\t\t<Editor\n\t\t\t\t\tpostType={ postWithTemplate ? context.postType : postType }\n\t\t\t\t\tpostId={ postWithTemplate ? context.postId : postId }\n\t\t\t\t\ttemplateId={ postWithTemplate ? postId : undefined }\n\t\t\t\t\tsettings={ editorSettings }\n\t\t\t\t\tinitialSelection={ initialBlockSelection }\n\t\t\t\t\tclassName=\"edit-site-editor__editor-interface\"\n\t\t\t\t\tcustomSaveButton={\n\t\t\t\t\t\t_isPreviewingTheme && <SaveButton size=\"compact\" />\n\t\t\t\t\t}\n\t\t\t\t\tcustomSavePanel={ _isPreviewingTheme && <SavePanel /> }\n\t\t\t\t\tiframeProps={ iframeProps }\n\t\t\t\t\tonActionPerformed={ onActionPerformed }\n\t\t\t\t\textraSidebarPanels={\n\t\t\t\t\t\t! postWithTemplate && (\n\t\t\t\t\t\t\t<PluginTemplateSettingPanel.Slot />\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ isEditMode && (\n\t\t\t\t\t\t<BackButton>\n\t\t\t\t\t\t\t{ ( { length } ) =>\n\t\t\t\t\t\t\t\tlength <= 1 && (\n\t\t\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\t\t\tclassName=\"edit-site-editor__view-mode-toggle\"\n\t\t\t\t\t\t\t\t\t\ttransition={ transition }\n\t\t\t\t\t\t\t\t\t\tanimate=\"edit\"\n\t\t\t\t\t\t\t\t\t\tinitial=\"edit\"\n\t\t\t\t\t\t\t\t\t\twhileHover=\"hover\"\n\t\t\t\t\t\t\t\t\t\twhileTap=\"tap\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Open Navigation' ) }\n\t\t\t\t\t\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"middle right\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tresetZoomLevel();\n\t\t\t\t\t\t\t\t\t\t\t\thistory.navigate(\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetNavigationPath(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlocation,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpostWithTemplate\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? context.postType\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: postType\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttransition:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'canvas-mode-view-transition',\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\t\t\t\t\tvariants={ siteIconVariants }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<SiteIcon className=\"edit-site-editor__view-mode-toggle-icon\" />\n\t\t\t\t\t\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t\t\t\t'edit-site-editor__back-icon',\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t'has-site-icon':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thasSiteIcon,\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\tvariants={ toggleHomeIconVariants }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Icon icon={ arrowUpLeft } />\n\t\t\t\t\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</BackButton>\n\t\t\t\t\t) }\n\t\t\t\t\t<SiteEditorMoreMenu />\n\t\t\t\t</Editor>\n\t\t\t) }\n\t\t</>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { Guide } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { createInterpolateElement } from '@wordpress/element';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport WelcomeGuideImage from './image';\n\nexport default function WelcomeGuideEditor() {\n\tconst { toggle } = useDispatch( preferencesStore );\n\n\tconst { isActive, isBlockBasedTheme } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tisActive: !! select( preferencesStore ).get(\n\t\t\t\t'core/edit-site',\n\t\t\t\t'welcomeGuide'\n\t\t\t),\n\t\t\tisBlockBasedTheme:\n\t\t\t\tselect( coreStore ).getCurrentTheme()?.is_block_theme,\n\t\t};\n\t}, [] );\n\n\tif ( ! isActive || ! isBlockBasedTheme ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Guide\n\t\t\tclassName=\"edit-site-welcome-guide guide-editor\"\n\t\t\tcontentLabel={ __( 'Welcome to the site editor' ) }\n\t\t\tfinishButtonText={ __( 'Get started' ) }\n\t\t\tonFinish={ () => toggle( 'core/edit-site', 'welcomeGuide' ) }\n\t\t\tpages={ [\n\t\t\t\t{\n\t\t\t\t\timage: (\n\t\t\t\t\t\t<WelcomeGuideImage\n\t\t\t\t\t\t\tnonAnimatedSrc=\"https://s.w.org/images/block-editor/edit-your-site.svg?1\"\n\t\t\t\t\t\t\tanimatedSrc=\"https://s.w.org/images/block-editor/edit-your-site.gif?1\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t),\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"edit-site-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ __( 'Edit your site' ) }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<p className=\"edit-site-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'Design everything on your site \u2014 from the header right down to the footer \u2014 using blocks.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t<p className=\"edit-site-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t'Click <StylesIconImage /> to start designing your blocks, and choose your typography, layout, and colors.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tStylesIconImage: (\n\t\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\t\talt={ __( 'styles' ) }\n\t\t\t\t\t\t\t\t\t\t\t\tsrc=\"data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 4c-4.4 0-8 3.6-8 8v.1c0 4.1 3.2 7.5 7.2 7.9h.8c4.4 0 8-3.6 8-8s-3.6-8-8-8zm0 15V5c3.9 0 7 3.1 7 7s-3.1 7-7 7z' fill='%231E1E1E'/%3E%3C/svg%3E%0A\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t] }\n\t\t/>\n\t);\n}\n", "export default function WelcomeGuideImage( { nonAnimatedSrc, animatedSrc } ) {\n\treturn (\n\t\t<picture className=\"edit-site-welcome-guide__image\">\n\t\t\t<source\n\t\t\t\tsrcSet={ nonAnimatedSrc }\n\t\t\t\tmedia=\"(prefers-reduced-motion: reduce)\"\n\t\t\t/>\n\t\t\t<img src={ animatedSrc } width=\"312\" height=\"240\" alt=\"\" />\n\t\t</picture>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { Guide } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\nexport default function WelcomeGuidePage() {\n\tconst { toggle } = useDispatch( preferencesStore );\n\n\tconst isVisible = useSelect( ( select ) => {\n\t\tconst isPageActive = !! select( preferencesStore ).get(\n\t\t\t'core/edit-site',\n\t\t\t'welcomeGuidePage'\n\t\t);\n\t\tconst isEditorActive = !! select( preferencesStore ).get(\n\t\t\t'core/edit-site',\n\t\t\t'welcomeGuide'\n\t\t);\n\t\treturn isPageActive && ! isEditorActive;\n\t}, [] );\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\tconst heading = __( 'Editing a page' );\n\n\treturn (\n\t\t<Guide\n\t\t\tclassName=\"edit-site-welcome-guide guide-page\"\n\t\t\tcontentLabel={ heading }\n\t\t\tfinishButtonText={ __( 'Continue' ) }\n\t\t\tonFinish={ () => toggle( 'core/edit-site', 'welcomeGuidePage' ) }\n\t\t\tpages={ [\n\t\t\t\t{\n\t\t\t\t\timage: (\n\t\t\t\t\t\t<video\n\t\t\t\t\t\t\tclassName=\"edit-site-welcome-guide__video\"\n\t\t\t\t\t\t\tautoPlay\n\t\t\t\t\t\t\tloop\n\t\t\t\t\t\t\tmuted\n\t\t\t\t\t\t\twidth=\"312\"\n\t\t\t\t\t\t\theight=\"240\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<source\n\t\t\t\t\t\t\t\tsrc=\"https://s.w.org/images/block-editor/editing-your-page.mp4\"\n\t\t\t\t\t\t\t\ttype=\"video/mp4\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</video>\n\t\t\t\t\t),\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"edit-site-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ heading }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<p className=\"edit-site-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax -- 'sidebar' is a common web design term for layouts\n\t\t\t\t\t\t\t\t\t'It\u2019s now possible to edit page content in the site editor. To customise other parts of the page like the header and footer switch to editing the template using the settings sidebar.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t] }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { Guide } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { store as editorStore } from '@wordpress/editor';\n\nexport default function WelcomeGuideTemplate() {\n\tconst { toggle } = useDispatch( preferencesStore );\n\n\tconst { isActive, hasPreviousEntity } = useSelect( ( select ) => {\n\t\tconst { getEditorSettings } = select( editorStore );\n\t\tconst { get } = select( preferencesStore );\n\t\treturn {\n\t\t\tisActive: get( 'core/edit-site', 'welcomeGuideTemplate' ),\n\t\t\thasPreviousEntity:\n\t\t\t\t!! getEditorSettings().onNavigateToPreviousEntityRecord,\n\t\t};\n\t}, [] );\n\tconst isVisible = isActive && hasPreviousEntity;\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\tconst heading = __( 'Editing a template' );\n\n\treturn (\n\t\t<Guide\n\t\t\tclassName=\"edit-site-welcome-guide guide-template\"\n\t\t\tcontentLabel={ heading }\n\t\t\tfinishButtonText={ __( 'Continue' ) }\n\t\t\tonFinish={ () =>\n\t\t\t\ttoggle( 'core/edit-site', 'welcomeGuideTemplate' )\n\t\t\t}\n\t\t\tpages={ [\n\t\t\t\t{\n\t\t\t\t\timage: (\n\t\t\t\t\t\t<video\n\t\t\t\t\t\t\tclassName=\"edit-site-welcome-guide__video\"\n\t\t\t\t\t\t\tautoPlay\n\t\t\t\t\t\t\tloop\n\t\t\t\t\t\t\tmuted\n\t\t\t\t\t\t\twidth=\"312\"\n\t\t\t\t\t\t\theight=\"240\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<source\n\t\t\t\t\t\t\t\tsrc=\"https://s.w.org/images/block-editor/editing-your-template.mp4\"\n\t\t\t\t\t\t\t\ttype=\"video/mp4\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</video>\n\t\t\t\t\t),\n\t\t\t\t\tcontent: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<h1 className=\"edit-site-welcome-guide__heading\">\n\t\t\t\t\t\t\t\t{ heading }\n\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t<p className=\"edit-site-welcome-guide__text\">\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'Note that the same template can be used by multiple pages, so any changes made here may affect other pages on the site. To switch back to editing the page content click the \u2018Back\u2019 button in the toolbar.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t] }\n\t\t/>\n\t);\n}\n", "/**\n * Internal dependencies\n */\nimport WelcomeGuideEditor from './editor';\nimport WelcomeGuidePage from './page';\nimport WelcomeGuideTemplate from './template';\n\nexport default function WelcomeGuide( { postType } ) {\n\treturn (\n\t\t<>\n\t\t\t<WelcomeGuideEditor />\n\t\t\t{ postType === 'page' && <WelcomeGuidePage /> }\n\t\t\t{ postType === 'wp_template' && <WelcomeGuideTemplate /> }\n\t\t</>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as componentsPrivateApis,\n\tProgressBar,\n} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { Theme } = unlock( componentsPrivateApis );\nconst { useStyle } = unlock( editorPrivateApis );\n\nexport default function CanvasLoader( { id } ) {\n\tconst textColor = useStyle( 'color.text' );\n\tconst backgroundColor = useStyle( 'color.background' );\n\tconst { elapsed, total } = useSelect( ( select ) => {\n\t\tconst selectorsByStatus = select( coreStore ).countSelectorsByStatus();\n\t\tconst resolving = selectorsByStatus.resolving ?? 0;\n\t\tconst finished = selectorsByStatus.finished ?? 0;\n\t\treturn {\n\t\t\telapsed: finished,\n\t\t\ttotal: finished + resolving,\n\t\t};\n\t}, [] );\n\n\treturn (\n\t\t<div className=\"edit-site-canvas-loader\">\n\t\t\t<Theme accent={ textColor } background={ backgroundColor }>\n\t\t\t\t<ProgressBar id={ id } max={ total } value={ elapsed } />\n\t\t\t</Theme>\n\t\t</div>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { usePrevious } from '@wordpress/compose';\nimport {\n\tstore as editorStore,\n\tprivateApis as editorPrivateApis,\n} from '@wordpress/editor';\nimport { generateGlobalStyles } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport useNavigateToEntityRecord from './use-navigate-to-entity-record';\nimport { FOCUSABLE_ENTITIES } from '../../utils/constants';\n\nconst { useLocation, useHistory } = unlock( routerPrivateApis );\nconst { useGlobalStyles } = unlock( editorPrivateApis );\n\nfunction useNavigateToPreviousEntityRecord() {\n\tconst location = useLocation();\n\tconst previousCanvas = usePrevious( location.query.canvas );\n\tconst history = useHistory();\n\tconst goBack = useMemo( () => {\n\t\tconst isFocusMode =\n\t\t\tlocation.query.focusMode ||\n\t\t\t( location?.params?.postId &&\n\t\t\t\tFOCUSABLE_ENTITIES.includes( location?.params?.postType ) );\n\t\tconst didComeFromEditorCanvas = previousCanvas === 'edit';\n\t\tconst showBackButton = isFocusMode && didComeFromEditorCanvas;\n\t\treturn showBackButton ? () => history.back() : undefined;\n\t}, [ location, history, previousCanvas ] );\n\treturn goBack;\n}\n\nexport function useSpecificEditorSettings() {\n\tconst { query } = useLocation();\n\tconst { canvas = 'view' } = query;\n\tconst [ onNavigateToEntityRecord, initialBlockSelection ] =\n\t\tuseNavigateToEntityRecord();\n\n\t/*\n\t * Generate global styles directly to avoid circular dependency with GlobalStylesRenderer\n\t * (which runs inside ExperimentalEditorProvider after this hook).\n\t * GlobalStylesRenderer updates editorStore, but reading from it here would cause infinite\n\t * loops. Reading config from useGlobalStyles and generating CSS directly keeps us in sync.\n\t * See: https://github.com/WordPress/gutenberg/issues/73350\n\t */\n\tconst { merged: mergedConfig } = useGlobalStyles();\n\n\tconst { settings, currentPostIsTrashed } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( editSiteStore );\n\t\tconst { getCurrentPostAttribute } = select( editorStore );\n\t\treturn {\n\t\t\tsettings: getSettings(),\n\t\t\tcurrentPostIsTrashed:\n\t\t\t\tgetCurrentPostAttribute( 'status' ) === 'trash',\n\t\t};\n\t}, [] );\n\n\tconst onNavigateToPreviousEntityRecord =\n\t\tuseNavigateToPreviousEntityRecord();\n\n\tconst [ globalStyles, globalSettings ] = useMemo( () => {\n\t\treturn generateGlobalStyles( mergedConfig, [], {\n\t\t\tdisableRootPadding: false,\n\t\t} );\n\t}, [ mergedConfig ] );\n\n\tconst defaultEditorSettings = useMemo( () => {\n\t\t// Preserve non-global styles from settings.styles (e.g., editor styles from add_editor_style)\n\t\tconst nonGlobalStyles = ( settings?.styles ?? [] ).filter(\n\t\t\t( style ) => ! style.isGlobalStyles\n\t\t);\n\n\t\treturn {\n\t\t\t...settings,\n\t\t\tstyles: [\n\t\t\t\t...nonGlobalStyles,\n\t\t\t\t...globalStyles,\n\t\t\t\t{\n\t\t\t\t\t// Forming a \"block formatting context\" to prevent margin collapsing.\n\t\t\t\t\t// @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context\n\t\t\t\t\tcss:\n\t\t\t\t\t\tcanvas === 'view'\n\t\t\t\t\t\t\t? `body{min-height: 100vh; ${\n\t\t\t\t\t\t\t\t\tcurrentPostIsTrashed\n\t\t\t\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t\t\t\t: 'cursor: pointer;'\n\t\t\t\t\t\t\t  }}`\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t},\n\t\t\t],\n\t\t\t__experimentalFeatures: globalSettings,\n\t\t\trichEditingEnabled: true,\n\t\t\tsupportsTemplateMode: true,\n\t\t\tfocusMode: canvas !== 'view',\n\t\t\tonNavigateToEntityRecord,\n\t\t\tonNavigateToPreviousEntityRecord,\n\t\t\tisPreviewMode: canvas === 'view',\n\t\t\tinitialBlockSelection,\n\t\t};\n\t}, [\n\t\tsettings,\n\t\tglobalStyles,\n\t\tglobalSettings,\n\t\tcanvas,\n\t\tcurrentPostIsTrashed,\n\t\tonNavigateToEntityRecord,\n\t\tonNavigateToPreviousEntityRecord,\n\t\tinitialBlockSelection,\n\t] );\n\n\treturn defaultEditorSettings;\n}\n", "/**\n * WordPress dependencies\n */\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { useCallback } from '@wordpress/element';\nimport { addQueryArgs } from '@wordpress/url';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { useHistory, useLocation } = unlock( routerPrivateApis );\nconst { useGenerateBlockPath } = unlock( editorPrivateApis );\n\n/**\n * Hook to handle navigation to entity records and retrieve initial block selection.\n *\n * @return {Array} A tuple containing:\n *   - onNavigateToEntityRecord: Function to navigate to an entity record\n *   - initialBlockSelection: The block path or clientId to restore selection, or null if none stored\n */\nexport default function useNavigateToEntityRecord() {\n\tconst history = useHistory();\n\tconst { query, path } = useLocation();\n\tconst generateBlockPath = useGenerateBlockPath();\n\n\t// Get the selected block from URL parameters and decode the block path\n\tlet initialBlockSelection = null;\n\tif ( query.selectedBlock ) {\n\t\ttry {\n\t\t\tinitialBlockSelection = JSON.parse(\n\t\t\t\tdecodeURIComponent( query.selectedBlock )\n\t\t\t);\n\t\t} catch ( e ) {\n\t\t\t// Invalid JSON, ignore\n\t\t\tinitialBlockSelection = null;\n\t\t}\n\t}\n\n\tconst onNavigateToEntityRecord = useCallback(\n\t\t( params ) => {\n\t\t\t// First, update the current URL to include the selected block path for when we navigate back\n\t\t\tif ( params.selectedBlockClientId ) {\n\t\t\t\tconst blockPath = generateBlockPath(\n\t\t\t\t\tparams.selectedBlockClientId\n\t\t\t\t);\n\t\t\t\tif ( blockPath ) {\n\t\t\t\t\t// Encode the block path as JSON in the URL\n\t\t\t\t\tconst currentUrl = addQueryArgs( path, {\n\t\t\t\t\t\t...query,\n\t\t\t\t\t\tselectedBlock: encodeURIComponent(\n\t\t\t\t\t\t\tJSON.stringify( blockPath )\n\t\t\t\t\t\t),\n\t\t\t\t\t} );\n\t\t\t\t\thistory.navigate( currentUrl, { replace: true } );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Then navigate to the new entity record\n\t\t\tconst url = addQueryArgs(\n\t\t\t\t`/${ params.postType }/${ params.postId }`,\n\t\t\t\t{\n\t\t\t\t\tcanvas: 'edit',\n\t\t\t\t\tfocusMode: true,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\thistory.navigate( url );\n\t\t},\n\t\t[ history, path, query, generateBlockPath ]\n\t);\n\n\treturn [ onNavigateToEntityRecord, initialBlockSelection ];\n}\n", "/**\n * Defines an extensibility slot for the Template sidebar.\n */\n\n/**\n * WordPress dependencies\n */\nimport { store as editorStore } from '@wordpress/editor';\nimport { useSelect } from '@wordpress/data';\nimport { createSlotFill } from '@wordpress/components';\nimport deprecated from '@wordpress/deprecated';\n\nconst { Fill, Slot } = createSlotFill( 'PluginTemplateSettingPanel' );\n\nconst PluginTemplateSettingPanel = ( { children } ) => {\n\tdeprecated( 'wp.editSite.PluginTemplateSettingPanel', {\n\t\tsince: '6.6',\n\t\tversion: '6.8',\n\t\talternative: 'wp.editor.PluginDocumentSettingPanel',\n\t} );\n\tconst isCurrentEntityTemplate = useSelect(\n\t\t( select ) =>\n\t\t\tselect( editorStore ).getCurrentPostType() === 'wp_template',\n\t\t[]\n\t);\n\tif ( ! isCurrentEntityTemplate ) {\n\t\treturn null;\n\t}\n\treturn <Fill>{ children }</Fill>;\n};\n\nPluginTemplateSettingPanel.Slot = Slot;\n\n/**\n * Renders items in the Template Sidebar below the main information\n * like the Template Card.\n *\n * @deprecated since 6.6. Use `wp.editor.PluginDocumentSettingPanel` instead.\n *\n * @example\n * ```jsx\n * // Using ESNext syntax\n * import { PluginTemplateSettingPanel } from '@wordpress/edit-site';\n *\n * const MyTemplateSettingTest = () => (\n * \t\t<PluginTemplateSettingPanel>\n *\t\t\t<p>Hello, World!</p>\n *\t\t</PluginTemplateSettingPanel>\n *\t);\n * ```\n *\n * @return {Component} The component to be rendered.\n */\nexport default PluginTemplateSettingPanel;\n", "/**\n * WordPress dependencies\n */\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport SiteExport from './site-export';\nimport WelcomeGuideMenuItem from './welcome-guide-menu-item';\nimport { unlock } from '../../lock-unlock';\n\nconst { ToolsMoreMenuGroup, PreferencesModal } = unlock( editorPrivateApis );\n\nexport default function MoreMenu() {\n\treturn (\n\t\t<>\n\t\t\t<ToolsMoreMenuGroup>\n\t\t\t\t<SiteExport />\n\t\t\t\t<WelcomeGuideMenuItem />\n\t\t\t</ToolsMoreMenuGroup>\n\t\t\t<PreferencesModal />\n\t\t</>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { MenuItem } from '@wordpress/components';\nimport apiFetch from '@wordpress/api-fetch';\nimport { download } from '@wordpress/icons';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { downloadBlob } from '@wordpress/blob';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as noticesStore } from '@wordpress/notices';\n\nexport default function SiteExport() {\n\tconst canExport = useSelect( ( select ) => {\n\t\tconst targetHints =\n\t\t\tselect( coreStore ).getCurrentTheme()?._links?.[\n\t\t\t\t'wp:export-theme'\n\t\t\t]?.[ 0 ]?.targetHints ?? {};\n\n\t\treturn !! targetHints.allow?.includes( 'GET' );\n\t}, [] );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tif ( ! canExport ) {\n\t\treturn null;\n\t}\n\n\tasync function handleExport() {\n\t\ttry {\n\t\t\tconst response = await apiFetch( {\n\t\t\t\tpath: '/wp-block-editor/v1/export',\n\t\t\t\tparse: false,\n\t\t\t\theaders: {\n\t\t\t\t\tAccept: 'application/zip',\n\t\t\t\t},\n\t\t\t} );\n\t\t\tconst blob = await response.blob();\n\t\t\tconst contentDisposition = response.headers.get(\n\t\t\t\t'content-disposition'\n\t\t\t);\n\t\t\tconst contentDispositionMatches =\n\t\t\t\tcontentDisposition.match( /=(.+)\\.zip/ );\n\t\t\tconst fileName = contentDispositionMatches[ 1 ]\n\t\t\t\t? contentDispositionMatches[ 1 ]\n\t\t\t\t: 'edit-site-export';\n\n\t\t\tdownloadBlob( fileName + '.zip', blob, 'application/zip' );\n\t\t} catch ( errorResponse ) {\n\t\t\tlet error = {};\n\t\t\ttry {\n\t\t\t\terror = await errorResponse.json();\n\t\t\t} catch ( e ) {}\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while creating the site export.' );\n\n\t\t\tcreateErrorNotice( errorMessage, { type: 'snackbar' } );\n\t\t}\n\t}\n\n\treturn (\n\t\t<MenuItem\n\t\t\trole=\"menuitem\"\n\t\t\ticon={ download }\n\t\t\tonClick={ handleExport }\n\t\t\tinfo={ __(\n\t\t\t\t'Download your theme with updated templates and styles.'\n\t\t\t) }\n\t\t>\n\t\t\t{ _x( 'Export', 'site exporter menu item' ) }\n\t\t</MenuItem>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useDispatch } from '@wordpress/data';\nimport { MenuItem } from '@wordpress/components';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\nexport default function WelcomeGuideMenuItem() {\n\tconst { toggle } = useDispatch( preferencesStore );\n\n\treturn (\n\t\t<MenuItem onClick={ () => toggle( 'core/edit-site', 'welcomeGuide' ) }>\n\t\t\t{ __( 'Welcome Guide' ) }\n\t\t</MenuItem>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { ENTER, SPACE } from '@wordpress/keycodes';\nimport { useState, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { store as editorStore } from '@wordpress/editor';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { useLocation, useHistory } = unlock( routerPrivateApis );\n\nexport default function useEditorIframeProps() {\n\tconst { query, path } = useLocation();\n\tconst history = useHistory();\n\tconst { canvas = 'view' } = query;\n\tconst currentPostIsTrashed = useSelect( ( select ) => {\n\t\treturn (\n\t\t\tselect( editorStore ).getCurrentPostAttribute( 'status' ) ===\n\t\t\t'trash'\n\t\t);\n\t}, [] );\n\tconst [ isFocused, setIsFocused ] = useState( false );\n\n\tuseEffect( () => {\n\t\tif ( canvas === 'edit' ) {\n\t\t\tsetIsFocused( false );\n\t\t}\n\t}, [ canvas ] );\n\n\t// In view mode, make the canvas iframe be perceived and behave as a button\n\t// to switch to edit mode, with a meaningful label and no title attribute.\n\tconst viewModeIframeProps = {\n\t\t'aria-label': __( 'Edit' ),\n\t\t'aria-disabled': currentPostIsTrashed,\n\t\ttitle: null,\n\t\trole: 'button',\n\t\ttabIndex: 0,\n\t\tonFocus: () => setIsFocused( true ),\n\t\tonBlur: () => setIsFocused( false ),\n\t\tonKeyDown: ( event ) => {\n\t\t\tconst { keyCode } = event;\n\t\t\tif (\n\t\t\t\t( keyCode === ENTER || keyCode === SPACE ) &&\n\t\t\t\t! currentPostIsTrashed\n\t\t\t) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\thistory.navigate( addQueryArgs( path, { canvas: 'edit' } ), {\n\t\t\t\t\ttransition: 'canvas-mode-edit-transition',\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\tonClick: () =>\n\t\t\thistory.navigate( addQueryArgs( path, { canvas: 'edit' } ), {\n\t\t\t\ttransition: 'canvas-mode-edit-transition',\n\t\t\t} ),\n\t\tonClickCapture: ( event ) => {\n\t\t\tif ( currentPostIsTrashed ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t},\n\t\treadonly: true,\n\t};\n\n\treturn {\n\t\tclassName: clsx( 'edit-site-visual-editor__editor-canvas', {\n\t\t\t'is-focused': isFocused && canvas === 'view',\n\t\t} ),\n\t\t...( canvas === 'view' ? viewModeIframeProps : {} ),\n\t};\n}\n", "/**\n * WordPress dependencies\n */\nimport { _x, sprintf } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport useTitle from '../routes/use-title';\nimport { POST_TYPE_LABELS, TEMPLATE_POST_TYPE } from '../../utils/constants';\nimport { unlock } from '../../lock-unlock';\n\nconst { getTemplateInfo } = unlock( editorPrivateApis );\n\nfunction useEditorTitle( postType, postId ) {\n\tconst { title, isLoaded } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetEditedEntityRecord,\n\t\t\t\tgetCurrentTheme,\n\t\t\t\thasFinishedResolution,\n\t\t\t} = select( coreStore );\n\n\t\t\tif ( ! postId ) {\n\t\t\t\treturn { isLoaded: false };\n\t\t\t}\n\n\t\t\tconst _record = getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId\n\t\t\t);\n\n\t\t\tconst { default_template_types: templateTypes = [] } =\n\t\t\t\tgetCurrentTheme() ?? {};\n\n\t\t\tconst templateInfo = getTemplateInfo( {\n\t\t\t\ttemplate: _record,\n\t\t\t\ttemplateTypes,\n\t\t\t} );\n\n\t\t\tconst _isLoaded = hasFinishedResolution( 'getEditedEntityRecord', [\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId,\n\t\t\t] );\n\n\t\t\treturn {\n\t\t\t\ttitle: templateInfo.title,\n\t\t\t\tisLoaded: _isLoaded,\n\t\t\t};\n\t\t},\n\t\t[ postType, postId ]\n\t);\n\n\tlet editorTitle;\n\tif ( isLoaded ) {\n\t\teditorTitle = sprintf(\n\t\t\t// translators: A breadcrumb trail for the Admin document title. 1: title of template being edited, 2: type of template (Template or Template Part).\n\t\t\t_x( '%1$s \u2039 %2$s', 'breadcrumb trail' ),\n\t\t\tdecodeEntities( title ),\n\t\t\tPOST_TYPE_LABELS[ postType ] ??\n\t\t\t\tPOST_TYPE_LABELS[ TEMPLATE_POST_TYPE ]\n\t\t);\n\t}\n\n\t// Only announce the title once the editor is ready to prevent \"Replace\"\n\t// action in <URLQueryController> from double-announcing.\n\tuseTitle( isLoaded && editorTitle );\n}\n\nexport default useEditorTitle;\n", "/**\n * WordPress dependencies\n */\nimport { useEffect, useRef } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { useLocation } = unlock( routerPrivateApis );\n\nexport default function useTitle( title ) {\n\tconst location = useLocation();\n\tconst siteTitle = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getEntityRecord( 'root', 'site' )?.title,\n\t\t[]\n\t);\n\tconst isInitialLocationRef = useRef( true );\n\n\tuseEffect( () => {\n\t\tisInitialLocationRef.current = false;\n\t}, [ location ] );\n\n\tuseEffect( () => {\n\t\t// Don't update or announce the title for initial page load.\n\t\tif ( isInitialLocationRef.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( title && siteTitle ) {\n\t\t\t// @see https://github.com/WordPress/wordpress-develop/blob/94849898192d271d533e09756007e176feb80697/src/wp-admin/admin-header.php#L67-L68\n\t\t\tconst formattedTitle = sprintf(\n\t\t\t\t/* translators: Admin document title. 1: Admin screen name, 2: Network or site name. */\n\t\t\t\t__( '%1$s \u2039 %2$s \u2039 Editor \u2014 WordPress' ),\n\t\t\t\tdecodeEntities( title ),\n\t\t\t\tdecodeEntities( siteTitle )\n\t\t\t);\n\n\t\t\tdocument.title = formattedTitle;\n\n\t\t\t// Announce title on route change for screen readers.\n\t\t\tspeak( title, 'assertive' );\n\t\t}\n\t}, [ title, siteTitle, location ] );\n}\n", "/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect, useRegistry } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as editorStore } from '@wordpress/editor';\nimport { useLayoutEffect } from '@wordpress/element';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\nexport function useAdaptEditorToCanvas( canvas ) {\n\tconst { clearSelectedBlock } = useDispatch( blockEditorStore );\n\tconst {\n\t\tsetDeviceType,\n\t\tclosePublishSidebar,\n\t\tsetIsListViewOpened,\n\t\tsetIsInserterOpened,\n\t} = useDispatch( editorStore );\n\tconst { get: getPreference } = useSelect( preferencesStore );\n\tconst registry = useRegistry();\n\tuseLayoutEffect( () => {\n\t\tconst isMediumOrBigger =\n\t\t\twindow.matchMedia( '(min-width: 782px)' ).matches;\n\t\tregistry.batch( () => {\n\t\t\tclearSelectedBlock();\n\t\t\tsetDeviceType( 'Desktop' );\n\t\t\tclosePublishSidebar();\n\t\t\tsetIsInserterOpened( false );\n\n\t\t\t// Check if the block list view should be open by default.\n\t\t\t// If `distractionFree` mode is enabled, the block list view should not be open.\n\t\t\t// This behavior is disabled for small viewports.\n\t\t\tif (\n\t\t\t\tisMediumOrBigger &&\n\t\t\t\tcanvas === 'edit' &&\n\t\t\t\tgetPreference( 'core', 'showListViewByDefault' ) &&\n\t\t\t\t! getPreference( 'core', 'distractionFree' )\n\t\t\t) {\n\t\t\t\tsetIsListViewOpened( true );\n\t\t\t} else {\n\t\t\t\tsetIsListViewOpened( false );\n\t\t\t}\n\t\t} );\n\t}, [\n\t\tcanvas,\n\t\tregistry,\n\t\tclearSelectedBlock,\n\t\tsetDeviceType,\n\t\tclosePublishSidebar,\n\t\tsetIsInserterOpened,\n\t\tsetIsListViewOpened,\n\t\tgetPreference,\n\t] );\n}\n", "/**\n * WordPress dependencies\n */\nimport { useEffect, useMemo } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport {\n\tTEMPLATE_POST_TYPE,\n\tTEMPLATE_PART_POST_TYPE,\n\tNAVIGATION_POST_TYPE,\n\tPATTERN_TYPES,\n} from '../../utils/constants';\n\nconst { useLocation } = unlock( routerPrivateApis );\n\nconst postTypesWithoutParentTemplate = [\n\tTEMPLATE_POST_TYPE,\n\tTEMPLATE_PART_POST_TYPE,\n\tNAVIGATION_POST_TYPE,\n\tPATTERN_TYPES.user,\n];\n\nconst authorizedPostTypes = [ 'page', 'post' ];\n\nfunction getPostType( name ) {\n\tlet postType;\n\tif ( name === 'navigation-item' ) {\n\t\tpostType = NAVIGATION_POST_TYPE;\n\t} else if ( name === 'pattern-item' ) {\n\t\tpostType = PATTERN_TYPES.user;\n\t} else if ( name === 'template-part-item' ) {\n\t\tpostType = TEMPLATE_PART_POST_TYPE;\n\t} else if ( name === 'templates' ) {\n\t\tpostType = TEMPLATE_POST_TYPE;\n\t} else if ( name === 'template-item' ) {\n\t\tpostType = TEMPLATE_POST_TYPE;\n\t} else if ( name === 'page-item' || name === 'pages' ) {\n\t\tpostType = 'page';\n\t} else if ( name === 'post-item' || name === 'posts' ) {\n\t\tpostType = 'post';\n\t}\n\n\treturn postType;\n}\n\nexport function useResolveEditedEntity() {\n\tconst { name, params = {}, query } = useLocation();\n\tconst { postId = query?.postId } = params; // Fallback to query param for postId for list view routes.\n\tconst postType = getPostType( name, postId ) ?? query?.postType;\n\n\tconst homePage = useSelect( ( select ) => {\n\t\tconst { getHomePage } = unlock( select( coreDataStore ) );\n\t\treturn getHomePage();\n\t}, [] );\n\n\t/**\n\t * This is a hook that recreates the logic to resolve a template for a given WordPress postID postTypeId\n\t * in order to match the frontend as closely as possible in the site editor.\n\t *\n\t * It is not possible to rely on the server logic because there maybe unsaved changes that impact the template resolution.\n\t */\n\tconst resolvedTemplateId = useSelect(\n\t\t( select ) => {\n\t\t\t// If we're rendering a post type that doesn't have a template\n\t\t\t// no need to resolve its template.\n\t\t\tif (\n\t\t\t\tpostTypesWithoutParentTemplate.includes( postType ) &&\n\t\t\t\tpostId\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Don't trigger resolution for multi-selected posts.\n\t\t\tif ( postId && postId.includes( ',' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { getTemplateId } = unlock( select( coreDataStore ) );\n\n\t\t\t// If we're rendering a specific page, we need to resolve its template.\n\t\t\t// The site editor only supports pages for now, not other CPTs.\n\t\t\tif (\n\t\t\t\tpostType &&\n\t\t\t\tpostId &&\n\t\t\t\tauthorizedPostTypes.includes( postType )\n\t\t\t) {\n\t\t\t\treturn getTemplateId( postType, postId );\n\t\t\t}\n\n\t\t\t// If we're rendering the home page, and we have a static home page, resolve its template.\n\t\t\tif ( homePage?.postType === 'page' ) {\n\t\t\t\treturn getTemplateId( 'page', homePage?.postId );\n\t\t\t}\n\n\t\t\tif ( homePage?.postType === 'wp_template' ) {\n\t\t\t\treturn homePage?.postId;\n\t\t\t}\n\t\t},\n\t\t[ homePage, postId, postType ]\n\t);\n\n\tconst context = useMemo( () => {\n\t\tif ( postTypesWithoutParentTemplate.includes( postType ) && postId ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tif ( postType && postId && authorizedPostTypes.includes( postType ) ) {\n\t\t\treturn { postType, postId };\n\t\t}\n\t\t// TODO: for post types lists we should probably not render the front page, but maybe a placeholder\n\t\t// with a message like \"Select a page\" or something similar.\n\t\tif ( homePage?.postType === 'page' ) {\n\t\t\treturn { postType: 'page', postId: homePage?.postId };\n\t\t}\n\n\t\treturn {};\n\t}, [ homePage, postType, postId ] );\n\n\tif ( postTypesWithoutParentTemplate.includes( postType ) && postId ) {\n\t\treturn { isReady: true, postType, postId, context };\n\t}\n\n\tif ( !! homePage ) {\n\t\treturn {\n\t\t\tisReady: resolvedTemplateId !== undefined,\n\t\t\tpostType: TEMPLATE_POST_TYPE,\n\t\t\tpostId: resolvedTemplateId,\n\t\t\tcontext,\n\t\t};\n\t}\n\n\treturn { isReady: false };\n}\n\nexport function useSyncDeprecatedEntityIntoState( {\n\tpostType,\n\tpostId,\n\tcontext,\n\tisReady,\n} ) {\n\tconst { setEditedEntity } = useDispatch( editSiteStore );\n\n\tuseEffect( () => {\n\t\tif ( isReady ) {\n\t\t\t// setEditedEntity expects a string (because the postId used to be\n\t\t\t// the template slug, even for edited templates). Now the postId can\n\t\t\t// be a number (either because it's an auto-draft or edited\n\t\t\t// template). Passing a number could break plugins doing things like\n\t\t\t// `id.includes`. It would be way more complex to keep passing the\n\t\t\t// template slug, while also being incorrect, so the easiest\n\t\t\t// solution is to cast the postId to a string.\n\t\t\tsetEditedEntity( postType, String( postId ), context );\n\t\t}\n\t}, [ isReady, postType, postId, context, setEditedEntity ] );\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { focus } from '@wordpress/dom';\nimport { addQueryArgs } from '@wordpress/url';\n\nexport default function SitePreview() {\n\tconst siteUrl = useSelect( ( select ) => {\n\t\tconst { getEntityRecord } = select( coreStore );\n\t\tconst siteData = getEntityRecord( 'root', '__unstableBase' );\n\t\treturn siteData?.home;\n\t}, [] );\n\n\treturn (\n\t\t<iframe\n\t\t\tsrc={ addQueryArgs( siteUrl, {\n\t\t\t\t// Parameter for hiding the admin bar.\n\t\t\t\twp_site_preview: 1,\n\t\t\t} ) }\n\t\t\ttitle={ __( 'Site Preview' ) }\n\t\t\tstyle={ {\n\t\t\t\tdisplay: 'block',\n\t\t\t\twidth: '100%',\n\t\t\t\theight: '100%',\n\t\t\t\tbackgroundColor: '#fff',\n\t\t\t} }\n\t\t\tonLoad={ ( event ) => {\n\t\t\t\t// Make interactive elements unclickable.\n\t\t\t\tconst document = event.target.contentDocument;\n\t\t\t\tconst focusableElements = focus.focusable.find( document );\n\t\t\t\tfocusableElements.forEach( ( element ) => {\n\t\t\t\t\telement.style.pointerEvents = 'none';\n\t\t\t\t\telement.tabIndex = -1;\n\t\t\t\t\telement.setAttribute( 'aria-hidden', 'true' );\n\t\t\t\t} );\n\t\t\t} }\n\t\t/>\n\t);\n}\n", "/**\n * Check if the classic theme supports the stylebook.\n *\n * @param {Object} siteData - The site data provided by the site editor route area resolvers.\n * @return {boolean} True if the stylebook is supported, false otherwise.\n */\nexport function isClassicThemeWithStyleBookSupport( siteData ) {\n\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\tconst supportsEditorStyles =\n\t\tsiteData.currentTheme?.theme_supports[ 'editor-styles' ];\n\t// This is a temp solution until the has_theme_json value is available for the current theme.\n\tconst hasThemeJson = siteData.editorSettings?.supportsLayout;\n\treturn ! isBlockTheme && ( supportsEditorStyles || hasThemeJson );\n}\n", "/**\n * Internal dependencies\n */\nimport SidebarNavigationScreenMain from '../sidebar-navigation-screen-main';\nimport SidebarNavigationScreenUnsupported from '../sidebar-navigation-screen-unsupported';\nimport Editor from '../editor';\nimport { isClassicThemeWithStyleBookSupport } from './utils';\n\nexport const homeRoute = {\n\tname: 'home',\n\tpath: '/',\n\tareas: {\n\t\tsidebar( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\treturn isBlockTheme ||\n\t\t\t\tisClassicThemeWithStyleBookSupport( siteData ) ? (\n\t\t\t\t<SidebarNavigationScreenMain />\n\t\t\t) : (\n\t\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t\t);\n\t\t},\n\t\tpreview( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\treturn isBlockTheme ||\n\t\t\t\tisClassicThemeWithStyleBookSupport( siteData ) ? (\n\t\t\t\t<Editor isHomeRoute />\n\t\t\t) : undefined;\n\t\t},\n\t\tmobile( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\treturn isBlockTheme ||\n\t\t\t\tisClassicThemeWithStyleBookSupport( siteData ) ? (\n\t\t\t\t<SidebarNavigationScreenMain />\n\t\t\t) : (\n\t\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t\t);\n\t\t},\n\t},\n};\n", "/**\n * WordPress dependencies\n */\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport Editor from '../editor';\nimport { unlock } from '../../lock-unlock';\nimport SidebarNavigationScreenGlobalStyles from '../sidebar-navigation-screen-global-styles';\nimport SidebarGlobalStyles from '../sidebar-global-styles';\n\nconst { useLocation, useHistory } = unlock( routerPrivateApis );\nconst { StyleBookPreview } = unlock( editorPrivateApis );\n\nfunction MobileGlobalStylesUI() {\n\tconst { query = {} } = useLocation();\n\tconst { canvas } = query;\n\n\tif ( canvas === 'edit' ) {\n\t\treturn <Editor />;\n\t}\n\n\treturn <SidebarGlobalStyles />;\n}\n\nfunction StylesPreviewArea() {\n\tconst { path, query } = useLocation();\n\tconst history = useHistory();\n\tconst isStylebook = query.preview === 'stylebook';\n\n\t// Get section from URL query params\n\tconst section = query.section ?? '/';\n\tconst onChangeSection = ( updatedSection ) => {\n\t\thistory.navigate(\n\t\t\taddQueryArgs( path, {\n\t\t\t\tsection: updatedSection,\n\t\t\t} )\n\t\t);\n\t};\n\n\tif ( isStylebook ) {\n\t\treturn (\n\t\t\t<StyleBookPreview\n\t\t\t\tpath={ section }\n\t\t\t\tonPathChange={ onChangeSection }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn <Editor />;\n}\n\nexport const stylesRoute = {\n\tname: 'styles',\n\tpath: '/styles',\n\tareas: {\n\t\tcontent: <SidebarGlobalStyles />,\n\t\tsidebar: <SidebarNavigationScreenGlobalStyles backPath=\"/\" />,\n\t\tpreview: <StylesPreviewArea />,\n\t\tmobile: <MobileGlobalStylesUI />,\n\t},\n\twidths: {\n\t\tcontent: 380,\n\t},\n};\n", "/**\n * WordPress dependencies\n */\nimport { Page } from '@wordpress/admin-ui';\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { Button, __experimentalHStack as HStack } from '@wordpress/components';\nimport { addQueryArgs, removeQueryArgs } from '@wordpress/url';\nimport { seen } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { GlobalStylesUIWrapper, GlobalStylesActionMenu } =\n\tunlock( editorPrivateApis );\nconst { useLocation, useHistory } = unlock( routerPrivateApis );\n\nconst GlobalStylesPageActions = ( {\n\tisStyleBookOpened,\n\tsetIsStyleBookOpened,\n\tpath,\n\tonChangeSection,\n} ) => {\n\tconst history = useHistory();\n\n\treturn (\n\t\t<HStack>\n\t\t\t<Button\n\t\t\t\tisPressed={ isStyleBookOpened }\n\t\t\t\ticon={ seen }\n\t\t\t\tlabel={ __( 'Style Book' ) }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetIsStyleBookOpened( ! isStyleBookOpened );\n\t\t\t\t\tconst updatedPath = ! isStyleBookOpened\n\t\t\t\t\t\t? addQueryArgs( path, { preview: 'stylebook' } )\n\t\t\t\t\t\t: removeQueryArgs( path, 'preview' );\n\t\t\t\t\t// Navigate to the updated path.\n\t\t\t\t\thistory.navigate( updatedPath );\n\t\t\t\t} }\n\t\t\t\tsize=\"compact\"\n\t\t\t/>\n\t\t\t<GlobalStylesActionMenu\n\t\t\t\thideWelcomeGuide\n\t\t\t\tonChangePath={ onChangeSection }\n\t\t\t/>\n\t\t</HStack>\n\t);\n};\n\n/**\n * Hook to deal with navigation and location state.\n *\n * @return {Array}  The current section and a function to update it.\n */\nexport const useSection = () => {\n\tconst { path, query } = useLocation();\n\tconst history = useHistory();\n\treturn useMemo( () => {\n\t\treturn [\n\t\t\tquery.section ?? '/',\n\t\t\t( updatedSection ) => {\n\t\t\t\thistory.navigate(\n\t\t\t\t\taddQueryArgs( path, {\n\t\t\t\t\t\tsection: updatedSection,\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t},\n\t\t];\n\t}, [ path, query.section, history ] );\n};\n\nexport default function SidebarGlobalStyles() {\n\tconst { path } = useLocation();\n\n\tconst [ isStyleBookOpened, setIsStyleBookOpened ] = useState(\n\t\tpath.includes( 'preview=stylebook' )\n\t);\n\tconst isMobileViewport = useViewportMatch( 'medium', '<' );\n\tconst [ section, onChangeSection ] = useSection();\n\n\treturn (\n\t\t<Page\n\t\t\tactions={\n\t\t\t\t! isMobileViewport ? (\n\t\t\t\t\t<GlobalStylesPageActions\n\t\t\t\t\t\tisStyleBookOpened={ isStyleBookOpened }\n\t\t\t\t\t\tsetIsStyleBookOpened={ setIsStyleBookOpened }\n\t\t\t\t\t\tpath={ path }\n\t\t\t\t\t\tonChangeSection={ onChangeSection }\n\t\t\t\t\t/>\n\t\t\t\t) : null\n\t\t\t}\n\t\t\tclassName=\"edit-site-styles\"\n\t\t\ttitle={ __( 'Styles' ) }\n\t\t>\n\t\t\t<GlobalStylesUIWrapper\n\t\t\t\tpath={ section }\n\t\t\t\tonPathChange={ onChangeSection }\n\t\t\t/>\n\t\t</Page>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport Editor from '../editor';\nimport SidebarNavigationScreenNavigationMenus from '../sidebar-navigation-screen-navigation-menus';\nimport SidebarNavigationScreenUnsupported from '../sidebar-navigation-screen-unsupported';\nimport { unlock } from '../../lock-unlock';\n\nconst { useLocation } = unlock( routerPrivateApis );\n\nfunction MobileNavigationView() {\n\tconst { query = {} } = useLocation();\n\tconst { canvas = 'view' } = query;\n\n\treturn canvas === 'edit' ? (\n\t\t<Editor />\n\t) : (\n\t\t<SidebarNavigationScreenNavigationMenus backPath=\"/\" />\n\t);\n}\n\nexport const navigationRoute = {\n\tname: 'navigation',\n\tpath: '/navigation',\n\tareas: {\n\t\tsidebar( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\treturn isBlockTheme ? (\n\t\t\t\t<SidebarNavigationScreenNavigationMenus backPath=\"/\" />\n\t\t\t) : (\n\t\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t\t);\n\t\t},\n\t\tpreview( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\treturn isBlockTheme ? <Editor /> : undefined;\n\t\t},\n\t\tmobile( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\treturn isBlockTheme ? (\n\t\t\t\t<MobileNavigationView />\n\t\t\t) : (\n\t\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t\t);\n\t\t},\n\t},\n};\n", "/**\n * WordPress dependencies\n */\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { useEntityRecords, store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\n\nimport { decodeEntities } from '@wordpress/html-entities';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\tSpinner,\n} from '@wordpress/components';\nimport { navigation } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport SidebarNavigationScreen from '../sidebar-navigation-screen';\nimport SidebarNavigationItem from '../sidebar-navigation-item';\nimport { PRELOADED_NAVIGATION_MENUS_QUERY } from './constants';\nimport SingleNavigationMenu from '../sidebar-navigation-screen-navigation-menu/single-navigation-menu';\nimport useNavigationMenuHandlers from '../sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers';\nimport { unlock } from '../../lock-unlock';\nimport { NAVIGATION_POST_TYPE } from '../../utils/constants';\n\n// Copied from packages/block-library/src/navigation/edit/navigation-menu-selector.js.\nfunction buildMenuLabel( title, id, status ) {\n\tif ( ! title ) {\n\t\t/* translators: %s: the index of the menu in the list of menus. */\n\t\treturn sprintf( __( '(no title %s)' ), id );\n\t}\n\n\tif ( status === 'publish' ) {\n\t\treturn decodeEntities( title );\n\t}\n\n\treturn sprintf(\n\t\t// translators: 1: title of the menu. 2: status of the menu (draft, pending, etc.).\n\t\t_x( '%1$s (%2$s)', 'menu label' ),\n\t\tdecodeEntities( title ),\n\t\tstatus\n\t);\n}\n\nexport default function SidebarNavigationScreenNavigationMenus( { backPath } ) {\n\tconst {\n\t\trecords: navigationMenus,\n\t\tisResolving: isResolvingNavigationMenus,\n\t\thasResolved: hasResolvedNavigationMenus,\n\t} = useEntityRecords(\n\t\t'postType',\n\t\tNAVIGATION_POST_TYPE,\n\t\tPRELOADED_NAVIGATION_MENUS_QUERY\n\t);\n\n\tconst isLoading =\n\t\tisResolvingNavigationMenus && ! hasResolvedNavigationMenus;\n\n\tconst { getNavigationFallbackId } = unlock( useSelect( coreStore ) );\n\tconst isCreatingNavigationFallback = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).isResolving( 'getNavigationFallbackId' ),\n\t\t[]\n\t);\n\n\tconst firstNavigationMenu = navigationMenus?.[ 0 ];\n\n\t// If there is no navigation menu found\n\t// then trigger fallback algorithm to create one.\n\tif (\n\t\t! firstNavigationMenu &&\n\t\t! isResolvingNavigationMenus &&\n\t\thasResolvedNavigationMenus &&\n\t\t// Ensure a fallback navigation is created only once\n\t\t! isCreatingNavigationFallback\n\t) {\n\t\tgetNavigationFallbackId();\n\t}\n\n\tconst { handleSave, handleDelete, handleDuplicate } =\n\t\tuseNavigationMenuHandlers();\n\n\tconst hasNavigationMenus = !! navigationMenus?.length;\n\n\tif ( isLoading ) {\n\t\treturn (\n\t\t\t<SidebarNavigationScreenWrapper backPath={ backPath }>\n\t\t\t\t<Spinner className=\"edit-site-sidebar-navigation-screen-navigation-menus__loading\" />\n\t\t\t</SidebarNavigationScreenWrapper>\n\t\t);\n\t}\n\n\tif ( ! isLoading && ! hasNavigationMenus ) {\n\t\treturn (\n\t\t\t<SidebarNavigationScreenWrapper\n\t\t\t\tdescription={ __( 'No Navigation Menus found.' ) }\n\t\t\t\tbackPath={ backPath }\n\t\t\t/>\n\t\t);\n\t}\n\n\t// if single menu then render it\n\tif ( navigationMenus?.length === 1 ) {\n\t\treturn (\n\t\t\t<SingleNavigationMenu\n\t\t\t\tnavigationMenu={ firstNavigationMenu }\n\t\t\t\tbackPath={ backPath }\n\t\t\t\thandleDelete={ () => handleDelete( firstNavigationMenu ) }\n\t\t\t\thandleDuplicate={ () => handleDuplicate( firstNavigationMenu ) }\n\t\t\t\thandleSave={ ( edits ) =>\n\t\t\t\t\thandleSave( firstNavigationMenu, edits )\n\t\t\t\t}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<SidebarNavigationScreenWrapper backPath={ backPath }>\n\t\t\t<ItemGroup className=\"edit-site-sidebar-navigation-screen-navigation-menus\">\n\t\t\t\t{ navigationMenus?.map( ( { id, title, status }, index ) => (\n\t\t\t\t\t<NavMenuItem\n\t\t\t\t\t\tpostId={ id }\n\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\twithChevron\n\t\t\t\t\t\ticon={ navigation }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ buildMenuLabel( title?.rendered, index + 1, status ) }\n\t\t\t\t\t</NavMenuItem>\n\t\t\t\t) ) }\n\t\t\t</ItemGroup>\n\t\t</SidebarNavigationScreenWrapper>\n\t);\n}\n\nexport function SidebarNavigationScreenWrapper( {\n\tchildren,\n\tactions,\n\ttitle,\n\tdescription,\n\tbackPath,\n} ) {\n\treturn (\n\t\t<SidebarNavigationScreen\n\t\t\ttitle={ title || __( 'Navigation' ) }\n\t\t\tactions={ actions }\n\t\t\tdescription={ description || __( 'Manage your Navigation Menus.' ) }\n\t\t\tbackPath={ backPath }\n\t\t\tcontent={ children }\n\t\t/>\n\t);\n}\n\nconst NavMenuItem = ( { postId, ...props } ) => {\n\treturn (\n\t\t<SidebarNavigationItem\n\t\t\tto={ `/wp_navigation/${ postId }` }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n};\n", "// This requested is preloaded in `gutenberg_preload_navigation_posts`.\n// As unbounded queries are limited to 100 by `fetchAllMiddleware`\n// on apiFetch this query is limited to 100.\n// These parameters must be kept aligned with those in\n// lib/compat/wordpress-6.3/navigation-block-preloading.php\n// and\n// block-library/src/navigation/constants.js\nexport const PRELOADED_NAVIGATION_MENUS_QUERY = {\n\tper_page: 100,\n\tstatus: [ 'publish', 'draft' ],\n\torder: 'desc',\n\torderby: 'date',\n};\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { decodeEntities } from '@wordpress/html-entities';\n/**\n * Internal dependencies\n */\nimport { SidebarNavigationScreenWrapper } from '../sidebar-navigation-screen-navigation-menus';\nimport ScreenNavigationMoreMenu from './more-menu';\nimport NavigationMenuEditor from './navigation-menu-editor';\nimport buildNavigationLabel from '../sidebar-navigation-screen-navigation-menus/build-navigation-label';\n\nexport default function SingleNavigationMenu( {\n\tnavigationMenu,\n\tbackPath,\n\thandleDelete,\n\thandleDuplicate,\n\thandleSave,\n} ) {\n\tconst menuTitle = navigationMenu?.title?.rendered;\n\n\treturn (\n\t\t<SidebarNavigationScreenWrapper\n\t\t\tactions={\n\t\t\t\t<>\n\t\t\t\t\t<ScreenNavigationMoreMenu\n\t\t\t\t\t\tmenuId={ navigationMenu?.id }\n\t\t\t\t\t\tmenuTitle={ decodeEntities( menuTitle ) }\n\t\t\t\t\t\tonDelete={ handleDelete }\n\t\t\t\t\t\tonSave={ handleSave }\n\t\t\t\t\t\tonDuplicate={ handleDuplicate }\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t}\n\t\t\tbackPath={ backPath }\n\t\t\ttitle={ buildNavigationLabel(\n\t\t\t\tnavigationMenu?.title,\n\t\t\t\tnavigationMenu?.id,\n\t\t\t\tnavigationMenu?.status\n\t\t\t) }\n\t\t\tdescription={ __(\n\t\t\t\t'Navigation Menus are a curated collection of blocks that allow visitors to get around your site.'\n\t\t\t) }\n\t\t>\n\t\t\t<NavigationMenuEditor navigationMenuId={ navigationMenu?.id } />\n\t\t</SidebarNavigationScreenWrapper>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { DropdownMenu, MenuItem, MenuGroup } from '@wordpress/components';\nimport { moreVertical } from '@wordpress/icons';\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport RenameModal from './rename-modal';\nimport DeleteConfirmDialog from './delete-confirm-dialog';\nimport { unlock } from '../../lock-unlock';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nconst POPOVER_PROPS = {\n\tposition: 'bottom right',\n};\n\nexport default function ScreenNavigationMoreMenu( props ) {\n\tconst { onDelete, onSave, onDuplicate, menuTitle, menuId } = props;\n\n\tconst [ renameModalOpen, setRenameModalOpen ] = useState( false );\n\tconst [ deleteConfirmDialogOpen, setDeleteConfirmDialogOpen ] =\n\t\tuseState( false );\n\n\tconst history = useHistory();\n\n\tconst closeModals = () => {\n\t\tsetRenameModalOpen( false );\n\t\tsetDeleteConfirmDialogOpen( false );\n\t};\n\tconst openRenameModal = () => setRenameModalOpen( true );\n\tconst openDeleteConfirmDialog = () => setDeleteConfirmDialogOpen( true );\n\n\treturn (\n\t\t<>\n\t\t\t<DropdownMenu\n\t\t\t\tclassName=\"sidebar-navigation__more-menu\"\n\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\ticon={ moreVertical }\n\t\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\t>\n\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\topenRenameModal();\n\t\t\t\t\t\t\t\t// Close the dropdown after opening the modal.\n\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Rename' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\thistory.navigate(\n\t\t\t\t\t\t\t\t\t`/wp_navigation/${ menuId }?canvas=edit`\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tonDuplicate();\n\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Duplicate' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tisDestructive\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\topenDeleteConfirmDialog();\n\n\t\t\t\t\t\t\t\t// Close the dropdown after opening the modal.\n\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Delete' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t) }\n\t\t\t</DropdownMenu>\n\t\t\t{ deleteConfirmDialogOpen && (\n\t\t\t\t<DeleteConfirmDialog\n\t\t\t\t\tonClose={ closeModals }\n\t\t\t\t\tonConfirm={ onDelete }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ renameModalOpen && (\n\t\t\t\t<RenameModal\n\t\t\t\t\tonClose={ closeModals }\n\t\t\t\t\tmenuTitle={ menuTitle }\n\t\t\t\t\tonSave={ onSave }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n\tTextControl,\n\tModal,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\n\nconst notEmptyString = ( testString ) => testString?.trim()?.length > 0;\n\nexport default function RenameModal( { menuTitle, onClose, onSave } ) {\n\tconst [ editedMenuTitle, setEditedMenuTitle ] = useState( menuTitle );\n\n\tconst titleHasChanged = editedMenuTitle !== menuTitle;\n\n\tconst isEditedMenuTitleValid =\n\t\ttitleHasChanged && notEmptyString( editedMenuTitle );\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Rename' ) }\n\t\t\tonRequestClose={ onClose }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"small\"\n\t\t>\n\t\t\t<form className=\"sidebar-navigation__rename-modal-form\">\n\t\t\t\t<VStack spacing=\"3\">\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvalue={ editedMenuTitle }\n\t\t\t\t\t\tplaceholder={ __( 'Navigation title' ) }\n\t\t\t\t\t\tonChange={ setEditedMenuTitle }\n\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t/>\n\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\tdisabled={ ! isEditedMenuTitleValid }\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tonClick={ ( e ) => {\n\t\t\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\t\t\tif ( ! isEditedMenuTitleValid ) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonSave( { title: editedMenuTitle } );\n\n\t\t\t\t\t\t\t\t// Immediate close avoids ability to hit save multiple times.\n\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</VStack>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __experimentalConfirmDialog as ConfirmDialog } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nexport default function DeleteConfirmDialog( { onClose, onConfirm } ) {\n\treturn (\n\t\t<ConfirmDialog\n\t\t\tisOpen\n\t\t\tonConfirm={ () => {\n\t\t\t\tonConfirm();\n\n\t\t\t\t// Immediate close avoids ability to hit delete multiple times.\n\t\t\t\tonClose();\n\t\t\t} }\n\t\t\tonCancel={ onClose }\n\t\t\tconfirmButtonText={ __( 'Delete' ) }\n\t\t\tsize=\"medium\"\n\t\t>\n\t\t\t{ __( 'Are you sure you want to delete this Navigation Menu?' ) }\n\t\t</ConfirmDialog>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { BlockEditorProvider } from '@wordpress/block-editor';\nimport { createBlock } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as editSiteStore } from '../../store';\nimport NavigationMenuContent from '../sidebar-navigation-screen-navigation-menus/navigation-menu-content';\n\nconst noop = () => {};\n\nexport default function NavigationMenuEditor( { navigationMenuId } ) {\n\tconst { storedSettings } = useSelect( ( select ) => {\n\t\tconst { getSettings } = unlock( select( editSiteStore ) );\n\n\t\treturn {\n\t\t\tstoredSettings: getSettings(),\n\t\t};\n\t}, [] );\n\n\tconst blocks = useMemo( () => {\n\t\tif ( ! navigationMenuId ) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn [ createBlock( 'core/navigation', { ref: navigationMenuId } ) ];\n\t}, [ navigationMenuId ] );\n\n\tif ( ! navigationMenuId || ! blocks?.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockEditorProvider\n\t\t\tsettings={ storedSettings }\n\t\t\tvalue={ blocks }\n\t\t\tonChange={ noop }\n\t\t\tonInput={ noop }\n\t\t>\n\t\t\t<div className=\"edit-site-sidebar-navigation-screen-navigation-menus__content\">\n\t\t\t\t<NavigationMenuContent rootClientId={ blocks[ 0 ].clientId } />\n\t\t\t</div>\n\t\t</BlockEditorProvider>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n\tBlockList,\n} from '@wordpress/block-editor';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { createBlock } from '@wordpress/blocks';\nimport { useCallback } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport LeafMoreMenu from './leaf-more-menu';\n\nconst { PrivateListView } = unlock( blockEditorPrivateApis );\n\n// Needs to be kept in sync with the query used at packages/block-library/src/page-list/edit.js.\nconst MAX_PAGE_COUNT = 100;\nconst PAGES_QUERY = [\n\t'postType',\n\t'page',\n\t{\n\t\tper_page: MAX_PAGE_COUNT,\n\t\t_fields: [ 'id', 'link', 'menu_order', 'parent', 'title', 'type' ],\n\t\t// TODO: When https://core.trac.wordpress.org/ticket/39037 REST API support for multiple orderby\n\t\t// values is resolved, update 'orderby' to [ 'menu_order', 'post_title' ] to provide a consistent\n\t\t// sort.\n\t\torderby: 'menu_order',\n\t\torder: 'asc',\n\t},\n];\n\nexport default function NavigationMenuContent( { rootClientId } ) {\n\tconst { listViewRootClientId, isLoading } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tareInnerBlocksControlled,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockCount,\n\t\t\t\tgetBlockOrder,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { isResolving } = select( coreStore );\n\n\t\t\tconst blockClientIds = getBlockOrder( rootClientId );\n\n\t\t\tconst hasOnlyPageListBlock =\n\t\t\t\tblockClientIds.length === 1 &&\n\t\t\t\tgetBlockName( blockClientIds[ 0 ] ) === 'core/page-list';\n\t\t\tconst pageListHasBlocks =\n\t\t\t\thasOnlyPageListBlock &&\n\t\t\t\tgetBlockCount( blockClientIds[ 0 ] ) > 0;\n\n\t\t\tconst isLoadingPages = isResolving(\n\t\t\t\t'getEntityRecords',\n\t\t\t\tPAGES_QUERY\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tlistViewRootClientId: pageListHasBlocks\n\t\t\t\t\t? blockClientIds[ 0 ]\n\t\t\t\t\t: rootClientId,\n\t\t\t\t// This is a small hack to wait for the navigation block\n\t\t\t\t// to actually load its inner blocks.\n\t\t\t\tisLoading:\n\t\t\t\t\t! areInnerBlocksControlled( rootClientId ) ||\n\t\t\t\t\tisLoadingPages,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\tconst { replaceBlock, __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tconst offCanvasOnselect = useCallback(\n\t\t( block ) => {\n\t\t\tif (\n\t\t\t\tblock.name === 'core/navigation-link' &&\n\t\t\t\t! block.attributes.url\n\t\t\t) {\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\treplaceBlock(\n\t\t\t\t\tblock.clientId,\n\t\t\t\t\tcreateBlock( 'core/navigation-link', block.attributes )\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ __unstableMarkNextChangeAsNotPersistent, replaceBlock ]\n\t);\n\n\t// The hidden block is needed because it makes block edit side effects trigger.\n\t// For example a navigation page list load its items has an effect on edit to load its items.\n\treturn (\n\t\t<>\n\t\t\t{ ! isLoading && (\n\t\t\t\t<PrivateListView\n\t\t\t\t\trootClientId={ listViewRootClientId }\n\t\t\t\t\tonSelect={ offCanvasOnselect }\n\t\t\t\t\tblockSettingsMenu={ LeafMoreMenu }\n\t\t\t\t\tshowAppender={ false }\n\t\t\t\t\tisExpanded\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<div className=\"edit-site-sidebar-navigation-screen-navigation-menus__helper-block-editor\">\n\t\t\t\t<BlockList />\n\t\t\t</div>\n\t\t</>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\n\nimport { chevronUp, chevronDown, moreVertical } from '@wordpress/icons';\nimport { DropdownMenu, MenuItem, MenuGroup } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useCallback } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { BlockTitle, store as blockEditorStore } from '@wordpress/block-editor';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\nconst POPOVER_PROPS = {\n\tclassName: 'block-editor-block-settings-menu__popover',\n\tplacement: 'bottom-start',\n};\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { useHistory, useLocation } = unlock( routerPrivateApis );\n\nexport default function LeafMoreMenu( props ) {\n\tconst history = useHistory();\n\tconst { path } = useLocation();\n\tconst { block } = props;\n\tconst { clientId } = block;\n\tconst { moveBlocksDown, moveBlocksUp, removeBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\n\tconst removeLabel = sprintf(\n\t\t/* translators: %s: block name */\n\t\t__( 'Remove %s' ),\n\t\tBlockTitle( { clientId, maximumLength: 25 } )\n\t);\n\n\tconst goToLabel = sprintf(\n\t\t/* translators: %s: block name */\n\t\t__( 'Go to %s' ),\n\t\tBlockTitle( { clientId, maximumLength: 25 } )\n\t);\n\n\tconst rootClientId = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockRootClientId } = select( blockEditorStore );\n\n\t\t\treturn getBlockRootClientId( clientId );\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst onGoToPage = useCallback(\n\t\t( selectedBlock ) => {\n\t\t\tconst { attributes, name } = selectedBlock;\n\t\t\tif (\n\t\t\t\tattributes.kind === 'post-type' &&\n\t\t\t\tattributes.id &&\n\t\t\t\tattributes.type &&\n\t\t\t\thistory\n\t\t\t) {\n\t\t\t\thistory.navigate(\n\t\t\t\t\t`/${ attributes.type }/${ attributes.id }?canvas=edit`,\n\t\t\t\t\t{\n\t\t\t\t\t\tstate: { backPath: path },\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t\tif ( name === 'core/page-list-item' && attributes.id && history ) {\n\t\t\t\thistory.navigate( `/page/${ attributes.id }?canvas=edit`, {\n\t\t\t\t\tstate: { backPath: path },\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ path, history ]\n\t);\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\ticon={ moreVertical }\n\t\t\tlabel={ __( 'Options' ) }\n\t\t\tclassName=\"block-editor-block-settings-menu\"\n\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\tnoIcons\n\t\t\t{ ...props }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\ticon={ chevronUp }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tmoveBlocksUp( [ clientId ], rootClientId );\n\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Move up' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\ticon={ chevronDown }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tmoveBlocksDown( [ clientId ], rootClientId );\n\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Move down' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t{ block.attributes?.type === 'page' &&\n\t\t\t\t\t\t\tblock.attributes?.id && (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tonGoToPage( block );\n\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ goToLabel }\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tremoveBlocks( [ clientId ], false );\n\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ removeLabel }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n// Copied from packages/block-library/src/navigation/edit/navigation-menu-selector.js.\nexport default function buildNavigationLabel( title, id, status ) {\n\tif ( ! title?.rendered ) {\n\t\t/* translators: %s: the index of the menu in the list of menus. */\n\t\treturn sprintf( __( '(no title %s)' ), id );\n\t}\n\n\tif ( status === 'publish' ) {\n\t\treturn decodeEntities( title?.rendered );\n\t}\n\n\treturn sprintf(\n\t\t// translators: 1: title of the menu. 2: status of the menu (draft, pending, etc.).\n\t\t_x( '%1$s (%2$s)', 'menu label' ),\n\t\tdecodeEntities( title?.rendered ),\n\t\tstatus\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { postType } from '.';\nimport { NAVIGATION_POST_TYPE } from '../../utils/constants';\nimport { unlock } from '../../lock-unlock';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nfunction useDeleteNavigationMenu() {\n\tconst { deleteEntityRecord } = useDispatch( coreStore );\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst history = useHistory();\n\n\tconst handleDelete = async ( navigationMenu ) => {\n\t\tconst postId = navigationMenu?.id;\n\t\ttry {\n\t\t\tawait deleteEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId,\n\t\t\t\t{\n\t\t\t\t\tforce: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tthrowOnError: true,\n\t\t\t\t}\n\t\t\t);\n\t\t\tcreateSuccessNotice(\n\t\t\t\t__( 'Navigation Menu successfully deleted.' ),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t\thistory.navigate( '/navigation' );\n\t\t} catch ( error ) {\n\t\t\tcreateErrorNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: error message describing why the navigation menu could not be deleted. */\n\t\t\t\t\t__( `Unable to delete Navigation Menu (%s).` ),\n\t\t\t\t\terror?.message\n\t\t\t\t),\n\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n\n\treturn handleDelete;\n}\n\nfunction useSaveNavigationMenu() {\n\tconst { getEditedEntityRecord } = useSelect( ( select ) => {\n\t\tconst { getEditedEntityRecord: getEditedEntityRecordSelector } =\n\t\t\tselect( coreStore );\n\n\t\treturn {\n\t\t\tgetEditedEntityRecord: getEditedEntityRecordSelector,\n\t\t};\n\t}, [] );\n\n\tconst {\n\t\teditEntityRecord,\n\t\t__experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits,\n\t} = useDispatch( coreStore );\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst handleSave = async ( navigationMenu, edits ) => {\n\t\tif ( ! edits ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst postId = navigationMenu?.id;\n\t\t// Prepare for revert in case of error.\n\t\tconst originalRecord = getEditedEntityRecord(\n\t\t\t'postType',\n\t\t\tNAVIGATION_POST_TYPE,\n\t\t\tpostId\n\t\t);\n\n\t\t// Apply the edits.\n\t\teditEntityRecord( 'postType', postType, postId, edits );\n\n\t\tconst recordPropertiesToSave = Object.keys( edits );\n\n\t\t// Attempt to persist.\n\t\ttry {\n\t\t\tawait saveSpecifiedEntityEdits(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId,\n\t\t\t\trecordPropertiesToSave,\n\t\t\t\t{\n\t\t\t\t\tthrowOnError: true,\n\t\t\t\t}\n\t\t\t);\n\t\t\tcreateSuccessNotice( __( 'Renamed Navigation Menu' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\t// Revert to original in case of error.\n\t\t\teditEntityRecord( 'postType', postType, postId, originalRecord );\n\n\t\t\tcreateErrorNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: error message describing why the navigation menu could not be renamed. */\n\t\t\t\t\t__( `Unable to rename Navigation Menu (%s).` ),\n\t\t\t\t\terror?.message\n\t\t\t\t),\n\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n\n\treturn handleSave;\n}\n\nfunction useDuplicateNavigationMenu() {\n\tconst history = useHistory();\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst handleDuplicate = async ( navigationMenu ) => {\n\t\tconst menuTitle =\n\t\t\tnavigationMenu?.title?.rendered || navigationMenu?.slug;\n\n\t\ttry {\n\t\t\tconst savedRecord = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\t{\n\t\t\t\t\ttitle: sprintf(\n\t\t\t\t\t\t/* translators: %s: Navigation menu title */\n\t\t\t\t\t\t_x( '%s (Copy)', 'navigation menu' ),\n\t\t\t\t\t\tmenuTitle\n\t\t\t\t\t),\n\t\t\t\t\tcontent: navigationMenu?.content?.raw,\n\t\t\t\t\tstatus: 'publish',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tthrowOnError: true,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( savedRecord ) {\n\t\t\t\tcreateSuccessNotice( __( 'Duplicated Navigation Menu' ), {\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t} );\n\t\t\t\thistory.navigate( `/wp_navigation/${ savedRecord.id }` );\n\t\t\t}\n\t\t} catch ( error ) {\n\t\t\tcreateErrorNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: error message describing why the navigation menu could not be deleted. */\n\t\t\t\t\t__( `Unable to duplicate Navigation Menu (%s).` ),\n\t\t\t\t\terror?.message\n\t\t\t\t),\n\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t};\n\n\treturn handleDuplicate;\n}\n\nexport default function useNavigationMenuHandlers() {\n\treturn {\n\t\thandleDelete: useDeleteNavigationMenu(),\n\t\thandleSave: useSaveNavigationMenu(),\n\t\thandleDuplicate: useDuplicateNavigationMenu(),\n\t};\n}\n", "/**\n * WordPress dependencies\n */\nimport { useEntityRecord, store as coreStore } from '@wordpress/core-data';\nimport { Spinner } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { SidebarNavigationScreenWrapper } from '../sidebar-navigation-screen-navigation-menus';\nimport ScreenNavigationMoreMenu from './more-menu';\nimport SingleNavigationMenu from './single-navigation-menu';\nimport useNavigationMenuHandlers from './use-navigation-menu-handlers';\nimport buildNavigationLabel from '../sidebar-navigation-screen-navigation-menus/build-navigation-label';\nimport { unlock } from '../../lock-unlock';\n\nconst { useLocation } = unlock( routerPrivateApis );\n\nexport const postType = `wp_navigation`;\n\nexport default function SidebarNavigationScreenNavigationMenu( { backPath } ) {\n\tconst {\n\t\tparams: { postId },\n\t} = useLocation();\n\n\tconst { record: navigationMenu, isResolving } = useEntityRecord(\n\t\t'postType',\n\t\tpostType,\n\t\tpostId\n\t);\n\n\tconst { isSaving, isDeleting } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { isSavingEntityRecord, isDeletingEntityRecord } =\n\t\t\t\tselect( coreStore );\n\n\t\t\treturn {\n\t\t\t\tisSaving: isSavingEntityRecord( 'postType', postType, postId ),\n\t\t\t\tisDeleting: isDeletingEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\tpostType,\n\t\t\t\t\tpostId\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ postId ]\n\t);\n\n\tconst isLoading = isResolving || isSaving || isDeleting;\n\n\tconst menuTitle = navigationMenu?.title?.rendered || navigationMenu?.slug;\n\n\tconst { handleSave, handleDelete, handleDuplicate } =\n\t\tuseNavigationMenuHandlers();\n\n\tconst _handleDelete = () => handleDelete( navigationMenu );\n\tconst _handleSave = ( edits ) => handleSave( navigationMenu, edits );\n\tconst _handleDuplicate = () => handleDuplicate( navigationMenu );\n\n\tif ( isLoading ) {\n\t\treturn (\n\t\t\t<SidebarNavigationScreenWrapper\n\t\t\t\tdescription={ __(\n\t\t\t\t\t'Navigation Menus are a curated collection of blocks that allow visitors to get around your site.'\n\t\t\t\t) }\n\t\t\t\tbackPath={ backPath }\n\t\t\t>\n\t\t\t\t<Spinner className=\"edit-site-sidebar-navigation-screen-navigation-menus__loading\" />\n\t\t\t</SidebarNavigationScreenWrapper>\n\t\t);\n\t}\n\n\tif ( ! isLoading && ! navigationMenu ) {\n\t\treturn (\n\t\t\t<SidebarNavigationScreenWrapper\n\t\t\t\tdescription={ __( 'Navigation Menu missing.' ) }\n\t\t\t\tbackPath={ backPath }\n\t\t\t/>\n\t\t);\n\t}\n\n\tif ( ! navigationMenu?.content?.raw ) {\n\t\treturn (\n\t\t\t<SidebarNavigationScreenWrapper\n\t\t\t\tactions={\n\t\t\t\t\t<ScreenNavigationMoreMenu\n\t\t\t\t\t\tmenuId={ navigationMenu?.id }\n\t\t\t\t\t\tmenuTitle={ decodeEntities( menuTitle ) }\n\t\t\t\t\t\tonDelete={ _handleDelete }\n\t\t\t\t\t\tonSave={ _handleSave }\n\t\t\t\t\t\tonDuplicate={ _handleDuplicate }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tbackPath={ backPath }\n\t\t\t\ttitle={ buildNavigationLabel(\n\t\t\t\t\tnavigationMenu?.title,\n\t\t\t\t\tnavigationMenu?.id,\n\t\t\t\t\tnavigationMenu?.status\n\t\t\t\t) }\n\t\t\t\tdescription={ __( 'This Navigation Menu is empty.' ) }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<SingleNavigationMenu\n\t\t\tnavigationMenu={ navigationMenu }\n\t\t\tbackPath={ backPath }\n\t\t\thandleDelete={ _handleDelete }\n\t\t\thandleSave={ _handleSave }\n\t\t\thandleDuplicate={ _handleDuplicate }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport Editor from '../editor';\nimport SidebarNavigationScreenNavigationMenu from '../sidebar-navigation-screen-navigation-menu';\nimport SidebarNavigationScreenUnsupported from '../sidebar-navigation-screen-unsupported';\nimport { unlock } from '../../lock-unlock';\n\nconst { useLocation } = unlock( routerPrivateApis );\n\nfunction MobileNavigationItemView() {\n\tconst { query = {} } = useLocation();\n\tconst { canvas = 'view' } = query;\n\n\treturn canvas === 'edit' ? (\n\t\t<Editor />\n\t) : (\n\t\t<SidebarNavigationScreenNavigationMenu backPath=\"/navigation\" />\n\t);\n}\n\nexport const navigationItemRoute = {\n\tname: 'navigation-item',\n\tpath: '/wp_navigation/:postId',\n\tareas: {\n\t\tsidebar( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\treturn isBlockTheme ? (\n\t\t\t\t<SidebarNavigationScreenNavigationMenu backPath=\"/navigation\" />\n\t\t\t) : (\n\t\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t\t);\n\t\t},\n\t\tpreview( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\treturn isBlockTheme ? (\n\t\t\t\t<Editor />\n\t\t\t) : (\n\t\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t\t);\n\t\t},\n\t\tmobile( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\treturn isBlockTheme ? (\n\t\t\t\t<MobileNavigationItemView />\n\t\t\t) : (\n\t\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t\t);\n\t\t},\n\t},\n};\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n} from '@wordpress/components';\nimport { getTemplatePartIcon } from '@wordpress/editor';\nimport { __ } from '@wordpress/i18n';\nimport { file } from '@wordpress/icons';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport SidebarNavigationScreen from '../sidebar-navigation-screen';\nimport CategoryItem from './category-item';\nimport {\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_TYPES,\n\tTEMPLATE_PART_POST_TYPE,\n\tTEMPLATE_PART_ALL_AREAS_CATEGORY,\n} from '../../utils/constants';\nimport usePatternCategories from './use-pattern-categories';\nimport useTemplatePartAreas from './use-template-part-areas';\nimport { unlock } from '../../lock-unlock';\n\nconst { useLocation } = unlock( routerPrivateApis );\n\nfunction CategoriesGroup( {\n\ttemplatePartAreas,\n\tpatternCategories,\n\tcurrentCategory,\n\tcurrentType,\n} ) {\n\tconst [ allPatterns, ...otherPatterns ] = patternCategories;\n\n\treturn (\n\t\t<ItemGroup className=\"edit-site-sidebar-navigation-screen-patterns__group\">\n\t\t\t<CategoryItem\n\t\t\t\tkey=\"all\"\n\t\t\t\tcount={ Object.values( templatePartAreas )\n\t\t\t\t\t.map( ( { templateParts } ) => templateParts?.length || 0 )\n\t\t\t\t\t.reduce( ( acc, val ) => acc + val, 0 ) }\n\t\t\t\ticon={ getTemplatePartIcon() } /* no name, so it provides the fallback icon */\n\t\t\t\tlabel={ __( 'All template parts' ) }\n\t\t\t\tid={ TEMPLATE_PART_ALL_AREAS_CATEGORY }\n\t\t\t\ttype={ TEMPLATE_PART_POST_TYPE }\n\t\t\t\tisActive={\n\t\t\t\t\tcurrentCategory === TEMPLATE_PART_ALL_AREAS_CATEGORY &&\n\t\t\t\t\tcurrentType === TEMPLATE_PART_POST_TYPE\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ Object.entries( templatePartAreas ).map(\n\t\t\t\t( [ area, { label, templateParts, icon } ] ) => (\n\t\t\t\t\t<CategoryItem\n\t\t\t\t\t\tkey={ area }\n\t\t\t\t\t\tcount={ templateParts?.length }\n\t\t\t\t\t\ticon={ getTemplatePartIcon( icon ) }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tid={ area }\n\t\t\t\t\t\ttype={ TEMPLATE_PART_POST_TYPE }\n\t\t\t\t\t\tisActive={\n\t\t\t\t\t\t\tcurrentCategory === area &&\n\t\t\t\t\t\t\tcurrentType === TEMPLATE_PART_POST_TYPE\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t) }\n\t\t\t<div className=\"edit-site-sidebar-navigation-screen-patterns__divider\" />\n\t\t\t{ allPatterns && (\n\t\t\t\t<CategoryItem\n\t\t\t\t\tkey={ allPatterns.name }\n\t\t\t\t\tcount={ allPatterns.count }\n\t\t\t\t\tlabel={ allPatterns.label }\n\t\t\t\t\ticon={ file }\n\t\t\t\t\tid={ allPatterns.name }\n\t\t\t\t\ttype={ PATTERN_TYPES.user }\n\t\t\t\t\tisActive={\n\t\t\t\t\t\tcurrentCategory === `${ allPatterns.name }` &&\n\t\t\t\t\t\tcurrentType === PATTERN_TYPES.user\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ otherPatterns.map( ( category ) => (\n\t\t\t\t<CategoryItem\n\t\t\t\t\tkey={ category.name }\n\t\t\t\t\tcount={ category.count }\n\t\t\t\t\tlabel={ category.label }\n\t\t\t\t\ticon={ file }\n\t\t\t\t\tid={ category.name }\n\t\t\t\t\ttype={ PATTERN_TYPES.user }\n\t\t\t\t\tisActive={\n\t\t\t\t\t\tcurrentCategory === `${ category.name }` &&\n\t\t\t\t\t\tcurrentType === PATTERN_TYPES.user\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</ItemGroup>\n\t);\n}\n\nexport default function SidebarNavigationScreenPatterns( { backPath } ) {\n\tconst {\n\t\tquery: { postType = 'wp_block', categoryId },\n\t} = useLocation();\n\tconst currentCategory =\n\t\tcategoryId ||\n\t\t( postType === PATTERN_TYPES.user\n\t\t\t? PATTERN_DEFAULT_CATEGORY\n\t\t\t: TEMPLATE_PART_ALL_AREAS_CATEGORY );\n\n\tconst { templatePartAreas, hasTemplateParts, isLoading } =\n\t\tuseTemplatePartAreas();\n\tconst { patternCategories, hasPatterns } = usePatternCategories();\n\n\treturn (\n\t\t<SidebarNavigationScreen\n\t\t\ttitle={ __( 'Patterns' ) }\n\t\t\tdescription={ __(\n\t\t\t\t'Manage what patterns are available when editing the site.'\n\t\t\t) }\n\t\t\tisRoot={ ! backPath }\n\t\t\tbackPath={ backPath }\n\t\t\tcontent={\n\t\t\t\t<>\n\t\t\t\t\t{ isLoading && __( 'Loading items\u2026' ) }\n\t\t\t\t\t{ ! isLoading && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ ! hasTemplateParts && ! hasPatterns && (\n\t\t\t\t\t\t\t\t<ItemGroup className=\"edit-site-sidebar-navigation-screen-patterns__group\">\n\t\t\t\t\t\t\t\t\t<Item>{ __( 'No items found' ) }</Item>\n\t\t\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<CategoriesGroup\n\t\t\t\t\t\t\t\ttemplatePartAreas={ templatePartAreas }\n\t\t\t\t\t\t\t\tpatternCategories={ patternCategories }\n\t\t\t\t\t\t\t\tcurrentCategory={ currentCategory }\n\t\t\t\t\t\t\t\tcurrentType={ postType }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t}\n\t\t/>\n\t);\n}\n", "/**\n * Internal dependencies\n */\nimport SidebarNavigationItem from '../sidebar-navigation-item';\n\nexport default function CategoryItem( {\n\tcount,\n\ticon,\n\tid,\n\tisActive,\n\tlabel,\n\ttype,\n} ) {\n\tif ( ! count ) {\n\t\treturn;\n\t}\n\tconst queryArgs = [ `postType=${ type }` ];\n\tif ( id ) {\n\t\tqueryArgs.push( `categoryId=${ id }` );\n\t}\n\n\treturn (\n\t\t<SidebarNavigationItem\n\t\t\ticon={ icon }\n\t\t\tsuffix={ <span>{ count }</span> }\n\t\t\taria-current={ isActive ? 'true' : undefined }\n\t\t\tto={ `/pattern?${ queryArgs.join( '&' ) }` }\n\t\t>\n\t\t\t{ label }\n\t\t</SidebarNavigationItem>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport useDefaultPatternCategories from './use-default-pattern-categories';\nimport useThemePatterns from './use-theme-patterns';\nimport usePatterns from '../page-patterns/use-patterns';\nimport {\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tTEMPLATE_PART_AREA_DEFAULT_CATEGORY,\n} from '../../utils/constants';\n\nexport default function usePatternCategories() {\n\tconst defaultCategories = useDefaultPatternCategories();\n\tdefaultCategories.push( {\n\t\tname: TEMPLATE_PART_AREA_DEFAULT_CATEGORY,\n\t\tlabel: __( 'Uncategorized' ),\n\t} );\n\tconst themePatterns = useThemePatterns();\n\tconst { patterns: userPatterns, categories: userPatternCategories } =\n\t\tusePatterns( PATTERN_TYPES.user );\n\n\tconst patternCategories = useMemo( () => {\n\t\tconst categoryMap = {};\n\t\tconst categoriesWithCounts = [];\n\n\t\t// Create a map for easier counting of patterns in categories.\n\t\tdefaultCategories.forEach( ( category ) => {\n\t\t\tif ( ! categoryMap[ category.name ] ) {\n\t\t\t\tcategoryMap[ category.name ] = { ...category, count: 0 };\n\t\t\t}\n\t\t} );\n\t\tuserPatternCategories.forEach( ( category ) => {\n\t\t\tif ( ! categoryMap[ category.name ] ) {\n\t\t\t\tcategoryMap[ category.name ] = { ...category, count: 0 };\n\t\t\t}\n\t\t} );\n\n\t\t// Update the category counts to reflect theme registered patterns.\n\t\tthemePatterns.forEach( ( pattern ) => {\n\t\t\tpattern.categories?.forEach( ( category ) => {\n\t\t\t\tif ( categoryMap[ category ] ) {\n\t\t\t\t\tcategoryMap[ category ].count += 1;\n\t\t\t\t}\n\t\t\t} );\n\t\t\t// If the pattern has no categories, add it to uncategorized.\n\t\t\tif ( ! pattern.categories?.length ) {\n\t\t\t\tcategoryMap.uncategorized.count += 1;\n\t\t\t}\n\t\t} );\n\n\t\t// Update the category counts to reflect user registered patterns.\n\t\tuserPatterns.forEach( ( pattern ) => {\n\t\t\tpattern.wp_pattern_category?.forEach( ( catId ) => {\n\t\t\t\tconst category = userPatternCategories.find(\n\t\t\t\t\t( cat ) => cat.id === catId\n\t\t\t\t)?.name;\n\t\t\t\tif ( categoryMap[ category ] ) {\n\t\t\t\t\tcategoryMap[ category ].count += 1;\n\t\t\t\t}\n\t\t\t} );\n\t\t\t// If the pattern has no categories, add it to uncategorized.\n\t\t\tif (\n\t\t\t\t! pattern.wp_pattern_category?.length ||\n\t\t\t\t! pattern.wp_pattern_category?.some( ( catId ) =>\n\t\t\t\t\tuserPatternCategories.find( ( cat ) => cat.id === catId )\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcategoryMap.uncategorized.count += 1;\n\t\t\t}\n\t\t} );\n\n\t\t// Filter categories so we only have those containing patterns.\n\t\t[ ...defaultCategories, ...userPatternCategories ].forEach(\n\t\t\t( category ) => {\n\t\t\t\tif (\n\t\t\t\t\tcategoryMap[ category.name ].count &&\n\t\t\t\t\t! categoriesWithCounts.find(\n\t\t\t\t\t\t( cat ) => cat.name === category.name\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tcategoriesWithCounts.push( categoryMap[ category.name ] );\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\tconst sortedCategories = categoriesWithCounts.sort( ( a, b ) =>\n\t\t\ta.label.localeCompare( b.label )\n\t\t);\n\n\t\tsortedCategories.unshift( {\n\t\t\tname: PATTERN_USER_CATEGORY,\n\t\t\tlabel: __( 'My patterns' ),\n\t\t\tcount: userPatterns.length,\n\t\t} );\n\n\t\tsortedCategories.unshift( {\n\t\t\tname: PATTERN_DEFAULT_CATEGORY,\n\t\t\tlabel: __( 'All patterns' ),\n\t\t\tdescription: __( 'A list of all patterns from all sources.' ),\n\t\t\tcount: themePatterns.length + userPatterns.length,\n\t\t} );\n\n\t\treturn sortedCategories;\n\t}, [\n\t\tdefaultCategories,\n\t\tthemePatterns,\n\t\tuserPatternCategories,\n\t\tuserPatterns,\n\t] );\n\n\treturn { patternCategories, hasPatterns: !! patternCategories.length };\n}\n", "/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as editSiteStore } from '../../store';\n\nexport default function useDefaultPatternCategories() {\n\tconst blockPatternCategories = useSelect( ( select ) => {\n\t\tconst { getSettings } = unlock( select( editSiteStore ) );\n\t\tconst settings = getSettings();\n\n\t\treturn (\n\t\t\tsettings.__experimentalAdditionalBlockPatternCategories ??\n\t\t\tsettings.__experimentalBlockPatternCategories\n\t\t);\n\t} );\n\n\tconst restBlockPatternCategories = useSelect( ( select ) =>\n\t\tselect( coreStore ).getBlockPatternCategories()\n\t);\n\n\treturn [\n\t\t...( blockPatternCategories || [] ),\n\t\t...( restBlockPatternCategories || [] ),\n\t];\n}\n", "/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { filterOutDuplicatesByName } from '../page-patterns/utils';\nimport { EXCLUDED_PATTERN_SOURCES } from '../../utils/constants';\nimport { unlock } from '../../lock-unlock';\nimport { store as editSiteStore } from '../../store';\n\nexport default function useThemePatterns() {\n\tconst blockPatterns = useSelect( ( select ) => {\n\t\tconst { getSettings } = unlock( select( editSiteStore ) );\n\n\t\treturn (\n\t\t\tgetSettings().__experimentalAdditionalBlockPatterns ??\n\t\t\tgetSettings().__experimentalBlockPatterns\n\t\t);\n\t} );\n\n\tconst restBlockPatterns = useSelect( ( select ) =>\n\t\tselect( coreStore ).getBlockPatterns()\n\t);\n\n\tconst patterns = useMemo(\n\t\t() =>\n\t\t\t[ ...( blockPatterns || [] ), ...( restBlockPatterns || [] ) ]\n\t\t\t\t.filter(\n\t\t\t\t\t( pattern ) =>\n\t\t\t\t\t\t! EXCLUDED_PATTERN_SOURCES.includes( pattern.source )\n\t\t\t\t)\n\t\t\t\t.filter( filterOutDuplicatesByName )\n\t\t\t\t.filter( ( pattern ) => pattern.inserter !== false ),\n\t\t[ blockPatterns, restBlockPatterns ]\n\t);\n\n\treturn patterns;\n}\n", "export const filterOutDuplicatesByName = ( currentItem, index, items ) =>\n\tindex === items.findIndex( ( item ) => currentItem.name === item.name );\n", "/**\n * WordPress dependencies\n */\nimport { parse } from '@wordpress/blocks';\nimport { useSelect, createSelector } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { filterOutDuplicatesByName } from './utils';\nimport {\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_TYPES,\n\tPATTERN_SYNC_TYPES,\n\tTEMPLATE_PART_POST_TYPE,\n\tTEMPLATE_PART_AREA_DEFAULT_CATEGORY,\n} from '../../utils/constants';\nimport { unlock } from '../../lock-unlock';\nimport { searchItems } from './search-items';\nimport { store as editSiteStore } from '../../store';\n\nconst EMPTY_PATTERN_LIST = [];\n\nconst selectTemplateParts = createSelector(\n\t( select, categoryId, search = '' ) => {\n\t\tconst {\n\t\t\tgetEntityRecords,\n\t\t\tgetCurrentTheme,\n\t\t\tisResolving: isResolvingSelector,\n\t\t} = select( coreStore );\n\n\t\tconst query = { per_page: -1 };\n\t\tconst templateParts =\n\t\t\tgetEntityRecords( 'postType', TEMPLATE_PART_POST_TYPE, query ) ??\n\t\t\tEMPTY_PATTERN_LIST;\n\n\t\t// In the case where a custom template part area has been removed we need\n\t\t// the current list of areas to cross check against so orphaned template\n\t\t// parts can be treated as uncategorized.\n\t\tconst knownAreas = getCurrentTheme()?.default_template_part_areas || [];\n\n\t\tconst templatePartAreas = knownAreas.map( ( area ) => area.area );\n\n\t\tconst templatePartHasCategory = ( item, category ) => {\n\t\t\tif ( category !== TEMPLATE_PART_AREA_DEFAULT_CATEGORY ) {\n\t\t\t\treturn item.area === category;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\titem.area === category ||\n\t\t\t\t! templatePartAreas.includes( item.area )\n\t\t\t);\n\t\t};\n\n\t\tconst isResolving = isResolvingSelector( 'getEntityRecords', [\n\t\t\t'postType',\n\t\t\tTEMPLATE_PART_POST_TYPE,\n\t\t\tquery,\n\t\t] );\n\n\t\tconst patterns = searchItems( templateParts, search, {\n\t\t\tcategoryId,\n\t\t\thasCategory: templatePartHasCategory,\n\t\t} );\n\n\t\treturn { patterns, isResolving };\n\t},\n\t( select ) => [\n\t\tselect( coreStore ).getEntityRecords(\n\t\t\t'postType',\n\t\t\tTEMPLATE_PART_POST_TYPE,\n\t\t\t{\n\t\t\t\tper_page: -1,\n\t\t\t}\n\t\t),\n\t\tselect( coreStore ).isResolving( 'getEntityRecords', [\n\t\t\t'postType',\n\t\t\tTEMPLATE_PART_POST_TYPE,\n\t\t\t{ per_page: -1 },\n\t\t] ),\n\t\tselect( coreStore ).getCurrentTheme()?.default_template_part_areas,\n\t]\n);\n\nconst selectThemePatterns = createSelector(\n\t( select ) => {\n\t\tconst { getSettings } = unlock( select( editSiteStore ) );\n\t\tconst { isResolving: isResolvingSelector } = select( coreStore );\n\t\tconst settings = getSettings();\n\t\tconst blockPatterns =\n\t\t\tsettings.__experimentalAdditionalBlockPatterns ??\n\t\t\tsettings.__experimentalBlockPatterns;\n\n\t\tconst restBlockPatterns = select( coreStore ).getBlockPatterns();\n\n\t\tconst patterns = [\n\t\t\t...( blockPatterns || [] ),\n\t\t\t...( restBlockPatterns || [] ),\n\t\t]\n\t\t\t.filter(\n\t\t\t\t( pattern ) =>\n\t\t\t\t\t! EXCLUDED_PATTERN_SOURCES.includes( pattern.source )\n\t\t\t)\n\t\t\t.filter( filterOutDuplicatesByName )\n\t\t\t.filter( ( pattern ) => pattern.inserter !== false )\n\t\t\t.map( ( pattern ) => ( {\n\t\t\t\t...pattern,\n\t\t\t\tkeywords: pattern.keywords || [],\n\t\t\t\ttype: PATTERN_TYPES.theme,\n\t\t\t\tblocks: parse( pattern.content, {\n\t\t\t\t\t__unstableSkipMigrationLogs: true,\n\t\t\t\t} ),\n\t\t\t} ) );\n\t\treturn {\n\t\t\tpatterns,\n\t\t\tisResolving: isResolvingSelector( 'getBlockPatterns' ),\n\t\t};\n\t},\n\t( select ) => [\n\t\tselect( coreStore ).getBlockPatterns(),\n\t\tselect( coreStore ).isResolving( 'getBlockPatterns' ),\n\t\tunlock( select( editSiteStore ) ).getSettings(),\n\t]\n);\n\nconst selectPatterns = createSelector(\n\t( select, categoryId, syncStatus, search = '' ) => {\n\t\tconst {\n\t\t\tpatterns: themePatterns,\n\t\t\tisResolving: isResolvingThemePatterns,\n\t\t} = selectThemePatterns( select );\n\t\tconst {\n\t\t\tpatterns: userPatterns,\n\t\t\tisResolving: isResolvingUserPatterns,\n\t\t\tcategories: userPatternCategories,\n\t\t} = selectUserPatterns( select );\n\n\t\tlet patterns = [\n\t\t\t...( themePatterns || [] ),\n\t\t\t...( userPatterns || [] ),\n\t\t];\n\n\t\tif ( syncStatus ) {\n\t\t\t// User patterns can have their sync statuses checked directly\n\t\t\t// Non-user patterns are all unsynced for the time being.\n\t\t\tpatterns = patterns.filter( ( pattern ) => {\n\t\t\t\treturn pattern.type === PATTERN_TYPES.user\n\t\t\t\t\t? ( pattern.wp_pattern_sync_status ||\n\t\t\t\t\t\t\tPATTERN_SYNC_TYPES.full ) === syncStatus\n\t\t\t\t\t: syncStatus === PATTERN_SYNC_TYPES.unsynced;\n\t\t\t} );\n\t\t}\n\n\t\tif ( categoryId ) {\n\t\t\tpatterns = searchItems( patterns, search, {\n\t\t\t\tcategoryId,\n\t\t\t\thasCategory: ( item, currentCategory ) => {\n\t\t\t\t\tif ( item.type === PATTERN_TYPES.user ) {\n\t\t\t\t\t\treturn item.wp_pattern_category?.some(\n\t\t\t\t\t\t\t( catId ) =>\n\t\t\t\t\t\t\t\tuserPatternCategories.find(\n\t\t\t\t\t\t\t\t\t( cat ) => cat.id === catId\n\t\t\t\t\t\t\t\t)?.slug === currentCategory\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn item.categories?.includes( currentCategory );\n\t\t\t\t},\n\t\t\t} );\n\t\t} else {\n\t\t\tpatterns = searchItems( patterns, search, {\n\t\t\t\thasCategory: ( item ) => {\n\t\t\t\t\tif ( item.type === PATTERN_TYPES.user ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tuserPatternCategories?.length &&\n\t\t\t\t\t\t\t( ! item.wp_pattern_category?.length ||\n\t\t\t\t\t\t\t\t! item.wp_pattern_category?.some( ( catId ) =>\n\t\t\t\t\t\t\t\t\tuserPatternCategories.find(\n\t\t\t\t\t\t\t\t\t\t( cat ) => cat.id === catId\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t) )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn ! item.hasOwnProperty( 'categories' );\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t\treturn {\n\t\t\tpatterns,\n\t\t\tisResolving: isResolvingThemePatterns || isResolvingUserPatterns,\n\t\t};\n\t},\n\t( select ) => [\n\t\tselectThemePatterns( select ),\n\t\tselectUserPatterns( select ),\n\t]\n);\n\nconst selectUserPatterns = createSelector(\n\t( select, syncStatus, search = '' ) => {\n\t\tconst {\n\t\t\tgetEntityRecords,\n\t\t\tisResolving: isResolvingSelector,\n\t\t\tgetUserPatternCategories,\n\t\t} = select( coreStore );\n\n\t\tconst query = { per_page: -1 };\n\t\tconst patternPosts = getEntityRecords(\n\t\t\t'postType',\n\t\t\tPATTERN_TYPES.user,\n\t\t\tquery\n\t\t);\n\t\tconst userPatternCategories = getUserPatternCategories();\n\t\tconst categories = new Map();\n\t\tuserPatternCategories.forEach( ( userCategory ) =>\n\t\t\tcategories.set( userCategory.id, userCategory )\n\t\t);\n\t\tlet patterns = patternPosts ?? EMPTY_PATTERN_LIST;\n\t\tconst isResolving = isResolvingSelector( 'getEntityRecords', [\n\t\t\t'postType',\n\t\t\tPATTERN_TYPES.user,\n\t\t\tquery,\n\t\t] );\n\n\t\tif ( syncStatus ) {\n\t\t\tpatterns = patterns.filter(\n\t\t\t\t( pattern ) =>\n\t\t\t\t\tpattern.wp_pattern_sync_status ||\n\t\t\t\t\tPATTERN_SYNC_TYPES.full === syncStatus\n\t\t\t);\n\t\t}\n\n\t\tpatterns = searchItems( patterns, search, {\n\t\t\t// We exit user pattern retrieval early if we aren't in the\n\t\t\t// catch-all category for user created patterns, so it has\n\t\t\t// to be in the category.\n\t\t\thasCategory: () => true,\n\t\t} );\n\n\t\treturn {\n\t\t\tpatterns,\n\t\t\tisResolving,\n\t\t\tcategories: userPatternCategories,\n\t\t};\n\t},\n\t( select ) => [\n\t\tselect( coreStore ).getEntityRecords( 'postType', PATTERN_TYPES.user, {\n\t\t\tper_page: -1,\n\t\t} ),\n\t\tselect( coreStore ).isResolving( 'getEntityRecords', [\n\t\t\t'postType',\n\t\t\tPATTERN_TYPES.user,\n\t\t\t{ per_page: -1 },\n\t\t] ),\n\t\tselect( coreStore ).getUserPatternCategories(),\n\t]\n);\n\nexport function useAugmentPatternsWithPermissions( patterns ) {\n\tconst idsAndTypes = useMemo(\n\t\t() =>\n\t\t\tpatterns\n\t\t\t\t?.filter( ( record ) => record.type !== PATTERN_TYPES.theme )\n\t\t\t\t.map( ( record ) => [ record.type, record.id ] ) ?? [],\n\t\t[ patterns ]\n\t);\n\n\tconst permissions = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecordPermissions } = unlock(\n\t\t\t\tselect( coreStore )\n\t\t\t);\n\t\t\treturn idsAndTypes.reduce( ( acc, [ type, id ] ) => {\n\t\t\t\tacc[ id ] = getEntityRecordPermissions( 'postType', type, id );\n\t\t\t\treturn acc;\n\t\t\t}, {} );\n\t\t},\n\t\t[ idsAndTypes ]\n\t);\n\n\treturn useMemo(\n\t\t() =>\n\t\t\tpatterns?.map( ( record ) => ( {\n\t\t\t\t...record,\n\t\t\t\tpermissions: permissions?.[ record.id ] ?? {},\n\t\t\t} ) ) ?? [],\n\t\t[ patterns, permissions ]\n\t);\n}\n\nexport const usePatterns = (\n\tpostType,\n\tcategoryId,\n\t{ search = '', syncStatus } = {}\n) => {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tif ( postType === TEMPLATE_PART_POST_TYPE ) {\n\t\t\t\treturn selectTemplateParts( select, categoryId, search );\n\t\t\t} else if ( postType === PATTERN_TYPES.user && !! categoryId ) {\n\t\t\t\tconst appliedCategory =\n\t\t\t\t\tcategoryId === 'uncategorized' ? '' : categoryId;\n\t\t\t\treturn selectPatterns(\n\t\t\t\t\tselect,\n\t\t\t\t\tappliedCategory,\n\t\t\t\t\tsyncStatus,\n\t\t\t\t\tsearch\n\t\t\t\t);\n\t\t\t} else if ( postType === PATTERN_TYPES.user ) {\n\t\t\t\treturn selectUserPatterns( select, syncStatus, search );\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tpatterns: EMPTY_PATTERN_LIST,\n\t\t\t\tisResolving: false,\n\t\t\t};\n\t\t},\n\t\t[ categoryId, postType, search, syncStatus ]\n\t);\n};\n\nexport default usePatterns;\n", "/**\n * WordPress dependencies\n */\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { extractWords, getNormalizedSearchTerms, normalizeString } = unlock(\n\tblockEditorPrivateApis\n);\n\n/**\n * Internal dependencies\n */\nimport {\n\tTEMPLATE_PART_ALL_AREAS_CATEGORY,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tPATTERN_TYPES,\n\tTEMPLATE_PART_POST_TYPE,\n} from '../../utils/constants';\n\n// Default search helpers.\nconst defaultGetName = ( item ) => {\n\tif ( item.type === PATTERN_TYPES.user ) {\n\t\treturn item.slug;\n\t}\n\n\tif ( item.type === TEMPLATE_PART_POST_TYPE ) {\n\t\treturn '';\n\t}\n\n\treturn item.name || '';\n};\n\nexport const defaultGetTitle = ( item ) => {\n\tif ( typeof item.title === 'string' ) {\n\t\treturn item.title;\n\t}\n\n\tif ( item.title && item.title.rendered ) {\n\t\treturn item.title.rendered;\n\t}\n\n\tif ( item.title && item.title.raw ) {\n\t\treturn item.title.raw;\n\t}\n\n\treturn '';\n};\n\nconst defaultGetDescription = ( item ) => {\n\tif ( item.type === PATTERN_TYPES.user ) {\n\t\treturn item.excerpt.raw;\n\t}\n\n\treturn item.description || '';\n};\n\nconst defaultGetKeywords = ( item ) => item.keywords || [];\nconst defaultHasCategory = () => false;\n\nconst removeMatchingTerms = ( unmatchedTerms, unprocessedTerms ) => {\n\treturn unmatchedTerms.filter(\n\t\t( term ) =>\n\t\t\t! getNormalizedSearchTerms( unprocessedTerms ).some(\n\t\t\t\t( unprocessedTerm ) => unprocessedTerm.includes( term )\n\t\t\t)\n\t);\n};\n\n/**\n * Filters an item list given a search term.\n *\n * @param {Array}  items       Item list\n * @param {string} searchInput Search input.\n * @param {Object} config      Search Config.\n *\n * @return {Array} Filtered item list.\n */\nexport const searchItems = ( items = [], searchInput = '', config = {} ) => {\n\tconst normalizedSearchTerms = getNormalizedSearchTerms( searchInput );\n\n\t// Filter patterns by category: the default category indicates that all patterns will be shown.\n\tconst onlyFilterByCategory =\n\t\tconfig.categoryId !== PATTERN_DEFAULT_CATEGORY &&\n\t\t! normalizedSearchTerms.length;\n\tconst searchRankConfig = { ...config, onlyFilterByCategory };\n\n\t// If we aren't filtering on search terms, matching on category is satisfactory.\n\t// If we are, then we need more than a category match.\n\tconst threshold = onlyFilterByCategory ? 0 : 1;\n\n\tconst rankedItems = items\n\t\t.map( ( item ) => {\n\t\t\treturn [\n\t\t\t\titem,\n\t\t\t\tgetItemSearchRank( item, searchInput, searchRankConfig ),\n\t\t\t];\n\t\t} )\n\t\t.filter( ( [ , rank ] ) => rank > threshold );\n\n\t// If we didn't have terms to search on, there's no point sorting.\n\tif ( normalizedSearchTerms.length === 0 ) {\n\t\treturn rankedItems.map( ( [ item ] ) => item );\n\t}\n\n\trankedItems.sort( ( [ , rank1 ], [ , rank2 ] ) => rank2 - rank1 );\n\treturn rankedItems.map( ( [ item ] ) => item );\n};\n\n/**\n * Get the search rank for a given item and a specific search term.\n * The better the match, the higher the rank.\n * If the rank equals 0, it should be excluded from the results.\n *\n * @param {Object} item       Item to filter.\n * @param {string} searchTerm Search term.\n * @param {Object} config     Search Config.\n *\n * @return {number} Search Rank.\n */\nfunction getItemSearchRank( item, searchTerm, config ) {\n\tconst {\n\t\tcategoryId,\n\t\tgetName = defaultGetName,\n\t\tgetTitle = defaultGetTitle,\n\t\tgetDescription = defaultGetDescription,\n\t\tgetKeywords = defaultGetKeywords,\n\t\thasCategory = defaultHasCategory,\n\t\tonlyFilterByCategory,\n\t} = config;\n\n\tlet rank =\n\t\tcategoryId === PATTERN_DEFAULT_CATEGORY ||\n\t\tcategoryId === TEMPLATE_PART_ALL_AREAS_CATEGORY ||\n\t\t( categoryId === PATTERN_USER_CATEGORY &&\n\t\t\titem.type === PATTERN_TYPES.user ) ||\n\t\thasCategory( item, categoryId )\n\t\t\t? 1\n\t\t\t: 0;\n\n\t// If an item doesn't belong to the current category or we don't have\n\t// search terms to filter by, return the initial rank value.\n\tif ( ! rank || onlyFilterByCategory ) {\n\t\treturn rank;\n\t}\n\n\tconst name = getName( item );\n\tconst title = getTitle( item );\n\tconst description = getDescription( item );\n\tconst keywords = getKeywords( item );\n\n\tconst normalizedSearchInput = normalizeString( searchTerm );\n\tconst normalizedTitle = normalizeString( title );\n\n\t// Prefers exact matches\n\t// Then prefers if the beginning of the title matches the search term\n\t// name, keywords, description matches come later.\n\tif ( normalizedSearchInput === normalizedTitle ) {\n\t\trank += 30;\n\t} else if ( normalizedTitle.startsWith( normalizedSearchInput ) ) {\n\t\trank += 20;\n\t} else {\n\t\tconst terms = [ name, title, description, ...keywords ].join( ' ' );\n\t\tconst normalizedSearchTerms = extractWords( normalizedSearchInput );\n\t\tconst unmatchedTerms = removeMatchingTerms(\n\t\t\tnormalizedSearchTerms,\n\t\t\tterms\n\t\t);\n\n\t\tif ( unmatchedTerms.length === 0 ) {\n\t\t\trank += 10;\n\t\t}\n\t}\n\n\treturn rank;\n}\n", "/**\n * WordPress dependencies\n */\nimport { useEntityRecords, store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { privateApis as blockLibraryPrivateApis } from '@wordpress/block-library';\n\n/**\n * Internal dependencies\n */\nimport {\n\tTEMPLATE_PART_AREA_DEFAULT_CATEGORY,\n\tTEMPLATE_PART_POST_TYPE,\n} from '../../utils/constants';\nimport { unlock } from '../../lock-unlock';\n\nconst { NAVIGATION_OVERLAY_TEMPLATE_PART_AREA } = unlock(\n\tblockLibraryPrivateApis\n);\n\nconst useTemplatePartsGroupedByArea = ( items ) => {\n\tconst allItems = items || [];\n\n\tconst templatePartAreas = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getCurrentTheme()\n\t\t\t\t?.default_template_part_areas || [],\n\t\t[]\n\t);\n\n\t// Create map of template areas ensuring that default areas are displayed before\n\t// any custom registered template part areas.\n\tconst knownAreas = {\n\t\theader: {},\n\t\tfooter: {},\n\t\tsidebar: {},\n\t\tuncategorized: {},\n\t\t[ NAVIGATION_OVERLAY_TEMPLATE_PART_AREA ]: {},\n\t};\n\n\ttemplatePartAreas.forEach(\n\t\t( templatePartArea ) =>\n\t\t\t( knownAreas[ templatePartArea.area ] = {\n\t\t\t\t...templatePartArea,\n\t\t\t\ttemplateParts: [],\n\t\t\t} )\n\t);\n\n\tconst groupedByArea = allItems.reduce( ( accumulator, item ) => {\n\t\tconst key = accumulator[ item.area ]\n\t\t\t? item.area\n\t\t\t: TEMPLATE_PART_AREA_DEFAULT_CATEGORY;\n\t\taccumulator[ key ]?.templateParts?.push( item );\n\t\treturn accumulator;\n\t}, knownAreas );\n\n\treturn groupedByArea;\n};\n\nexport default function useTemplatePartAreas() {\n\tconst { records: templateParts, isResolving: isLoading } = useEntityRecords(\n\t\t'postType',\n\t\tTEMPLATE_PART_POST_TYPE,\n\t\t{ per_page: -1 }\n\t);\n\n\treturn {\n\t\thasTemplateParts: templateParts ? !! templateParts.length : false,\n\t\tisLoading,\n\t\ttemplatePartAreas: useTemplatePartsGroupedByArea( templateParts ),\n\t};\n}\n", "/**\n * WordPress dependencies\n */\nimport { Page } from '@wordpress/admin-ui';\nimport { __ } from '@wordpress/i18n';\nimport { useMemo } from '@wordpress/element';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { DataViews, filterSortAndPaginate } from '@wordpress/dataviews';\nimport { useEntityRecords, store as coreStore } from '@wordpress/core-data';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { useView } from '@wordpress/views';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tLAYOUT_GRID,\n\tLAYOUT_TABLE,\n\tPATTERN_TYPES,\n\tTEMPLATE_PART_POST_TYPE,\n\tPATTERN_DEFAULT_CATEGORY,\n} from '../../utils/constants';\nimport usePatternSettings from './use-pattern-settings';\nimport { unlock } from '../../lock-unlock';\nimport usePatterns, { useAugmentPatternsWithPermissions } from './use-patterns';\nimport PatternsActions from './actions';\nimport { useEditPostAction } from '../dataviews-actions';\nimport {\n\tpatternStatusField,\n\tpreviewField,\n\ttemplatePartAuthorField,\n} from './fields';\nimport { addQueryArgs } from '@wordpress/url';\nimport usePatternCategories from '../sidebar-navigation-screen-patterns/use-pattern-categories';\nimport { Button } from '@wordpress/components';\n\nconst { ExperimentalBlockEditorProvider } = unlock( blockEditorPrivateApis );\nconst { usePostActions, patternTitleField } = unlock( editorPrivateApis );\nconst { useLocation, useHistory } = unlock( routerPrivateApis );\n\nconst EMPTY_ARRAY = [];\nconst defaultLayouts = {\n\t[ LAYOUT_TABLE ]: {\n\t\tlayout: {\n\t\t\tstyles: {\n\t\t\t\tauthor: {\n\t\t\t\t\twidth: '1%',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\t[ LAYOUT_GRID ]: {\n\t\tlayout: {\n\t\t\tbadgeFields: [ 'sync-status' ],\n\t\t},\n\t},\n};\nconst DEFAULT_VIEW = {\n\ttype: LAYOUT_GRID,\n\tperPage: 20,\n\ttitleField: 'title',\n\tmediaField: 'preview',\n\tfields: [ 'sync-status' ],\n\tfilters: [],\n\t...defaultLayouts[ LAYOUT_GRID ],\n};\n\nfunction usePagePatternsHeader( type, categoryId ) {\n\tconst { patternCategories } = usePatternCategories();\n\tconst templatePartAreas = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getCurrentTheme()\n\t\t\t\t?.default_template_part_areas || [],\n\t\t[]\n\t);\n\tlet title, description, patternCategory;\n\tif ( type === TEMPLATE_PART_POST_TYPE ) {\n\t\tconst templatePartArea = templatePartAreas.find(\n\t\t\t( area ) => area.area === categoryId\n\t\t);\n\t\ttitle = templatePartArea?.label || __( 'All Template Parts' );\n\t\tdescription =\n\t\t\ttemplatePartArea?.description ||\n\t\t\t__( 'Includes every template part defined for any area.' );\n\t} else if ( type === PATTERN_TYPES.user && !! categoryId ) {\n\t\tpatternCategory = patternCategories.find(\n\t\t\t( category ) => category.name === categoryId\n\t\t);\n\t\ttitle = patternCategory?.label;\n\t\tdescription = patternCategory?.description;\n\t}\n\n\treturn { title, description };\n}\n\nexport default function DataviewsPatterns() {\n\tconst { path, query } = useLocation();\n\tconst { postType = 'wp_block', categoryId: categoryIdFromURL } = query;\n\tconst history = useHistory();\n\tconst categoryId = categoryIdFromURL || PATTERN_DEFAULT_CATEGORY;\n\tconst { view, updateView, isModified, resetToDefault } = useView( {\n\t\tkind: 'postType',\n\t\tname: postType,\n\t\tslug: categoryId,\n\t\tdefaultView: DEFAULT_VIEW,\n\t\tqueryParams: {\n\t\t\tpage: query.pageNumber,\n\t\t\tsearch: query.search,\n\t\t},\n\t\tonChangeQueryParams: ( params ) => {\n\t\t\thistory.navigate(\n\t\t\t\taddQueryArgs( path, {\n\t\t\t\t\t...query,\n\t\t\t\t\tpageNumber: params.page,\n\t\t\t\t\tsearch: params.search,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t} );\n\tconst viewSyncStatus = view.filters?.find(\n\t\t( { field } ) => field === 'sync-status'\n\t)?.value;\n\tconst { patterns, isResolving } = usePatterns( postType, categoryId, {\n\t\tsearch: view.search,\n\t\tsyncStatus: viewSyncStatus,\n\t} );\n\n\tconst { records } = useEntityRecords( 'postType', TEMPLATE_PART_POST_TYPE, {\n\t\tper_page: -1,\n\t} );\n\n\tconst authors = useMemo( () => {\n\t\tif ( ! records ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\t\tconst authorsSet = new Set();\n\t\trecords.forEach( ( template ) => {\n\t\t\tauthorsSet.add( template.author_text );\n\t\t} );\n\t\treturn Array.from( authorsSet ).map( ( author ) => ( {\n\t\t\tvalue: author,\n\t\t\tlabel: author,\n\t\t} ) );\n\t}, [ records ] );\n\n\tconst fields = useMemo( () => {\n\t\tconst _fields = [ previewField, patternTitleField ];\n\n\t\tif ( postType === PATTERN_TYPES.user ) {\n\t\t\t_fields.push( patternStatusField );\n\t\t} else if ( postType === TEMPLATE_PART_POST_TYPE ) {\n\t\t\t_fields.push( {\n\t\t\t\t...templatePartAuthorField,\n\t\t\t\telements: authors,\n\t\t\t} );\n\t\t}\n\n\t\treturn _fields;\n\t}, [ postType, authors ] );\n\n\tconst { data, paginationInfo } = useMemo( () => {\n\t\t// Search is managed server-side as well as filters for patterns.\n\t\t// However, the author filter in template parts is done client-side.\n\t\tconst viewWithoutFilters = { ...view };\n\t\tdelete viewWithoutFilters.search;\n\t\tif ( postType !== TEMPLATE_PART_POST_TYPE ) {\n\t\t\tviewWithoutFilters.filters = [];\n\t\t}\n\t\treturn filterSortAndPaginate( patterns, viewWithoutFilters, fields );\n\t}, [ patterns, view, fields, postType ] );\n\n\tconst dataWithPermissions = useAugmentPatternsWithPermissions( data );\n\n\tconst templatePartActions = usePostActions( {\n\t\tpostType: TEMPLATE_PART_POST_TYPE,\n\t\tcontext: 'list',\n\t} );\n\tconst patternActions = usePostActions( {\n\t\tpostType: PATTERN_TYPES.user,\n\t\tcontext: 'list',\n\t} );\n\tconst editAction = useEditPostAction();\n\n\tconst actions = useMemo( () => {\n\t\tif ( postType === TEMPLATE_PART_POST_TYPE ) {\n\t\t\treturn [ editAction, ...templatePartActions ].filter( Boolean );\n\t\t}\n\t\treturn [ editAction, ...patternActions ].filter( Boolean );\n\t}, [ editAction, postType, templatePartActions, patternActions ] );\n\tconst settings = usePatternSettings();\n\tconst { title, description } = usePagePatternsHeader(\n\t\tpostType,\n\t\tcategoryId\n\t);\n\n\t// Wrap everything in a block editor provider.\n\t// This ensures 'styles' that are needed for the previews are synced\n\t// from the site editor store to the block editor store.\n\treturn (\n\t\t<ExperimentalBlockEditorProvider settings={ settings }>\n\t\t\t<Page\n\t\t\t\tclassName=\"edit-site-page-patterns-dataviews\"\n\t\t\t\ttitle={ title }\n\t\t\t\tsubTitle={ description }\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ isModified && (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tonClick={ resetToDefault }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Reset view' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<PatternsActions />\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<DataViews\n\t\t\t\t\tkey={ categoryId + postType }\n\t\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\t\tfields={ fields }\n\t\t\t\t\tactions={ actions }\n\t\t\t\t\tdata={ dataWithPermissions || EMPTY_ARRAY }\n\t\t\t\t\tgetItemId={ ( item ) => item.name ?? item.id }\n\t\t\t\t\tisLoading={ isResolving }\n\t\t\t\t\tisItemClickable={ ( item ) =>\n\t\t\t\t\t\titem.type !== PATTERN_TYPES.theme\n\t\t\t\t\t}\n\t\t\t\t\tonClickItem={ ( item ) => {\n\t\t\t\t\t\thistory.navigate(\n\t\t\t\t\t\t\t`/${ item.type }/${\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\tPATTERN_TYPES.user,\n\t\t\t\t\t\t\t\t\tTEMPLATE_PART_POST_TYPE,\n\t\t\t\t\t\t\t\t].includes( item.type )\n\t\t\t\t\t\t\t\t\t? item.id\n\t\t\t\t\t\t\t\t\t: item.name\n\t\t\t\t\t\t\t}?canvas=edit`\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ updateView }\n\t\t\t\t\tdefaultLayouts={ defaultLayouts }\n\t\t\t\t/>\n\t\t\t</Page>\n\t\t</ExperimentalBlockEditorProvider>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport type { ReactNode, ComponentProps, ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect, useMemo, useRef, useState } from '@wordpress/element';\nimport { useResizeObserver, throttle } from '@wordpress/compose';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../components/dataviews-context';\nimport { VIEW_LAYOUTS } from '../components/dataviews-layouts';\nimport {\n\tFilters,\n\tFiltersToggled,\n\tuseFilters,\n\tFiltersToggle,\n} from '../components/dataviews-filters';\nimport DataViewsLayout from '../components/dataviews-layout';\nimport DataViewsFooter from '../components/dataviews-footer';\nimport DataViewsSearch from '../components/dataviews-search';\nimport { BulkActionsFooter } from '../components/dataviews-bulk-actions';\nimport { DataViewsPagination } from '../components/dataviews-pagination';\nimport DataViewsViewConfig, {\n\tDataviewsViewConfigDropdown,\n\tViewTypeMenu,\n} from '../components/dataviews-view-config';\nimport normalizeFields from '../field-types';\nimport type { Action, Field, View, SupportedLayouts } from '../types';\nimport type { SelectionOrUpdater } from '../types/private';\ntype ItemWithId = { id: string };\n\ntype DataViewsProps< Item > = {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tfields: Field< Item >[];\n\tsearch?: boolean;\n\tsearchLabel?: string;\n\tactions?: Action< Item >[];\n\tdata: Item[];\n\tisLoading?: boolean;\n\tpaginationInfo: {\n\t\ttotalItems: number;\n\t\ttotalPages: number;\n\t\tinfiniteScrollHandler?: () => void;\n\t};\n\tdefaultLayouts: SupportedLayouts;\n\tselection?: string[];\n\tonChangeSelection?: ( items: string[] ) => void;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisItemClickable?: ( item: Item ) => boolean;\n\theader?: ReactNode;\n\tgetItemLevel?: ( item: Item ) => number;\n\tchildren?: ReactNode;\n\tconfig?: {\n\t\tperPageSizes: number[];\n\t};\n\tempty?: ReactNode;\n} & ( Item extends ItemWithId\n\t? { getItemId?: ( item: Item ) => string }\n\t: { getItemId: ( item: Item ) => string } );\n\nconst defaultGetItemId = ( item: ItemWithId ) => item.id;\nconst defaultIsItemClickable = () => true;\nconst EMPTY_ARRAY: any[] = [];\n\nconst dataViewsLayouts = VIEW_LAYOUTS.filter(\n\t( viewLayout ) => ! viewLayout.isPicker\n);\n\ntype DefaultUIProps = Pick<\n\tDataViewsProps< any >,\n\t'header' | 'search' | 'searchLabel'\n>;\n\nfunction DefaultUI( {\n\theader,\n\tsearch = true,\n\tsearchLabel = undefined,\n}: DefaultUIProps ) {\n\treturn (\n\t\t<>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\talign=\"top\"\n\t\t\t\tjustify=\"space-between\"\n\t\t\t\tclassName=\"dataviews__view-actions\"\n\t\t\t\tgap=\"2xs\"\n\t\t\t>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\tclassName=\"dataviews__search\"\n\t\t\t\t>\n\t\t\t\t\t{ search && <DataViewsSearch label={ searchLabel } /> }\n\t\t\t\t\t<FiltersToggle />\n\t\t\t\t</Stack>\n\t\t\t\t<Stack direction=\"row\" gap=\"2xs\" style={ { flexShrink: 0 } }>\n\t\t\t\t\t<DataViewsViewConfig />\n\t\t\t\t\t{ header }\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t\t<FiltersToggled className=\"dataviews-filters__container\" />\n\t\t\t<DataViewsLayout />\n\t\t\t<DataViewsFooter />\n\t\t</>\n\t);\n}\n\nfunction DataViews< Item >( {\n\tview,\n\tonChangeView,\n\tfields,\n\tsearch = true,\n\tsearchLabel = undefined,\n\tactions = EMPTY_ARRAY,\n\tdata,\n\tgetItemId = defaultGetItemId,\n\tgetItemLevel,\n\tisLoading = false,\n\tpaginationInfo,\n\tdefaultLayouts: defaultLayoutsProperty,\n\tselection: selectionProperty,\n\tonChangeSelection,\n\tonClickItem,\n\trenderItemLink,\n\tisItemClickable = defaultIsItemClickable,\n\theader,\n\tchildren,\n\tconfig = { perPageSizes: [ 10, 20, 50, 100 ] },\n\tempty,\n}: DataViewsProps< Item > ) {\n\tconst { infiniteScrollHandler } = paginationInfo;\n\tconst containerRef = useRef< HTMLDivElement | null >( null );\n\tconst [ containerWidth, setContainerWidth ] = useState( 0 );\n\tconst resizeObserverRef = useResizeObserver(\n\t\t( resizeObserverEntries: any ) => {\n\t\t\tsetContainerWidth(\n\t\t\t\tresizeObserverEntries[ 0 ].borderBoxSize[ 0 ].inlineSize\n\t\t\t);\n\t\t},\n\t\t{ box: 'border-box' }\n\t);\n\tconst [ selectionState, setSelectionState ] = useState< string[] >( [] );\n\tconst isUncontrolled =\n\t\tselectionProperty === undefined || onChangeSelection === undefined;\n\tconst selection = isUncontrolled ? selectionState : selectionProperty;\n\tconst [ openedFilter, setOpenedFilter ] = useState< string | null >( null );\n\tfunction setSelectionWithChange( value: SelectionOrUpdater ) {\n\t\tconst newValue =\n\t\t\ttypeof value === 'function' ? value( selection ) : value;\n\t\tif ( isUncontrolled ) {\n\t\t\tsetSelectionState( newValue );\n\t\t}\n\t\tif ( onChangeSelection ) {\n\t\t\tonChangeSelection( newValue );\n\t\t}\n\t}\n\tconst _fields = useMemo( () => normalizeFields( fields ), [ fields ] );\n\tconst _selection = useMemo( () => {\n\t\treturn selection.filter( ( id ) =>\n\t\t\tdata.some( ( item ) => getItemId( item ) === id )\n\t\t);\n\t}, [ selection, data, getItemId ] );\n\n\tconst filters = useFilters( _fields, view );\n\tconst hasPrimaryOrLockedFilters = useMemo(\n\t\t() =>\n\t\t\t( filters || [] ).some(\n\t\t\t\t( filter ) => filter.isPrimary || filter.isLocked\n\t\t\t),\n\t\t[ filters ]\n\t);\n\tconst [ isShowingFilter, setIsShowingFilter ] = useState< boolean >(\n\t\thasPrimaryOrLockedFilters\n\t);\n\n\tuseEffect( () => {\n\t\tif ( hasPrimaryOrLockedFilters && ! isShowingFilter ) {\n\t\t\tsetIsShowingFilter( true );\n\t\t}\n\t}, [ hasPrimaryOrLockedFilters, isShowingFilter ] );\n\n\t// Attach scroll event listener for infinite scroll\n\tuseEffect( () => {\n\t\tif ( ! view.infiniteScrollEnabled || ! containerRef.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst handleScroll = throttle( ( event: unknown ) => {\n\t\t\tconst target = ( event as Event ).target as HTMLElement;\n\t\t\tconst scrollTop = target.scrollTop;\n\t\t\tconst scrollHeight = target.scrollHeight;\n\t\t\tconst clientHeight = target.clientHeight;\n\n\t\t\t// Check if user has scrolled near the bottom\n\t\t\tif ( scrollTop + clientHeight >= scrollHeight - 100 ) {\n\t\t\t\tinfiniteScrollHandler?.();\n\t\t\t}\n\t\t}, 100 ); // Throttle to 100ms\n\n\t\tconst container = containerRef.current;\n\t\tcontainer.addEventListener( 'scroll', handleScroll );\n\n\t\treturn () => {\n\t\t\tcontainer.removeEventListener( 'scroll', handleScroll );\n\t\t\thandleScroll.cancel(); // Cancel any pending throttled calls\n\t\t};\n\t}, [ infiniteScrollHandler, view.infiniteScrollEnabled ] );\n\n\t// Filter out DataViewsPicker layouts.\n\tconst defaultLayouts = useMemo(\n\t\t() =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries( defaultLayoutsProperty ).filter(\n\t\t\t\t\t( [ layoutType ] ) => {\n\t\t\t\t\t\treturn dataViewsLayouts.some(\n\t\t\t\t\t\t\t( viewLayout ) => viewLayout.type === layoutType\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t),\n\t\t[ defaultLayoutsProperty ]\n\t);\n\n\tif ( ! defaultLayouts[ view.type ] ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DataViewsContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tview,\n\t\t\t\tonChangeView,\n\t\t\t\tfields: _fields,\n\t\t\t\tactions,\n\t\t\t\tdata,\n\t\t\t\tisLoading,\n\t\t\t\tpaginationInfo,\n\t\t\t\tselection: _selection,\n\t\t\t\tonChangeSelection: setSelectionWithChange,\n\t\t\t\topenedFilter,\n\t\t\t\tsetOpenedFilter,\n\t\t\t\tgetItemId,\n\t\t\t\tgetItemLevel,\n\t\t\t\tisItemClickable,\n\t\t\t\tonClickItem,\n\t\t\t\trenderItemLink,\n\t\t\t\tcontainerWidth,\n\t\t\t\tcontainerRef,\n\t\t\t\tresizeObserverRef,\n\t\t\t\tdefaultLayouts,\n\t\t\t\tfilters,\n\t\t\t\tisShowingFilter,\n\t\t\t\tsetIsShowingFilter,\n\t\t\t\tconfig,\n\t\t\t\tempty,\n\t\t\t\thasInfiniteScrollHandler: !! infiniteScrollHandler,\n\t\t\t} }\n\t\t>\n\t\t\t<div className=\"dataviews-wrapper\" ref={ containerRef }>\n\t\t\t\t{ children ?? (\n\t\t\t\t\t<DefaultUI\n\t\t\t\t\t\theader={ header }\n\t\t\t\t\t\tsearch={ search }\n\t\t\t\t\t\tsearchLabel={ searchLabel }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</DataViewsContext.Provider>\n\t);\n}\n\n// Populate the DataViews sub components\nconst DataViewsSubComponents = DataViews as typeof DataViews & {\n\tBulkActionToolbar: typeof BulkActionsFooter;\n\tFilters: typeof Filters;\n\tFiltersToggle: typeof FiltersToggle;\n\tFiltersToggled: typeof FiltersToggled;\n\tLayout: typeof DataViewsLayout;\n\tLayoutSwitcher: typeof ViewTypeMenu;\n\tPagination: typeof DataViewsPagination;\n\tSearch: typeof DataViewsSearch;\n\tViewConfig: typeof DataviewsViewConfigDropdown;\n\tFooter: typeof DataViewsFooter;\n};\n\nDataViewsSubComponents.BulkActionToolbar = BulkActionsFooter;\nDataViewsSubComponents.Filters = Filters;\nDataViewsSubComponents.FiltersToggled = FiltersToggled;\nDataViewsSubComponents.FiltersToggle = FiltersToggle;\nDataViewsSubComponents.Layout = DataViewsLayout;\nDataViewsSubComponents.LayoutSwitcher = ViewTypeMenu;\nDataViewsSubComponents.Pagination = DataViewsPagination;\nDataViewsSubComponents.Search = DataViewsSearch;\nDataViewsSubComponents.ViewConfig = DataviewsViewConfigDropdown;\nDataViewsSubComponents.Footer = DataViewsFooter;\n\nexport default DataViewsSubComponents;\n", "'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n *   const ref = useRefWithInit(sortColumns, columns)\n */\n\nexport function useRefWithInit(init, initArg) {\n  const ref = React.useRef(UNINITIALIZED);\n  if (ref.current === UNINITIALIZED) {\n    ref.current = init(initArg);\n  }\n  return ref;\n}", "import _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nimport { useMergedRefs, useMergedRefsN } from '@base-ui/utils/useMergedRefs';\nimport { getReactElementRef } from '@base-ui/utils/getReactElementRef';\nimport { mergeObjects } from '@base-ui/utils/mergeObjects';\nimport { getStateAttributesProps } from \"./getStateAttributesProps.js\";\nimport { resolveClassName } from \"./resolveClassName.js\";\nimport { resolveStyle } from \"./resolveStyle.js\";\nimport { mergeProps, mergePropsN, mergeClassNames } from \"../merge-props/index.js\";\nimport { EMPTY_OBJECT } from \"./constants.js\";\nimport { createElement as _createElement } from \"react\";\n/**\n * Renders a Base UI element.\n *\n * @param element The default HTML element to render. Can be overridden by the `render` prop.\n * @param componentProps An object containing the `render` and `className` props to be used for element customization. Other props are ignored.\n * @param params Additional parameters for rendering the element.\n */\nexport function useRenderElement(element, componentProps, params = {}) {\n  const renderProp = componentProps.render;\n  const outProps = useRenderElementProps(componentProps, params);\n  if (params.enabled === false) {\n    return null;\n  }\n  const state = params.state ?? EMPTY_OBJECT;\n  return evaluateRenderProp(element, renderProp, outProps, state);\n}\n\n/**\n * Computes render element final props.\n */\nfunction useRenderElementProps(componentProps, params = {}) {\n  const {\n    className: classNameProp,\n    style: styleProp,\n    render: renderProp\n  } = componentProps;\n  const {\n    state = EMPTY_OBJECT,\n    ref,\n    props,\n    stateAttributesMapping,\n    enabled = true\n  } = params;\n  const className = enabled ? resolveClassName(classNameProp, state) : undefined;\n  const style = enabled ? resolveStyle(styleProp, state) : undefined;\n  const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping) : EMPTY_OBJECT;\n  const outProps = enabled ? mergeObjects(stateProps, Array.isArray(props) ? mergePropsN(props) : props) ?? EMPTY_OBJECT : EMPTY_OBJECT;\n\n  // SAFETY: The `useMergedRefs` functions use a single hook to store the same value,\n  // switching between them at runtime is safe. If this assertion fails, React will\n  // throw at runtime anyway.\n  // This also skips the `useMergedRefs` call on the server, which is fine because\n  // refs are not used on the server side.\n  /* eslint-disable react-hooks/rules-of-hooks */\n  if (typeof document !== 'undefined') {\n    if (!enabled) {\n      useMergedRefs(null, null);\n    } else if (Array.isArray(ref)) {\n      outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]);\n    } else {\n      outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref);\n    }\n  }\n  if (!enabled) {\n    return EMPTY_OBJECT;\n  }\n  if (className !== undefined) {\n    outProps.className = mergeClassNames(outProps.className, className);\n  }\n  if (style !== undefined) {\n    outProps.style = mergeObjects(outProps.style, style);\n  }\n  return outProps;\n}\nfunction evaluateRenderProp(element, render, props, state) {\n  if (render) {\n    if (typeof render === 'function') {\n      return render(props, state);\n    }\n    const mergedProps = mergeProps(props, render.props);\n    mergedProps.ref = props.ref;\n    return /*#__PURE__*/React.cloneElement(render, mergedProps);\n  }\n  if (element) {\n    if (typeof element === 'string') {\n      return renderTag(element, props);\n    }\n  }\n  // Unreachable, but the typings on `useRenderElement` need to be reworked\n  // to annotate it correctly.\n  throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: Render element or function are not defined.' : _formatErrorMessage(8));\n}\nfunction renderTag(Tag, props) {\n  if (Tag === 'button') {\n    return /*#__PURE__*/_createElement(\"button\", {\n      type: \"button\",\n      ...props,\n      key: props.key\n    });\n  }\n  if (Tag === 'img') {\n    return /*#__PURE__*/_createElement(\"img\", {\n      alt: \"\",\n      ...props,\n      key: props.key\n    });\n  }\n  return /*#__PURE__*/React.createElement(Tag, props);\n}", "import { useRefWithInit } from \"./useRefWithInit.js\";\n\n/**\n * Merges refs into a single memoized callback ref or `null`.\n * This makes sure multiple refs are updated together and have the same value.\n *\n * This function accepts up to four refs. If you need to merge more, or have an unspecified number of refs to merge,\n * use `useMergedRefsN` instead.\n */\n\nexport function useMergedRefs(a, b, c, d) {\n  const forkRef = useRefWithInit(createForkRef).current;\n  if (didChange(forkRef, a, b, c, d)) {\n    update(forkRef, [a, b, c, d]);\n  }\n  return forkRef.callback;\n}\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n *\n * If you need to merge a fixed number (up to four) of refs, use `useMergedRefs` instead for better performance.\n */\nexport function useMergedRefsN(refs) {\n  const forkRef = useRefWithInit(createForkRef).current;\n  if (didChangeN(forkRef, refs)) {\n    update(forkRef, refs);\n  }\n  return forkRef.callback;\n}\nfunction createForkRef() {\n  return {\n    callback: null,\n    cleanup: null,\n    refs: []\n  };\n}\nfunction didChange(forkRef, a, b, c, d) {\n  // prettier-ignore\n  return forkRef.refs[0] !== a || forkRef.refs[1] !== b || forkRef.refs[2] !== c || forkRef.refs[3] !== d;\n}\nfunction didChangeN(forkRef, newRefs) {\n  return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index) => ref !== newRefs[index]);\n}\nfunction update(forkRef, refs) {\n  forkRef.refs = refs;\n  if (refs.every(ref => ref == null)) {\n    forkRef.callback = null;\n    return;\n  }\n  forkRef.callback = instance => {\n    if (forkRef.cleanup) {\n      forkRef.cleanup();\n      forkRef.cleanup = null;\n    }\n    if (instance != null) {\n      const cleanupCallbacks = Array(refs.length).fill(null);\n      for (let i = 0; i < refs.length; i += 1) {\n        const ref = refs[i];\n        if (ref == null) {\n          continue;\n        }\n        switch (typeof ref) {\n          case 'function':\n            {\n              const refCleanup = ref(instance);\n              if (typeof refCleanup === 'function') {\n                cleanupCallbacks[i] = refCleanup;\n              }\n              break;\n            }\n          case 'object':\n            {\n              ref.current = instance;\n              break;\n            }\n          default:\n        }\n      }\n      forkRef.cleanup = () => {\n        for (let i = 0; i < refs.length; i += 1) {\n          const ref = refs[i];\n          if (ref == null) {\n            continue;\n          }\n          switch (typeof ref) {\n            case 'function':\n              {\n                const cleanupCallback = cleanupCallbacks[i];\n                if (typeof cleanupCallback === 'function') {\n                  cleanupCallback();\n                } else {\n                  ref(null);\n                }\n                break;\n              }\n            case 'object':\n              {\n                ref.current = null;\n                break;\n              }\n            default:\n          }\n        }\n      };\n    }\n  };\n}", "import * as React from 'react';\nimport { isReactVersionAtLeast } from \"./reactVersion.js\";\n\n/**\n * Extracts the `ref` from a React element, handling different React versions.\n */\nexport function getReactElementRef(element) {\n  if (! /*#__PURE__*/React.isValidElement(element)) {\n    return null;\n  }\n  const reactElement = element;\n  const propsWithRef = reactElement.props;\n  return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null;\n}", "import * as React from 'react';\nconst majorVersion = parseInt(React.version, 10);\nexport function isReactVersionAtLeast(reactVersionToCheck) {\n  return majorVersion >= reactVersionToCheck;\n}", "export function mergeObjects(a, b) {\n  if (a && !b) {\n    return a;\n  }\n  if (!a && b) {\n    return b;\n  }\n  if (a || b) {\n    return {\n      ...a,\n      ...b\n    };\n  }\n  return undefined;\n}", "export function getStateAttributesProps(state, customMapping) {\n  const props = {};\n\n  /* eslint-disable-next-line guard-for-in */\n  for (const key in state) {\n    const value = state[key];\n    if (customMapping?.hasOwnProperty(key)) {\n      const customProps = customMapping[key](value);\n      if (customProps != null) {\n        Object.assign(props, customProps);\n      }\n      continue;\n    }\n    if (value === true) {\n      props[`data-${key.toLowerCase()}`] = '';\n    } else if (value) {\n      props[`data-${key.toLowerCase()}`] = value.toString();\n    }\n  }\n  return props;\n}", "/**\n * If the provided className is a string, it will be returned as is.\n * Otherwise, the function will call the className function with the state as the first argument.\n *\n * @param className\n * @param state\n */\nexport function resolveClassName(className, state) {\n  return typeof className === 'function' ? className(state) : className;\n}", "/**\n * If the provided style is an object, it will be returned as is.\n * Otherwise, the function will call the style function with the state as the first argument.\n *\n * @param style\n * @param state\n */\nexport function resolveStyle(style, state) {\n  return typeof style === 'function' ? style(state) : style;\n}", "import { mergeObjects } from '@base-ui/utils/mergeObjects';\nconst EMPTY_PROPS = {};\n\n/**\n * Merges multiple sets of React props. It follows the Object.assign pattern where the rightmost object's fields overwrite\n * the conflicting ones from others. This doesn't apply to event handlers, `className` and `style` props.\n * Event handlers are merged such that they are called in sequence (the rightmost one being called first),\n * and allows the user to prevent the subsequent event handlers from being\n * executed by attaching a `preventBaseUIHandler` method.\n * It also merges the `className` and `style` props, whereby the classes are concatenated\n * and the rightmost styles overwrite the subsequent ones.\n *\n * Props can either be provided as objects or as functions that take the previous props as an argument.\n * The function will receive the merged props up to that point (going from left to right):\n * so in the case of `(obj1, obj2, fn, obj3)`, `fn` will receive the merged props of `obj1` and `obj2`.\n * The function is responsible for chaining event handlers if needed (i.e. we don't run the merge logic).\n *\n * Event handlers returned by the functions are not automatically prevented when `preventBaseUIHandler` is called.\n * They must check `event.baseUIHandlerPrevented` themselves and bail out if it's true.\n *\n * @important **`ref` is not merged.**\n * @param props props to merge.\n * @returns the merged props.\n */\n/* eslint-disable id-denylist */\n\nexport function mergeProps(a, b, c, d, e) {\n  // We need to mutably own `merged`\n  let merged = {\n    ...resolvePropsGetter(a, EMPTY_PROPS)\n  };\n  if (b) {\n    merged = mergeOne(merged, b);\n  }\n  if (c) {\n    merged = mergeOne(merged, c);\n  }\n  if (d) {\n    merged = mergeOne(merged, d);\n  }\n  if (e) {\n    merged = mergeOne(merged, e);\n  }\n  return merged;\n}\n/* eslint-enable id-denylist */\n\nexport function mergePropsN(props) {\n  if (props.length === 0) {\n    return EMPTY_PROPS;\n  }\n  if (props.length === 1) {\n    return resolvePropsGetter(props[0], EMPTY_PROPS);\n  }\n\n  // We need to mutably own `merged`\n  let merged = {\n    ...resolvePropsGetter(props[0], EMPTY_PROPS)\n  };\n  for (let i = 1; i < props.length; i += 1) {\n    merged = mergeOne(merged, props[i]);\n  }\n  return merged;\n}\nfunction mergeOne(merged, inputProps) {\n  if (isPropsGetter(inputProps)) {\n    return inputProps(merged);\n  }\n  return mutablyMergeInto(merged, inputProps);\n}\n\n/**\n * Merges two sets of props. In case of conflicts, the external props take precedence.\n */\nfunction mutablyMergeInto(mergedProps, externalProps) {\n  if (!externalProps) {\n    return mergedProps;\n  }\n\n  // eslint-disable-next-line guard-for-in\n  for (const propName in externalProps) {\n    const externalPropValue = externalProps[propName];\n    switch (propName) {\n      case 'style':\n        {\n          mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue);\n          break;\n        }\n      case 'className':\n        {\n          mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue);\n          break;\n        }\n      default:\n        {\n          if (isEventHandler(propName, externalPropValue)) {\n            mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue);\n          } else {\n            mergedProps[propName] = externalPropValue;\n          }\n        }\n    }\n  }\n  return mergedProps;\n}\nfunction isEventHandler(key, value) {\n  // This approach is more efficient than using a regex.\n  const code0 = key.charCodeAt(0);\n  const code1 = key.charCodeAt(1);\n  const code2 = key.charCodeAt(2);\n  return code0 === 111 /* o */ && code1 === 110 /* n */ && code2 >= 65 /* A */ && code2 <= 90 /* Z */ && (typeof value === 'function' || typeof value === 'undefined');\n}\nfunction isPropsGetter(inputProps) {\n  return typeof inputProps === 'function';\n}\nfunction resolvePropsGetter(inputProps, previousProps) {\n  if (isPropsGetter(inputProps)) {\n    return inputProps(previousProps);\n  }\n  return inputProps ?? EMPTY_PROPS;\n}\nfunction mergeEventHandlers(ourHandler, theirHandler) {\n  if (!theirHandler) {\n    return ourHandler;\n  }\n  if (!ourHandler) {\n    return theirHandler;\n  }\n  return event => {\n    if (isSyntheticEvent(event)) {\n      const baseUIEvent = event;\n      makeEventPreventable(baseUIEvent);\n      const result = theirHandler(baseUIEvent);\n      if (!baseUIEvent.baseUIHandlerPrevented) {\n        ourHandler?.(baseUIEvent);\n      }\n      return result;\n    }\n    const result = theirHandler(event);\n    ourHandler?.(event);\n    return result;\n  };\n}\nexport function makeEventPreventable(event) {\n  event.preventBaseUIHandler = () => {\n    event.baseUIHandlerPrevented = true;\n  };\n  return event;\n}\nexport function mergeClassNames(ourClassName, theirClassName) {\n  if (theirClassName) {\n    if (ourClassName) {\n      // eslint-disable-next-line prefer-template\n      return theirClassName + ' ' + ourClassName;\n    }\n    return theirClassName;\n  }\n  return ourClassName;\n}\nfunction isSyntheticEvent(event) {\n  return event != null && typeof event === 'object' && 'nativeEvent' in event;\n}", "export function NOOP() {}\nexport const EMPTY_ARRAY = Object.freeze([]);\nexport const EMPTY_OBJECT = Object.freeze({});", "import { useRenderElement } from \"../utils/useRenderElement.js\";\n/**\n * Renders a Base UI element.\n *\n * @public\n */\nexport function useRender(params) {\n  return useRenderElement(params.defaultTagName ?? 'div', params, params);\n}", "import { useRender, mergeProps } from '@base-ui/react';\nimport { forwardRef } from '@wordpress/element';\nimport { type StackProps } from './types';\nimport styles from './style.module.css';\n\n/**\n * A flexible layout component using CSS Flexbox for consistent spacing and alignment.\n * Built on design tokens for predictable spacing values.\n */\nexport const Stack = forwardRef< HTMLDivElement, StackProps >( function Stack(\n\t{ direction, gap, align, justify, wrap, render, ...props },\n\tref\n) {\n\tconst style: React.CSSProperties = {\n\t\tgap: gap && `var(--wpds-dimension-gap-${ gap })`,\n\t\talignItems: align,\n\t\tjustifyContent: justify,\n\t\tflexDirection: direction,\n\t\tflexWrap: wrap,\n\t};\n\n\tconst element = useRender( {\n\t\trender,\n\t\tref,\n\t\tprops: mergeProps< 'div' >( props, { style, className: styles.stack } ),\n\t} );\n\n\treturn element;\n} );\n", "const css = `@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;\n\n@layer wp-ui-components {\n\t.style-module__stack__Gc4EG {\n\t\tdisplay: flex;\n\t}\n}\n`;\ndocument.head\n    .appendChild(document.createElement(\"style\"))\n    .appendChild(document.createTextNode(css));\nexport {css};\nexport default {\n  \"stack\": \"style-module__stack__Gc4EG\"\n};", "/**\n * External dependencies\n */\nimport type { ComponentProps, ReactElement, ReactNode } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { createContext, createRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tView,\n\tAction,\n\tNormalizedField,\n\tSupportedLayouts,\n\tNormalizedFilter,\n} from '../../types';\nimport type { SetSelection } from '../../types/private';\nimport { LAYOUT_TABLE } from '../../constants';\n\ntype DataViewsContextType< Item > = {\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tfields: NormalizedField< Item >[];\n\tactions?: Action< Item >[];\n\tdata: Item[];\n\tisLoading?: boolean;\n\tpaginationInfo: {\n\t\ttotalItems: number;\n\t\ttotalPages: number;\n\t};\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\topenedFilter: string | null;\n\tsetOpenedFilter: ( openedFilter: string | null ) => void;\n\tgetItemId: ( item: Item ) => string;\n\tgetItemLevel?: ( item: Item ) => number;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisItemClickable: ( item: Item ) => boolean;\n\tcontainerWidth: number;\n\tcontainerRef: React.MutableRefObject< HTMLDivElement | null >;\n\tresizeObserverRef:\n\t\t| ( ( element?: HTMLDivElement | null ) => void )\n\t\t| React.RefObject< HTMLDivElement >;\n\tdefaultLayouts: SupportedLayouts;\n\tfilters: NormalizedFilter[];\n\tisShowingFilter: boolean;\n\tsetIsShowingFilter: ( value: boolean ) => void;\n\tconfig: { perPageSizes: number[] };\n\tempty?: ReactNode;\n\thasInfiniteScrollHandler: boolean;\n\titemListLabel?: string;\n};\n\nconst DataViewsContext = createContext< DataViewsContextType< any > >( {\n\tview: { type: LAYOUT_TABLE },\n\tonChangeView: () => {},\n\tfields: [],\n\tdata: [],\n\tpaginationInfo: {\n\t\ttotalItems: 0,\n\t\ttotalPages: 0,\n\t},\n\tselection: [],\n\tonChangeSelection: () => {},\n\tsetOpenedFilter: () => {},\n\topenedFilter: null,\n\tgetItemId: ( item ) => item.id,\n\tisItemClickable: () => true,\n\trenderItemLink: undefined,\n\tcontainerWidth: 0,\n\tcontainerRef: createRef(),\n\tresizeObserverRef: () => {},\n\tdefaultLayouts: { list: {}, grid: {}, table: {} },\n\tfilters: [],\n\tisShowingFilter: false,\n\tsetIsShowingFilter: () => {},\n\thasInfiniteScrollHandler: false,\n\tconfig: {\n\t\tperPageSizes: [],\n\t},\n} );\n\nDataViewsContext.displayName = 'DataViewsContext';\n\nexport default DataViewsContext;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { arrowDown, arrowUp } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport type { DayNumber } from './types';\n\n// Filter operators.\nexport const OPERATOR_IS_ANY = 'isAny';\nexport const OPERATOR_IS_NONE = 'isNone';\nexport const OPERATOR_IS_ALL = 'isAll';\nexport const OPERATOR_IS_NOT_ALL = 'isNotAll';\nexport const OPERATOR_BETWEEN = 'between';\nexport const OPERATOR_IN_THE_PAST = 'inThePast';\nexport const OPERATOR_OVER = 'over';\nexport const OPERATOR_IS = 'is';\nexport const OPERATOR_IS_NOT = 'isNot';\nexport const OPERATOR_LESS_THAN = 'lessThan';\nexport const OPERATOR_GREATER_THAN = 'greaterThan';\nexport const OPERATOR_LESS_THAN_OR_EQUAL = 'lessThanOrEqual';\nexport const OPERATOR_GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual';\nexport const OPERATOR_BEFORE = 'before';\nexport const OPERATOR_AFTER = 'after';\nexport const OPERATOR_BEFORE_INC = 'beforeInc';\nexport const OPERATOR_AFTER_INC = 'afterInc';\nexport const OPERATOR_CONTAINS = 'contains';\nexport const OPERATOR_NOT_CONTAINS = 'notContains';\nexport const OPERATOR_STARTS_WITH = 'startsWith';\nexport const OPERATOR_ON = 'on';\nexport const OPERATOR_NOT_ON = 'notOn';\n\nexport const SORTING_DIRECTIONS = [ 'asc', 'desc' ] as const;\nexport const sortArrows = { asc: '\u2191', desc: '\u2193' };\nexport const sortValues = { asc: 'ascending', desc: 'descending' } as const;\nexport const sortLabels = {\n\tasc: __( 'Sort ascending' ),\n\tdesc: __( 'Sort descending' ),\n};\nexport const sortIcons = {\n\tasc: arrowUp,\n\tdesc: arrowDown,\n};\n\n// View layouts.\nexport const LAYOUT_TABLE = 'table';\nexport const LAYOUT_GRID = 'grid';\nexport const LAYOUT_LIST = 'list';\nexport const LAYOUT_ACTIVITY = 'activity';\n\n// Picker view layouts.\nexport const LAYOUT_PICKER_GRID = 'pickerGrid';\nexport const LAYOUT_PICKER_TABLE = 'pickerTable';\n\nexport const DAYS_OF_WEEK: DayNumber[] = [ 0, 1, 2, 3, 4, 5, 6 ];\n", "/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport {\n\tblockTable,\n\tcategory,\n\tformatListBullets,\n\tformatListBulletsRTL,\n\tscheduled,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ViewTable from './table';\nimport ViewGrid from './grid';\nimport ViewList from './list';\nimport ViewActivity from './activity';\nimport ViewPickerGrid from './picker-grid';\nimport ViewPickerTable from './picker-table';\nimport {\n\tLAYOUT_GRID,\n\tLAYOUT_LIST,\n\tLAYOUT_TABLE,\n\tLAYOUT_ACTIVITY,\n\tLAYOUT_PICKER_GRID,\n\tLAYOUT_PICKER_TABLE,\n} from '../../constants';\nimport PreviewSizePicker from './utils/preview-size-picker';\nimport DensityPicker from './utils/density-picker';\n\nexport const VIEW_LAYOUTS = [\n\t{\n\t\ttype: LAYOUT_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewTable,\n\t\ticon: blockTable,\n\t\tviewConfigOptions: DensityPicker,\n\t},\n\t{\n\t\ttype: LAYOUT_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewGrid,\n\t\ticon: category,\n\t\tviewConfigOptions: PreviewSizePicker,\n\t},\n\t{\n\t\ttype: LAYOUT_LIST,\n\t\tlabel: __( 'List' ),\n\t\tcomponent: ViewList,\n\t\ticon: isRTL() ? formatListBulletsRTL : formatListBullets,\n\t\tviewConfigOptions: DensityPicker,\n\t},\n\t{\n\t\ttype: LAYOUT_ACTIVITY,\n\t\tlabel: __( 'Activity' ),\n\t\tcomponent: ViewActivity,\n\t\ticon: scheduled,\n\t\tviewConfigOptions: DensityPicker,\n\t},\n\t{\n\t\ttype: LAYOUT_PICKER_GRID,\n\t\tlabel: __( 'Grid' ),\n\t\tcomponent: ViewPickerGrid,\n\t\ticon: category,\n\t\tviewConfigOptions: PreviewSizePicker,\n\t\tisPicker: true,\n\t},\n\t{\n\t\ttype: LAYOUT_PICKER_TABLE,\n\t\tlabel: __( 'Table' ),\n\t\tcomponent: ViewPickerTable,\n\t\ticon: blockTable,\n\t\tviewConfigOptions: DensityPicker,\n\t\tisPicker: true,\n\t},\n];\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ComponentProps, ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { Spinner, Popover } from '@wordpress/components';\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseId,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { isAppleOS } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../../dataviews-context';\nimport DataViewsSelectionCheckbox from '../../dataviews-selection-checkbox';\nimport ItemActions from '../../dataviews-item-actions';\nimport { sortValues } from '../../../constants';\nimport {\n\tuseSomeItemHasAPossibleBulkAction,\n\tuseHasAPossibleBulkAction,\n\tBulkSelectionCheckbox,\n} from '../../dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewTable as ViewTableType,\n\tViewTableProps,\n} from '../../../types';\nimport type { SetSelection } from '../../../types/private';\nimport ColumnHeaderMenu from './column-header-menu';\nimport ColumnPrimary from './column-primary';\nimport { useIsHorizontalScrollEnd } from './use-is-horizontal-scroll-end';\nimport getDataByGroup from '../utils/get-data-by-group';\nimport { PropertiesSection } from '../../dataviews-view-config/properties-section';\n\ninterface TableColumnFieldProps< Item > {\n\tfields: NormalizedField< Item >[];\n\tcolumn: string;\n\titem: Item;\n\talign?: 'start' | 'center' | 'end';\n}\n\ninterface TableRowProps< Item > {\n\thasBulkActions: boolean;\n\titem: Item;\n\tlevel?: number;\n\tactions: Action< Item >[];\n\tfields: NormalizedField< Item >[];\n\tid: string;\n\tview: ViewTableType;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tselection: string[];\n\tgetItemId: ( item: Item ) => string;\n\tonChangeSelection: SetSelection;\n\tisItemClickable: ( item: Item ) => boolean;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisActionsColumnSticky?: boolean;\n\tposinset?: number;\n}\n\nfunction TableColumnField< Item >( {\n\titem,\n\tfields,\n\tcolumn,\n\talign,\n}: TableColumnFieldProps< Item > ) {\n\tconst field = fields.find( ( f ) => f.id === column );\n\n\tif ( ! field ) {\n\t\treturn null;\n\t}\n\n\tconst className = clsx( 'dataviews-view-table__cell-content-wrapper', {\n\t\t'dataviews-view-table__cell-align-end': align === 'end',\n\t\t'dataviews-view-table__cell-align-center': align === 'center',\n\t} );\n\n\treturn (\n\t\t<div className={ className }>\n\t\t\t<field.render item={ item } field={ field } />\n\t\t</div>\n\t);\n}\n\nfunction TableRow< Item >( {\n\thasBulkActions,\n\titem,\n\tlevel,\n\tactions,\n\tfields,\n\tid,\n\tview,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tselection,\n\tgetItemId,\n\tisItemClickable,\n\tonClickItem,\n\trenderItemLink,\n\tonChangeSelection,\n\tisActionsColumnSticky,\n\tposinset,\n}: TableRowProps< Item > ) {\n\tconst { paginationInfo } = useContext( DataViewsContext );\n\tconst hasPossibleBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst isSelected = hasPossibleBulkAction && selection.includes( id );\n\tconst {\n\t\tshowTitle = true,\n\t\tshowMedia = true,\n\t\tshowDescription = true,\n\t\tinfiniteScrollEnabled,\n\t} = view;\n\t// Will be set to true if `onTouchStart` fires. This happens before\n\t// `onClick` and can be used to exclude touchscreen devices from certain\n\t// behaviours.\n\tconst isTouchDeviceRef = useRef( false );\n\tconst columns = view.fields ?? [];\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\n\treturn (\n\t\t<tr\n\t\t\tclassName={ clsx( 'dataviews-view-table__row', {\n\t\t\t\t'is-selected': hasPossibleBulkAction && isSelected,\n\t\t\t\t'has-bulk-actions': hasPossibleBulkAction,\n\t\t\t} ) }\n\t\t\tonTouchStart={ () => {\n\t\t\t\tisTouchDeviceRef.current = true;\n\t\t\t} }\n\t\t\taria-setsize={\n\t\t\t\tinfiniteScrollEnabled ? paginationInfo.totalItems : undefined\n\t\t\t}\n\t\t\taria-posinset={ posinset }\n\t\t\trole={ infiniteScrollEnabled ? 'article' : undefined }\n\t\t\tonMouseDown={ ( event ) => {\n\t\t\t\t// Firefox has a unique feature where ctrl/cmd + click selects a\n\t\t\t\t// table cell. This interferes with the bulk selection behavior,\n\t\t\t\t// so this code prevents it.\n\t\t\t\tconst isMetaClick = isAppleOS() ? event.metaKey : event.ctrlKey;\n\t\t\t\tif (\n\t\t\t\t\tevent.button === 0 &&\n\t\t\t\t\tisMetaClick &&\n\t\t\t\t\twindow.navigator.userAgent\n\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t.includes( 'firefox' )\n\t\t\t\t) {\n\t\t\t\t\tevent?.preventDefault();\n\t\t\t\t}\n\t\t\t} }\n\t\t\tonClick={ ( event ) => {\n\t\t\t\tif ( ! hasPossibleBulkAction ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Only handle Ctrl/Cmd+Click for multi-selection\n\t\t\t\tconst isModifierKeyPressed = isAppleOS()\n\t\t\t\t\t? event.metaKey\n\t\t\t\t\t: event.ctrlKey;\n\n\t\t\t\tif (\n\t\t\t\t\tisModifierKeyPressed &&\n\t\t\t\t\t! isTouchDeviceRef.current &&\n\t\t\t\t\tdocument.getSelection()?.type !== 'Range'\n\t\t\t\t) {\n\t\t\t\t\t// Handle non-consecutive selection with Ctrl/Cmd+Click\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.includes( id )\n\t\t\t\t\t\t\t? selection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t\t\t: [ ...selection, id ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t{ hasBulkActions && (\n\t\t\t\t<td className=\"dataviews-view-table__checkbox-column\">\n\t\t\t\t\t<div className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\tdisabled={ ! hasPossibleBulkAction }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ hasPrimaryColumn && (\n\t\t\t\t<td>\n\t\t\t\t\t<ColumnPrimary\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\ttitleField={ showTitle ? titleField : undefined }\n\t\t\t\t\t\tmediaField={ showMedia ? mediaField : undefined }\n\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\tshowDescription ? descriptionField : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t/>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ columns.map( ( column: string ) => {\n\t\t\t\t// Explicit picks the supported styles.\n\t\t\t\tconst { width, maxWidth, minWidth, align } =\n\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\n\t\t\t\treturn (\n\t\t\t\t\t<td\n\t\t\t\t\t\tkey={ column }\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\tmaxWidth,\n\t\t\t\t\t\t\tminWidth,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<TableColumnField\n\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tcolumn={ column }\n\t\t\t\t\t\t\talign={ align }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</td>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t\t{ !! actions?.length && (\n\t\t\t\t// Disable reason: we are not making the element interactive,\n\t\t\t\t// but preventing any click events from bubbling up to the\n\t\t\t\t// table row. This allows us to add a click handler to the row\n\t\t\t\t// itself (to toggle row selection) without erroneously\n\t\t\t\t// intercepting click events from ItemActions.\n\n\t\t\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t\t<td\n\t\t\t\t\tclassName={ clsx( 'dataviews-view-table__actions-column', {\n\t\t\t\t\t\t'dataviews-view-table__actions-column--sticky': true,\n\t\t\t\t\t\t'dataviews-view-table__actions-column--stuck':\n\t\t\t\t\t\t\tisActionsColumnSticky,\n\t\t\t\t\t} ) }\n\t\t\t\t\tonClick={ ( e ) => e.stopPropagation() }\n\t\t\t\t>\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } />\n\t\t\t\t</td>\n\t\t\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */\n\t\t\t) }\n\t\t</tr>\n\t);\n}\n\nfunction ViewTable< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tgetItemLevel,\n\tisLoading = false,\n\tonChangeView,\n\tonChangeSelection,\n\tselection,\n\tsetOpenedFilter,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tview,\n\tclassName,\n\tempty,\n}: ViewTableProps< Item > ) {\n\tconst { containerRef } = useContext( DataViewsContext );\n\tconst headerMenuRefs = useRef<\n\t\tMap< string, { node: HTMLButtonElement; fallback: string } >\n\t>( new Map() );\n\tconst headerMenuToFocusRef = useRef< HTMLButtonElement >();\n\tconst [ nextHeaderMenuToFocus, setNextHeaderMenuToFocus ] =\n\t\tuseState< HTMLButtonElement >();\n\tconst hasBulkActions = useSomeItemHasAPossibleBulkAction( actions, data );\n\tconst [ contextMenuAnchor, setContextMenuAnchor ] = useState< {\n\t\tgetBoundingClientRect: () => DOMRect;\n\t} | null >( null );\n\n\tuseEffect( () => {\n\t\tif ( headerMenuToFocusRef.current ) {\n\t\t\theaderMenuToFocusRef.current.focus();\n\t\t\theaderMenuToFocusRef.current = undefined;\n\t\t}\n\t} );\n\n\tconst tableNoticeId = useId();\n\n\tconst isHorizontalScrollEnd = useIsHorizontalScrollEnd( {\n\t\tscrollContainerRef: containerRef,\n\t\tenabled: !! actions?.length,\n\t} );\n\n\tif ( nextHeaderMenuToFocus ) {\n\t\t// If we need to force focus, we short-circuit rendering here\n\t\t// to prevent any additional work while we handle that.\n\t\t// Clearing out the focus directive is necessary to make sure\n\t\t// future renders don't cause unexpected focus jumps.\n\t\theaderMenuToFocusRef.current = nextHeaderMenuToFocus;\n\t\tsetNextHeaderMenuToFocus( undefined );\n\t\treturn;\n\t}\n\n\tconst onHide = ( field: NormalizedField< Item > ) => {\n\t\tconst hidden = headerMenuRefs.current.get( field.id );\n\t\tconst fallback = hidden\n\t\t\t? headerMenuRefs.current.get( hidden.fallback )\n\t\t\t: undefined;\n\t\tsetNextHeaderMenuToFocus( fallback?.node );\n\t};\n\n\tconst handleHeaderContextMenu = ( event: React.MouseEvent ) => {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tconst virtualAnchor = {\n\t\t\tgetBoundingClientRect: () => ( {\n\t\t\t\tx: event.clientX,\n\t\t\t\ty: event.clientY,\n\t\t\t\ttop: event.clientY,\n\t\t\t\tleft: event.clientX,\n\t\t\t\tright: event.clientX,\n\t\t\t\tbottom: event.clientY,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0,\n\t\t\t\ttoJSON: () => ( {} ),\n\t\t\t} ),\n\t\t};\n\t\twindow.requestAnimationFrame( () => {\n\t\t\tsetContextMenuAnchor( virtualAnchor );\n\t\t} );\n\t};\n\n\tconst hasData = !! data?.length;\n\n\tconst titleField = fields.find( ( field ) => field.id === view.titleField );\n\tconst mediaField = fields.find( ( field ) => field.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view.descriptionField\n\t);\n\n\tconst groupField = view.groupBy?.field\n\t\t? fields.find( ( f ) => f.id === view.groupBy?.field )\n\t\t: null;\n\tconst dataByGroup = groupField ? getDataByGroup( data, groupField ) : null;\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\tconst columns = view.fields ?? [];\n\tconst headerMenuRef =\n\t\t( column: string, index: number ) => ( node: HTMLButtonElement ) => {\n\t\t\tif ( node ) {\n\t\t\t\theaderMenuRefs.current.set( column, {\n\t\t\t\t\tnode,\n\t\t\t\t\tfallback: columns[ index > 0 ? index - 1 : 1 ],\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\theaderMenuRefs.current.delete( column );\n\t\t\t}\n\t\t};\n\tconst isInfiniteScroll = view.infiniteScrollEnabled && ! dataByGroup;\n\n\treturn (\n\t\t<>\n\t\t\t<table\n\t\t\t\tclassName={ clsx( 'dataviews-view-table', className, {\n\t\t\t\t\t[ `has-${ view.layout?.density }-density` ]:\n\t\t\t\t\t\tview.layout?.density &&\n\t\t\t\t\t\t[ 'compact', 'comfortable' ].includes(\n\t\t\t\t\t\t\tview.layout.density\n\t\t\t\t\t\t),\n\t\t\t\t\t'has-bulk-actions': hasBulkActions,\n\t\t\t\t} ) }\n\t\t\t\taria-busy={ isLoading }\n\t\t\t\taria-describedby={ tableNoticeId }\n\t\t\t\trole={ isInfiniteScroll ? 'feed' : undefined }\n\t\t\t>\n\t\t\t\t<colgroup>\n\t\t\t\t\t{ hasBulkActions && (\n\t\t\t\t\t\t<col className=\"dataviews-view-table__col-checkbox\" />\n\t\t\t\t\t) }\n\t\t\t\t\t{ hasPrimaryColumn && (\n\t\t\t\t\t\t<col className=\"dataviews-view-table__col-first-data\" />\n\t\t\t\t\t) }\n\t\t\t\t\t{ columns.map( ( column, index ) => (\n\t\t\t\t\t\t<col\n\t\t\t\t\t\t\tkey={ `col-${ column }` }\n\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t`dataviews-view-table__col-${ column }`,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'dataviews-view-table__col-first-data':\n\t\t\t\t\t\t\t\t\t\t! hasPrimaryColumn && index === 0,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t<col className=\"dataviews-view-table__col-actions\" />\n\t\t\t\t\t) }\n\t\t\t\t</colgroup>\n\t\t\t\t{ contextMenuAnchor && (\n\t\t\t\t\t<Popover\n\t\t\t\t\t\tanchor={ contextMenuAnchor }\n\t\t\t\t\t\tonClose={ () => setContextMenuAnchor( null ) }\n\t\t\t\t\t\tplacement=\"bottom-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<PropertiesSection showLabel={ false } />\n\t\t\t\t\t</Popover>\n\t\t\t\t) }\n\t\t\t\t<thead onContextMenu={ handleHeaderContextMenu }>\n\t\t\t\t\t<tr className=\"dataviews-view-table__row\">\n\t\t\t\t\t\t{ hasBulkActions && (\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t\tonContextMenu={ handleHeaderContextMenu }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<BulkSelectionCheckbox\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ hasPrimaryColumn && (\n\t\t\t\t\t\t\t<th scope=\"col\">\n\t\t\t\t\t\t\t\t{ titleField && (\n\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef(\n\t\t\t\t\t\t\t\t\t\t\ttitleField.id,\n\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tfieldId={ titleField.id }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t\tcanMove={ false }\n\t\t\t\t\t\t\t\t\t\tcanInsertLeft={ false }\n\t\t\t\t\t\t\t\t\t\tcanInsertRight={\n\t\t\t\t\t\t\t\t\t\t\tview.layout?.enableMoving ?? true\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ columns.map( ( column, index ) => {\n\t\t\t\t\t\t\t// Explicit picks the supported styles.\n\t\t\t\t\t\t\tconst { width, maxWidth, minWidth, align } =\n\t\t\t\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\t\t\t\t\t\t\tconst canInsertOrMove =\n\t\t\t\t\t\t\t\tview.layout?.enableMoving ?? true;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t\tkey={ column }\n\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t\t\t\tmaxWidth,\n\t\t\t\t\t\t\t\t\t\tminWidth,\n\t\t\t\t\t\t\t\t\t\ttextAlign: align,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\taria-sort={\n\t\t\t\t\t\t\t\t\t\tview.sort?.direction &&\n\t\t\t\t\t\t\t\t\t\tview.sort?.field === column\n\t\t\t\t\t\t\t\t\t\t\t? sortValues[ view.sort.direction ]\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef( column, index ) }\n\t\t\t\t\t\t\t\t\t\tfieldId={ column }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t\tcanMove={ canInsertOrMove }\n\t\t\t\t\t\t\t\t\t\tcanInsertLeft={ canInsertOrMove }\n\t\t\t\t\t\t\t\t\t\tcanInsertRight={ canInsertOrMove }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'dataviews-view-table__actions-column',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t'dataviews-view-table__actions-column--sticky':\n\t\t\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t\t\t'dataviews-view-table__actions-column--stuck':\n\t\t\t\t\t\t\t\t\t\t\t! isHorizontalScrollEnd,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span className=\"dataviews-view-table-header\">\n\t\t\t\t\t\t\t\t\t{ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t{ /* Render grouped data if groupBy is specified */ }\n\t\t\t\t{ hasData && groupField && dataByGroup ? (\n\t\t\t\t\tArray.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t<tbody key={ `group-${ groupName }` }>\n\t\t\t\t\t\t\t\t<tr className=\"dataviews-view-table__group-header-row\">\n\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\tcolSpan={\n\t\t\t\t\t\t\t\t\t\t\tcolumns.length +\n\t\t\t\t\t\t\t\t\t\t\t( hasPrimaryColumn ? 1 : 0 ) +\n\t\t\t\t\t\t\t\t\t\t\t( hasBulkActions ? 1 : 0 ) +\n\t\t\t\t\t\t\t\t\t\t\t( actions?.length ? 1 : 0 )\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__group-header-cell\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ view.groupBy?.showLabel === false\n\t\t\t\t\t\t\t\t\t\t\t? groupName\n\t\t\t\t\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t\t\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\t\t\t\t\tgroupField.label,\n\t\t\t\t\t\t\t\t\t\t\t\t\tgroupName\n\t\t\t\t\t\t\t\t\t\t\t  ) }\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t{ groupItems.map( ( item, index ) => (\n\t\t\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tlevel={\n\t\t\t\t\t\t\t\t\t\t\tview.showLevels &&\n\t\t\t\t\t\t\t\t\t\t\ttypeof getItemLevel === 'function'\n\t\t\t\t\t\t\t\t\t\t\t\t? getItemLevel( item )\n\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tid={\n\t\t\t\t\t\t\t\t\t\t\tgetItemId( item ) ||\n\t\t\t\t\t\t\t\t\t\t\tindex.toString()\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t\t\t\tisActionsColumnSticky={\n\t\t\t\t\t\t\t\t\t\t\t! isHorizontalScrollEnd\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t) : (\n\t\t\t\t\t<tbody>\n\t\t\t\t\t\t{ hasData &&\n\t\t\t\t\t\t\tdata.map( ( item, index ) => (\n\t\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tlevel={\n\t\t\t\t\t\t\t\t\t\tview.showLevels &&\n\t\t\t\t\t\t\t\t\t\ttypeof getItemLevel === 'function'\n\t\t\t\t\t\t\t\t\t\t\t? getItemLevel( item )\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\tid={ getItemId( item ) || index.toString() }\n\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t\t\tisActionsColumnSticky={\n\t\t\t\t\t\t\t\t\t\t! isHorizontalScrollEnd\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tposinset={\n\t\t\t\t\t\t\t\t\t\tisInfiniteScroll ? index + 1 : undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t</tbody>\n\t\t\t\t) }\n\t\t\t</table>\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t\tid={ tableNoticeId }\n\t\t\t>\n\t\t\t\t{ ! hasData &&\n\t\t\t\t\t( isLoading ? (\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t</p>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tempty\n\t\t\t\t\t) ) }\n\t\t\t\t{ hasData && isLoading && (\n\t\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default ViewTable;\n", "/**\n * WordPress dependencies\n */\nimport { CheckboxControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { SetSelection } from '../../types/private';\nimport type { NormalizedField } from '../../types';\n\ninterface DataViewsSelectionCheckboxProps< Item > {\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\titem: Item;\n\tgetItemId: ( item: Item ) => string;\n\ttitleField?: NormalizedField< Item >;\n\tdisabled: boolean;\n\ttabIndex?: number;\n}\n\nexport default function DataViewsSelectionCheckbox< Item >( {\n\tselection,\n\tonChangeSelection,\n\titem,\n\tgetItemId,\n\ttitleField,\n\tdisabled,\n\t...extraProps\n}: DataViewsSelectionCheckboxProps< Item > ) {\n\tconst id = getItemId( item );\n\tconst checked = ! disabled && selection.includes( id );\n\n\t// Fallback label to ensure accessibility\n\tconst selectionLabel =\n\t\ttitleField?.getValue?.( { item } ) || __( '(no title)' );\n\n\treturn (\n\t\t<CheckboxControl\n\t\t\tclassName=\"dataviews-selection-checkbox\"\n\t\t\taria-label={ selectionLabel }\n\t\t\taria-disabled={ disabled }\n\t\t\tchecked={ checked }\n\t\t\tonChange={ () => {\n\t\t\t\tif ( disabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tonChangeSelection(\n\t\t\t\t\tselection.includes( id )\n\t\t\t\t\t\t? selection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t\t: [ ...selection, id ]\n\t\t\t\t);\n\t\t\t} }\n\t\t\t{ ...extraProps }\n\t\t/>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport type { MouseEventHandler } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tModal,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport { moreVertical } from '@wordpress/icons';\nimport { useRegistry } from '@wordpress/data';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport type { Action, ActionModal as ActionModalType } from '../../types';\n\nconst { Menu, kebabCase } = unlock( componentsPrivateApis );\n\nexport interface ActionTriggerProps< Item > {\n\taction: Action< Item >;\n\tonClick: MouseEventHandler;\n\tisBusy?: boolean;\n\titems: Item[];\n\tvariant?: 'primary' | 'secondary' | 'tertiary' | 'link';\n}\n\nexport interface ActionModalProps< Item > {\n\taction: ActionModalType< Item >;\n\titems: Item[];\n\tcloseModal: () => void;\n}\n\ninterface ActionsMenuGroupProps< Item > {\n\tactions: Action< Item >[];\n\titem: Item;\n\tregistry: ReturnType< typeof useRegistry >;\n\tsetActiveModalAction: ( action: ActionModalType< Item > | null ) => void;\n}\n\ninterface ItemActionsProps< Item > {\n\titem: Item;\n\tactions: Action< Item >[];\n\tisCompact?: boolean;\n}\n\ninterface CompactItemActionsProps< Item > {\n\titem: Item;\n\tactions: Action< Item >[];\n\tisSmall?: boolean;\n\tregistry: ReturnType< typeof useRegistry >;\n}\n\ninterface PrimaryActionsProps< Item > {\n\titem: Item;\n\tactions: Action< Item >[];\n\tregistry: ReturnType< typeof useRegistry >;\n\tbuttonVariant?: 'primary' | 'secondary' | 'tertiary' | 'link';\n}\n\nfunction ButtonTrigger< Item >( {\n\taction,\n\tonClick,\n\titems,\n\tvariant,\n}: ActionTriggerProps< Item > ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\treturn (\n\t\t<Button\n\t\t\tdisabled={ !! action.disabled }\n\t\t\taccessibleWhenDisabled\n\t\t\tsize=\"compact\"\n\t\t\tvariant={ variant }\n\t\t\tonClick={ onClick }\n\t\t>\n\t\t\t{ label }\n\t\t</Button>\n\t);\n}\n\nfunction MenuItemTrigger< Item >( {\n\taction,\n\tonClick,\n\titems,\n}: ActionTriggerProps< Item > ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\treturn (\n\t\t<Menu.Item disabled={ action.disabled } onClick={ onClick }>\n\t\t\t<Menu.ItemLabel>{ label }</Menu.ItemLabel>\n\t\t</Menu.Item>\n\t);\n}\n\nexport function ActionModal< Item >( {\n\taction,\n\titems,\n\tcloseModal,\n}: ActionModalProps< Item > ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\n\tconst modalHeader =\n\t\ttypeof action.modalHeader === 'function'\n\t\t\t? action.modalHeader( items )\n\t\t\t: action.modalHeader;\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ modalHeader || label }\n\t\t\t__experimentalHideHeader={ !! action.hideModalHeader }\n\t\t\tonRequestClose={ closeModal }\n\t\t\tfocusOnMount={ action.modalFocusOnMount ?? true }\n\t\t\tsize={ action.modalSize || 'medium' }\n\t\t\toverlayClassName={ `dataviews-action-modal dataviews-action-modal__${ kebabCase(\n\t\t\t\taction.id\n\t\t\t) }` }\n\t\t>\n\t\t\t<action.RenderModal items={ items } closeModal={ closeModal } />\n\t\t</Modal>\n\t);\n}\n\nexport function ActionsMenuGroup< Item >( {\n\tactions,\n\titem,\n\tregistry,\n\tsetActiveModalAction,\n}: ActionsMenuGroupProps< Item > ) {\n\tconst { primaryActions, regularActions } = useMemo( () => {\n\t\treturn actions.reduce(\n\t\t\t( acc, action ) => {\n\t\t\t\t( action.isPrimary\n\t\t\t\t\t? acc.primaryActions\n\t\t\t\t\t: acc.regularActions\n\t\t\t\t).push( action );\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{\n\t\t\t\tprimaryActions: [] as Action< Item >[],\n\t\t\t\tregularActions: [] as Action< Item >[],\n\t\t\t}\n\t\t);\n\t}, [ actions ] );\n\n\tconst renderActionGroup = ( actionList: Action< Item >[] ) =>\n\t\tactionList.map( ( action ) => (\n\t\t\t<MenuItemTrigger\n\t\t\t\tkey={ action.id }\n\t\t\t\taction={ action }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tif ( 'RenderModal' in action ) {\n\t\t\t\t\t\tsetActiveModalAction( action );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\taction.callback( [ item ], { registry } );\n\t\t\t\t} }\n\t\t\t\titems={ [ item ] }\n\t\t\t/>\n\t\t) );\n\n\treturn (\n\t\t<Menu.Group>\n\t\t\t{ renderActionGroup( primaryActions ) }\n\t\t\t{ primaryActions.length > 0 && regularActions.length > 0 && (\n\t\t\t\t<Menu.Separator />\n\t\t\t) }\n\t\t\t{ renderActionGroup( regularActions ) }\n\t\t</Menu.Group>\n\t);\n}\n\nexport default function ItemActions< Item >( {\n\titem,\n\tactions,\n\tisCompact,\n}: ItemActionsProps< Item > ) {\n\tconst registry = useRegistry();\n\tconst { primaryActions, eligibleActions } = useMemo( () => {\n\t\t// If an action is eligible for all items, doesn't need\n\t\t// to provide the `isEligible` function.\n\t\tconst _eligibleActions = actions.filter(\n\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t\tconst _primaryActions = _eligibleActions.filter(\n\t\t\t( action ) => action.isPrimary\n\t\t);\n\t\treturn {\n\t\t\tprimaryActions: _primaryActions,\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\n\tif ( isCompact ) {\n\t\treturn (\n\t\t\t<CompactItemActions\n\t\t\t\titem={ item }\n\t\t\t\tactions={ eligibleActions }\n\t\t\t\tisSmall\n\t\t\t\tregistry={ registry }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"row\"\n\t\t\tjustify=\"flex-end\"\n\t\t\tclassName=\"dataviews-item-actions\"\n\t\t\tstyle={ {\n\t\t\t\tflexShrink: 0,\n\t\t\t\twidth: 'auto',\n\t\t\t} }\n\t\t>\n\t\t\t<PrimaryActions\n\t\t\t\titem={ item }\n\t\t\t\tactions={ primaryActions }\n\t\t\t\tregistry={ registry }\n\t\t\t/>\n\t\t\t{ primaryActions.length < eligibleActions.length && (\n\t\t\t\t<CompactItemActions\n\t\t\t\t\titem={ item }\n\t\t\t\t\tactions={ eligibleActions }\n\t\t\t\t\tregistry={ registry }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Stack>\n\t);\n}\n\nfunction CompactItemActions< Item >( {\n\titem,\n\tactions,\n\tisSmall,\n\tregistry,\n}: CompactItemActionsProps< Item > ) {\n\tconst [ activeModalAction, setActiveModalAction ] = useState(\n\t\tnull as ActionModalType< Item > | null\n\t);\n\treturn (\n\t\t<>\n\t\t\t<Menu placement=\"bottom-end\">\n\t\t\t\t<Menu.TriggerButton\n\t\t\t\t\trender={\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize={ isSmall ? 'small' : 'compact' }\n\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\t\t\tclassName=\"dataviews-all-actions-button\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<Menu.Popover>\n\t\t\t\t\t<ActionsMenuGroup\n\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tregistry={ registry }\n\t\t\t\t\t\tsetActiveModalAction={ setActiveModalAction }\n\t\t\t\t\t/>\n\t\t\t\t</Menu.Popover>\n\t\t\t</Menu>\n\t\t\t{ !! activeModalAction && (\n\t\t\t\t<ActionModal\n\t\t\t\t\taction={ activeModalAction }\n\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\tcloseModal={ () => setActiveModalAction( null ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport function PrimaryActions< Item >( {\n\titem,\n\tactions,\n\tregistry,\n\tbuttonVariant,\n}: PrimaryActionsProps< Item > ) {\n\tconst [ activeModalAction, setActiveModalAction ] = useState( null as any );\n\tconst isMobileViewport = useViewportMatch( 'medium', '<' );\n\n\tif ( isMobileViewport ) {\n\t\treturn null;\n\t}\n\n\tif ( ! Array.isArray( actions ) || actions.length === 0 ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<>\n\t\t\t{ actions.map( ( action ) => (\n\t\t\t\t<ButtonTrigger\n\t\t\t\t\tkey={ action.id }\n\t\t\t\t\taction={ action }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tif ( 'RenderModal' in action ) {\n\t\t\t\t\t\t\tsetActiveModalAction( action );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\taction.callback( [ item ], { registry } );\n\t\t\t\t\t} }\n\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\tvariant={ buttonVariant }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t\t{ !! activeModalAction && (\n\t\t\t\t<ActionModal\n\t\t\t\t\taction={ activeModalAction }\n\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\tcloseModal={ () => setActiveModalAction( null ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\n\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.',\n\t\t'@wordpress/dataviews'\n\t);\n", "/**\n * External dependencies\n */\nimport type { ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { Button, CheckboxControl } from '@wordpress/components';\nimport { __, sprintf, _n } from '@wordpress/i18n';\nimport { useMemo, useState, useRef, useContext } from '@wordpress/element';\nimport { useRegistry } from '@wordpress/data';\nimport { closeSmall } from '@wordpress/icons';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\nimport { ActionModal } from '../dataviews-item-actions';\nimport type { Action, ActionModal as ActionModalType } from '../../types';\nimport type { SetSelection } from '../../types/private';\nimport type { ActionTriggerProps } from '../dataviews-item-actions';\n\ninterface ActionWithModalProps< Item > {\n\taction: ActionModalType< Item >;\n\titems: Item[];\n\tActionTriggerComponent: (\n\t\tprops: ActionTriggerProps< Item >\n\t) => ReactElement;\n}\n\nfunction ActionWithModal< Item >( {\n\taction,\n\titems,\n\tActionTriggerComponent,\n}: ActionWithModalProps< Item > ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst actionTriggerProps = {\n\t\taction,\n\t\tonClick: () => {\n\t\t\tsetIsModalOpen( true );\n\t\t},\n\t\titems,\n\t};\n\treturn (\n\t\t<>\n\t\t\t<ActionTriggerComponent { ...actionTriggerProps } />\n\t\t\t{ isModalOpen && (\n\t\t\t\t<ActionModal\n\t\t\t\t\taction={ action }\n\t\t\t\t\titems={ items }\n\t\t\t\t\tcloseModal={ () => setIsModalOpen( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport function useHasAPossibleBulkAction< Item >(\n\tactions: Action< Item >[],\n\titem: Item\n) {\n\treturn useMemo( () => {\n\t\treturn actions.some( ( action ) => {\n\t\t\treturn (\n\t\t\t\taction.supportsBulk &&\n\t\t\t\t( ! action.isEligible || action.isEligible( item ) )\n\t\t\t);\n\t\t} );\n\t}, [ actions, item ] );\n}\n\nexport function useSomeItemHasAPossibleBulkAction< Item >(\n\tactions: Action< Item >[],\n\tdata: Item[]\n) {\n\treturn useMemo( () => {\n\t\treturn data.some( ( item ) => {\n\t\t\treturn actions.some( ( action ) => {\n\t\t\t\treturn (\n\t\t\t\t\taction.supportsBulk &&\n\t\t\t\t\t( ! action.isEligible || action.isEligible( item ) )\n\t\t\t\t);\n\t\t\t} );\n\t\t} );\n\t}, [ actions, data ] );\n}\n\ninterface BulkSelectionCheckboxProps< Item > {\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tdata: Item[];\n\tactions: Action< Item >[];\n\tgetItemId: ( item: Item ) => string;\n}\n\nexport function BulkSelectionCheckbox< Item >( {\n\tselection,\n\tonChangeSelection,\n\tdata,\n\tactions,\n\tgetItemId,\n}: BulkSelectionCheckboxProps< Item > ) {\n\tconst selectableItems = useMemo( () => {\n\t\treturn data.filter( ( item ) => {\n\t\t\treturn actions.some(\n\t\t\t\t( action ) =>\n\t\t\t\t\taction.supportsBulk &&\n\t\t\t\t\t( ! action.isEligible || action.isEligible( item ) )\n\t\t\t);\n\t\t} );\n\t}, [ data, actions ] );\n\tconst selectedItems = data.filter(\n\t\t( item ) =>\n\t\t\tselection.includes( getItemId( item ) ) &&\n\t\t\tselectableItems.includes( item )\n\t);\n\tconst areAllSelected = selectedItems.length === selectableItems.length;\n\treturn (\n\t\t<CheckboxControl\n\t\t\tclassName=\"dataviews-view-table-selection-checkbox\"\n\t\t\tchecked={ areAllSelected }\n\t\t\tindeterminate={ ! areAllSelected && !! selectedItems.length }\n\t\t\tonChange={ () => {\n\t\t\t\tif ( areAllSelected ) {\n\t\t\t\t\tonChangeSelection( [] );\n\t\t\t\t} else {\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselectableItems.map( ( item ) => getItemId( item ) )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t\taria-label={\n\t\t\t\tareAllSelected ? __( 'Deselect all' ) : __( 'Select all' )\n\t\t\t}\n\t\t/>\n\t);\n}\n\ninterface ActionButtonProps< Item > {\n\taction: Action< Item >;\n\tselectedItems: Item[];\n\tactionInProgress: string | null;\n\tsetActionInProgress: ( actionId: string | null ) => void;\n}\n\ninterface ToolbarContentProps< Item > {\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tdata: Item[];\n\tactions: Action< Item >[];\n\tgetItemId: ( item: Item ) => string;\n}\n\nfunction ActionTrigger< Item >( {\n\taction,\n\tonClick,\n\tisBusy,\n\titems,\n}: ActionTriggerProps< Item > ) {\n\tconst label =\n\t\ttypeof action.label === 'string' ? action.label : action.label( items );\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\tif ( isMobile ) {\n\t\treturn (\n\t\t\t<Button\n\t\t\t\tdisabled={ isBusy }\n\t\t\t\taccessibleWhenDisabled\n\t\t\t\tlabel={ label }\n\t\t\t\ticon={ action.icon }\n\t\t\t\tsize=\"compact\"\n\t\t\t\tonClick={ onClick }\n\t\t\t\tisBusy={ isBusy }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Button\n\t\t\tdisabled={ isBusy }\n\t\t\taccessibleWhenDisabled\n\t\t\tsize=\"compact\"\n\t\t\tonClick={ onClick }\n\t\t\tisBusy={ isBusy }\n\t\t>\n\t\t\t{ label }\n\t\t</Button>\n\t);\n}\n\nconst EMPTY_ARRAY: [] = [];\n\nfunction ActionButton< Item >( {\n\taction,\n\tselectedItems,\n\tactionInProgress,\n\tsetActionInProgress,\n}: ActionButtonProps< Item > ) {\n\tconst registry = useRegistry();\n\tconst selectedEligibleItems = useMemo( () => {\n\t\treturn selectedItems.filter( ( item ) => {\n\t\t\treturn ! action.isEligible || action.isEligible( item );\n\t\t} );\n\t}, [ action, selectedItems ] );\n\tif ( 'RenderModal' in action ) {\n\t\treturn (\n\t\t\t<ActionWithModal\n\t\t\t\tkey={ action.id }\n\t\t\t\taction={ action }\n\t\t\t\titems={ selectedEligibleItems }\n\t\t\t\tActionTriggerComponent={ ActionTrigger }\n\t\t\t/>\n\t\t);\n\t}\n\treturn (\n\t\t<ActionTrigger\n\t\t\tkey={ action.id }\n\t\t\taction={ action }\n\t\t\tonClick={ async () => {\n\t\t\t\tsetActionInProgress( action.id );\n\t\t\t\tawait action.callback( selectedItems, {\n\t\t\t\t\tregistry,\n\t\t\t\t} );\n\t\t\t\tsetActionInProgress( null );\n\t\t\t} }\n\t\t\titems={ selectedEligibleItems }\n\t\t\tisBusy={ actionInProgress === action.id }\n\t\t/>\n\t);\n}\n\nfunction renderFooterContent< Item >(\n\tdata: Item[],\n\tactions: Action< Item >[],\n\tgetItemId: ( item: Item ) => string,\n\tselection: string[],\n\tactionsToShow: Action< Item >[],\n\tselectedItems: Item[],\n\tactionInProgress: string | null,\n\tsetActionInProgress: ( actionId: string | null ) => void,\n\tonChangeSelection: SetSelection\n) {\n\tconst message =\n\t\tselectedItems.length > 0\n\t\t\t? sprintf(\n\t\t\t\t\t/* translators: %d: number of items. */\n\t\t\t\t\t_n(\n\t\t\t\t\t\t'%d Item selected',\n\t\t\t\t\t\t'%d Items selected',\n\t\t\t\t\t\tselectedItems.length\n\t\t\t\t\t),\n\t\t\t\t\tselectedItems.length\n\t\t\t  )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: %d: number of items. */\n\t\t\t\t\t_n( '%d Item', '%d Items', data.length ),\n\t\t\t\t\tdata.length\n\t\t\t  );\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"row\"\n\t\t\tclassName=\"dataviews-bulk-actions-footer__container\"\n\t\t\tgap=\"sm\"\n\t\t\talign=\"center\"\n\t\t>\n\t\t\t<BulkSelectionCheckbox\n\t\t\t\tselection={ selection }\n\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\tdata={ data }\n\t\t\t\tactions={ actions }\n\t\t\t\tgetItemId={ getItemId }\n\t\t\t/>\n\t\t\t<span className=\"dataviews-bulk-actions-footer__item-count\">\n\t\t\t\t{ message }\n\t\t\t</span>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tclassName=\"dataviews-bulk-actions-footer__action-buttons\"\n\t\t\t\tgap=\"2xs\"\n\t\t\t>\n\t\t\t\t{ actionsToShow.map( ( action ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ActionButton\n\t\t\t\t\t\t\tkey={ action.id }\n\t\t\t\t\t\t\taction={ action }\n\t\t\t\t\t\t\tselectedItems={ selectedItems }\n\t\t\t\t\t\t\tactionInProgress={ actionInProgress }\n\t\t\t\t\t\t\tsetActionInProgress={ setActionInProgress }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t\t{ selectedItems.length > 0 && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tlabel={ __( 'Cancel' ) }\n\t\t\t\t\t\tdisabled={ !! actionInProgress }\n\t\t\t\t\t\taccessibleWhenDisabled={ false }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonChangeSelection( EMPTY_ARRAY );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n}\n\nfunction FooterContent< Item >( {\n\tselection,\n\tactions,\n\tonChangeSelection,\n\tdata,\n\tgetItemId,\n}: ToolbarContentProps< Item > ) {\n\tconst [ actionInProgress, setActionInProgress ] = useState< string | null >(\n\t\tnull\n\t);\n\tconst footerContentRef = useRef< JSX.Element | null >( null );\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\tconst bulkActions = useMemo(\n\t\t() => actions.filter( ( action ) => action.supportsBulk ),\n\t\t[ actions ]\n\t);\n\tconst selectableItems = useMemo( () => {\n\t\treturn data.filter( ( item ) => {\n\t\t\treturn bulkActions.some(\n\t\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t\t);\n\t\t} );\n\t}, [ data, bulkActions ] );\n\n\tconst selectedItems = useMemo( () => {\n\t\treturn data.filter(\n\t\t\t( item ) =>\n\t\t\t\tselection.includes( getItemId( item ) ) &&\n\t\t\t\tselectableItems.includes( item )\n\t\t);\n\t}, [ selection, data, getItemId, selectableItems ] );\n\n\tconst actionsToShow = useMemo(\n\t\t() =>\n\t\t\tactions.filter( ( action ) => {\n\t\t\t\treturn (\n\t\t\t\t\taction.supportsBulk &&\n\t\t\t\t\t( ! isMobile || action.icon ) &&\n\t\t\t\t\tselectedItems.some(\n\t\t\t\t\t\t( item ) =>\n\t\t\t\t\t\t\t! action.isEligible || action.isEligible( item )\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} ),\n\t\t[ actions, selectedItems, isMobile ]\n\t);\n\tif ( ! actionInProgress ) {\n\t\tif ( footerContentRef.current ) {\n\t\t\tfooterContentRef.current = null;\n\t\t}\n\t\treturn renderFooterContent(\n\t\t\tdata,\n\t\t\tactions,\n\t\t\tgetItemId,\n\t\t\tselection,\n\t\t\tactionsToShow,\n\t\t\tselectedItems,\n\t\t\tactionInProgress,\n\t\t\tsetActionInProgress,\n\t\t\tonChangeSelection\n\t\t);\n\t} else if ( ! footerContentRef.current ) {\n\t\tfooterContentRef.current = renderFooterContent(\n\t\t\tdata,\n\t\t\tactions,\n\t\t\tgetItemId,\n\t\t\tselection,\n\t\t\tactionsToShow,\n\t\t\tselectedItems,\n\t\t\tactionInProgress,\n\t\t\tsetActionInProgress,\n\t\t\tonChangeSelection\n\t\t);\n\t}\n\treturn footerContentRef.current;\n}\n\nexport function BulkActionsFooter() {\n\tconst {\n\t\tdata,\n\t\tselection,\n\t\tactions = EMPTY_ARRAY,\n\t\tonChangeSelection,\n\t\tgetItemId,\n\t} = useContext( DataViewsContext );\n\treturn (\n\t\t<FooterContent\n\t\t\tselection={ selection }\n\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\tdata={ data }\n\t\t\tactions={ actions }\n\t\t\tgetItemId={ getItemId }\n\t\t/>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport type { ReactNode, Ref, PropsWithoutRef, RefAttributes } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport { arrowLeft, arrowRight, unseen, funnel } from '@wordpress/icons';\nimport {\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { forwardRef, Children, Fragment, useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../../lock-unlock';\nimport { SORTING_DIRECTIONS, sortArrows, sortLabels } from '../../../constants';\nimport type {\n\tNormalizedField,\n\tSortDirection,\n\tViewTable as ViewTableType,\n\tViewPickerTable as ViewPickerTableType,\n\tOperator,\n} from '../../../types';\nimport DataViewsContext from '../../dataviews-context';\nimport getHideableFields from '../../../utils/get-hideable-fields';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\ninterface HeaderMenuProps< Item > {\n\tfieldId: string;\n\tview: ViewTableType | ViewPickerTableType;\n\tfields: NormalizedField< Item >[];\n\tonChangeView: ( view: ViewTableType | ViewPickerTableType ) => void;\n\tonHide: ( field: NormalizedField< Item > ) => void;\n\tsetOpenedFilter: ( fieldId: string ) => void;\n\tcanMove?: boolean;\n\tcanInsertLeft?: boolean;\n\tcanInsertRight?: boolean;\n}\n\nfunction WithMenuSeparators( { children }: { children: ReactNode } ) {\n\treturn Children.toArray( children )\n\t\t.filter( Boolean )\n\t\t.map( ( child, i ) => (\n\t\t\t<Fragment key={ i }>\n\t\t\t\t{ i > 0 && <Menu.Separator /> }\n\t\t\t\t{ child }\n\t\t\t</Fragment>\n\t\t) );\n}\n\nconst _HeaderMenu = forwardRef( function HeaderMenu< Item >(\n\t{\n\t\tfieldId,\n\t\tview,\n\t\tfields,\n\t\tonChangeView,\n\t\tonHide,\n\t\tsetOpenedFilter,\n\t\tcanMove = true,\n\t\tcanInsertLeft = true,\n\t\tcanInsertRight = true,\n\t}: HeaderMenuProps< Item >,\n\tref: Ref< HTMLButtonElement >\n) {\n\tconst visibleFieldIds = view.fields ?? [];\n\tconst index = visibleFieldIds?.indexOf( fieldId ) as number;\n\tconst isSorted = view.sort?.field === fieldId;\n\tlet isHidable = false;\n\tlet isSortable = false;\n\tlet canAddFilter = false;\n\tlet operators: Operator[] = [];\n\tconst field = fields.find( ( f ) => f.id === fieldId );\n\n\tconst { setIsShowingFilter } = useContext( DataViewsContext );\n\n\tif ( ! field ) {\n\t\t// No combined or regular field found.\n\t\treturn null;\n\t}\n\n\tisHidable = field.enableHiding !== false;\n\tisSortable = field.enableSorting !== false;\n\tconst header = field.header;\n\n\toperators = ( !! field.filterBy && field.filterBy?.operators ) || [];\n\n\t// Filter can be added if:\n\t//\n\t// 1. The field is not already part of a view's filters.\n\t// 2. The field has elements or Edit property.\n\t// 3. The field does not opt-out of filtering.\n\t// 4. The filter is not primary (if it is, it is already visible).\n\tcanAddFilter =\n\t\t! view.filters?.some( ( _filter ) => fieldId === _filter.field ) &&\n\t\t!! ( field.hasElements || field.Edit ) &&\n\t\tfield.filterBy !== false &&\n\t\t! field.filterBy?.isPrimary;\n\n\tif ( ! isSortable && ! canMove && ! isHidable && ! canAddFilter ) {\n\t\treturn header;\n\t}\n\n\tconst hiddenFields = getHideableFields( view, fields ).filter(\n\t\t( f ) => ! visibleFieldIds.includes( f.id )\n\t);\n\tconst canInsert =\n\t\t( canInsertLeft || canInsertRight ) && !! hiddenFields.length;\n\n\tconst isRtl = isRTL();\n\n\treturn (\n\t\t<Menu>\n\t\t\t<Menu.TriggerButton\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tclassName=\"dataviews-view-table-header-button\"\n\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ header }\n\t\t\t\t{ view.sort && isSorted && (\n\t\t\t\t\t<span aria-hidden=\"true\">\n\t\t\t\t\t\t{ sortArrows[ view.sort.direction ] }\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t</Menu.TriggerButton>\n\t\t\t<Menu.Popover style={ { minWidth: '240px' } }>\n\t\t\t\t<WithMenuSeparators>\n\t\t\t\t\t{ isSortable && (\n\t\t\t\t\t\t<Menu.Group>\n\t\t\t\t\t\t\t{ SORTING_DIRECTIONS.map(\n\t\t\t\t\t\t\t\t( direction: SortDirection ) => {\n\t\t\t\t\t\t\t\t\tconst isChecked =\n\t\t\t\t\t\t\t\t\t\tview.sort &&\n\t\t\t\t\t\t\t\t\t\tisSorted &&\n\t\t\t\t\t\t\t\t\t\tview.sort.direction === direction;\n\n\t\t\t\t\t\t\t\t\tconst value = `${ fieldId }-${ direction }`;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<Menu.RadioItem\n\t\t\t\t\t\t\t\t\t\t\tkey={ value }\n\t\t\t\t\t\t\t\t\t\t\t// All sorting radio items share the same name, so that\n\t\t\t\t\t\t\t\t\t\t\t// selecting a sorting option automatically deselects the\n\t\t\t\t\t\t\t\t\t\t\t// previously selected one, even if it is displayed in\n\t\t\t\t\t\t\t\t\t\t\t// another submenu. The field and direction are passed via\n\t\t\t\t\t\t\t\t\t\t\t// the `value` prop.\n\t\t\t\t\t\t\t\t\t\t\tname=\"view-table-sorting\"\n\t\t\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t\t\t\tchecked={ isChecked }\n\t\t\t\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield: fieldId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdirection,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\tshowLevels: false,\n\t\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t{ sortLabels[ direction ] }\n\t\t\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t</Menu.RadioItem>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Menu.Group>\n\t\t\t\t\t) }\n\t\t\t\t\t{ canAddFilter && (\n\t\t\t\t\t\t<Menu.Group>\n\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\tprefix={ <Icon icon={ funnel } /> }\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tsetOpenedFilter( fieldId );\n\t\t\t\t\t\t\t\t\tsetIsShowingFilter( true );\n\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t\t...( view.filters || [] ),\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tfield: fieldId,\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t\t\t\toperator: operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t{ __( 'Add filter' ) }\n\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t</Menu.Group>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ( canMove || isHidable || canInsert ) && field && (\n\t\t\t\t\t\t<Menu.Group>\n\t\t\t\t\t\t\t{ canMove && (\n\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ arrowLeft } /> }\n\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\tisRtl\n\t\t\t\t\t\t\t\t\t\t\t? index >=\n\t\t\t\t\t\t\t\t\t\t\t  visibleFieldIds.length - 1\n\t\t\t\t\t\t\t\t\t\t\t: index < 1\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t// In RTL, moving left visually means moving right in the array\n\t\t\t\t\t\t\t\t\t\tconst targetIndex = isRtl\n\t\t\t\t\t\t\t\t\t\t\t? index + 1\n\t\t\t\t\t\t\t\t\t\t\t: index - 1;\n\t\t\t\t\t\t\t\t\t\tconst newFields = [\n\t\t\t\t\t\t\t\t\t\t\t...visibleFieldIds,\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\tnewFields.splice( index, 1 );\n\t\t\t\t\t\t\t\t\t\tnewFields.splice(\n\t\t\t\t\t\t\t\t\t\t\ttargetIndex,\n\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\tfieldId\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\tfields: newFields,\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Move left' ) }\n\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ canMove && (\n\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ arrowRight } /> }\n\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\tisRtl\n\t\t\t\t\t\t\t\t\t\t\t? index < 1\n\t\t\t\t\t\t\t\t\t\t\t: index >=\n\t\t\t\t\t\t\t\t\t\t\t  visibleFieldIds.length - 1\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t// In RTL, moving right visually means moving left in the array\n\t\t\t\t\t\t\t\t\t\tconst targetIndex = isRtl\n\t\t\t\t\t\t\t\t\t\t\t? index - 1\n\t\t\t\t\t\t\t\t\t\t\t: index + 1;\n\t\t\t\t\t\t\t\t\t\tconst newFields = [\n\t\t\t\t\t\t\t\t\t\t\t...visibleFieldIds,\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\tnewFields.splice( index, 1 );\n\t\t\t\t\t\t\t\t\t\tnewFields.splice(\n\t\t\t\t\t\t\t\t\t\t\ttargetIndex,\n\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\tfieldId\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\tfields: newFields,\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Move right' ) }\n\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ canInsertLeft && !! hiddenFields.length && (\n\t\t\t\t\t\t\t\t<Menu>\n\t\t\t\t\t\t\t\t\t<Menu.SubmenuTriggerItem>\n\t\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Insert left' ) }\n\t\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t</Menu.SubmenuTriggerItem>\n\t\t\t\t\t\t\t\t\t<Menu.Popover>\n\t\t\t\t\t\t\t\t\t\t{ hiddenFields.map( ( hiddenField ) => (\n\t\t\t\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ hiddenField.id }\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thiddenField.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ hiddenField.label }\n\t\t\t\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t\t</Menu.Popover>\n\t\t\t\t\t\t\t\t</Menu>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ canInsertRight && !! hiddenFields.length && (\n\t\t\t\t\t\t\t\t<Menu>\n\t\t\t\t\t\t\t\t\t<Menu.SubmenuTriggerItem>\n\t\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Insert right' ) }\n\t\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t</Menu.SubmenuTriggerItem>\n\t\t\t\t\t\t\t\t\t<Menu.Popover>\n\t\t\t\t\t\t\t\t\t\t{ hiddenFields.map( ( hiddenField ) => (\n\t\t\t\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ hiddenField.id }\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfields: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex + 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thiddenField.id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...visibleFieldIds.slice(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex + 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ hiddenField.label }\n\t\t\t\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t\t</Menu.Popover>\n\t\t\t\t\t\t\t\t</Menu>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ isHidable && field && (\n\t\t\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\t\t\tprefix={ <Icon icon={ unseen } /> }\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tonHide( field );\n\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\tfields: visibleFieldIds.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t( id ) => id !== fieldId\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Menu.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Hide column' ) }\n\t\t\t\t\t\t\t\t\t</Menu.ItemLabel>\n\t\t\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Menu.Group>\n\t\t\t\t\t) }\n\t\t\t\t</WithMenuSeparators>\n\t\t\t</Menu.Popover>\n\t\t</Menu>\n\t);\n} );\n\n// @ts-expect-error Lift the `Item` type argument through the forwardRef.\nconst ColumnHeaderMenu: < Item >(\n\tprops: PropsWithoutRef< HeaderMenuProps< Item > > &\n\t\tRefAttributes< HTMLButtonElement >\n) => ReturnType< typeof _HeaderMenu > = _HeaderMenu;\n\nexport default ColumnHeaderMenu;\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField, View } from '../types';\n\nexport default function getHideableFields< Item >(\n\tview: View,\n\tfields: NormalizedField< Item >[]\n): NormalizedField< Item >[] {\n\tconst togglableFields = [\n\t\tview?.titleField,\n\t\tview?.mediaField,\n\t\tview?.descriptionField,\n\t].filter( Boolean );\n\treturn fields.filter(\n\t\t( f ) =>\n\t\t\t! togglableFields.includes( f.id ) &&\n\t\t\tf.type !== 'media' &&\n\t\t\tf.enableHiding !== false\n\t);\n}\n", "/**\n * External dependencies\n */\nimport type { ReactNode, ReactElement, ComponentProps } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { cloneElement } from '@wordpress/element';\n\nfunction getClickableItemProps< Item >( {\n\titem,\n\tisItemClickable,\n\tonClickItem,\n\tclassName,\n}: {\n\titem: Item;\n\tisItemClickable: ( item: Item ) => boolean;\n\tonClickItem?: ( item: Item ) => void;\n\tclassName?: string;\n} ) {\n\tif ( ! isItemClickable( item ) || ! onClickItem ) {\n\t\treturn { className };\n\t}\n\n\treturn {\n\t\tclassName: className\n\t\t\t? `${ className } ${ className }--clickable`\n\t\t\t: undefined,\n\t\trole: 'button',\n\t\ttabIndex: 0,\n\t\tonClick: ( event: React.MouseEvent ) => {\n\t\t\t// Prevents onChangeSelection from triggering.\n\t\t\tevent.stopPropagation();\n\t\t\tonClickItem( item );\n\t\t},\n\t\tonKeyDown: ( event: React.KeyboardEvent ) => {\n\t\t\tif (\n\t\t\t\tevent.key === 'Enter' ||\n\t\t\t\tevent.key === '' ||\n\t\t\t\tevent.key === ' '\n\t\t\t) {\n\t\t\t\t// Prevents onChangeSelection from triggering.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tonClickItem( item );\n\t\t\t}\n\t\t},\n\t};\n}\n\nexport function ItemClickWrapper< Item >( {\n\titem,\n\tisItemClickable,\n\tonClickItem,\n\trenderItemLink,\n\tclassName,\n\tchildren,\n\t...extraProps\n}: {\n\titem: Item;\n\tisItemClickable: ( item: Item ) => boolean;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tclassName?: string;\n\tchildren: ReactNode;\n} ) {\n\t// Always render a wrapper element so layout and styling relying on the wrapper\n\t// still works even if the item is not clickable.\n\tif ( ! isItemClickable( item ) ) {\n\t\treturn (\n\t\t\t<div className={ className } { ...extraProps }>\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// If we have a renderItemLink, use it\n\tif ( renderItemLink ) {\n\t\tconst renderedElement = renderItemLink( {\n\t\t\titem,\n\t\t\tclassName: `${ className } ${ className }--clickable`,\n\t\t\t...extraProps,\n\t\t\tchildren,\n\t\t} );\n\n\t\t// Clone the element and enhance onClick to stop propagation\n\t\treturn cloneElement( renderedElement, {\n\t\t\tonClick: ( event: React.MouseEvent ) => {\n\t\t\t\t// Always stop propagation to prevent selection\n\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t// If consumer provided an onClick, call it\n\t\t\t\tif ( renderedElement.props.onClick ) {\n\t\t\t\t\trenderedElement.props.onClick( event );\n\t\t\t\t}\n\t\t\t},\n\t\t\tonKeyDown: ( event: React.KeyboardEvent ) => {\n\t\t\t\tif (\n\t\t\t\t\tevent.key === 'Enter' ||\n\t\t\t\t\tevent.key === '' ||\n\t\t\t\t\tevent.key === ' '\n\t\t\t\t) {\n\t\t\t\t\t// Prevents onChangeSelection from triggering.\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t// If consumer provided an onKeyDown, call it\n\t\t\t\t\tif ( renderedElement.props.onKeyDown ) {\n\t\t\t\t\t\trenderedElement.props.onKeyDown( event );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t} );\n\t}\n\n\t// Otherwise use the classic click handler approach\n\tconst clickProps = getClickableItemProps( {\n\t\titem,\n\t\tisItemClickable,\n\t\tonClickItem,\n\t\tclassName,\n\t} );\n\n\treturn (\n\t\t<div { ...clickProps } { ...extraProps }>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport type { ComponentProps, ReactElement } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../../types';\nimport { ItemClickWrapper } from '../utils/item-click-wrapper';\n\nfunction ColumnPrimary< Item >( {\n\titem,\n\tlevel,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tonClickItem,\n\trenderItemLink,\n\tisItemClickable,\n}: {\n\titem: Item;\n\tlevel?: number;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisItemClickable: ( item: Item ) => boolean;\n} ) {\n\treturn (\n\t\t<Stack direction=\"row\" gap=\"sm\" align=\"flex-start\" justify=\"flex-start\">\n\t\t\t{ mediaField && (\n\t\t\t\t<ItemClickWrapper\n\t\t\t\t\titem={ item }\n\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\tclassName=\"dataviews-view-table__cell-content-wrapper dataviews-column-primary__media\"\n\t\t\t\t\taria-label={\n\t\t\t\t\t\tisItemClickable( item ) &&\n\t\t\t\t\t\t( !! onClickItem || !! renderItemLink ) &&\n\t\t\t\t\t\t!! titleField\n\t\t\t\t\t\t\t? titleField.getValue?.( { item } )\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<mediaField.render\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tfield={ mediaField }\n\t\t\t\t\t\tconfig={ { sizes: '32px' } }\n\t\t\t\t\t/>\n\t\t\t\t</ItemClickWrapper>\n\t\t\t) }\n\t\t\t<Stack\n\t\t\t\tdirection=\"column\"\n\t\t\t\talign=\"flex-start\"\n\t\t\t\tclassName=\"dataviews-view-table__primary-column-content\"\n\t\t\t>\n\t\t\t\t{ titleField && (\n\t\t\t\t\t<ItemClickWrapper\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\tclassName=\"dataviews-view-table__cell-content-wrapper dataviews-title-field\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ level !== undefined && level > 0 && (\n\t\t\t\t\t\t\t<span className=\"dataviews-view-table__level\">\n\t\t\t\t\t\t\t\t{ Array( level ).fill( '\u2014' ).join( ' ' ) }&nbsp;\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t\t\t\t</ItemClickWrapper>\n\t\t\t\t) }\n\t\t\t\t{ descriptionField && (\n\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n}\n\nexport default ColumnPrimary;\n", "/**\n * External dependencies\n */\nimport type { MutableRefObject } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useDebounce } from '@wordpress/compose';\nimport { useCallback, useEffect, useState } from '@wordpress/element';\nimport { isRTL } from '@wordpress/i18n';\n\nconst isScrolledToEnd = ( element: Element ) => {\n\tif ( isRTL() ) {\n\t\tconst scrollLeft = Math.abs( element.scrollLeft );\n\t\treturn scrollLeft <= 1;\n\t}\n\n\treturn element.scrollLeft + element.clientWidth >= element.scrollWidth - 1;\n};\n\n/**\n * A hook to check if a given scroll container has reached the horizontal scroll end.\n *\n * The current way receives \"refs\" as arguments, but it lacks a mechanism to detect when a ref has changed.\n * As a result, when the \"ref\" is updated and attached to a new div, the computation should trigger again.\n * However, this isn't possible in the current setup because the hook is unaware that the ref has changed.\n *\n * See https://github.com/Automattic/wp-calypso/pull/103005#discussion_r2077567912.\n *\n * @param {Object}                                  params                    The parameters for the hook.\n * @param {MutableRefObject<HTMLDivElement | null>} params.scrollContainerRef The ref to the scroll container element.\n * @param {boolean}                                 [params.enabled=false]    Whether the hook is enabled.\n * @return {boolean} - Returns true if the scroll container is scrolled to the end or false otherwise.\n */\nexport function useIsHorizontalScrollEnd( {\n\tscrollContainerRef,\n\tenabled = false,\n}: {\n\tscrollContainerRef: React.MutableRefObject< HTMLDivElement | null >;\n\tenabled?: boolean;\n} ): boolean {\n\tconst [ isHorizontalScrollEnd, setIsHorizontalScrollEnd ] =\n\t\tuseState( false );\n\n\tconst handleIsHorizontalScrollEnd = useDebounce(\n\t\tuseCallback( () => {\n\t\t\tconst scrollContainer = scrollContainerRef.current;\n\t\t\tif ( scrollContainer ) {\n\t\t\t\tsetIsHorizontalScrollEnd( isScrolledToEnd( scrollContainer ) );\n\t\t\t}\n\t\t}, [ scrollContainerRef, setIsHorizontalScrollEnd ] ),\n\t\t200\n\t);\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\ttypeof window === 'undefined' ||\n\t\t\t! enabled ||\n\t\t\t! scrollContainerRef.current\n\t\t) {\n\t\t\treturn () => {};\n\t\t}\n\n\t\thandleIsHorizontalScrollEnd();\n\t\tscrollContainerRef.current.addEventListener(\n\t\t\t'scroll',\n\t\t\thandleIsHorizontalScrollEnd\n\t\t);\n\t\twindow.addEventListener( 'resize', handleIsHorizontalScrollEnd );\n\n\t\treturn () => {\n\t\t\tscrollContainerRef.current?.removeEventListener(\n\t\t\t\t'scroll',\n\t\t\t\thandleIsHorizontalScrollEnd\n\t\t\t);\n\t\t\twindow.removeEventListener( 'resize', handleIsHorizontalScrollEnd );\n\t\t};\n\t}, [ scrollContainerRef, enabled ] );\n\n\treturn isHorizontalScrollEnd;\n}\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../../types';\n\nexport default function getDataByGroup< Item >(\n\tdata: any[],\n\tgroupByField: NormalizedField< Item >\n): Map< string, any[] > {\n\treturn data.reduce( ( groups: Map< string, typeof data >, item ) => {\n\t\tconst groupName = groupByField.getValue( { item } );\n\t\tif ( ! groups.has( groupName ) ) {\n\t\t\tgroups.set( groupName, [] );\n\t\t}\n\t\tgroups.get( groupName )?.push( item );\n\t\treturn groups;\n\t}, new Map< string, typeof data >() );\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\tBaseControl,\n\tIcon,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useContext } from '@wordpress/element';\nimport { check } from '@wordpress/icons';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\nimport DataViewsContext from '../dataviews-context';\nimport getHideableFields from '../../utils/get-hideable-fields';\n\nfunction FieldItem( {\n\tfield,\n\tisVisible,\n\tonToggleVisibility,\n}: {\n\tfield: NormalizedField< any >;\n\tisVisible: boolean;\n\tonToggleVisibility?: () => void;\n} ) {\n\treturn (\n\t\t<Item onClick={ field.enableHiding ? onToggleVisibility : undefined }>\n\t\t\t<Stack direction=\"row\" gap=\"xs\" justify=\"flex-start\" align=\"center\">\n\t\t\t\t<div style={ { height: 24, width: 24 } }>\n\t\t\t\t\t{ isVisible && <Icon icon={ check } /> }\n\t\t\t\t</div>\n\t\t\t\t<span className=\"dataviews-view-config__label\">\n\t\t\t\t\t{ field.label }\n\t\t\t\t</span>\n\t\t\t</Stack>\n\t\t</Item>\n\t);\n}\n\nfunction isDefined< T >( item: T | undefined ): item is T {\n\treturn !! item;\n}\n\nexport function PropertiesSection( {\n\tshowLabel = true,\n}: {\n\tshowLabel?: boolean;\n} ) {\n\tconst { view, fields, onChangeView } = useContext( DataViewsContext );\n\n\t// Get all regular fields (non-locked) in their original order from fields prop\n\tconst regularFields = getHideableFields( view, fields );\n\n\tif ( ! regularFields?.length ) {\n\t\treturn null;\n\t}\n\tconst titleField = fields.find( ( f ) => f.id === view.titleField );\n\tconst previewField = fields.find( ( f ) => f.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( f ) => f.id === view.descriptionField\n\t);\n\n\tconst lockedFields = [\n\t\t{\n\t\t\tfield: titleField,\n\t\t\tisVisibleFlag: 'showTitle',\n\t\t},\n\t\t{\n\t\t\tfield: previewField,\n\t\t\tisVisibleFlag: 'showMedia',\n\t\t},\n\t\t{\n\t\t\tfield: descriptionField,\n\t\t\tisVisibleFlag: 'showDescription',\n\t\t},\n\t].filter( ( { field } ) => isDefined( field ) ) as Array< {\n\t\tfield: NormalizedField< any >;\n\t\tisVisibleFlag: string;\n\t} >;\n\tconst visibleFieldIds = view.fields ?? [];\n\tconst visibleRegularFieldsCount = regularFields.filter( ( f ) =>\n\t\tvisibleFieldIds.includes( f.id )\n\t).length;\n\n\tconst visibleLockedFields = lockedFields.filter(\n\t\t( { isVisibleFlag } ) =>\n\t\t\t// @ts-expect-error\n\t\t\tview[ isVisibleFlag ] ?? true\n\t);\n\n\t// If only one field (locked or regular) is visible, prevent it from being hidden\n\tconst totalVisibleFields =\n\t\tvisibleLockedFields.length + visibleRegularFieldsCount;\n\tconst isSingleVisibleLockedField =\n\t\ttotalVisibleFields === 1 && visibleLockedFields.length === 1;\n\n\treturn (\n\t\t<Stack direction=\"column\" className=\"dataviews-field-control\">\n\t\t\t{ showLabel && (\n\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t{ __( 'Properties' ) }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t) }\n\t\t\t<Stack\n\t\t\t\tdirection=\"column\"\n\t\t\t\tclassName=\"dataviews-view-config__properties\"\n\t\t\t>\n\t\t\t\t<ItemGroup isBordered isSeparated size=\"medium\">\n\t\t\t\t\t{ lockedFields.map( ( { field, isVisibleFlag } ) => {\n\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\tconst isVisible = view[ isVisibleFlag ] ?? true;\n\t\t\t\t\t\tconst fieldToRender =\n\t\t\t\t\t\t\tisSingleVisibleLockedField && isVisible\n\t\t\t\t\t\t\t\t? { ...field, enableHiding: false }\n\t\t\t\t\t\t\t\t: field;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<FieldItem\n\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\tfield={ fieldToRender }\n\t\t\t\t\t\t\t\tisVisible={ isVisible }\n\t\t\t\t\t\t\t\tonToggleVisibility={ () => {\n\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t[ isVisibleFlag ]: ! isVisible,\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\n\t\t\t\t\t{ regularFields.map( ( field ) => {\n\t\t\t\t\t\t// Check if this is the last visible field to prevent hiding\n\t\t\t\t\t\tconst isVisible = visibleFieldIds.includes( field.id );\n\t\t\t\t\t\tconst fieldToRender =\n\t\t\t\t\t\t\ttotalVisibleFields === 1 && isVisible\n\t\t\t\t\t\t\t\t? { ...field, enableHiding: false }\n\t\t\t\t\t\t\t\t: field;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<FieldItem\n\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\tfield={ fieldToRender }\n\t\t\t\t\t\t\t\tisVisible={ isVisible }\n\t\t\t\t\t\t\t\tonToggleVisibility={ () => {\n\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\tfields: isVisible\n\t\t\t\t\t\t\t\t\t\t\t? visibleFieldIds.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t\t( fieldId ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfieldId !== field.id\n\t\t\t\t\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t\t\t\t\t: [ ...visibleFieldIds, field.id ],\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</ItemGroup>\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { Spinner } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type { ViewGridProps } from '../../../types';\nimport getDataByGroup from '../utils/get-data-by-group';\nimport CompositeGrid from './composite-grid';\n\nfunction ViewGrid< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tselection,\n\tview,\n\tclassName,\n\tempty,\n}: ViewGridProps< Item > ) {\n\tconst hasData = !! data?.length;\n\tconst groupField = view.groupBy?.field\n\t\t? fields.find( ( f ) => f.id === view.groupBy?.field )\n\t\t: null;\n\tconst dataByGroup = groupField ? getDataByGroup( data, groupField ) : null;\n\tconst isInfiniteScroll = view.infiniteScrollEnabled && ! dataByGroup;\n\tconst gridProps = {\n\t\tclassName,\n\t\tisLoading,\n\t\tview,\n\t\tfields,\n\t\tselection,\n\t\tonChangeSelection,\n\t\tonClickItem,\n\t\tisItemClickable,\n\t\trenderItemLink,\n\t\tgetItemId,\n\t\tactions,\n\t};\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// Render multiple groups.\n\t\t\t\thasData && groupField && dataByGroup && (\n\t\t\t\t\t<Stack direction=\"column\" gap=\"md\">\n\t\t\t\t\t\t{ Array.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\t\t\t\tkey={ groupName }\n\t\t\t\t\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<h3 className=\"dataviews-view-grid__group-header\">\n\t\t\t\t\t\t\t\t\t\t{ view.groupBy?.showLabel === false\n\t\t\t\t\t\t\t\t\t\t\t? groupName\n\t\t\t\t\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t\t\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\t\t\t\t\tgroupField.label,\n\t\t\t\t\t\t\t\t\t\t\t\t\tgroupName\n\t\t\t\t\t\t\t\t\t\t\t  ) }\n\t\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t\t<CompositeGrid\n\t\t\t\t\t\t\t\t\t\t{ ...gridProps }\n\t\t\t\t\t\t\t\t\t\tdata={ groupItems }\n\t\t\t\t\t\t\t\t\t\tisInfiniteScroll={ false }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Stack>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{\n\t\t\t\t// Render a single grid with all data.\n\t\t\t\thasData && ! dataByGroup && (\n\t\t\t\t\t<CompositeGrid\n\t\t\t\t\t\t{ ...gridProps }\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tisInfiniteScroll={ !! isInfiniteScroll }\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{\n\t\t\t\t// Render empty state.\n\t\t\t\t! hasData && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t\t\t'dataviews-no-results': ! isLoading,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ isLoading ? (\n\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\tempty\n\t\t\t\t\t\t) }\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{ hasData && isLoading && (\n\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ViewGrid;\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ComponentProps, ReactElement, HTMLAttributes } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tFlex,\n\tFlexItem,\n\tTooltip,\n\tComposite,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { Stack } from '@wordpress/ui';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { isAppleOS } from '@wordpress/keycodes';\nimport { useContext, forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../../lock-unlock';\nimport ItemActions from '../../dataviews-item-actions';\nimport DataViewsSelectionCheckbox from '../../dataviews-selection-checkbox';\nimport DataViewsContext from '../../dataviews-context';\nimport {\n\tuseHasAPossibleBulkAction,\n\tuseSomeItemHasAPossibleBulkAction,\n} from '../../dataviews-bulk-actions';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewGrid as ViewGridType,\n} from '../../../types';\nimport type { SetSelection } from '../../../types/private';\nimport { ItemClickWrapper } from '../utils/item-click-wrapper';\nconst { Badge } = unlock( componentsPrivateApis );\nimport { useGridColumns } from './preview-size-picker';\n\nfunction chunk< T >( array: T[], size: number ): T[][] {\n\tconst chunks: T[][] = [];\n\tfor ( let i = 0, j = array.length; i < j; i += size ) {\n\t\tchunks.push( array.slice( i, i + size ) );\n\t}\n\treturn chunks;\n}\n\ninterface GridItemProps< Item > extends HTMLAttributes< HTMLDivElement > {\n\tview: ViewGridType;\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tgetItemId: ( item: Item ) => string;\n\tonClickItem?: ( item: Item ) => void;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tisItemClickable: ( item: Item ) => boolean;\n\titem: Item;\n\tactions: Action< Item >[];\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tregularFields: NormalizedField< Item >[];\n\tbadgeFields: NormalizedField< Item >[];\n\thasBulkActions: boolean;\n\tconfig: {\n\t\tsizes: string;\n\t};\n}\n\nconst GridItem = forwardRef( function GridItem< Item >(\n\t{\n\t\tview,\n\t\tselection,\n\t\tonChangeSelection,\n\t\tonClickItem,\n\t\tisItemClickable,\n\t\trenderItemLink,\n\t\tgetItemId,\n\t\titem,\n\t\tactions,\n\t\tmediaField,\n\t\ttitleField,\n\t\tdescriptionField,\n\t\tregularFields,\n\t\tbadgeFields,\n\t\thasBulkActions,\n\t\tconfig,\n\t\t...props\n\t}: GridItemProps< Item >,\n\tref: React.ForwardedRef< HTMLDivElement >\n) {\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst hasBulkAction = useHasAPossibleBulkAction( actions, item );\n\tconst id = getItemId( item );\n\tconst instanceId = useInstanceId( GridItem );\n\tconst isSelected = selection.includes( id );\n\tconst renderedMediaField = mediaField?.render ? (\n\t\t<mediaField.render\n\t\t\titem={ item }\n\t\t\tfield={ mediaField }\n\t\t\tconfig={ config }\n\t\t/>\n\t) : null;\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\tconst shouldRenderMedia = showMedia && renderedMediaField;\n\n\tlet mediaA11yProps;\n\tlet titleA11yProps;\n\tif ( isItemClickable( item ) && onClickItem ) {\n\t\tif ( renderedTitleField ) {\n\t\t\tmediaA11yProps = {\n\t\t\t\t'aria-labelledby': `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t};\n\t\t\ttitleA11yProps = {\n\t\t\t\tid: `dataviews-view-grid__title-field-${ instanceId }`,\n\t\t\t};\n\t\t} else {\n\t\t\tmediaA11yProps = {\n\t\t\t\t'aria-label': __( 'Navigate to item' ),\n\t\t\t};\n\t\t}\n\t}\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"column\"\n\t\t\t{ ...props }\n\t\t\tref={ ref }\n\t\t\tclassName={ clsx(\n\t\t\t\tprops.className,\n\t\t\t\t'dataviews-view-grid__row__gridcell',\n\t\t\t\t'dataviews-view-grid__card',\n\t\t\t\t{\n\t\t\t\t\t'is-selected': hasBulkAction && isSelected,\n\t\t\t\t}\n\t\t\t) }\n\t\t\tonClickCapture={ ( event ) => {\n\t\t\t\tprops.onClickCapture?.( event );\n\t\t\t\tif ( isAppleOS() ? event.metaKey : event.ctrlKey ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( ! hasBulkAction ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.includes( id )\n\t\t\t\t\t\t\t? selection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t\t\t: [ ...selection, id ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t{ shouldRenderMedia && (\n\t\t\t\t<ItemClickWrapper\n\t\t\t\t\titem={ item }\n\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\tclassName=\"dataviews-view-grid__media\"\n\t\t\t\t\t{ ...mediaA11yProps }\n\t\t\t\t>\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t</ItemClickWrapper>\n\t\t\t) }\n\t\t\t{ hasBulkActions && shouldRenderMedia && (\n\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\titem={ item }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\tdisabled={ ! hasBulkAction }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! showTitle && shouldRenderMedia && !! actions?.length && (\n\t\t\t\t<div className=\"dataviews-view-grid__media-actions\">\n\t\t\t\t\t<ItemActions item={ item } actions={ actions } isCompact />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ showTitle && (\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\tclassName=\"dataviews-view-grid__title-actions\"\n\t\t\t\t>\n\t\t\t\t\t<ItemClickWrapper\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__title-field dataviews-title-field\"\n\t\t\t\t\t\t{ ...titleA11yProps }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t\t</ItemClickWrapper>\n\t\t\t\t\t{ !! actions?.length && (\n\t\t\t\t\t\t<ItemActions\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\tisCompact\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</Stack>\n\t\t\t) }\n\t\t\t<Stack direction=\"column\" gap=\"2xs\">\n\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! badgeFields?.length && (\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__badge-fields\"\n\t\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\t\twrap=\"wrap\"\n\t\t\t\t\t\talign=\"top\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ badgeFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Stack>\n\t\t\t\t) }\n\t\t\t\t{ !! regularFields?.length && (\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\tclassName=\"dataviews-view-grid__fields\"\n\t\t\t\t\t\tgap=\"2xs\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ regularFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field\"\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\t\t\tstyle={ { height: 'auto' } }\n\t\t\t\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<Tooltip text={ field.label }>\n\t\t\t\t\t\t\t\t\t\t\t<FlexItem className=\"dataviews-view-grid__field-name\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__field-value\"\n\t\t\t\t\t\t\t\t\t\t\tstyle={ { maxHeight: 'none' } }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Stack>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n} ) as < Item >(\n\tprops: GridItemProps< Item > & {\n\t\tref?: React.ForwardedRef< HTMLDivElement >;\n\t}\n) => JSX.Element;\n\ninterface CompositeGridProps< Item > {\n\tdata: Item[];\n\tisInfiniteScroll: boolean;\n\tclassName?: string;\n\tisLoading?: boolean;\n\tview: ViewGridType;\n\tfields: NormalizedField< Item >[];\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tonClickItem?: ( item: Item ) => void;\n\tisItemClickable: ( item: Item ) => boolean;\n\trenderItemLink?: (\n\t\tprops: {\n\t\t\titem: Item;\n\t\t} & ComponentProps< 'a' >\n\t) => ReactElement;\n\tgetItemId: ( item: Item ) => string;\n\tactions: Action< Item >[];\n}\n\nexport default function CompositeGrid< Item >( {\n\tdata,\n\tisInfiniteScroll,\n\tclassName,\n\tisLoading,\n\tview,\n\tfields,\n\tselection,\n\tonChangeSelection,\n\tonClickItem,\n\tisItemClickable,\n\trenderItemLink,\n\tgetItemId,\n\tactions,\n}: CompositeGridProps< Item > ) {\n\tconst { paginationInfo, resizeObserverRef } =\n\t\tuseContext( DataViewsContext );\n\tconst gridColumns = useGridColumns();\n\tconst hasBulkActions = useSomeItemHasAPossibleBulkAction( actions, data );\n\tconst titleField = fields.find(\n\t\t( field ) => field.id === view?.titleField\n\t);\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view?.mediaField\n\t);\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view?.descriptionField\n\t);\n\tconst otherFields = view.fields ?? [];\n\tconst { regularFields, badgeFields } = otherFields.reduce(\n\t\t(\n\t\t\taccumulator: Record< string, NormalizedField< Item >[] >,\n\t\t\tfieldId\n\t\t) => {\n\t\t\tconst field = fields.find( ( f ) => f.id === fieldId );\n\t\t\tif ( ! field ) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\t\t\t// If the field is a badge field, add it to the badgeFields array\n\t\t\t// otherwise add it to the rest visibleFields array.\n\t\t\tconst key = view.layout?.badgeFields?.includes( fieldId )\n\t\t\t\t? 'badgeFields'\n\t\t\t\t: 'regularFields';\n\t\t\taccumulator[ key ].push( field );\n\t\t\treturn accumulator;\n\t\t},\n\t\t{ regularFields: [], badgeFields: [] }\n\t);\n\n\t/*\n\t * This is the maximum width that an image can achieve in the grid. The reasoning is:\n\t * The biggest min image width available is 430px (see /dataviews-layouts/grid/preview-size-picker.tsx).\n\t * Because the grid is responsive, once there is room for another column, the images shrink to accommodate it.\n\t * So each image will never grow past 2*430px plus a little more to account for the gaps.\n\t */\n\tconst size = '900px';\n\tconst totalRows = Math.ceil( data.length / gridColumns );\n\n\treturn (\n\t\t<Composite\n\t\t\trole={ isInfiniteScroll ? 'feed' : 'grid' }\n\t\t\tclassName={ clsx( 'dataviews-view-grid', className ) }\n\t\t\tfocusWrap\n\t\t\taria-busy={ isLoading }\n\t\t\taria-rowcount={ isInfiniteScroll ? undefined : totalRows }\n\t\t\tref={ resizeObserverRef }\n\t\t>\n\t\t\t{ chunk( data, gridColumns ).map( ( row, i ) => (\n\t\t\t\t<Composite.Row\n\t\t\t\t\tkey={ i }\n\t\t\t\t\trender={\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\trole=\"row\"\n\t\t\t\t\t\t\taria-rowindex={ i + 1 }\n\t\t\t\t\t\t\taria-label={ sprintf(\n\t\t\t\t\t\t\t\t/* translators: %d: The row number in the grid */\n\t\t\t\t\t\t\t\t__( 'Row %d' ),\n\t\t\t\t\t\t\t\ti + 1\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tclassName=\"dataviews-view-grid__row\"\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\tgridTemplateColumns: `repeat( ${ gridColumns }, minmax(0, 1fr) )`,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ row.map( ( item, indexInRow ) => {\n\t\t\t\t\t\tconst index = i * gridColumns + indexInRow;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\trender={ ( props ) => (\n\t\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\t\t\trole={\n\t\t\t\t\t\t\t\t\t\t\tisInfiniteScroll\n\t\t\t\t\t\t\t\t\t\t\t\t? 'article'\n\t\t\t\t\t\t\t\t\t\t\t\t: 'gridcell'\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\taria-setsize={\n\t\t\t\t\t\t\t\t\t\t\tisInfiniteScroll\n\t\t\t\t\t\t\t\t\t\t\t\t? paginationInfo.totalItems\n\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\taria-posinset={\n\t\t\t\t\t\t\t\t\t\t\tisInfiniteScroll\n\t\t\t\t\t\t\t\t\t\t\t\t? index + 1\n\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\t\tregularFields={ regularFields }\n\t\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\t\thasBulkActions={ hasBulkActions }\n\t\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Composite.Row>\n\t\t\t) ) }\n\t\t</Composite>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { RangeControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useContext, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../../dataviews-context';\nimport type { ViewGrid } from '../../../types';\n\nconst imageSizes = [\n\t{\n\t\tvalue: 120,\n\t\tbreakpoint: 1,\n\t},\n\t{\n\t\tvalue: 170,\n\t\tbreakpoint: 1,\n\t},\n\t{\n\t\tvalue: 230,\n\t\tbreakpoint: 1,\n\t},\n\t{\n\t\tvalue: 290,\n\t\tbreakpoint: 1112, // at minimum image width, 4 images display at this container size\n\t},\n\t{\n\t\tvalue: 350,\n\t\tbreakpoint: 1636, // at minimum image width, 6 images display at this container size\n\t},\n\t{\n\t\tvalue: 430,\n\t\tbreakpoint: 588, // at minimum image width, 2 images display at this container size\n\t},\n];\n\n// Default preview size is the third smallest image size if no preview size is set.\nconst DEFAULT_PREVIEW_SIZE = imageSizes[ 2 ].value;\n\n/**\n * Calculate the number of grid columns based on container width and preview size.\n * This matches how CSS grid auto-fill works: repeat(auto-fill, minmax(previewSize, 1fr)).\n */\nexport function useGridColumns() {\n\tconst context = useContext( DataViewsContext );\n\tconst view = context.view as ViewGrid;\n\treturn useMemo( () => {\n\t\tconst containerWidth = context.containerWidth;\n\t\tconst gap = 32; // This is the value of the grid gap in CSS.\n\t\tconst previewSize = view.layout?.previewSize ?? DEFAULT_PREVIEW_SIZE;\n\t\tconst columns = Math.floor(\n\t\t\t( containerWidth + gap ) / ( previewSize + gap )\n\t\t);\n\t\treturn Math.max( 1, columns ); // Ensure at least 1 column.\n\t}, [ context.containerWidth, view.layout?.previewSize ] );\n}\n\nexport default function PreviewSizePicker() {\n\tconst context = useContext( DataViewsContext );\n\tconst view = context.view as ViewGrid;\n\n\tconst breakValues = imageSizes.filter( ( size ) => {\n\t\treturn context.containerWidth >= size.breakpoint;\n\t} );\n\n\tconst layoutPreviewSize = view.layout?.previewSize ?? DEFAULT_PREVIEW_SIZE;\n\t// If the container has resized and the set preview size is no longer available,\n\t// we reset it to the next smallest size, or the smallest available size.\n\tconst previewSizeToUse =\n\t\tbreakValues\n\t\t\t.map( ( size, index ) => ( { ...size, index } ) )\n\t\t\t.filter( ( size ) => size.value <= layoutPreviewSize )\n\t\t\t.sort( ( a, b ) => b.value - a.value )[ 0 ]?.index ?? 0;\n\n\tconst marks = breakValues.map( ( size, index ) => {\n\t\treturn {\n\t\t\tvalue: index,\n\t\t};\n\t} );\n\n\treturn (\n\t\t<RangeControl\n\t\t\t__next40pxDefaultSize\n\t\t\tshowTooltip={ false }\n\t\t\tlabel={ __( 'Preview size' ) }\n\t\t\tvalue={ previewSizeToUse }\n\t\t\tmin={ 0 }\n\t\t\tmax={ breakValues.length - 1 }\n\t\t\twithInputField={ false }\n\t\t\tonChange={ ( value = 0 ) => {\n\t\t\t\tcontext.onChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...view.layout,\n\t\t\t\t\t\tpreviewSize: breakValues[ value ].value,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tstep={ 1 }\n\t\t\tmarks={ marks }\n\t\t/>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId, usePrevious } from '@wordpress/compose';\nimport {\n\tButton,\n\tprivateApis as componentsPrivateApis,\n\tSpinner,\n\tVisuallyHidden,\n\tComposite,\n} from '@wordpress/components';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n\tuseContext,\n} from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\nimport { useRegistry } from '@wordpress/data';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../../lock-unlock';\nimport { ActionsMenuGroup, ActionModal } from '../../dataviews-item-actions';\nimport DataViewsContext from '../../dataviews-context';\nimport type {\n\tAction,\n\tNormalizedField,\n\tViewList as ViewListType,\n\tViewListProps,\n\tActionModal as ActionModalType,\n} from '../../../types';\nimport getDataByGroup from '../utils/get-data-by-group';\n\ninterface ListViewItemProps< Item > {\n\tview: ViewListType;\n\tactions: Action< Item >[];\n\tidPrefix: string;\n\tisSelected: boolean;\n\titem: Item;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tonSelect: ( item: Item ) => void;\n\totherFields: NormalizedField< Item >[];\n\tonDropdownTriggerKeyDown: React.KeyboardEventHandler< HTMLButtonElement >;\n\tposinset?: number;\n}\n\nconst { Menu } = unlock( componentsPrivateApis );\n\nfunction generateItemWrapperCompositeId( idPrefix: string ) {\n\treturn `${ idPrefix }-item-wrapper`;\n}\nfunction generatePrimaryActionCompositeId(\n\tidPrefix: string,\n\tprimaryActionId: string\n) {\n\treturn `${ idPrefix }-primary-action-${ primaryActionId }`;\n}\nfunction generateDropdownTriggerCompositeId( idPrefix: string ) {\n\treturn `${ idPrefix }-dropdown`;\n}\n\nfunction PrimaryActionGridCell< Item >( {\n\tidPrefix,\n\tprimaryAction,\n\titem,\n}: {\n\tidPrefix: string;\n\tprimaryAction: Action< Item >;\n\titem: Item;\n} ) {\n\tconst registry = useRegistry();\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\n\tconst compositeItemId = generatePrimaryActionCompositeId(\n\t\tidPrefix,\n\t\tprimaryAction.id\n\t);\n\n\tconst label =\n\t\ttypeof primaryAction.label === 'string'\n\t\t\t? primaryAction.label\n\t\t\t: primaryAction.label( [ item ] );\n\n\treturn 'RenderModal' in primaryAction ? (\n\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t<Composite.Item\n\t\t\t\tid={ compositeItemId }\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdisabled={ !! primaryAction.disabled }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\ttext={ label }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ isModalOpen && (\n\t\t\t\t\t<ActionModal< Item >\n\t\t\t\t\t\taction={ primaryAction }\n\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\tcloseModal={ () => setIsModalOpen( false ) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Composite.Item>\n\t\t</div>\n\t) : (\n\t\t<div role=\"gridcell\" key={ primaryAction.id }>\n\t\t\t<Composite.Item\n\t\t\t\tid={ compositeItemId }\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tdisabled={ !! primaryAction.disabled }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tprimaryAction.callback( [ item ], { registry } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Button>\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction ListItem< Item >( {\n\tview,\n\tactions,\n\tidPrefix,\n\tisSelected,\n\titem,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tonSelect,\n\totherFields,\n\tonDropdownTriggerKeyDown,\n\tposinset,\n}: ListViewItemProps< Item > ) {\n\tconst {\n\t\tshowTitle = true,\n\t\tshowMedia = true,\n\t\tshowDescription = true,\n\t\tinfiniteScrollEnabled,\n\t} = view;\n\tconst itemRef = useRef< HTMLDivElement >( null );\n\tconst labelId = `${ idPrefix }-label`;\n\tconst descriptionId = `${ idPrefix }-description`;\n\n\tconst registry = useRegistry();\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst [ activeModalAction, setActiveModalAction ] = useState(\n\t\tnull as ActionModalType< Item > | null\n\t);\n\tconst handleHover: React.MouseEventHandler = ( { type } ) => {\n\t\tconst isHover = type === 'mouseenter';\n\t\tsetIsHovered( isHover );\n\t};\n\n\tconst { paginationInfo } = useContext( DataViewsContext );\n\tuseEffect( () => {\n\t\tif ( isSelected ) {\n\t\t\titemRef.current?.scrollIntoView( {\n\t\t\t\tbehavior: 'auto',\n\t\t\t\tblock: 'nearest',\n\t\t\t\tinline: 'nearest',\n\t\t\t} );\n\t\t}\n\t}, [ isSelected ] );\n\n\tconst { primaryAction, eligibleActions } = useMemo( () => {\n\t\t// If an action is eligible for all items, doesn't need\n\t\t// to provide the `isEligible` function.\n\t\tconst _eligibleActions = actions.filter(\n\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t\tconst _primaryActions = _eligibleActions.filter(\n\t\t\t( action ) => action.isPrimary\n\t\t);\n\t\treturn {\n\t\t\tprimaryAction: _primaryActions[ 0 ],\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\n\tconst hasOnlyOnePrimaryAction = primaryAction && actions.length === 1;\n\n\tconst renderedMediaField =\n\t\tshowMedia && mediaField?.render ? (\n\t\t\t<div className=\"dataviews-view-list__media-wrapper\">\n\t\t\t\t<mediaField.render\n\t\t\t\t\titem={ item }\n\t\t\t\t\tfield={ mediaField }\n\t\t\t\t\tconfig={ { sizes: '52px' } }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t) : null;\n\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\n\tconst usedActions = eligibleActions?.length > 0 && (\n\t\t<Stack\n\t\t\tdirection=\"row\"\n\t\t\tgap=\"sm\"\n\t\t\tclassName=\"dataviews-view-list__item-actions\"\n\t\t>\n\t\t\t{ primaryAction && (\n\t\t\t\t<PrimaryActionGridCell\n\t\t\t\t\tidPrefix={ idPrefix }\n\t\t\t\t\tprimaryAction={ primaryAction }\n\t\t\t\t\titem={ item }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! hasOnlyOnePrimaryAction && (\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<Menu placement=\"bottom-end\">\n\t\t\t\t\t\t<Menu.TriggerButton\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\t\t\t\tid={ generateDropdownTriggerCompositeId(\n\t\t\t\t\t\t\t\t\t\tidPrefix\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t\t\t\t\tdisabled={ ! actions.length }\n\t\t\t\t\t\t\t\t\t\t\tonKeyDown={\n\t\t\t\t\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Menu.Popover>\n\t\t\t\t\t\t\t<ActionsMenuGroup\n\t\t\t\t\t\t\t\tactions={ eligibleActions }\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tregistry={ registry }\n\t\t\t\t\t\t\t\tsetActiveModalAction={ setActiveModalAction }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Menu.Popover>\n\t\t\t\t\t</Menu>\n\t\t\t\t\t{ !! activeModalAction && (\n\t\t\t\t\t\t<ActionModal\n\t\t\t\t\t\t\taction={ activeModalAction }\n\t\t\t\t\t\t\titems={ [ item ] }\n\t\t\t\t\t\t\tcloseModal={ () => setActiveModalAction( null ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</Stack>\n\t);\n\n\treturn (\n\t\t<Composite.Row\n\t\t\tref={ itemRef }\n\t\t\trender={\n\t\t\t\t/* aria-posinset breaks Composite.Row if passed to it directly. */\n\t\t\t\t<div\n\t\t\t\t\taria-posinset={ posinset }\n\t\t\t\t\taria-setsize={\n\t\t\t\t\t\tinfiniteScrollEnabled\n\t\t\t\t\t\t\t? paginationInfo.totalItems\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t}\n\t\t\trole={ infiniteScrollEnabled ? 'article' : 'row' }\n\t\t\tclassName={ clsx( {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t\t'is-hovered': isHovered,\n\t\t\t} ) }\n\t\t\tonMouseEnter={ handleHover }\n\t\t\tonMouseLeave={ handleHover }\n\t\t>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tclassName=\"dataviews-view-list__item-wrapper\"\n\t\t\t>\n\t\t\t\t<div role=\"gridcell\">\n\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\tid={ generateItemWrapperCompositeId( idPrefix ) }\n\t\t\t\t\t\taria-pressed={ isSelected }\n\t\t\t\t\t\taria-labelledby={ labelId }\n\t\t\t\t\t\taria-describedby={ descriptionId }\n\t\t\t\t\t\tclassName=\"dataviews-view-list__item\"\n\t\t\t\t\t\tonClick={ () => onSelect( item ) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tgap=\"sm\"\n\t\t\t\t\tjustify=\"start\"\n\t\t\t\t\talign=\"flex-start\"\n\t\t\t\t\tstyle={ { flex: 1 } }\n\t\t\t\t>\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\tgap=\"2xs\"\n\t\t\t\t\t\tclassName=\"dataviews-view-list__field-wrapper\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Stack direction=\"row\" align=\"center\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName=\"dataviews-title-field\"\n\t\t\t\t\t\t\t\tid={ labelId }\n\t\t\t\t\t\t\t\tstyle={ { flex: 1 } }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{ usedActions }\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t\t\t<div className=\"dataviews-view-list__field\">\n\t\t\t\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"dataviews-view-list__fields\"\n\t\t\t\t\t\t\tid={ descriptionId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ otherFields.map( ( field ) => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<VisuallyHidden\n\t\t\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-list__field-label\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ field.label }\n\t\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t\t\t<span className=\"dataviews-view-list__field-value\">\n\t\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t</Composite.Row>\n\t);\n}\n\nfunction isDefined< T >( item: T | undefined ): item is T {\n\treturn !! item;\n}\n\nexport default function ViewList< Item >( props: ViewListProps< Item > ) {\n\tconst {\n\t\tactions,\n\t\tdata,\n\t\tfields,\n\t\tgetItemId,\n\t\tisLoading,\n\t\tonChangeSelection,\n\t\tselection,\n\t\tview,\n\t\tclassName,\n\t\tempty,\n\t} = props;\n\tconst baseId = useInstanceId( ViewList, 'view-list' );\n\n\tconst selectedItem = data?.findLast( ( item ) =>\n\t\tselection.includes( getItemId( item ) )\n\t);\n\tconst titleField = fields.find( ( field ) => field.id === view.titleField );\n\tconst mediaField = fields.find( ( field ) => field.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view.descriptionField\n\t);\n\tconst otherFields = ( view?.fields ?? [] )\n\t\t.map( ( fieldId ) => fields.find( ( f ) => fieldId === f.id ) )\n\t\t.filter( isDefined );\n\n\tconst onSelect = ( item: Item ) =>\n\t\tonChangeSelection( [ getItemId( item ) ] );\n\n\tconst generateCompositeItemIdPrefix = useCallback(\n\t\t( item: Item ) => `${ baseId }-${ getItemId( item ) }`,\n\t\t[ baseId, getItemId ]\n\t);\n\n\tconst isActiveCompositeItem = useCallback(\n\t\t( item: Item, idToCheck: string ) => {\n\t\t\t// All composite items use the same prefix in their IDs.\n\t\t\treturn idToCheck.startsWith(\n\t\t\t\tgenerateCompositeItemIdPrefix( item )\n\t\t\t);\n\t\t},\n\t\t[ generateCompositeItemIdPrefix ]\n\t);\n\n\t// Controlled state for the active composite item.\n\tconst [ activeCompositeId, setActiveCompositeId ] = useState<\n\t\tstring | null | undefined\n\t>( undefined );\n\n\t// Update the active composite item when the selected item changes.\n\tuseEffect( () => {\n\t\tif ( selectedItem ) {\n\t\t\tsetActiveCompositeId(\n\t\t\t\tgenerateItemWrapperCompositeId(\n\t\t\t\t\tgenerateCompositeItemIdPrefix( selectedItem )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}, [ selectedItem, generateCompositeItemIdPrefix ] );\n\n\tconst activeItemIndex = data.findIndex( ( item ) =>\n\t\tisActiveCompositeItem( item, activeCompositeId ?? '' )\n\t);\n\tconst previousActiveItemIndex = usePrevious( activeItemIndex );\n\tconst isActiveIdInList = activeItemIndex !== -1;\n\n\tconst selectCompositeItem = useCallback(\n\t\t(\n\t\t\ttargetIndex: number,\n\t\t\t// Allows invokers to specify a custom function to generate the\n\t\t\t// target composite item ID\n\t\t\tgenerateCompositeId: ( idPrefix: string ) => string\n\t\t) => {\n\t\t\t// Clamping between 0 and data.length - 1 to avoid out of bounds.\n\t\t\tconst clampedIndex = Math.min(\n\t\t\t\tdata.length - 1,\n\t\t\t\tMath.max( 0, targetIndex )\n\t\t\t);\n\t\t\tif ( ! data[ clampedIndex ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst itemIdPrefix = generateCompositeItemIdPrefix(\n\t\t\t\tdata[ clampedIndex ]\n\t\t\t);\n\t\t\tconst targetCompositeItemId = generateCompositeId( itemIdPrefix );\n\n\t\t\tsetActiveCompositeId( targetCompositeItemId );\n\t\t\tdocument.getElementById( targetCompositeItemId )?.focus();\n\t\t},\n\t\t[ data, generateCompositeItemIdPrefix ]\n\t);\n\n\t// Select a new active composite item when the current active item\n\t// is removed from the list.\n\tuseEffect( () => {\n\t\tconst wasActiveIdInList =\n\t\t\tpreviousActiveItemIndex !== undefined &&\n\t\t\tpreviousActiveItemIndex !== -1;\n\t\tif ( ! isActiveIdInList && wasActiveIdInList ) {\n\t\t\t// By picking `previousActiveItemIndex` as the next item index, we are\n\t\t\t// basically picking the item that would have been after the deleted one.\n\t\t\t// If the previously active (and removed) item was the last of the list,\n\t\t\t// we will select the item before it \u2014 which is the new last item.\n\t\t\tselectCompositeItem(\n\t\t\t\tpreviousActiveItemIndex,\n\t\t\t\tgenerateItemWrapperCompositeId\n\t\t\t);\n\t\t}\n\t}, [ isActiveIdInList, selectCompositeItem, previousActiveItemIndex ] );\n\n\t// Prevent the default behavior (open dropdown menu) and instead select the\n\t// dropdown menu trigger on the previous/next row.\n\t// https://github.com/ariakit/ariakit/issues/3768\n\tconst onDropdownTriggerKeyDown = useCallback(\n\t\t( event: React.KeyboardEvent< HTMLButtonElement > ) => {\n\t\t\tif ( event.key === 'ArrowDown' ) {\n\t\t\t\t// Select the dropdown menu trigger item in the next row.\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectCompositeItem(\n\t\t\t\t\tactiveItemIndex + 1,\n\t\t\t\t\tgenerateDropdownTriggerCompositeId\n\t\t\t\t);\n\t\t\t}\n\t\t\tif ( event.key === 'ArrowUp' ) {\n\t\t\t\t// Select the dropdown menu trigger item in the previous row.\n\t\t\t\tevent.preventDefault();\n\t\t\t\tselectCompositeItem(\n\t\t\t\t\tactiveItemIndex - 1,\n\t\t\t\t\tgenerateDropdownTriggerCompositeId\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ selectCompositeItem, activeItemIndex ]\n\t);\n\n\tconst hasData = data?.length;\n\tif ( ! hasData ) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ ! hasData &&\n\t\t\t\t\t( isLoading ? (\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t</p>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tempty\n\t\t\t\t\t) ) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst groupField = view.groupBy?.field\n\t\t? fields.find( ( field ) => field.id === view.groupBy?.field )\n\t\t: null;\n\tconst dataByGroup = groupField ? getDataByGroup( data, groupField ) : null;\n\n\t// Render data grouped by field\n\tif ( hasData && groupField && dataByGroup ) {\n\t\treturn (\n\t\t\t<Composite\n\t\t\t\tid={ `${ baseId }` }\n\t\t\t\trender={ <div /> }\n\t\t\t\tclassName=\"dataviews-view-list__group\"\n\t\t\t\trole=\"grid\"\n\t\t\t\tactiveId={ activeCompositeId }\n\t\t\t\tsetActiveId={ setActiveCompositeId }\n\t\t\t>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\tgap=\"md\"\n\t\t\t\t\tclassName={ clsx( 'dataviews-view-list', className ) }\n\t\t\t\t>\n\t\t\t\t\t{ Array.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\t\t\tkey={ groupName }\n\t\t\t\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<h3 className=\"dataviews-view-list__group-header\">\n\t\t\t\t\t\t\t\t\t{ view.groupBy?.showLabel === false\n\t\t\t\t\t\t\t\t\t\t? groupName\n\t\t\t\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\t\t\t\tgroupField.label,\n\t\t\t\t\t\t\t\t\t\t\t\tgroupName\n\t\t\t\t\t\t\t\t\t\t  ) }\n\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t{ groupItems.map( ( item ) => {\n\t\t\t\t\t\t\t\t\tconst id =\n\t\t\t\t\t\t\t\t\t\tgenerateCompositeItemIdPrefix( item );\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<ListItem\n\t\t\t\t\t\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\t\tidPrefix={ id }\n\t\t\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\tisSelected={ item === selectedItem }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\totherFields={ otherFields }\n\t\t\t\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown={\n\t\t\t\t\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t)\n\t\t\t\t\t) }\n\t\t\t\t</Stack>\n\t\t\t</Composite>\n\t\t);\n\t}\n\n\t// Render ungrouped data\n\treturn (\n\t\t<>\n\t\t\t<Composite\n\t\t\t\tid={ baseId }\n\t\t\t\trender={ <div /> }\n\t\t\t\tclassName={ clsx( 'dataviews-view-list', className, {\n\t\t\t\t\t[ `has-${ view.layout?.density }-density` ]:\n\t\t\t\t\t\tview.layout?.density &&\n\t\t\t\t\t\t[ 'compact', 'comfortable' ].includes(\n\t\t\t\t\t\t\tview.layout.density\n\t\t\t\t\t\t),\n\t\t\t\t} ) }\n\t\t\t\trole={ view.infiniteScrollEnabled ? 'feed' : 'grid' }\n\t\t\t\tactiveId={ activeCompositeId }\n\t\t\t\tsetActiveId={ setActiveCompositeId }\n\t\t\t>\n\t\t\t\t{ data.map( ( item, index ) => {\n\t\t\t\t\tconst id = generateCompositeItemIdPrefix( item );\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ListItem\n\t\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\tidPrefix={ id }\n\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tisSelected={ item === selectedItem }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\totherFields={ otherFields }\n\t\t\t\t\t\t\tonDropdownTriggerKeyDown={\n\t\t\t\t\t\t\t\tonDropdownTriggerKeyDown\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tposinset={\n\t\t\t\t\t\t\t\tview.infiniteScrollEnabled\n\t\t\t\t\t\t\t\t\t? index + 1\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</Composite>\n\t\t\t{ hasData && isLoading && (\n\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { Spinner } from '@wordpress/components';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type { ViewActivityProps } from '../../../types';\nimport getDataByGroup from '../utils/get-data-by-group';\nimport ActivityGroup from './activity-group';\nimport ActivityItems from './activity-items';\n\nexport default function ViewActivity< Item >(\n\tprops: ViewActivityProps< Item >\n) {\n\tconst { empty, data, fields, isLoading, view, className } = props;\n\n\t// Handle empty/loading states\n\tconst hasData = data?.length;\n\tif ( ! hasData ) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ ! hasData &&\n\t\t\t\t\t( isLoading ? (\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t</p>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tempty\n\t\t\t\t\t) ) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst wrapperClassName = clsx( 'dataviews-view-activity', className );\n\n\t// Check if data should be grouped\n\tconst groupField = view.groupBy?.field\n\t\t? fields.find( ( field ) => field.id === view.groupBy?.field )\n\t\t: null;\n\tconst dataByGroup = groupField ? getDataByGroup( data, groupField ) : null;\n\n\t// Convert dataByGroup entries into array.\n\tconst groupedEntries = dataByGroup\n\t\t? Array.from( dataByGroup.entries() )\n\t\t: [];\n\n\t// Render grouped activity\n\tif ( hasData && groupField && dataByGroup ) {\n\t\treturn (\n\t\t\t<Stack direction=\"column\" gap=\"xs\" className={ wrapperClassName }>\n\t\t\t\t{ groupedEntries.map(\n\t\t\t\t\t( [ groupName, groupData ]: [ string, Item[] ] ) => (\n\t\t\t\t\t\t<ActivityGroup< Item >\n\t\t\t\t\t\t\tkey={ groupName }\n\t\t\t\t\t\t\tgroupName={ groupName }\n\t\t\t\t\t\t\tgroupData={ groupData }\n\t\t\t\t\t\t\tgroupField={ groupField }\n\t\t\t\t\t\t\tshowLabel={ view.groupBy?.showLabel !== false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ActivityItems< Item >\n\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\tdata={ groupData }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ActivityGroup>\n\t\t\t\t\t)\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t);\n\t}\n\n\t// Render flat activity (no grouping)\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tclassName={ wrapperClassName }\n\t\t\t\trole={ view.infiniteScrollEnabled ? 'feed' : undefined }\n\t\t\t>\n\t\t\t\t<ActivityItems< Item > { ...props } />\n\t\t\t</div>\n\t\t\t{ hasData && isLoading && (\n\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { createInterpolateElement } from '@wordpress/element';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../../types';\n\ninterface ActivityGroupProps< Item > {\n\tgroupName: string;\n\tgroupData: Item[];\n\tgroupField: NormalizedField< Item >;\n\tshowLabel?: boolean;\n\tchildren: React.ReactNode;\n}\n\nexport default function ActivityGroup< Item >( {\n\tgroupName,\n\tgroupData,\n\tgroupField,\n\tshowLabel = true,\n\tchildren,\n}: ActivityGroupProps< Item > ) {\n\t// Render group header content - either with or without field label\n\tconst groupHeader = showLabel ? (\n\t\tcreateInterpolateElement(\n\t\t\t// translators: %s: The label of the field e.g. \"Status\".\n\t\t\tsprintf( __( '%s: <groupName />' ), groupField.label ).trim(),\n\t\t\t{\n\t\t\t\tgroupName: (\n\t\t\t\t\t<groupField.render\n\t\t\t\t\t\titem={ groupData[ 0 ] }\n\t\t\t\t\t\tfield={ groupField }\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t}\n\t\t)\n\t) : (\n\t\t<groupField.render item={ groupData[ 0 ] } field={ groupField } />\n\t);\n\n\treturn (\n\t\t<Stack\n\t\t\tkey={ groupName }\n\t\t\tdirection=\"column\"\n\t\t\tclassName=\"dataviews-view-activity__group\"\n\t\t>\n\t\t\t<h3 className=\"dataviews-view-activity__group-header\">\n\t\t\t\t{ groupHeader }\n\t\t\t</h3>\n\t\t\t{ children }\n\t\t</Stack>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { VisuallyHidden } from '@wordpress/components';\nimport { useRef, useContext, useMemo } from '@wordpress/element';\nimport { useRegistry } from '@wordpress/data';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport ItemActions, { PrimaryActions } from '../../dataviews-item-actions';\nimport DataViewsContext from '../../dataviews-context';\nimport { ItemClickWrapper } from '../utils/item-click-wrapper';\nimport type { NormalizedField, ViewActivityProps } from '../../../types';\n\nfunction ActivityItem< Item >(\n\tprops: ViewActivityProps< Item > & {\n\t\titem: Item;\n\t\tmediaField?: NormalizedField< Item >;\n\t\ttitleField?: NormalizedField< Item >;\n\t\tdescriptionField?: NormalizedField< Item >;\n\t\totherFields: NormalizedField< Item >[];\n\t\tposinset?: number;\n\t}\n) {\n\tconst {\n\t\tview,\n\t\tactions,\n\t\titem,\n\t\ttitleField,\n\t\tmediaField,\n\t\tdescriptionField,\n\t\totherFields,\n\t\tposinset,\n\t\tonClickItem,\n\t\trenderItemLink,\n\t\tisItemClickable,\n\t} = props;\n\tconst {\n\t\tshowTitle = true,\n\t\tshowMedia = true,\n\t\tshowDescription = true,\n\t\tinfiniteScrollEnabled,\n\t} = view;\n\tconst itemRef = useRef< HTMLDivElement >( null );\n\tconst registry = useRegistry();\n\tconst { paginationInfo } = useContext( DataViewsContext );\n\n\tconst { primaryActions, eligibleActions } = useMemo( () => {\n\t\t// If an action is eligible for all items, doesn't need\n\t\t// to provide the `isEligible` function.\n\t\tconst _eligibleActions = actions.filter(\n\t\t\t( action ) => ! action.isEligible || action.isEligible( item )\n\t\t);\n\t\tconst _primaryActions = _eligibleActions.filter(\n\t\t\t( action ) => action.isPrimary\n\t\t);\n\t\treturn {\n\t\t\tprimaryActions: _primaryActions,\n\t\t\teligibleActions: _eligibleActions,\n\t\t};\n\t}, [ actions, item ] );\n\n\tconst density = view.layout?.density ?? 'balanced';\n\tconst mediaContent =\n\t\tshowMedia && density !== 'compact' && mediaField?.render ? (\n\t\t\t<mediaField.render\n\t\t\t\titem={ item }\n\t\t\t\tfield={ mediaField }\n\t\t\t\tconfig={ {\n\t\t\t\t\tsizes: density === 'comfortable' ? '32px' : '24px',\n\t\t\t\t} }\n\t\t\t/>\n\t\t) : null;\n\n\tconst renderedMediaField = (\n\t\t<div className=\"dataviews-view-activity__item-type-icon\">\n\t\t\t{ mediaContent || (\n\t\t\t\t<span\n\t\t\t\t\tclassName=\"dataviews-view-activity__item-bullet\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\n\tconst verticalGap = useMemo( () => {\n\t\tswitch ( density ) {\n\t\t\tcase 'comfortable':\n\t\t\t\treturn 'sm';\n\t\t\tdefault:\n\t\t\t\treturn 'xs';\n\t\t}\n\t}, [ density ] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ itemRef }\n\t\t\trole={ infiniteScrollEnabled ? 'article' : undefined }\n\t\t\taria-posinset={ posinset }\n\t\t\taria-setsize={\n\t\t\t\tinfiniteScrollEnabled ? paginationInfo.totalItems : undefined\n\t\t\t}\n\t\t\tclassName={ clsx(\n\t\t\t\t'dataviews-view-activity__item',\n\t\t\t\tdensity === 'compact' && 'is-compact',\n\t\t\t\tdensity === 'balanced' && 'is-balanced',\n\t\t\t\tdensity === 'comfortable' && 'is-comfortable'\n\t\t\t) }\n\t\t>\n\t\t\t<Stack direction=\"row\" gap=\"md\" justify=\"start\" align=\"flex-start\">\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\tgap=\"2xs\"\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tclassName=\"dataviews-view-activity__item-type\"\n\t\t\t\t>\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t</Stack>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\tgap={ verticalGap }\n\t\t\t\t\talign=\"flex-start\"\n\t\t\t\t\tclassName=\"dataviews-view-activity__item-content\"\n\t\t\t\t>\n\t\t\t\t\t{ renderedTitleField && (\n\t\t\t\t\t\t<ItemClickWrapper\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tisItemClickable={ isItemClickable }\n\t\t\t\t\t\t\tonClickItem={ onClickItem }\n\t\t\t\t\t\t\trenderItemLink={ renderItemLink }\n\t\t\t\t\t\t\tclassName=\"dataviews-view-activity__item-title\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t\t\t</ItemClickWrapper>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showDescription && descriptionField && (\n\t\t\t\t\t\t<div className=\"dataviews-view-activity__item-description\">\n\t\t\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t\t<div className=\"dataviews-view-activity__item-fields\">\n\t\t\t\t\t\t{ otherFields.map( ( field ) => (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\tclassName=\"dataviews-view-activity__item-field\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<VisuallyHidden\n\t\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-activity__item-field-label\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ field.label }\n\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t\t<span className=\"dataviews-view-activity__item-field-value\">\n\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</div>\n\t\t\t\t\t{ !! primaryActions?.length && (\n\t\t\t\t\t\t<PrimaryActions\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tactions={ primaryActions }\n\t\t\t\t\t\t\tregistry={ registry }\n\t\t\t\t\t\t\tbuttonVariant=\"secondary\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</Stack>\n\t\t\t\t{ primaryActions.length < eligibleActions.length && (\n\t\t\t\t\t<div className=\"dataviews-view-activity__item-actions\">\n\t\t\t\t\t\t<ItemActions\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tactions={ eligibleActions }\n\t\t\t\t\t\t\tisCompact\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t</div>\n\t);\n}\n\nexport default ActivityItem;\n", "/**\n * Internal dependencies\n */\nimport ActivityItem from './activity-item';\nimport type { ViewActivityProps } from '../../../types';\n\nfunction isDefined< T >( item: T | undefined ): item is T {\n\treturn !! item;\n}\n\nexport default function ActivityItems< Item >(\n\tprops: ViewActivityProps< Item >\n) {\n\tconst { data, fields, getItemId, view } = props;\n\n\t// Determine which fields to display based on view configuration\n\tconst titleField = fields.find( ( field ) => field.id === view.titleField );\n\tconst mediaField = fields.find( ( field ) => field.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view.descriptionField\n\t);\n\tconst otherFields = ( view?.fields ?? [] )\n\t\t.map( ( fieldId ) => fields.find( ( f ) => fieldId === f.id ) )\n\t\t.filter( isDefined );\n\n\treturn data.map( ( item, index ) => {\n\t\treturn (\n\t\t\t<ActivityItem\n\t\t\t\t{ ...props }\n\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\titem={ item }\n\t\t\t\tmediaField={ mediaField }\n\t\t\t\ttitleField={ titleField }\n\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\totherFields={ otherFields }\n\t\t\t\tposinset={ view.infiniteScrollEnabled ? index + 1 : undefined }\n\t\t\t/>\n\t\t);\n\t} );\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ReactNode } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tSpinner,\n\tFlex,\n\tFlexItem,\n\tprivateApis as componentsPrivateApis,\n\tComposite,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useContext } from '@wordpress/element';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../../lock-unlock';\nimport DataViewsSelectionCheckbox from '../../dataviews-selection-checkbox';\nimport DataViewsContext from '../../dataviews-context';\nimport { useIsMultiselectPicker } from '../../dataviews-picker-footer';\nimport type {\n\tNormalizedField,\n\tViewPickerGrid as ViewPickerGridType,\n\tViewPickerGridProps,\n} from '../../../types';\nimport type { SetSelection } from '../../../types/private';\nimport { GridItems } from '../utils/grid-items';\nconst { Badge } = unlock( componentsPrivateApis );\nimport getDataByGroup from '../utils/get-data-by-group';\n\ninterface GridItemProps< Item > {\n\tview: ViewPickerGridType;\n\tmultiselect?: boolean;\n\tselection: string[];\n\tonChangeSelection: SetSelection;\n\tgetItemId: ( item: Item ) => string;\n\titem: Item;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tregularFields: NormalizedField< Item >[];\n\tbadgeFields: NormalizedField< Item >[];\n\tconfig: {\n\t\tsizes: string;\n\t};\n\tposinset?: number;\n\tsetsize?: number;\n}\n\nfunction GridItem< Item >( {\n\tview,\n\tmultiselect,\n\tselection,\n\tonChangeSelection,\n\tgetItemId,\n\titem,\n\tmediaField,\n\ttitleField,\n\tdescriptionField,\n\tregularFields,\n\tbadgeFields,\n\tconfig,\n\tposinset,\n\tsetsize,\n}: GridItemProps< Item > ) {\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst id = getItemId( item );\n\tconst isSelected = selection.includes( id );\n\tconst renderedMediaField = mediaField?.render ? (\n\t\t<mediaField.render\n\t\t\titem={ item }\n\t\t\tfield={ mediaField }\n\t\t\tconfig={ config }\n\t\t/>\n\t) : null;\n\tconst renderedTitleField =\n\t\tshowTitle && titleField?.render ? (\n\t\t\t<titleField.render item={ item } field={ titleField } />\n\t\t) : null;\n\n\treturn (\n\t\t<Composite.Item\n\t\t\taria-label={\n\t\t\t\ttitleField\n\t\t\t\t\t? titleField.getValue( { item } ) || __( '(no title)' )\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tkey={ id }\n\t\t\trender={ ( { children, ...props } ) => (\n\t\t\t\t<Stack direction=\"column\" children={ children } { ...props } />\n\t\t\t) }\n\t\t\trole=\"option\"\n\t\t\taria-posinset={ posinset }\n\t\t\taria-setsize={ setsize }\n\t\t\tclassName={ clsx( 'dataviews-view-picker-grid__card', {\n\t\t\t\t'is-selected': isSelected,\n\t\t\t} ) }\n\t\t\taria-selected={ isSelected }\n\t\t\tonClick={ () => {\n\t\t\t\tif ( isSelected ) {\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tconst newSelection = multiselect\n\t\t\t\t\t\t? [ ...selection, id ]\n\t\t\t\t\t\t: [ id ];\n\t\t\t\t\tonChangeSelection( newSelection );\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t{ showMedia && renderedMediaField && (\n\t\t\t\t<div className=\"dataviews-view-picker-grid__media\">\n\t\t\t\t\t{ renderedMediaField }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ showMedia && renderedMediaField && (\n\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\titem={ item }\n\t\t\t\t\tselection={ selection }\n\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\tdisabled={ false }\n\t\t\t\t\taria-hidden\n\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showTitle && (\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tjustify=\"space-between\"\n\t\t\t\t\tclassName=\"dataviews-view-picker-grid__title-actions\"\n\t\t\t\t>\n\t\t\t\t\t<div className=\"dataviews-view-picker-grid__title-field dataviews-title-field\">\n\t\t\t\t\t\t{ renderedTitleField }\n\t\t\t\t\t</div>\n\t\t\t\t</Stack>\n\t\t\t) }\n\t\t\t<Stack direction=\"column\" gap=\"2xs\">\n\t\t\t\t{ showDescription && descriptionField?.render && (\n\t\t\t\t\t<descriptionField.render\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tfield={ descriptionField }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! badgeFields?.length && (\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__badge-fields\"\n\t\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\t\twrap=\"wrap\"\n\t\t\t\t\t\talign=\"top\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ badgeFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__field-value\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Stack>\n\t\t\t\t) }\n\t\t\t\t{ !! regularFields?.length && (\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__fields\"\n\t\t\t\t\t\tgap=\"2xs\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ regularFields.map( ( field ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__field\"\n\t\t\t\t\t\t\t\t\tkey={ field.id }\n\t\t\t\t\t\t\t\t\tgap={ 1 }\n\t\t\t\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t\t\t\t\texpanded\n\t\t\t\t\t\t\t\t\tstyle={ { height: 'auto' } }\n\t\t\t\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<FlexItem className=\"dataviews-view-picker-grid__field-name\">\n\t\t\t\t\t\t\t\t\t\t\t{ field.header }\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-picker-grid__field-value\"\n\t\t\t\t\t\t\t\t\t\t\tstyle={ { maxHeight: 'none' } }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<field.render\n\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t</Flex>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Stack>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t</Composite.Item>\n\t);\n}\n\nfunction GridGroup< Item >( {\n\tgroupName,\n\tgroupField,\n\tshowLabel = true,\n\tchildren,\n}: {\n\tgroupName: string;\n\tgroupField: NormalizedField< Item >;\n\tshowLabel?: boolean;\n\tchildren: ReactNode;\n} ) {\n\tconst headerId = useInstanceId(\n\t\tGridGroup,\n\t\t'dataviews-view-picker-grid-group__header'\n\t);\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"column\"\n\t\t\tkey={ groupName }\n\t\t\tgap=\"xs\"\n\t\t\trole=\"group\"\n\t\t\taria-labelledby={ headerId }\n\t\t>\n\t\t\t<h3\n\t\t\t\tclassName=\"dataviews-view-picker-grid-group__header\"\n\t\t\t\tid={ headerId }\n\t\t\t>\n\t\t\t\t{ showLabel\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\tgroupField.label,\n\t\t\t\t\t\t\tgroupName\n\t\t\t\t\t  )\n\t\t\t\t\t: groupName }\n\t\t\t</h3>\n\t\t\t{ children }\n\t\t</Stack>\n\t);\n}\n\nfunction ViewPickerGrid< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading,\n\tonChangeSelection,\n\tselection,\n\tview,\n\tclassName,\n\tempty,\n}: ViewPickerGridProps< Item > ) {\n\tconst { resizeObserverRef, paginationInfo, itemListLabel } =\n\t\tuseContext( DataViewsContext );\n\tconst titleField = fields.find(\n\t\t( field ) => field.id === view?.titleField\n\t);\n\tconst mediaField = fields.find(\n\t\t( field ) => field.id === view?.mediaField\n\t);\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view?.descriptionField\n\t);\n\tconst otherFields = view.fields ?? [];\n\tconst { regularFields, badgeFields } = otherFields.reduce(\n\t\t(\n\t\t\taccumulator: Record< string, NormalizedField< Item >[] >,\n\t\t\tfieldId\n\t\t) => {\n\t\t\tconst field = fields.find( ( f ) => f.id === fieldId );\n\t\t\tif ( ! field ) {\n\t\t\t\treturn accumulator;\n\t\t\t}\n\t\t\t// If the field is a badge field, add it to the badgeFields array\n\t\t\t// otherwise add it to the rest visibleFields array.\n\t\t\tconst key = view.layout?.badgeFields?.includes( fieldId )\n\t\t\t\t? 'badgeFields'\n\t\t\t\t: 'regularFields';\n\t\t\taccumulator[ key ].push( field );\n\t\t\treturn accumulator;\n\t\t},\n\t\t{ regularFields: [], badgeFields: [] }\n\t);\n\tconst hasData = !! data?.length;\n\tconst usedPreviewSize = view.layout?.previewSize;\n\tconst isMultiselect = useIsMultiselectPicker( actions );\n\n\t/*\n\t * This is the maximum width that an image can achieve in the grid. The reasoning is:\n\t * The biggest min image width available is 430px (see /dataviews-layouts/grid/preview-size-picker.tsx).\n\t * Because the grid is responsive, once there is room for another column, the images shrink to accommodate it.\n\t * So each image will never grow past 2*430px plus a little more to account for the gaps.\n\t */\n\tconst size = '900px';\n\n\tconst groupField = view.groupBy?.field\n\t\t? fields.find( ( f ) => f.id === view.groupBy?.field )\n\t\t: null;\n\tconst dataByGroup = groupField ? getDataByGroup( data, groupField ) : null;\n\n\tconst isInfiniteScroll = view.infiniteScrollEnabled && ! dataByGroup;\n\n\tconst currentPage = view?.page ?? 1;\n\tconst perPage = view?.perPage ?? 0;\n\tconst setSize = isInfiniteScroll ? paginationInfo?.totalItems : undefined;\n\n\treturn (\n\t\t<>\n\t\t\t{\n\t\t\t\t// Render multiple groups.\n\t\t\t\thasData && groupField && dataByGroup && (\n\t\t\t\t\t<Composite\n\t\t\t\t\t\tvirtualFocus\n\t\t\t\t\t\torientation=\"horizontal\"\n\t\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\t\taria-multiselectable={ isMultiselect }\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'dataviews-view-picker-grid',\n\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t) }\n\t\t\t\t\t\taria-label={ itemListLabel }\n\t\t\t\t\t\trender={ ( { children, ...props } ) => (\n\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\t\t\tgap=\"md\"\n\t\t\t\t\t\t\t\tchildren={ children }\n\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ Array.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t\t<GridGroup\n\t\t\t\t\t\t\t\t\tkey={ groupName }\n\t\t\t\t\t\t\t\t\tgroupName={ groupName }\n\t\t\t\t\t\t\t\t\tgroupField={ groupField }\n\t\t\t\t\t\t\t\t\tshowLabel={\n\t\t\t\t\t\t\t\t\t\tview.groupBy?.showLabel !== false\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<GridItems\n\t\t\t\t\t\t\t\t\t\tpreviewSize={ usedPreviewSize }\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\tgridTemplateColumns:\n\t\t\t\t\t\t\t\t\t\t\t\tusedPreviewSize &&\n\t\t\t\t\t\t\t\t\t\t\t\t`repeat(auto-fill, minmax(${ usedPreviewSize }px, 1fr))`,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\t\t\t\t\tref={\n\t\t\t\t\t\t\t\t\t\t\tresizeObserverRef as React.RefObject< HTMLDivElement >\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ groupItems.map( ( item ) => {\n\t\t\t\t\t\t\t\t\t\t\tconst posInSet =\n\t\t\t\t\t\t\t\t\t\t\t\t( currentPage - 1 ) * perPage +\n\t\t\t\t\t\t\t\t\t\t\t\tdata.indexOf( item ) +\n\t\t\t\t\t\t\t\t\t\t\t\t1;\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\t\t\t\tmultiselect={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisMultiselect\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeSelection\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdescriptionField\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tregularFields\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\tposinset={ posInSet }\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetsize={ setSize }\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t</GridItems>\n\t\t\t\t\t\t\t\t</GridGroup>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Composite>\n\t\t\t\t)\n\t\t\t}\n\n\t\t\t{\n\t\t\t\t// Render a single grid with all data.\n\t\t\t\thasData && ! dataByGroup && (\n\t\t\t\t\t<Composite\n\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t<GridItems\n\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'dataviews-view-picker-grid',\n\t\t\t\t\t\t\t\t\tclassName\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tpreviewSize={ usedPreviewSize }\n\t\t\t\t\t\t\t\taria-busy={ isLoading }\n\t\t\t\t\t\t\t\tref={\n\t\t\t\t\t\t\t\t\tresizeObserverRef as React.RefObject< HTMLDivElement >\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvirtualFocus\n\t\t\t\t\t\torientation=\"horizontal\"\n\t\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\t\taria-multiselectable={ isMultiselect }\n\t\t\t\t\t\taria-label={ itemListLabel }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ data.map( ( item, index ) => {\n\t\t\t\t\t\t\tlet posinset = isInfiniteScroll\n\t\t\t\t\t\t\t\t? index + 1\n\t\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\t\t\tif ( ! isInfiniteScroll ) {\n\t\t\t\t\t\t\t\t// When infinite scroll isn't active, take pagination into account\n\t\t\t\t\t\t\t\t// when calculating the posinset.\n\t\t\t\t\t\t\t\tposinset =\n\t\t\t\t\t\t\t\t\t( currentPage - 1 ) * perPage + index + 1;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<GridItem\n\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\tmultiselect={ isMultiselect }\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\tregularFields={ regularFields }\n\t\t\t\t\t\t\t\t\tbadgeFields={ badgeFields }\n\t\t\t\t\t\t\t\t\tconfig={ {\n\t\t\t\t\t\t\t\t\t\tsizes: size,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tposinset={ posinset }\n\t\t\t\t\t\t\t\t\tsetsize={ setSize }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Composite>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{\n\t\t\t\t// Render empty state.\n\t\t\t\t! hasData && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t\t\t'dataviews-no-results': ! isLoading,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ isLoading ? (\n\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\tempty\n\t\t\t\t\t\t) }\n\t\t\t\t\t</div>\n\t\t\t\t)\n\t\t\t}\n\t\t\t{ hasData && isLoading && (\n\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</p>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ViewPickerGrid;\n", "/**\n * WordPress dependencies\n */\nimport { Button, CheckboxControl } from '@wordpress/components';\nimport { useRegistry } from '@wordpress/data';\nimport { useContext, useMemo, useState } from '@wordpress/element';\nimport { __, sprintf, _n } from '@wordpress/i18n';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport DataViewsPagination from '../dataviews-pagination';\nimport DataViewsContext from '../dataviews-context';\nimport type { SetSelection } from '../../types/private';\nimport type { Action } from '../../types';\n\nconst EMPTY_ARRAY: [] = [];\n\nexport function useIsMultiselectPicker< Item >(\n\tactions: Action< Item >[] | undefined\n) {\n\treturn useMemo( () => {\n\t\treturn actions?.every( ( action ) => action.supportsBulk );\n\t}, [ actions ] );\n}\n\nfunction BulkSelectionCheckbox< Item >( {\n\tselection,\n\tselectedItems,\n\tonChangeSelection,\n\tdata,\n\tgetItemId,\n}: {\n\tselection: string[];\n\tselectedItems: Item[];\n\tonChangeSelection: SetSelection;\n\tdata: Item[];\n\tgetItemId: ( item: Item ) => string;\n} ) {\n\tconst areAllSelected = selectedItems.length === data.length;\n\n\treturn (\n\t\t<CheckboxControl\n\t\t\tclassName=\"dataviews-view-table-selection-checkbox\"\n\t\t\tchecked={ areAllSelected }\n\t\t\tindeterminate={ ! areAllSelected && !! selectedItems.length }\n\t\t\tonChange={ () => {\n\t\t\t\tif ( areAllSelected ) {\n\t\t\t\t\t// Deselect all - remove the current page from the total selection.\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.filter(\n\t\t\t\t\t\t\t( id ) =>\n\t\t\t\t\t\t\t\t! data.some(\n\t\t\t\t\t\t\t\t\t( item ) => id === getItemId( item )\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\t// Select all - merge the current page into the total selection.\n\t\t\t\t\tconst selectionSet = new Set( [\n\t\t\t\t\t\t...selection,\n\t\t\t\t\t\t...data.map( ( item ) => getItemId( item ) ),\n\t\t\t\t\t] );\n\t\t\t\t\tonChangeSelection( Array.from( selectionSet ) );\n\t\t\t\t}\n\t\t\t} }\n\t\t\taria-label={\n\t\t\t\tareAllSelected ? __( 'Deselect all' ) : __( 'Select all' )\n\t\t\t}\n\t\t/>\n\t);\n}\n\nfunction ActionButtons< Item >( {\n\tactions,\n\titems,\n\tselection,\n}: {\n\tactions: Action< Item >[];\n\titems: Item[];\n\tselection: string[];\n} ) {\n\tconst registry = useRegistry();\n\tconst [ actionInProgress, setActionInProgress ] = useState< string | null >(\n\t\tnull\n\t);\n\n\treturn (\n\t\t<Stack direction=\"row\" gap=\"2xs\">\n\t\t\t{ actions.map( ( action ) => {\n\t\t\t\t// Only support actions with callbacks for DataViewsPicker.\n\t\t\t\t// This is because many use cases of the picker will be already within modals.\n\t\t\t\tif ( ! ( 'callback' in action ) ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst { id, label, icon, isPrimary, callback } = action;\n\n\t\t\t\tconst _label =\n\t\t\t\t\ttypeof label === 'string' ? label : label( items );\n\t\t\t\tconst variant = isPrimary ? 'primary' : 'tertiary';\n\t\t\t\tconst isInProgress = id === actionInProgress;\n\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\tdisabled={ isInProgress || ! selection?.length }\n\t\t\t\t\t\tisBusy={ isInProgress }\n\t\t\t\t\t\tonClick={ async () => {\n\t\t\t\t\t\t\tsetActionInProgress( id );\n\t\t\t\t\t\t\tawait callback( items, {\n\t\t\t\t\t\t\t\tregistry,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\tsetActionInProgress( null );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tvariant={ variant }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ _label }\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Stack>\n\t);\n}\n\nexport function DataViewsPickerFooter() {\n\tconst {\n\t\tdata,\n\t\tselection,\n\t\tonChangeSelection,\n\t\tgetItemId,\n\t\tactions = EMPTY_ARRAY,\n\t} = useContext( DataViewsContext );\n\n\tconst selectionCount = selection.length;\n\tconst isMultiselect = useIsMultiselectPicker( actions );\n\n\tconst message =\n\t\tselectionCount > 0\n\t\t\t? sprintf(\n\t\t\t\t\t/* translators: %d: number of items. */\n\t\t\t\t\t_n(\n\t\t\t\t\t\t'%d Item selected',\n\t\t\t\t\t\t'%d Items selected',\n\t\t\t\t\t\tselectionCount\n\t\t\t\t\t),\n\t\t\t\t\tselectionCount\n\t\t\t  )\n\t\t\t: sprintf(\n\t\t\t\t\t/* translators: %d: number of items. */\n\t\t\t\t\t_n( '%d Item', '%d Items', data.length ),\n\t\t\t\t\tdata.length\n\t\t\t  );\n\n\tconst selectedItems = useMemo(\n\t\t() =>\n\t\t\tdata.filter( ( item ) => selection.includes( getItemId( item ) ) ),\n\t\t[ selection, getItemId, data ]\n\t);\n\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"row\"\n\t\t\tjustify=\"space-between\"\n\t\t\talign=\"center\"\n\t\t\tclassName=\"dataviews-footer\"\n\t\t\tgap=\"xs\"\n\t\t>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tclassName=\"dataviews-picker-footer__bulk-selection\"\n\t\t\t\tgap=\"sm\"\n\t\t\t\talign=\"center\"\n\t\t\t>\n\t\t\t\t{ isMultiselect && (\n\t\t\t\t\t<BulkSelectionCheckbox\n\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\tselectedItems={ selectedItems }\n\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<span className=\"dataviews-bulk-actions-footer__item-count\">\n\t\t\t\t\t{ message }\n\t\t\t\t</span>\n\t\t\t</Stack>\n\t\t\t<DataViewsPagination />\n\t\t\t{ Boolean( actions?.length ) && (\n\t\t\t\t<div className=\"dataviews-picker-footer__actions\">\n\t\t\t\t\t<ActionButtons\n\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\titems={ selectedItems }\n\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</Stack>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { Button, SelectControl } from '@wordpress/components';\nimport { createInterpolateElement, memo, useContext } from '@wordpress/element';\nimport { sprintf, __, _x, isRTL } from '@wordpress/i18n';\nimport { next, previous } from '@wordpress/icons';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\n\nexport function DataViewsPagination() {\n\tconst {\n\t\tview,\n\t\tonChangeView,\n\t\tpaginationInfo: { totalItems = 0, totalPages },\n\t} = useContext( DataViewsContext );\n\n\tif ( ! totalItems || ! totalPages || view.infiniteScrollEnabled ) {\n\t\treturn null;\n\t}\n\n\tconst currentPage = view.page ?? 1;\n\tconst pageSelectOptions = Array.from( Array( totalPages ) ).map(\n\t\t( _, i ) => {\n\t\t\tconst page = i + 1;\n\t\t\treturn {\n\t\t\t\tvalue: page.toString(),\n\t\t\t\tlabel: page.toString(),\n\t\t\t\t'aria-label':\n\t\t\t\t\tcurrentPage === page\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: 1: current page number. 2: total number of pages.\n\t\t\t\t\t\t\t\t__( 'Page %1$d of %2$d' ),\n\t\t\t\t\t\t\t\tcurrentPage,\n\t\t\t\t\t\t\t\ttotalPages\n\t\t\t\t\t\t  )\n\t\t\t\t\t\t: page.toString(),\n\t\t\t};\n\t\t}\n\t);\n\n\treturn (\n\t\t!! totalItems &&\n\t\ttotalPages !== 1 && (\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tclassName=\"dataviews-pagination\"\n\t\t\t\tjustify=\"end\"\n\t\t\t\talign=\"center\"\n\t\t\t\tgap=\"lg\"\n\t\t\t>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tgap=\"2xs\"\n\t\t\t\t\tclassName=\"dataviews-pagination__page-select\"\n\t\t\t\t>\n\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t// translators: 1: Current page number, 2: Total number of pages.\n\t\t\t\t\t\t\t_x(\n\t\t\t\t\t\t\t\t'<div>Page</div>%1$s<div>of %2$d</div>',\n\t\t\t\t\t\t\t\t'paging'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t'<CurrentPage />',\n\t\t\t\t\t\t\ttotalPages\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdiv: <div aria-hidden />,\n\t\t\t\t\t\t\tCurrentPage: (\n\t\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\t\taria-label={ __( 'Current page' ) }\n\t\t\t\t\t\t\t\t\tvalue={ currentPage.toString() }\n\t\t\t\t\t\t\t\t\toptions={ pageSelectOptions }\n\t\t\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\t\tpage: +newValue,\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tvariant=\"minimal\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t</Stack>\n\t\t\t\t<Stack direction=\"row\" gap=\"2xs\" align=\"center\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\tpage: currentPage - 1,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdisabled={ currentPage === 1 }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\tlabel={ __( 'Previous page' ) }\n\t\t\t\t\t\ticon={ isRTL() ? next : previous }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tonChangeView( { ...view, page: currentPage + 1 } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdisabled={ currentPage >= totalPages }\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\tlabel={ __( 'Next page' ) }\n\t\t\t\t\t\ticon={ isRTL() ? previous : next }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\ttooltipPosition=\"top\"\n\t\t\t\t\t/>\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t)\n\t);\n}\n\nexport default memo( DataViewsPagination );\n", "/**\n * External dependencies\n */\nimport type { ComponentPropsWithoutRef } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\nexport const GridItems = forwardRef<\n\tHTMLDivElement,\n\t{\n\t\tclassName?: string;\n\t\tpreviewSize: number | undefined;\n\t} & ComponentPropsWithoutRef< 'div' >\n>( ( { className, previewSize, ...props }, ref ) => {\n\treturn (\n\t\t<div\n\t\t\tref={ ref }\n\t\t\tclassName={ clsx( 'dataviews-view-grid-items', className ) }\n\t\t\tstyle={ {\n\t\t\t\tgridTemplateColumns:\n\t\t\t\t\tpreviewSize &&\n\t\t\t\t\t`repeat(auto-fill, minmax(${ previewSize }px, 1fr))`,\n\t\t\t} }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n} );\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { Spinner, Composite } from '@wordpress/components';\nimport {\n\tuseContext,\n\tuseEffect,\n\tuseId,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../../dataviews-context';\nimport DataViewsSelectionCheckbox from '../../dataviews-selection-checkbox';\nimport { useIsMultiselectPicker } from '../../dataviews-picker-footer';\nimport { BulkSelectionCheckbox } from '../../dataviews-bulk-actions';\nimport { sortValues } from '../../../constants';\nimport type {\n\tNormalizedField,\n\tViewPickerTable as ViewPickerTableType,\n\tViewPickerTableProps,\n} from '../../../types';\nimport type { SetSelection } from '../../../types/private';\nimport ColumnHeaderMenu from '../table/column-header-menu';\nimport ColumnPrimary from '../table/column-primary';\nimport getDataByGroup from '../utils/get-data-by-group';\n\ninterface TableColumnFieldProps< Item > {\n\tfields: NormalizedField< Item >[];\n\tcolumn: string;\n\titem: Item;\n\talign?: 'start' | 'center' | 'end';\n}\n\ninterface TableRowProps< Item > {\n\titem: Item;\n\tfields: NormalizedField< Item >[];\n\tid: string;\n\tview: ViewPickerTableType;\n\ttitleField?: NormalizedField< Item >;\n\tmediaField?: NormalizedField< Item >;\n\tdescriptionField?: NormalizedField< Item >;\n\tselection: string[];\n\tgetItemId: ( item: Item ) => string;\n\tonChangeSelection: SetSelection;\n\tmultiselect: boolean;\n\tposinset?: number;\n}\n\nfunction TableColumnField< Item >( {\n\titem,\n\tfields,\n\tcolumn,\n\talign,\n}: TableColumnFieldProps< Item > ) {\n\tconst field = fields.find( ( f ) => f.id === column );\n\n\tif ( ! field ) {\n\t\treturn null;\n\t}\n\n\tconst className = clsx( 'dataviews-view-table__cell-content-wrapper', {\n\t\t'dataviews-view-table__cell-align-end': align === 'end',\n\t\t'dataviews-view-table__cell-align-center': align === 'center',\n\t} );\n\n\treturn (\n\t\t<div className={ className }>\n\t\t\t<field.render item={ item } field={ field } />\n\t\t</div>\n\t);\n}\n\nfunction TableRow< Item >( {\n\titem,\n\tfields,\n\tid,\n\tview,\n\ttitleField,\n\tmediaField,\n\tdescriptionField,\n\tselection,\n\tgetItemId,\n\tonChangeSelection,\n\tmultiselect,\n\tposinset,\n}: TableRowProps< Item > ) {\n\tconst { paginationInfo } = useContext( DataViewsContext );\n\tconst isSelected = selection.includes( id );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst {\n\t\tshowTitle = true,\n\t\tshowMedia = true,\n\t\tshowDescription = true,\n\t\tinfiniteScrollEnabled,\n\t} = view;\n\tconst handleMouseEnter = () => {\n\t\tsetIsHovered( true );\n\t};\n\tconst handleMouseLeave = () => {\n\t\tsetIsHovered( false );\n\t};\n\n\tconst columns = view.fields ?? [];\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\n\treturn (\n\t\t<Composite.Item\n\t\t\tkey={ id }\n\t\t\trender={ ( { children, ...props } ) => (\n\t\t\t\t<tr\n\t\t\t\t\tclassName={ clsx( 'dataviews-view-table__row', {\n\t\t\t\t\t\t'is-selected': isSelected,\n\t\t\t\t\t\t'is-hovered': isHovered,\n\t\t\t\t\t} ) }\n\t\t\t\t\tonMouseEnter={ handleMouseEnter }\n\t\t\t\t\tonMouseLeave={ handleMouseLeave }\n\t\t\t\t\tchildren={ children }\n\t\t\t\t\t{ ...props }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\taria-selected={ isSelected }\n\t\t\taria-setsize={ paginationInfo.totalItems || undefined }\n\t\t\taria-posinset={ posinset }\n\t\t\trole={ infiniteScrollEnabled ? 'article' : 'option' }\n\t\t\tonClick={ () => {\n\t\t\t\tif ( isSelected ) {\n\t\t\t\t\tonChangeSelection(\n\t\t\t\t\t\tselection.filter( ( itemId ) => id !== itemId )\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tconst newSelection = multiselect\n\t\t\t\t\t\t? [ ...selection, id ]\n\t\t\t\t\t\t: [ id ];\n\t\t\t\t\tonChangeSelection( newSelection );\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t<td\n\t\t\t\tclassName=\"dataviews-view-table__checkbox-column\"\n\t\t\t\trole=\"presentation\"\n\t\t\t>\n\t\t\t\t<div className=\"dataviews-view-table__cell-content-wrapper\">\n\t\t\t\t\t<DataViewsSelectionCheckbox\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\tdisabled={ false }\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\ttabIndex={ -1 }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</td>\n\n\t\t\t{ hasPrimaryColumn && (\n\t\t\t\t<td role=\"presentation\">\n\t\t\t\t\t<ColumnPrimary\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\ttitleField={ showTitle ? titleField : undefined }\n\t\t\t\t\t\tmediaField={ showMedia ? mediaField : undefined }\n\t\t\t\t\t\tdescriptionField={\n\t\t\t\t\t\t\tshowDescription ? descriptionField : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisItemClickable={ () => false }\n\t\t\t\t\t/>\n\t\t\t\t</td>\n\t\t\t) }\n\t\t\t{ columns.map( ( column: string ) => {\n\t\t\t\t// Explicit picks the supported styles.\n\t\t\t\tconst { width, maxWidth, minWidth, align } =\n\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\n\t\t\t\treturn (\n\t\t\t\t\t<td\n\t\t\t\t\t\tkey={ column }\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\tmaxWidth,\n\t\t\t\t\t\t\tminWidth,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<TableColumnField\n\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\tcolumn={ column }\n\t\t\t\t\t\t\talign={ align }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</td>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Composite.Item>\n\t);\n}\n\nfunction ViewPickerTable< Item >( {\n\tactions,\n\tdata,\n\tfields,\n\tgetItemId,\n\tisLoading = false,\n\tonChangeView,\n\tonChangeSelection,\n\tselection,\n\tsetOpenedFilter,\n\tview,\n\tclassName,\n\tempty,\n}: ViewPickerTableProps< Item > ) {\n\tconst headerMenuRefs = useRef<\n\t\tMap< string, { node: HTMLButtonElement; fallback: string } >\n\t>( new Map() );\n\tconst headerMenuToFocusRef = useRef< HTMLButtonElement >();\n\tconst [ nextHeaderMenuToFocus, setNextHeaderMenuToFocus ] =\n\t\tuseState< HTMLButtonElement >();\n\tconst isMultiselect = useIsMultiselectPicker( actions ) ?? false;\n\n\tuseEffect( () => {\n\t\tif ( headerMenuToFocusRef.current ) {\n\t\t\theaderMenuToFocusRef.current.focus();\n\t\t\theaderMenuToFocusRef.current = undefined;\n\t\t}\n\t} );\n\n\tconst tableNoticeId = useId();\n\n\tif ( nextHeaderMenuToFocus ) {\n\t\t// If we need to force focus, we short-circuit rendering here\n\t\t// to prevent any additional work while we handle that.\n\t\t// Clearing out the focus directive is necessary to make sure\n\t\t// future renders don't cause unexpected focus jumps.\n\t\theaderMenuToFocusRef.current = nextHeaderMenuToFocus;\n\t\tsetNextHeaderMenuToFocus( undefined );\n\t\treturn;\n\t}\n\n\tconst onHide = ( field: NormalizedField< Item > ) => {\n\t\tconst hidden = headerMenuRefs.current.get( field.id );\n\t\tconst fallback = hidden\n\t\t\t? headerMenuRefs.current.get( hidden.fallback )\n\t\t\t: undefined;\n\t\tsetNextHeaderMenuToFocus( fallback?.node );\n\t};\n\n\tconst hasData = !! data?.length;\n\n\tconst titleField = fields.find( ( field ) => field.id === view.titleField );\n\tconst mediaField = fields.find( ( field ) => field.id === view.mediaField );\n\tconst descriptionField = fields.find(\n\t\t( field ) => field.id === view.descriptionField\n\t);\n\n\tconst groupField = view.groupBy?.field\n\t\t? fields.find( ( f ) => f.id === view.groupBy?.field )\n\t\t: null;\n\tconst dataByGroup = groupField ? getDataByGroup( data, groupField ) : null;\n\tconst { showTitle = true, showMedia = true, showDescription = true } = view;\n\tconst hasPrimaryColumn =\n\t\t( titleField && showTitle ) ||\n\t\t( mediaField && showMedia ) ||\n\t\t( descriptionField && showDescription );\n\tconst columns = view.fields ?? [];\n\tconst headerMenuRef =\n\t\t( column: string, index: number ) => ( node: HTMLButtonElement ) => {\n\t\t\tif ( node ) {\n\t\t\t\theaderMenuRefs.current.set( column, {\n\t\t\t\t\tnode,\n\t\t\t\t\tfallback: columns[ index > 0 ? index - 1 : 1 ],\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\theaderMenuRefs.current.delete( column );\n\t\t\t}\n\t\t};\n\tconst isInfiniteScroll = view.infiniteScrollEnabled && ! dataByGroup;\n\n\treturn (\n\t\t<>\n\t\t\t<table\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'dataviews-view-table',\n\t\t\t\t\t'dataviews-view-picker-table',\n\t\t\t\t\tclassName,\n\t\t\t\t\t{\n\t\t\t\t\t\t[ `has-${ view.layout?.density }-density` ]:\n\t\t\t\t\t\t\tview.layout?.density &&\n\t\t\t\t\t\t\t[ 'compact', 'comfortable' ].includes(\n\t\t\t\t\t\t\t\tview.layout.density\n\t\t\t\t\t\t\t),\n\t\t\t\t\t}\n\t\t\t\t) }\n\t\t\t\taria-busy={ isLoading }\n\t\t\t\taria-describedby={ tableNoticeId }\n\t\t\t\trole={ isInfiniteScroll ? 'feed' : 'listbox' }\n\t\t\t>\n\t\t\t\t<thead role=\"presentation\">\n\t\t\t\t\t<tr\n\t\t\t\t\t\tclassName=\"dataviews-view-table__row\"\n\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<th className=\"dataviews-view-table__checkbox-column\">\n\t\t\t\t\t\t\t{ isMultiselect && (\n\t\t\t\t\t\t\t\t<BulkSelectionCheckbox\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\t\tactions={ actions }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</th>\n\t\t\t\t\t\t{ hasPrimaryColumn && (\n\t\t\t\t\t\t\t<th>\n\t\t\t\t\t\t\t\t{ titleField && (\n\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef(\n\t\t\t\t\t\t\t\t\t\t\ttitleField.id,\n\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tfieldId={ titleField.id }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t\tcanMove={ false }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ columns.map( ( column, index ) => {\n\t\t\t\t\t\t\t// Explicit picks the supported styles.\n\t\t\t\t\t\t\tconst { width, maxWidth, minWidth, align } =\n\t\t\t\t\t\t\t\tview.layout?.styles?.[ column ] ?? {};\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t\tkey={ column }\n\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t\t\t\tmaxWidth,\n\t\t\t\t\t\t\t\t\t\tminWidth,\n\t\t\t\t\t\t\t\t\t\ttextAlign: align,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\taria-sort={\n\t\t\t\t\t\t\t\t\t\tview.sort?.direction &&\n\t\t\t\t\t\t\t\t\t\tview.sort?.field === column\n\t\t\t\t\t\t\t\t\t\t\t? sortValues[ view.sort.direction ]\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tscope=\"col\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ColumnHeaderMenu\n\t\t\t\t\t\t\t\t\t\tref={ headerMenuRef( column, index ) }\n\t\t\t\t\t\t\t\t\t\tfieldId={ column }\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\t\t\t\t\t\tonHide={ onHide }\n\t\t\t\t\t\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\t\t\t\t\t\tcanMove={\n\t\t\t\t\t\t\t\t\t\t\tview.layout?.enableMoving ?? true\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t{ /* Render grouped data if groupBy is specified */ }\n\t\t\t\t{ hasData && groupField && dataByGroup ? (\n\t\t\t\t\tArray.from( dataByGroup.entries() ).map(\n\t\t\t\t\t\t( [ groupName, groupItems ] ) => (\n\t\t\t\t\t\t\t<Composite\n\t\t\t\t\t\t\t\tkey={ `group-${ groupName }` }\n\t\t\t\t\t\t\t\tvirtualFocus\n\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\trender={ <tbody role=\"group\" /> }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<tr\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__group-header-row\"\n\t\t\t\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\t\tcolSpan={\n\t\t\t\t\t\t\t\t\t\t\tcolumns.length +\n\t\t\t\t\t\t\t\t\t\t\t( hasPrimaryColumn ? 1 : 0 ) +\n\t\t\t\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tclassName=\"dataviews-view-table__group-header-cell\"\n\t\t\t\t\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ view.groupBy?.showLabel === false\n\t\t\t\t\t\t\t\t\t\t\t? groupName\n\t\t\t\t\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t\t\t\t\t// translators: 1: The label of the field e.g. \"Date\". 2: The value of the field, e.g.: \"May 2022\".\n\t\t\t\t\t\t\t\t\t\t\t\t\t__( '%1$s: %2$s' ),\n\t\t\t\t\t\t\t\t\t\t\t\t\tgroupField.label,\n\t\t\t\t\t\t\t\t\t\t\t\t\tgroupName\n\t\t\t\t\t\t\t\t\t\t\t  ) }\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t{ groupItems.map( ( item, index ) => (\n\t\t\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t\tid={\n\t\t\t\t\t\t\t\t\t\t\tgetItemId( item ) ||\n\t\t\t\t\t\t\t\t\t\t\tindex.toString()\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\t\tmultiselect={ isMultiselect }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</Composite>\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t) : (\n\t\t\t\t\t<Composite\n\t\t\t\t\t\trender={ <tbody role=\"presentation\" /> }\n\t\t\t\t\t\tvirtualFocus\n\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ hasData &&\n\t\t\t\t\t\t\tdata.map( ( item, index ) => (\n\t\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\t\tkey={ getItemId( item ) }\n\t\t\t\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\tid={ getItemId( item ) || index.toString() }\n\t\t\t\t\t\t\t\t\tview={ view }\n\t\t\t\t\t\t\t\t\ttitleField={ titleField }\n\t\t\t\t\t\t\t\t\tmediaField={ mediaField }\n\t\t\t\t\t\t\t\t\tdescriptionField={ descriptionField }\n\t\t\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\t\t\tgetItemId={ getItemId }\n\t\t\t\t\t\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\t\t\t\t\t\tmultiselect={ isMultiselect }\n\t\t\t\t\t\t\t\t\tposinset={ index + 1 }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Composite>\n\t\t\t\t) }\n\t\t\t</table>\n\t\t\t<div\n\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t'dataviews-loading': isLoading,\n\t\t\t\t\t'dataviews-no-results': ! hasData && ! isLoading,\n\t\t\t\t} ) }\n\t\t\t\tid={ tableNoticeId }\n\t\t\t>\n\t\t\t\t{ ! hasData &&\n\t\t\t\t\t( isLoading ? (\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t</p>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tempty\n\t\t\t\t\t) ) }\n\t\t\t\t{ hasData && isLoading && (\n\t\t\t\t\t<p className=\"dataviews-loading-more\">\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default ViewPickerTable;\n", "/**\n * WordPress dependencies\n */\nimport { RangeControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../../dataviews-context';\nimport type { ViewGrid } from '../../../types';\n\nconst imageSizes = [\n\t{\n\t\tvalue: 120,\n\t\tbreakpoint: 1,\n\t},\n\t{\n\t\tvalue: 170,\n\t\tbreakpoint: 1,\n\t},\n\t{\n\t\tvalue: 230,\n\t\tbreakpoint: 1,\n\t},\n\t{\n\t\tvalue: 290,\n\t\tbreakpoint: 1112, // at minimum image width, 4 images display at this container size\n\t},\n\t{\n\t\tvalue: 350,\n\t\tbreakpoint: 1636, // at minimum image width, 6 images display at this container size\n\t},\n\t{\n\t\tvalue: 430,\n\t\tbreakpoint: 588, // at minimum image width, 2 images display at this container size\n\t},\n];\n\nexport default function PreviewSizePicker() {\n\tconst context = useContext( DataViewsContext );\n\tconst view = context.view as ViewGrid;\n\n\tconst breakValues = imageSizes.filter( ( size ) => {\n\t\treturn context.containerWidth >= size.breakpoint;\n\t} );\n\n\tconst layoutPreviewSize = view.layout?.previewSize ?? 230; // Default to the third smallest size if no preview size is set.\n\t// If the container has resized and the set preview size is no longer available,\n\t// we reset it to the next smallest size, or the smallest available size.\n\tconst previewSizeToUse =\n\t\tbreakValues\n\t\t\t.map( ( size, index ) => ( { ...size, index } ) )\n\t\t\t.filter( ( size ) => size.value <= layoutPreviewSize )\n\t\t\t.sort( ( a, b ) => b.value - a.value )[ 0 ]?.index ?? 0;\n\n\tconst marks = breakValues.map( ( size, index ) => {\n\t\treturn {\n\t\t\tvalue: index,\n\t\t};\n\t} );\n\n\treturn (\n\t\t<RangeControl\n\t\t\t__next40pxDefaultSize\n\t\t\tshowTooltip={ false }\n\t\t\tlabel={ __( 'Preview size' ) }\n\t\t\tvalue={ previewSizeToUse }\n\t\t\tmin={ 0 }\n\t\t\tmax={ breakValues.length - 1 }\n\t\t\twithInputField={ false }\n\t\t\tonChange={ ( value = 0 ) => {\n\t\t\t\tcontext.onChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...view.layout,\n\t\t\t\t\t\tpreviewSize: breakValues[ value ].value,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tstep={ 1 }\n\t\t\tmarks={ marks }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../../dataviews-context';\nimport type { ViewTable, ViewList, Density } from '../../../types';\n\nexport default function DensityPicker() {\n\tconst context = useContext( DataViewsContext );\n\tconst view = context.view as ViewTable | ViewList;\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\tsize=\"__unstable-large\"\n\t\t\tlabel={ __( 'Density' ) }\n\t\t\tvalue={ view.layout?.density || 'balanced' }\n\t\t\tonChange={ ( value ) => {\n\t\t\t\tcontext.onChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...view.layout,\n\t\t\t\t\t\tdensity: value as Density,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tisBlock\n\t\t>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tkey=\"comfortable\"\n\t\t\t\tvalue=\"comfortable\"\n\t\t\t\tlabel={ _x(\n\t\t\t\t\t'Comfortable',\n\t\t\t\t\t'Density option for DataView layout'\n\t\t\t\t) }\n\t\t\t/>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tkey=\"balanced\"\n\t\t\t\tvalue=\"balanced\"\n\t\t\t\tlabel={ _x( 'Balanced', 'Density option for DataView layout' ) }\n\t\t\t/>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tkey=\"compact\"\n\t\t\t\tvalue=\"compact\"\n\t\t\t\tlabel={ _x( 'Compact', 'Density option for DataView layout' ) }\n\t\t\t/>\n\t\t</ToggleGroupControl>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { memo, useContext, useRef } from '@wordpress/element';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport Filter from './filter';\nimport { default as AddFilter } from './add-filter';\nimport ResetFilters from './reset-filters';\nimport useFilters from './use-filters';\nimport DataViewsContext from '../dataviews-context';\n\nfunction Filters( { className }: { className?: string } ) {\n\tconst { fields, view, onChangeView, openedFilter, setOpenedFilter } =\n\t\tuseContext( DataViewsContext );\n\tconst addFilterRef = useRef< HTMLButtonElement >( null );\n\tconst filters = useFilters( fields, view );\n\tconst addFilter = (\n\t\t<AddFilter\n\t\t\tkey=\"add-filter\"\n\t\t\tfilters={ filters }\n\t\t\tview={ view }\n\t\t\tonChangeView={ onChangeView }\n\t\t\tref={ addFilterRef }\n\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t/>\n\t);\n\tconst visibleFilters = filters.filter( ( filter ) => filter.isVisible );\n\tif ( visibleFilters.length === 0 ) {\n\t\treturn null;\n\t}\n\tconst filterComponents = [\n\t\t...visibleFilters.map( ( filter ) => {\n\t\t\treturn (\n\t\t\t\t<Filter\n\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\tfilter={ filter }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tfields={ fields }\n\t\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\t\taddFilterRef={ addFilterRef }\n\t\t\t\t\topenedFilter={ openedFilter }\n\t\t\t\t/>\n\t\t\t);\n\t\t} ),\n\t\taddFilter,\n\t];\n\n\tfilterComponents.push(\n\t\t<ResetFilters\n\t\t\tkey=\"reset-filters\"\n\t\t\tfilters={ filters }\n\t\t\tview={ view }\n\t\t\tonChangeView={ onChangeView }\n\t\t/>\n\t);\n\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"row\"\n\t\t\tjustify=\"flex-start\"\n\t\t\tgap=\"xs\"\n\t\t\tstyle={ { width: 'fit-content' } }\n\t\t\twrap=\"wrap\"\n\t\t\tclassName={ className }\n\t\t>\n\t\t\t{ filterComponents }\n\t\t</Stack>\n\t);\n}\n\nexport default memo( Filters );\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { RefObject } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tDropdown,\n\tFlexItem,\n\tSelectControl,\n\tTooltip,\n\tIcon,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useMemo, useRef } from '@wordpress/element';\nimport { closeSmall } from '@wordpress/icons';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport SearchWidget from './search-widget';\nimport InputWidget from './input-widget';\nimport { getOperatorByName } from '../../utils/operators';\nimport type {\n\tFilter,\n\tNormalizedField,\n\tNormalizedFilter,\n\tOperator,\n\tOption,\n\tView,\n} from '../../types';\nimport useElements from '../../hooks/use-elements';\n\nconst ENTER = 'Enter';\nconst SPACE = ' ';\n\ninterface FilterTextProps {\n\tactiveElements: Option[];\n\tfilterInView?: Filter;\n\tfilter: NormalizedFilter;\n}\n\ninterface OperatorSelectorProps {\n\tfilter: NormalizedFilter;\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n}\n\ninterface FilterProps extends OperatorSelectorProps {\n\taddFilterRef: RefObject< HTMLButtonElement >;\n\topenedFilter: string | null;\n\tfields: NormalizedField< any >[];\n}\n\nconst FilterText = ( {\n\tactiveElements,\n\tfilterInView,\n\tfilter,\n}: FilterTextProps ) => {\n\tif ( activeElements === undefined || activeElements.length === 0 ) {\n\t\treturn filter.name;\n\t}\n\n\tconst operator = getOperatorByName( filterInView?.operator );\n\tif ( operator !== undefined ) {\n\t\treturn operator.filterText( filter, activeElements );\n\t}\n\n\treturn sprintf(\n\t\t/* translators: 1: Filter name e.g.: \"Unknown status for Author\". */\n\t\t__( 'Unknown status for %1$s' ),\n\t\tfilter.name\n\t);\n};\n\nfunction OperatorSelector( {\n\tfilter,\n\tview,\n\tonChangeView,\n}: OperatorSelectorProps ) {\n\tconst operatorOptions = filter.operators?.map( ( operator ) => ( {\n\t\tvalue: operator,\n\t\tlabel: getOperatorByName( operator )?.label || operator,\n\t} ) );\n\tconst currentFilter = view.filters?.find(\n\t\t( _filter ) => _filter.field === filter.field\n\t);\n\tconst value = currentFilter?.operator || filter.operators[ 0 ];\n\treturn (\n\t\toperatorOptions.length > 1 && (\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tgap=\"xs\"\n\t\t\t\tjustify=\"flex-start\"\n\t\t\t\tclassName=\"dataviews-filters__summary-operators-container\"\n\t\t\t\talign=\"center\"\n\t\t\t>\n\t\t\t\t<FlexItem className=\"dataviews-filters__summary-operators-filter-name\">\n\t\t\t\t\t{ filter.name }\n\t\t\t\t</FlexItem>\n\n\t\t\t\t<SelectControl\n\t\t\t\t\tclassName=\"dataviews-filters__summary-operators-filter-select\"\n\t\t\t\t\tlabel={ __( 'Conditions' ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\toptions={ operatorOptions }\n\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\tconst newOperator = newValue as Operator;\n\t\t\t\t\t\tconst currentOperator = currentFilter?.operator;\n\t\t\t\t\t\tconst newFilters = currentFilter\n\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t...( view.filters ?? [] ).map(\n\t\t\t\t\t\t\t\t\t\t( _filter ) => {\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t_filter.field === filter.field\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst currentOpSelectionModel =\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetOperatorByName(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentOperator\n\t\t\t\t\t\t\t\t\t\t\t\t\t)?.selection;\n\t\t\t\t\t\t\t\t\t\t\t\tconst newOpSelectionModel =\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetOperatorByName(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewOperator\n\t\t\t\t\t\t\t\t\t\t\t\t\t)?.selection;\n\n\t\t\t\t\t\t\t\t\t\t\t\tconst shouldResetValue =\n\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentOpSelectionModel !==\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewOpSelectionModel ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentOpSelectionModel,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewOpSelectionModel,\n\t\t\t\t\t\t\t\t\t\t\t\t\t].includes( 'custom' );\n\n\t\t\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: shouldResetValue\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: _filter.value,\n\t\t\t\t\t\t\t\t\t\t\t\t\toperator: newOperator,\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\treturn _filter;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t  ]\n\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t...( view.filters ?? [] ),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\toperator: newOperator,\n\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t  ];\n\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\tfilters: newFilters,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tvariant=\"minimal\"\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t/>\n\t\t\t</Stack>\n\t\t)\n\t);\n}\n\nexport default function Filter( {\n\taddFilterRef,\n\topenedFilter,\n\tfields,\n\t...commonProps\n}: FilterProps ) {\n\tconst toggleRef = useRef< HTMLDivElement >( null );\n\tconst { filter, view, onChangeView } = commonProps;\n\tconst filterInView = view.filters?.find(\n\t\t( f ) => f.field === filter.field\n\t);\n\n\tlet activeElements: Option[] = [];\n\tconst field = useMemo( () => {\n\t\tconst currentField = fields.find( ( f ) => f.id === filter.field );\n\t\tif ( currentField ) {\n\t\t\treturn {\n\t\t\t\t...currentField,\n\t\t\t\t// Configure getValue as if Item was a plain object.\n\t\t\t\t// See related input-widget.tsx\n\t\t\t\tgetValue: ( { item }: { item: any } ) =>\n\t\t\t\t\titem[ currentField.id ],\n\t\t\t};\n\t\t}\n\n\t\treturn currentField;\n\t}, [ fields, filter.field ] );\n\n\tconst { elements } = useElements( {\n\t\telements: filter.elements,\n\t\tgetElements: filter.getElements,\n\t} );\n\n\tif ( elements.length > 0 ) {\n\t\t// When there are elements, we favor those\n\t\tactiveElements = elements.filter( ( element ) => {\n\t\t\tif ( filter.singleSelection ) {\n\t\t\t\treturn element.value === filterInView?.value;\n\t\t\t}\n\t\t\treturn filterInView?.value?.includes( element.value );\n\t\t} );\n\t} else if ( Array.isArray( filterInView?.value ) ) {\n\t\t// or, filterInView.value can also be array\n\t\t// for the between operator, as in [ 1, 2 ]\n\t\tconst label = filterInView.value.map( ( v ) => {\n\t\t\tconst formattedValue = field?.getValueFormatted( {\n\t\t\t\titem: { [ field.id ]: v },\n\t\t\t\tfield,\n\t\t\t} );\n\t\t\treturn formattedValue || String( v );\n\t\t} );\n\n\t\tactiveElements = [\n\t\t\t{\n\t\t\t\tvalue: filterInView.value,\n\t\t\t\t// @ts-ignore\n\t\t\t\tlabel,\n\t\t\t},\n\t\t];\n\t} else if ( typeof filterInView?.value === 'object' ) {\n\t\t// or, it can also be object for the inThePast/over operators,\n\t\t// as in { value: '1', units: 'days' }\n\t\tactiveElements = [\n\t\t\t{ value: filterInView.value, label: filterInView.value },\n\t\t];\n\t} else if ( filterInView?.value !== undefined ) {\n\t\t// otherwise, filterInView.value is a single value\n\t\tconst label =\n\t\t\tfield !== undefined\n\t\t\t\t? field.getValueFormatted( {\n\t\t\t\t\t\titem: { [ field.id ]: filterInView.value },\n\t\t\t\t\t\tfield,\n\t\t\t\t  } )\n\t\t\t\t: String( filterInView.value );\n\n\t\tactiveElements = [\n\t\t\t{\n\t\t\t\tvalue: filterInView.value,\n\t\t\t\tlabel,\n\t\t\t},\n\t\t];\n\t}\n\n\tconst isPrimary = filter.isPrimary;\n\tconst isLocked = filterInView?.isLocked;\n\tconst hasValues = ! isLocked && filterInView?.value !== undefined;\n\tconst canResetOrRemove = ! isLocked && ( ! isPrimary || hasValues );\n\treturn (\n\t\t<Dropdown\n\t\t\tdefaultOpen={ openedFilter === filter.field }\n\t\t\tcontentClassName=\"dataviews-filters__summary-popover\"\n\t\t\tpopoverProps={ { placement: 'bottom-start', role: 'dialog' } }\n\t\t\tonClose={ () => {\n\t\t\t\ttoggleRef.current?.focus();\n\t\t\t} }\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<div className=\"dataviews-filters__summary-chip-container\">\n\t\t\t\t\t<Tooltip\n\t\t\t\t\t\ttext={ sprintf(\n\t\t\t\t\t\t\t/* translators: 1: Filter name. */\n\t\t\t\t\t\t\t__( 'Filter by: %1$s' ),\n\t\t\t\t\t\t\tfilter.name.toLowerCase()\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t'dataviews-filters__summary-chip',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'has-reset': canResetOrRemove,\n\t\t\t\t\t\t\t\t\t'has-values': hasValues,\n\t\t\t\t\t\t\t\t\t'is-not-clickable': isLocked,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\ttabIndex={ isLocked ? -1 : 0 }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tif ( ! isLocked ) {\n\t\t\t\t\t\t\t\t\tonToggle();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t! isLocked &&\n\t\t\t\t\t\t\t\t\t[ ENTER, SPACE ].includes( event.key )\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tonToggle();\n\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\taria-disabled={ isLocked }\n\t\t\t\t\t\t\taria-pressed={ isOpen }\n\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\tref={ toggleRef }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FilterText\n\t\t\t\t\t\t\t\tactiveElements={ activeElements }\n\t\t\t\t\t\t\t\tfilterInView={ filterInView }\n\t\t\t\t\t\t\t\tfilter={ filter }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t\t{ canResetOrRemove && (\n\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\ttext={ isPrimary ? __( 'Reset' ) : __( 'Remove' ) }\n\t\t\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t\t'dataviews-filters__summary-chip-remove',\n\t\t\t\t\t\t\t\t\t{ 'has-values': hasValues }\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\t\tfilters: view.filters?.filter(\n\t\t\t\t\t\t\t\t\t\t\t( _filter ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t_filter.field !== filter.field\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t// If the filter is not primary and can be removed, it will be added\n\t\t\t\t\t\t\t\t\t// back to the available filters from `Add filter` component.\n\t\t\t\t\t\t\t\t\tif ( ! isPrimary ) {\n\t\t\t\t\t\t\t\t\t\taddFilterRef.current?.focus();\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// If is primary, focus the toggle button.\n\t\t\t\t\t\t\t\t\t\ttoggleRef.current?.focus();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon icon={ closeSmall } />\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\trenderContent={ () => {\n\t\t\t\treturn (\n\t\t\t\t\t<Stack direction=\"column\" justify=\"flex-start\">\n\t\t\t\t\t\t<OperatorSelector { ...commonProps } />\n\t\t\t\t\t\t{ commonProps.filter.hasElements ? (\n\t\t\t\t\t\t\t<SearchWidget\n\t\t\t\t\t\t\t\t{ ...commonProps }\n\t\t\t\t\t\t\t\tfilter={ {\n\t\t\t\t\t\t\t\t\t...commonProps.filter,\n\t\t\t\t\t\t\t\t\telements,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<InputWidget { ...commonProps } fields={ fields } />\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Stack>\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n}\n", "\"use client\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n        target[prop] = source[prop];\n    }\n  return target;\n};\n\nexport {\n  __spreadValues,\n  __spreadProps,\n  __objRest\n};\n", "\"use client\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n        target[prop] = source[prop];\n    }\n  return target;\n};\n\nexport {\n  __spreadValues,\n  __spreadProps,\n  __objRest\n};\n", "\"use client\";\nimport {\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/utils/misc.ts\nfunction noop(..._) {\n}\nfunction shallowEqual(a, b) {\n  if (a === b) return true;\n  if (!a) return false;\n  if (!b) return false;\n  if (typeof a !== \"object\") return false;\n  if (typeof b !== \"object\") return false;\n  const aKeys = Object.keys(a);\n  const bKeys = Object.keys(b);\n  const { length } = aKeys;\n  if (bKeys.length !== length) return false;\n  for (const key of aKeys) {\n    if (a[key] !== b[key]) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction applyState(argument, currentValue) {\n  if (isUpdater(argument)) {\n    const value = isLazyValue(currentValue) ? currentValue() : currentValue;\n    return argument(value);\n  }\n  return argument;\n}\nfunction isUpdater(argument) {\n  return typeof argument === \"function\";\n}\nfunction isLazyValue(value) {\n  return typeof value === \"function\";\n}\nfunction isObject(arg) {\n  return typeof arg === \"object\" && arg != null;\n}\nfunction isEmpty(arg) {\n  if (Array.isArray(arg)) return !arg.length;\n  if (isObject(arg)) return !Object.keys(arg).length;\n  if (arg == null) return true;\n  if (arg === \"\") return true;\n  return false;\n}\nfunction isInteger(arg) {\n  if (typeof arg === \"number\") {\n    return Math.floor(arg) === arg;\n  }\n  return String(Math.floor(Number(arg))) === arg;\n}\nfunction hasOwnProperty(object, prop) {\n  if (typeof Object.hasOwn === \"function\") {\n    return Object.hasOwn(object, prop);\n  }\n  return Object.prototype.hasOwnProperty.call(object, prop);\n}\nfunction chain(...fns) {\n  return (...args) => {\n    for (const fn of fns) {\n      if (typeof fn === \"function\") {\n        fn(...args);\n      }\n    }\n  };\n}\nfunction cx(...args) {\n  return args.filter(Boolean).join(\" \") || void 0;\n}\nfunction normalizeString(str) {\n  return str.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\");\n}\nfunction omit(object, keys) {\n  const result = __spreadValues({}, object);\n  for (const key of keys) {\n    if (hasOwnProperty(result, key)) {\n      delete result[key];\n    }\n  }\n  return result;\n}\nfunction pick(object, paths) {\n  const result = {};\n  for (const key of paths) {\n    if (hasOwnProperty(object, key)) {\n      result[key] = object[key];\n    }\n  }\n  return result;\n}\nfunction identity(value) {\n  return value;\n}\nfunction beforePaint(cb = noop) {\n  const raf = requestAnimationFrame(cb);\n  return () => cancelAnimationFrame(raf);\n}\nfunction afterPaint(cb = noop) {\n  let raf = requestAnimationFrame(() => {\n    raf = requestAnimationFrame(cb);\n  });\n  return () => cancelAnimationFrame(raf);\n}\nfunction invariant(condition, message) {\n  if (condition) return;\n  if (typeof message !== \"string\") throw new Error(\"Invariant failed\");\n  throw new Error(message);\n}\nfunction getKeys(obj) {\n  return Object.keys(obj);\n}\nfunction isFalsyBooleanCallback(booleanOrCallback, ...args) {\n  const result = typeof booleanOrCallback === \"function\" ? booleanOrCallback(...args) : booleanOrCallback;\n  if (result == null) return false;\n  return !result;\n}\nfunction disabledFromProps(props) {\n  return props.disabled || props[\"aria-disabled\"] === true || props[\"aria-disabled\"] === \"true\";\n}\nfunction removeUndefinedValues(obj) {\n  const result = {};\n  for (const key in obj) {\n    if (obj[key] !== void 0) {\n      result[key] = obj[key];\n    }\n  }\n  return result;\n}\nfunction defaultValue(...values) {\n  for (const value of values) {\n    if (value !== void 0) return value;\n  }\n  return void 0;\n}\n\nexport {\n  noop,\n  shallowEqual,\n  applyState,\n  isObject,\n  isEmpty,\n  isInteger,\n  hasOwnProperty,\n  chain,\n  cx,\n  normalizeString,\n  omit,\n  pick,\n  identity,\n  beforePaint,\n  afterPaint,\n  invariant,\n  getKeys,\n  isFalsyBooleanCallback,\n  disabledFromProps,\n  removeUndefinedValues,\n  defaultValue\n};\n", "\"use client\";\nimport {\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/utils/misc.ts\nimport { hasOwnProperty } from \"@ariakit/core/utils/misc\";\nimport { isValidElement } from \"react\";\nfunction setRef(ref, value) {\n  if (typeof ref === \"function\") {\n    ref(value);\n  } else if (ref) {\n    ref.current = value;\n  }\n}\nfunction isValidElementWithRef(element) {\n  if (!element) return false;\n  if (!isValidElement(element)) return false;\n  if (\"ref\" in element.props) return true;\n  if (\"ref\" in element) return true;\n  return false;\n}\nfunction getRefProperty(element) {\n  if (!isValidElementWithRef(element)) return null;\n  const props = __spreadValues({}, element.props);\n  return props.ref || element.ref;\n}\nfunction mergeProps(base, overrides) {\n  const props = __spreadValues({}, base);\n  for (const key in overrides) {\n    if (!hasOwnProperty(overrides, key)) continue;\n    if (key === \"className\") {\n      const prop = \"className\";\n      props[prop] = base[prop] ? `${base[prop]} ${overrides[prop]}` : overrides[prop];\n      continue;\n    }\n    if (key === \"style\") {\n      const prop = \"style\";\n      props[prop] = base[prop] ? __spreadValues(__spreadValues({}, base[prop]), overrides[prop]) : overrides[prop];\n      continue;\n    }\n    const overrideValue = overrides[key];\n    if (typeof overrideValue === \"function\" && key.startsWith(\"on\")) {\n      const baseValue = base[key];\n      if (typeof baseValue === \"function\") {\n        props[key] = (...args) => {\n          overrideValue(...args);\n          baseValue(...args);\n        };\n        continue;\n      }\n    }\n    props[key] = overrideValue;\n  }\n  return props;\n}\n\nexport {\n  setRef,\n  isValidElementWithRef,\n  getRefProperty,\n  mergeProps\n};\n", "\"use client\";\n\n// src/utils/dom.ts\nvar canUseDOM = checkIsBrowser();\nfunction checkIsBrowser() {\n  var _a;\n  return typeof window !== \"undefined\" && !!((_a = window.document) == null ? void 0 : _a.createElement);\n}\nfunction getDocument(node) {\n  if (!node) return document;\n  if (\"self\" in node) return node.document;\n  return node.ownerDocument || document;\n}\nfunction getWindow(node) {\n  if (!node) return self;\n  if (\"self\" in node) return node.self;\n  return getDocument(node).defaultView || window;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n  const { activeElement } = getDocument(node);\n  if (!(activeElement == null ? void 0 : activeElement.nodeName)) {\n    return null;\n  }\n  if (isFrame(activeElement) && activeElement.contentDocument) {\n    return getActiveElement(\n      activeElement.contentDocument.body,\n      activeDescendant\n    );\n  }\n  if (activeDescendant) {\n    const id = activeElement.getAttribute(\"aria-activedescendant\");\n    if (id) {\n      const element = getDocument(activeElement).getElementById(id);\n      if (element) {\n        return element;\n      }\n    }\n  }\n  return activeElement;\n}\nfunction contains(parent, child) {\n  return parent === child || parent.contains(child);\n}\nfunction isFrame(element) {\n  return element.tagName === \"IFRAME\";\n}\nfunction isButton(element) {\n  const tagName = element.tagName.toLowerCase();\n  if (tagName === \"button\") return true;\n  if (tagName === \"input\" && element.type) {\n    return buttonInputTypes.indexOf(element.type) !== -1;\n  }\n  return false;\n}\nvar buttonInputTypes = [\n  \"button\",\n  \"color\",\n  \"file\",\n  \"image\",\n  \"reset\",\n  \"submit\"\n];\nfunction isVisible(element) {\n  if (typeof element.checkVisibility === \"function\") {\n    return element.checkVisibility();\n  }\n  const htmlElement = element;\n  return htmlElement.offsetWidth > 0 || htmlElement.offsetHeight > 0 || element.getClientRects().length > 0;\n}\nfunction isTextField(element) {\n  try {\n    const isTextInput = element instanceof HTMLInputElement && element.selectionStart !== null;\n    const isTextArea = element.tagName === \"TEXTAREA\";\n    return isTextInput || isTextArea || false;\n  } catch (error) {\n    return false;\n  }\n}\nfunction isTextbox(element) {\n  return element.isContentEditable || isTextField(element);\n}\nfunction getTextboxValue(element) {\n  if (isTextField(element)) {\n    return element.value;\n  }\n  if (element.isContentEditable) {\n    const range = getDocument(element).createRange();\n    range.selectNodeContents(element);\n    return range.toString();\n  }\n  return \"\";\n}\nfunction getTextboxSelection(element) {\n  let start = 0;\n  let end = 0;\n  if (isTextField(element)) {\n    start = element.selectionStart || 0;\n    end = element.selectionEnd || 0;\n  } else if (element.isContentEditable) {\n    const selection = getDocument(element).getSelection();\n    if ((selection == null ? void 0 : selection.rangeCount) && selection.anchorNode && contains(element, selection.anchorNode) && selection.focusNode && contains(element, selection.focusNode)) {\n      const range = selection.getRangeAt(0);\n      const nextRange = range.cloneRange();\n      nextRange.selectNodeContents(element);\n      nextRange.setEnd(range.startContainer, range.startOffset);\n      start = nextRange.toString().length;\n      nextRange.setEnd(range.endContainer, range.endOffset);\n      end = nextRange.toString().length;\n    }\n  }\n  return { start, end };\n}\nfunction getPopupRole(element, fallback) {\n  const allowedPopupRoles = [\"dialog\", \"menu\", \"listbox\", \"tree\", \"grid\"];\n  const role = element == null ? void 0 : element.getAttribute(\"role\");\n  if (role && allowedPopupRoles.indexOf(role) !== -1) {\n    return role;\n  }\n  return fallback;\n}\nfunction getPopupItemRole(element, fallback) {\n  var _a;\n  const itemRoleByPopupRole = {\n    menu: \"menuitem\",\n    listbox: \"option\",\n    tree: \"treeitem\"\n  };\n  const popupRole = getPopupRole(element);\n  if (!popupRole) return fallback;\n  const key = popupRole;\n  return (_a = itemRoleByPopupRole[key]) != null ? _a : fallback;\n}\nfunction scrollIntoViewIfNeeded(element, arg) {\n  if (isPartiallyHidden(element) && \"scrollIntoView\" in element) {\n    element.scrollIntoView(arg);\n  }\n}\nfunction getScrollingElement(element) {\n  if (!element) return null;\n  const isScrollableOverflow = (overflow) => {\n    if (overflow === \"auto\") return true;\n    if (overflow === \"scroll\") return true;\n    return false;\n  };\n  if (element.clientHeight && element.scrollHeight > element.clientHeight) {\n    const { overflowY } = getComputedStyle(element);\n    if (isScrollableOverflow(overflowY)) return element;\n  } else if (element.clientWidth && element.scrollWidth > element.clientWidth) {\n    const { overflowX } = getComputedStyle(element);\n    if (isScrollableOverflow(overflowX)) return element;\n  }\n  return getScrollingElement(element.parentElement) || document.scrollingElement || document.body;\n}\nfunction isPartiallyHidden(element) {\n  const elementRect = element.getBoundingClientRect();\n  const scroller = getScrollingElement(element);\n  if (!scroller) return false;\n  const scrollerRect = scroller.getBoundingClientRect();\n  const isHTML = scroller.tagName === \"HTML\";\n  const scrollerTop = isHTML ? scrollerRect.top + scroller.scrollTop : scrollerRect.top;\n  const scrollerBottom = isHTML ? scroller.clientHeight : scrollerRect.bottom;\n  const scrollerLeft = isHTML ? scrollerRect.left + scroller.scrollLeft : scrollerRect.left;\n  const scrollerRight = isHTML ? scroller.clientWidth : scrollerRect.right;\n  const top = elementRect.top < scrollerTop;\n  const left = elementRect.left < scrollerLeft;\n  const bottom = elementRect.bottom > scrollerBottom;\n  const right = elementRect.right > scrollerRight;\n  return top || left || bottom || right;\n}\nfunction setSelectionRange(element, ...args) {\n  if (/text|search|password|tel|url/i.test(element.type)) {\n    element.setSelectionRange(...args);\n  }\n}\nfunction sortBasedOnDOMPosition(items, getElement) {\n  const pairs = items.map((item, index) => [index, item]);\n  let isOrderDifferent = false;\n  pairs.sort(([indexA, a], [indexB, b]) => {\n    const elementA = getElement(a);\n    const elementB = getElement(b);\n    if (elementA === elementB) return 0;\n    if (!elementA || !elementB) return 0;\n    if (isElementPreceding(elementA, elementB)) {\n      if (indexA > indexB) {\n        isOrderDifferent = true;\n      }\n      return -1;\n    }\n    if (indexA < indexB) {\n      isOrderDifferent = true;\n    }\n    return 1;\n  });\n  if (isOrderDifferent) {\n    return pairs.map(([_, item]) => item);\n  }\n  return items;\n}\nfunction isElementPreceding(a, b) {\n  return Boolean(\n    b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING\n  );\n}\n\nexport {\n  canUseDOM,\n  getDocument,\n  getWindow,\n  getActiveElement,\n  contains,\n  isFrame,\n  isButton,\n  isVisible,\n  isTextField,\n  isTextbox,\n  getTextboxValue,\n  getTextboxSelection,\n  getPopupRole,\n  getPopupItemRole,\n  scrollIntoViewIfNeeded,\n  getScrollingElement,\n  isPartiallyHidden,\n  setSelectionRange,\n  sortBasedOnDOMPosition\n};\n", "\"use client\";\nimport {\n  canUseDOM\n} from \"./DTR5TSDJ.js\";\n\n// src/utils/platform.ts\nfunction isTouchDevice() {\n  return canUseDOM && !!navigator.maxTouchPoints;\n}\nfunction isApple() {\n  if (!canUseDOM) return false;\n  return /mac|iphone|ipad|ipod/i.test(navigator.platform);\n}\nfunction isSafari() {\n  return canUseDOM && isApple() && /apple/i.test(navigator.vendor);\n}\nfunction isFirefox() {\n  return canUseDOM && /firefox\\//i.test(navigator.userAgent);\n}\nfunction isMac() {\n  return canUseDOM && navigator.platform.startsWith(\"Mac\") && !isTouchDevice();\n}\n\nexport {\n  isTouchDevice,\n  isApple,\n  isSafari,\n  isFirefox,\n  isMac\n};\n", "\"use client\";\nimport {\n  isApple\n} from \"../__chunks/QAGXQEUG.js\";\nimport {\n  contains\n} from \"../__chunks/DTR5TSDJ.js\";\nimport {\n  __spreadProps,\n  __spreadValues\n} from \"../__chunks/3YLGPPWQ.js\";\n\n// src/utils/events.ts\nfunction isPortalEvent(event) {\n  return Boolean(\n    event.currentTarget && !contains(event.currentTarget, event.target)\n  );\n}\nfunction isSelfTarget(event) {\n  return event.target === event.currentTarget;\n}\nfunction isOpeningInNewTab(event) {\n  const element = event.currentTarget;\n  if (!element) return false;\n  const isAppleDevice = isApple();\n  if (isAppleDevice && !event.metaKey) return false;\n  if (!isAppleDevice && !event.ctrlKey) return false;\n  const tagName = element.tagName.toLowerCase();\n  if (tagName === \"a\") return true;\n  if (tagName === \"button\" && element.type === \"submit\") return true;\n  if (tagName === \"input\" && element.type === \"submit\") return true;\n  return false;\n}\nfunction isDownloading(event) {\n  const element = event.currentTarget;\n  if (!element) return false;\n  const tagName = element.tagName.toLowerCase();\n  if (!event.altKey) return false;\n  if (tagName === \"a\") return true;\n  if (tagName === \"button\" && element.type === \"submit\") return true;\n  if (tagName === \"input\" && element.type === \"submit\") return true;\n  return false;\n}\nfunction fireEvent(element, type, eventInit) {\n  const event = new Event(type, eventInit);\n  return element.dispatchEvent(event);\n}\nfunction fireBlurEvent(element, eventInit) {\n  const event = new FocusEvent(\"blur\", eventInit);\n  const defaultAllowed = element.dispatchEvent(event);\n  const bubbleInit = __spreadProps(__spreadValues({}, eventInit), { bubbles: true });\n  element.dispatchEvent(new FocusEvent(\"focusout\", bubbleInit));\n  return defaultAllowed;\n}\nfunction fireFocusEvent(element, eventInit) {\n  const event = new FocusEvent(\"focus\", eventInit);\n  const defaultAllowed = element.dispatchEvent(event);\n  const bubbleInit = __spreadProps(__spreadValues({}, eventInit), { bubbles: true });\n  element.dispatchEvent(new FocusEvent(\"focusin\", bubbleInit));\n  return defaultAllowed;\n}\nfunction fireKeyboardEvent(element, type, eventInit) {\n  const event = new KeyboardEvent(type, eventInit);\n  return element.dispatchEvent(event);\n}\nfunction fireClickEvent(element, eventInit) {\n  const event = new MouseEvent(\"click\", eventInit);\n  return element.dispatchEvent(event);\n}\nfunction isFocusEventOutside(event, container) {\n  const containerElement = container || event.currentTarget;\n  const relatedTarget = event.relatedTarget;\n  return !relatedTarget || !contains(containerElement, relatedTarget);\n}\nfunction getInputType(event) {\n  const nativeEvent = \"nativeEvent\" in event ? event.nativeEvent : event;\n  if (!nativeEvent) return;\n  if (!(\"inputType\" in nativeEvent)) return;\n  if (typeof nativeEvent.inputType !== \"string\") return;\n  return nativeEvent.inputType;\n}\nfunction queueBeforeEvent(element, type, callback, timeout) {\n  const createTimer = (callback2) => {\n    if (timeout) {\n      const timerId2 = setTimeout(callback2, timeout);\n      return () => clearTimeout(timerId2);\n    }\n    const timerId = requestAnimationFrame(callback2);\n    return () => cancelAnimationFrame(timerId);\n  };\n  const cancelTimer = createTimer(() => {\n    element.removeEventListener(type, callSync, true);\n    callback();\n  });\n  const callSync = () => {\n    cancelTimer();\n    callback();\n  };\n  element.addEventListener(type, callSync, { once: true, capture: true });\n  return cancelTimer;\n}\nfunction addGlobalEventListener(type, listener, options, scope = window) {\n  const children = [];\n  try {\n    scope.document.addEventListener(type, listener, options);\n    for (const frame of Array.from(scope.frames)) {\n      children.push(addGlobalEventListener(type, listener, options, frame));\n    }\n  } catch (e) {\n  }\n  const removeEventListener = () => {\n    try {\n      scope.document.removeEventListener(type, listener, options);\n    } catch (e) {\n    }\n    for (const remove of children) {\n      remove();\n    }\n  };\n  return removeEventListener;\n}\nexport {\n  addGlobalEventListener,\n  fireBlurEvent,\n  fireClickEvent,\n  fireEvent,\n  fireFocusEvent,\n  fireKeyboardEvent,\n  getInputType,\n  isDownloading,\n  isFocusEventOutside,\n  isOpeningInNewTab,\n  isPortalEvent,\n  isSelfTarget,\n  queueBeforeEvent\n};\n", "\"use client\";\nimport {\n  setRef\n} from \"./SK3NAZA3.js\";\nimport {\n  __spreadProps,\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/utils/hooks.ts\nimport { canUseDOM } from \"@ariakit/core/utils/dom\";\nimport { addGlobalEventListener } from \"@ariakit/core/utils/events\";\nimport {\n  useCallback,\n  useEffect,\n  useLayoutEffect,\n  useMemo,\n  useReducer,\n  useRef,\n  useState\n} from \"react\";\nimport * as React from \"react\";\nvar _React = __spreadValues({}, React);\nvar useReactId = _React.useId;\nvar useReactDeferredValue = _React.useDeferredValue;\nvar useReactInsertionEffect = _React.useInsertionEffect;\nvar useSafeLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;\nfunction useInitialValue(value) {\n  const [initialValue] = useState(value);\n  return initialValue;\n}\nfunction useLazyValue(init) {\n  const ref = useRef();\n  if (ref.current === void 0) {\n    ref.current = init();\n  }\n  return ref.current;\n}\nfunction useLiveRef(value) {\n  const ref = useRef(value);\n  useSafeLayoutEffect(() => {\n    ref.current = value;\n  });\n  return ref;\n}\nfunction usePreviousValue(value) {\n  const [previousValue, setPreviousValue] = useState(value);\n  if (value !== previousValue) {\n    setPreviousValue(value);\n  }\n  return previousValue;\n}\nfunction useEvent(callback) {\n  const ref = useRef(() => {\n    throw new Error(\"Cannot call an event handler while rendering.\");\n  });\n  if (useReactInsertionEffect) {\n    useReactInsertionEffect(() => {\n      ref.current = callback;\n    });\n  } else {\n    ref.current = callback;\n  }\n  return useCallback((...args) => {\n    var _a;\n    return (_a = ref.current) == null ? void 0 : _a.call(ref, ...args);\n  }, []);\n}\nfunction useTransactionState(callback) {\n  const [state, setState] = useState(null);\n  useSafeLayoutEffect(() => {\n    if (state == null) return;\n    if (!callback) return;\n    let prevState = null;\n    callback((prev) => {\n      prevState = prev;\n      return state;\n    });\n    return () => {\n      callback(prevState);\n    };\n  }, [state, callback]);\n  return [state, setState];\n}\nfunction useMergeRefs(...refs) {\n  return useMemo(() => {\n    if (!refs.some(Boolean)) return;\n    return (value) => {\n      for (const ref of refs) {\n        setRef(ref, value);\n      }\n    };\n  }, refs);\n}\nfunction useId(defaultId) {\n  if (useReactId) {\n    const reactId = useReactId();\n    if (defaultId) return defaultId;\n    return reactId;\n  }\n  const [id, setId] = useState(defaultId);\n  useSafeLayoutEffect(() => {\n    if (defaultId || id) return;\n    const random = Math.random().toString(36).slice(2, 8);\n    setId(`id-${random}`);\n  }, [defaultId, id]);\n  return defaultId || id;\n}\nfunction useDeferredValue(value) {\n  if (useReactDeferredValue) {\n    return useReactDeferredValue(value);\n  }\n  const [deferredValue, setDeferredValue] = useState(value);\n  useEffect(() => {\n    const raf = requestAnimationFrame(() => setDeferredValue(value));\n    return () => cancelAnimationFrame(raf);\n  }, [value]);\n  return deferredValue;\n}\nfunction useTagName(refOrElement, type) {\n  const stringOrUndefined = (type2) => {\n    if (typeof type2 !== \"string\") return;\n    return type2;\n  };\n  const [tagName, setTagName] = useState(() => stringOrUndefined(type));\n  useSafeLayoutEffect(() => {\n    const element = refOrElement && \"current\" in refOrElement ? refOrElement.current : refOrElement;\n    setTagName((element == null ? void 0 : element.tagName.toLowerCase()) || stringOrUndefined(type));\n  }, [refOrElement, type]);\n  return tagName;\n}\nfunction useAttribute(refOrElement, attributeName, defaultValue) {\n  const initialValue = useInitialValue(defaultValue);\n  const [attribute, setAttribute] = useState(initialValue);\n  useEffect(() => {\n    const element = refOrElement && \"current\" in refOrElement ? refOrElement.current : refOrElement;\n    if (!element) return;\n    const callback = () => {\n      const value = element.getAttribute(attributeName);\n      setAttribute(value == null ? initialValue : value);\n    };\n    const observer = new MutationObserver(callback);\n    observer.observe(element, { attributeFilter: [attributeName] });\n    callback();\n    return () => observer.disconnect();\n  }, [refOrElement, attributeName, initialValue]);\n  return attribute;\n}\nfunction useUpdateEffect(effect, deps) {\n  const mounted = useRef(false);\n  useEffect(() => {\n    if (mounted.current) {\n      return effect();\n    }\n    mounted.current = true;\n  }, deps);\n  useEffect(\n    () => () => {\n      mounted.current = false;\n    },\n    []\n  );\n}\nfunction useUpdateLayoutEffect(effect, deps) {\n  const mounted = useRef(false);\n  useSafeLayoutEffect(() => {\n    if (mounted.current) {\n      return effect();\n    }\n    mounted.current = true;\n  }, deps);\n  useSafeLayoutEffect(\n    () => () => {\n      mounted.current = false;\n    },\n    []\n  );\n}\nfunction useForceUpdate() {\n  return useReducer(() => [], []);\n}\nfunction useBooleanEvent(booleanOrCallback) {\n  return useEvent(\n    typeof booleanOrCallback === \"function\" ? booleanOrCallback : () => booleanOrCallback\n  );\n}\nfunction useWrapElement(props, callback, deps = []) {\n  const wrapElement = useCallback(\n    (element) => {\n      if (props.wrapElement) {\n        element = props.wrapElement(element);\n      }\n      return callback(element);\n    },\n    [...deps, props.wrapElement]\n  );\n  return __spreadProps(__spreadValues({}, props), { wrapElement });\n}\nfunction usePortalRef(portalProp = false, portalRefProp) {\n  const [portalNode, setPortalNode] = useState(null);\n  const portalRef = useMergeRefs(setPortalNode, portalRefProp);\n  const domReady = !portalProp || portalNode;\n  return { portalRef, portalNode, domReady };\n}\nfunction useMetadataProps(props, key, value) {\n  const parent = props.onLoadedMetadataCapture;\n  const onLoadedMetadataCapture = useMemo(() => {\n    return Object.assign(() => {\n    }, __spreadProps(__spreadValues({}, parent), { [key]: value }));\n  }, [parent, key, value]);\n  return [parent == null ? void 0 : parent[key], { onLoadedMetadataCapture }];\n}\nfunction useIsMouseMoving() {\n  useEffect(() => {\n    addGlobalEventListener(\"mousemove\", setMouseMoving, true);\n    addGlobalEventListener(\"mousedown\", resetMouseMoving, true);\n    addGlobalEventListener(\"mouseup\", resetMouseMoving, true);\n    addGlobalEventListener(\"keydown\", resetMouseMoving, true);\n    addGlobalEventListener(\"scroll\", resetMouseMoving, true);\n  }, []);\n  const isMouseMoving = useEvent(() => mouseMoving);\n  return isMouseMoving;\n}\nvar mouseMoving = false;\nvar previousScreenX = 0;\nvar previousScreenY = 0;\nfunction hasMouseMovement(event) {\n  const movementX = event.movementX || event.screenX - previousScreenX;\n  const movementY = event.movementY || event.screenY - previousScreenY;\n  previousScreenX = event.screenX;\n  previousScreenY = event.screenY;\n  return movementX || movementY || process.env.NODE_ENV === \"test\";\n}\nfunction setMouseMoving(event) {\n  if (!hasMouseMovement(event)) return;\n  mouseMoving = true;\n}\nfunction resetMouseMoving() {\n  mouseMoving = false;\n}\n\nexport {\n  useSafeLayoutEffect,\n  useInitialValue,\n  useLazyValue,\n  useLiveRef,\n  usePreviousValue,\n  useEvent,\n  useTransactionState,\n  useMergeRefs,\n  useId,\n  useDeferredValue,\n  useTagName,\n  useAttribute,\n  useUpdateEffect,\n  useUpdateLayoutEffect,\n  useForceUpdate,\n  useBooleanEvent,\n  useWrapElement,\n  usePortalRef,\n  useMetadataProps,\n  useIsMouseMoving\n};\n", "\"use client\";\nimport {\n  useMergeRefs\n} from \"./ABQUS43J.js\";\nimport {\n  getRefProperty,\n  mergeProps\n} from \"./SK3NAZA3.js\";\nimport {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/utils/system.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction forwardRef2(render) {\n  const Role = React.forwardRef((props, ref) => render(__spreadProps(__spreadValues({}, props), { ref })));\n  Role.displayName = render.displayName || render.name;\n  return Role;\n}\nfunction memo2(Component, propsAreEqual) {\n  return React.memo(Component, propsAreEqual);\n}\nfunction createElement(Type, props) {\n  const _a = props, { wrapElement, render } = _a, rest = __objRest(_a, [\"wrapElement\", \"render\"]);\n  const mergedRef = useMergeRefs(props.ref, getRefProperty(render));\n  let element;\n  if (React.isValidElement(render)) {\n    const renderProps = __spreadProps(__spreadValues({}, render.props), { ref: mergedRef });\n    element = React.cloneElement(render, mergeProps(rest, renderProps));\n  } else if (render) {\n    element = render(rest);\n  } else {\n    element = /* @__PURE__ */ jsx(Type, __spreadValues({}, rest));\n  }\n  if (wrapElement) {\n    return wrapElement(element);\n  }\n  return element;\n}\nfunction createHook(useProps) {\n  const useRole = (props = {}) => {\n    return useProps(props);\n  };\n  useRole.displayName = useProps.name;\n  return useRole;\n}\nfunction createStoreContext(providers = [], scopedProviders = []) {\n  const context = React.createContext(void 0);\n  const scopedContext = React.createContext(void 0);\n  const useContext2 = () => React.useContext(context);\n  const useScopedContext = (onlyScoped = false) => {\n    const scoped = React.useContext(scopedContext);\n    const store = useContext2();\n    if (onlyScoped) return scoped;\n    return scoped || store;\n  };\n  const useProviderContext = () => {\n    const scoped = React.useContext(scopedContext);\n    const store = useContext2();\n    if (scoped && scoped === store) return;\n    return store;\n  };\n  const ContextProvider = (props) => {\n    return providers.reduceRight(\n      (children, Provider) => /* @__PURE__ */ jsx(Provider, __spreadProps(__spreadValues({}, props), { children })),\n      /* @__PURE__ */ jsx(context.Provider, __spreadValues({}, props))\n    );\n  };\n  const ScopedContextProvider = (props) => {\n    return /* @__PURE__ */ jsx(ContextProvider, __spreadProps(__spreadValues({}, props), { children: scopedProviders.reduceRight(\n      (children, Provider) => /* @__PURE__ */ jsx(Provider, __spreadProps(__spreadValues({}, props), { children })),\n      /* @__PURE__ */ jsx(scopedContext.Provider, __spreadValues({}, props))\n    ) }));\n  };\n  return {\n    context,\n    scopedContext,\n    useContext: useContext2,\n    useScopedContext,\n    useProviderContext,\n    ContextProvider,\n    ScopedContextProvider\n  };\n}\n\nexport {\n  forwardRef2 as forwardRef,\n  memo2 as memo,\n  createElement,\n  createHook,\n  createStoreContext\n};\n", "\"use client\";\nimport {\n  createStoreContext\n} from \"./LMDWO4NN.js\";\n\n// src/collection/collection-context.tsx\nvar ctx = createStoreContext();\nvar useCollectionContext = ctx.useContext;\nvar useCollectionScopedContext = ctx.useScopedContext;\nvar useCollectionProviderContext = ctx.useProviderContext;\nvar CollectionContextProvider = ctx.ContextProvider;\nvar CollectionScopedContextProvider = ctx.ScopedContextProvider;\n\nexport {\n  useCollectionContext,\n  useCollectionScopedContext,\n  useCollectionProviderContext,\n  CollectionContextProvider,\n  CollectionScopedContextProvider\n};\n", "\"use client\";\nimport {\n  CollectionContextProvider,\n  CollectionScopedContextProvider\n} from \"./VDHZ5F7K.js\";\nimport {\n  createStoreContext\n} from \"./LMDWO4NN.js\";\n\n// src/composite/composite-context.tsx\nimport { createContext } from \"react\";\nvar ctx = createStoreContext(\n  [CollectionContextProvider],\n  [CollectionScopedContextProvider]\n);\nvar useCompositeContext = ctx.useContext;\nvar useCompositeScopedContext = ctx.useScopedContext;\nvar useCompositeProviderContext = ctx.useProviderContext;\nvar CompositeContextProvider = ctx.ContextProvider;\nvar CompositeScopedContextProvider = ctx.ScopedContextProvider;\nvar CompositeItemContext = createContext(\n  void 0\n);\nvar CompositeRowContext = createContext(\n  void 0\n);\n\nexport {\n  useCompositeContext,\n  useCompositeScopedContext,\n  useCompositeProviderContext,\n  CompositeContextProvider,\n  CompositeScopedContextProvider,\n  CompositeItemContext,\n  CompositeRowContext\n};\n", "\"use client\";\nimport {\n  CompositeContextProvider,\n  CompositeScopedContextProvider\n} from \"./P7GR5CS5.js\";\nimport {\n  createStoreContext\n} from \"./LMDWO4NN.js\";\n\n// src/tag/tag-context.tsx\nimport { createContext } from \"react\";\nvar TagValueContext = createContext(null);\nvar TagRemoveIdContext = createContext(\n  null\n);\nvar ctx = createStoreContext(\n  [CompositeContextProvider],\n  [CompositeScopedContextProvider]\n);\nvar useTagContext = ctx.useContext;\nvar useTagScopedContext = ctx.useScopedContext;\nvar useTagProviderContext = ctx.useProviderContext;\nvar TagContextProvider = ctx.ContextProvider;\nvar TagScopedContextProvider = ctx.ScopedContextProvider;\n\nexport {\n  TagValueContext,\n  TagRemoveIdContext,\n  useTagContext,\n  useTagScopedContext,\n  useTagProviderContext,\n  TagContextProvider,\n  TagScopedContextProvider\n};\n", "\"use client\";\nimport {\n  applyState,\n  chain,\n  getKeys,\n  hasOwnProperty,\n  invariant,\n  noop,\n  omit,\n  pick\n} from \"./PBFD2E7P.js\";\nimport {\n  __spreadProps,\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/utils/store.ts\nfunction getInternal(store, key) {\n  const internals = store.__unstableInternals;\n  invariant(internals, \"Invalid store\");\n  return internals[key];\n}\nfunction createStore(initialState, ...stores) {\n  let state = initialState;\n  let prevStateBatch = state;\n  let lastUpdate = Symbol();\n  let destroy = noop;\n  const instances = /* @__PURE__ */ new Set();\n  const updatedKeys = /* @__PURE__ */ new Set();\n  const setups = /* @__PURE__ */ new Set();\n  const listeners = /* @__PURE__ */ new Set();\n  const batchListeners = /* @__PURE__ */ new Set();\n  const disposables = /* @__PURE__ */ new WeakMap();\n  const listenerKeys = /* @__PURE__ */ new WeakMap();\n  const storeSetup = (callback) => {\n    setups.add(callback);\n    return () => setups.delete(callback);\n  };\n  const storeInit = () => {\n    const initialized = instances.size;\n    const instance = Symbol();\n    instances.add(instance);\n    const maybeDestroy = () => {\n      instances.delete(instance);\n      if (instances.size) return;\n      destroy();\n    };\n    if (initialized) return maybeDestroy;\n    const desyncs = getKeys(state).map(\n      (key) => chain(\n        ...stores.map((store) => {\n          var _a;\n          const storeState = (_a = store == null ? void 0 : store.getState) == null ? void 0 : _a.call(store);\n          if (!storeState) return;\n          if (!hasOwnProperty(storeState, key)) return;\n          return sync(store, [key], (state2) => {\n            setState(\n              key,\n              state2[key],\n              // @ts-expect-error - Not public API. This is just to prevent\n              // infinite loops.\n              true\n            );\n          });\n        })\n      )\n    );\n    const teardowns = [];\n    for (const setup2 of setups) {\n      teardowns.push(setup2());\n    }\n    const cleanups = stores.map(init);\n    destroy = chain(...desyncs, ...teardowns, ...cleanups);\n    return maybeDestroy;\n  };\n  const sub = (keys, listener, set = listeners) => {\n    set.add(listener);\n    listenerKeys.set(listener, keys);\n    return () => {\n      var _a;\n      (_a = disposables.get(listener)) == null ? void 0 : _a();\n      disposables.delete(listener);\n      listenerKeys.delete(listener);\n      set.delete(listener);\n    };\n  };\n  const storeSubscribe = (keys, listener) => sub(keys, listener);\n  const storeSync = (keys, listener) => {\n    disposables.set(listener, listener(state, state));\n    return sub(keys, listener);\n  };\n  const storeBatch = (keys, listener) => {\n    disposables.set(listener, listener(state, prevStateBatch));\n    return sub(keys, listener, batchListeners);\n  };\n  const storePick = (keys) => createStore(pick(state, keys), finalStore);\n  const storeOmit = (keys) => createStore(omit(state, keys), finalStore);\n  const getState = () => state;\n  const setState = (key, value, fromStores = false) => {\n    var _a;\n    if (!hasOwnProperty(state, key)) return;\n    const nextValue = applyState(value, state[key]);\n    if (nextValue === state[key]) return;\n    if (!fromStores) {\n      for (const store of stores) {\n        (_a = store == null ? void 0 : store.setState) == null ? void 0 : _a.call(store, key, nextValue);\n      }\n    }\n    const prevState = state;\n    state = __spreadProps(__spreadValues({}, state), { [key]: nextValue });\n    const thisUpdate = Symbol();\n    lastUpdate = thisUpdate;\n    updatedKeys.add(key);\n    const run = (listener, prev, uKeys) => {\n      var _a2;\n      const keys = listenerKeys.get(listener);\n      const updated = (k) => uKeys ? uKeys.has(k) : k === key;\n      if (!keys || keys.some(updated)) {\n        (_a2 = disposables.get(listener)) == null ? void 0 : _a2();\n        disposables.set(listener, listener(state, prev));\n      }\n    };\n    for (const listener of listeners) {\n      run(listener, prevState);\n    }\n    queueMicrotask(() => {\n      if (lastUpdate !== thisUpdate) return;\n      const snapshot = state;\n      for (const listener of batchListeners) {\n        run(listener, prevStateBatch, updatedKeys);\n      }\n      prevStateBatch = snapshot;\n      updatedKeys.clear();\n    });\n  };\n  const finalStore = {\n    getState,\n    setState,\n    __unstableInternals: {\n      setup: storeSetup,\n      init: storeInit,\n      subscribe: storeSubscribe,\n      sync: storeSync,\n      batch: storeBatch,\n      pick: storePick,\n      omit: storeOmit\n    }\n  };\n  return finalStore;\n}\nfunction setup(store, ...args) {\n  if (!store) return;\n  return getInternal(store, \"setup\")(...args);\n}\nfunction init(store, ...args) {\n  if (!store) return;\n  return getInternal(store, \"init\")(...args);\n}\nfunction subscribe(store, ...args) {\n  if (!store) return;\n  return getInternal(store, \"subscribe\")(...args);\n}\nfunction sync(store, ...args) {\n  if (!store) return;\n  return getInternal(store, \"sync\")(...args);\n}\nfunction batch(store, ...args) {\n  if (!store) return;\n  return getInternal(store, \"batch\")(...args);\n}\nfunction omit2(store, ...args) {\n  if (!store) return;\n  return getInternal(store, \"omit\")(...args);\n}\nfunction pick2(store, ...args) {\n  if (!store) return;\n  return getInternal(store, \"pick\")(...args);\n}\nfunction mergeStore(...stores) {\n  const initialState = stores.reduce((state, store2) => {\n    var _a;\n    const nextState = (_a = store2 == null ? void 0 : store2.getState) == null ? void 0 : _a.call(store2);\n    if (!nextState) return state;\n    return Object.assign(state, nextState);\n  }, {});\n  const store = createStore(initialState, ...stores);\n  return Object.assign({}, ...stores, store);\n}\nfunction throwOnConflictingProps(props, store) {\n  if (process.env.NODE_ENV === \"production\") return;\n  if (!store) return;\n  const defaultKeys = Object.entries(props).filter(([key, value]) => key.startsWith(\"default\") && value !== void 0).map(([key]) => {\n    var _a;\n    const stateKey = key.replace(\"default\", \"\");\n    return `${((_a = stateKey[0]) == null ? void 0 : _a.toLowerCase()) || \"\"}${stateKey.slice(1)}`;\n  });\n  if (!defaultKeys.length) return;\n  const storeState = store.getState();\n  const conflictingProps = defaultKeys.filter(\n    (key) => hasOwnProperty(storeState, key)\n  );\n  if (!conflictingProps.length) return;\n  throw new Error(\n    `Passing a store prop in conjunction with a default state is not supported.\n\nconst store = useSelectStore();\n<SelectProvider store={store} defaultValue=\"Apple\" />\n                ^             ^\n\nInstead, pass the default state to the topmost store:\n\nconst store = useSelectStore({ defaultValue: \"Apple\" });\n<SelectProvider store={store} />\n\nSee https://github.com/ariakit/ariakit/pull/2745 for more details.\n\nIf there's a particular need for this, please submit a feature request at https://github.com/ariakit/ariakit\n`\n  );\n}\n\nexport {\n  createStore,\n  setup,\n  init,\n  subscribe,\n  sync,\n  batch,\n  omit2 as omit,\n  pick2 as pick,\n  mergeStore,\n  throwOnConflictingProps\n};\n", "\"use client\";\nimport {\n  useEvent,\n  useLiveRef,\n  useSafeLayoutEffect\n} from \"./ABQUS43J.js\";\nimport {\n  __spreadProps,\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/utils/store.tsx\nimport { hasOwnProperty, identity } from \"@ariakit/core/utils/misc\";\nimport { batch, init, subscribe, sync } from \"@ariakit/core/utils/store\";\nimport * as React from \"react\";\nimport useSyncExternalStoreExports from \"use-sync-external-store/shim/index.js\";\nvar { useSyncExternalStore } = useSyncExternalStoreExports;\nvar noopSubscribe = () => () => {\n};\nfunction useStoreState(store, keyOrSelector = identity) {\n  const storeSubscribe = React.useCallback(\n    (callback) => {\n      if (!store) return noopSubscribe();\n      return subscribe(store, null, callback);\n    },\n    [store]\n  );\n  const getSnapshot = () => {\n    const key = typeof keyOrSelector === \"string\" ? keyOrSelector : null;\n    const selector = typeof keyOrSelector === \"function\" ? keyOrSelector : null;\n    const state = store == null ? void 0 : store.getState();\n    if (selector) return selector(state);\n    if (!state) return;\n    if (!key) return;\n    if (!hasOwnProperty(state, key)) return;\n    return state[key];\n  };\n  return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot);\n}\nfunction useStoreStateObject(store, object) {\n  const objRef = React.useRef(\n    {}\n  );\n  const storeSubscribe = React.useCallback(\n    (callback) => {\n      if (!store) return noopSubscribe();\n      return subscribe(store, null, callback);\n    },\n    [store]\n  );\n  const getSnapshot = () => {\n    const state = store == null ? void 0 : store.getState();\n    let updated = false;\n    const obj = objRef.current;\n    for (const prop in object) {\n      const keyOrSelector = object[prop];\n      if (typeof keyOrSelector === \"function\") {\n        const value = keyOrSelector(state);\n        if (value !== obj[prop]) {\n          obj[prop] = value;\n          updated = true;\n        }\n      }\n      if (typeof keyOrSelector === \"string\") {\n        if (!state) continue;\n        if (!hasOwnProperty(state, keyOrSelector)) continue;\n        const value = state[keyOrSelector];\n        if (value !== obj[prop]) {\n          obj[prop] = value;\n          updated = true;\n        }\n      }\n    }\n    if (updated) {\n      objRef.current = __spreadValues({}, obj);\n    }\n    return objRef.current;\n  };\n  return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot);\n}\nfunction useStoreProps(store, props, key, setKey) {\n  const value = hasOwnProperty(props, key) ? props[key] : void 0;\n  const setValue = setKey ? props[setKey] : void 0;\n  const propsRef = useLiveRef({ value, setValue });\n  useSafeLayoutEffect(() => {\n    return sync(store, [key], (state, prev) => {\n      const { value: value2, setValue: setValue2 } = propsRef.current;\n      if (!setValue2) return;\n      if (state[key] === prev[key]) return;\n      if (state[key] === value2) return;\n      setValue2(state[key]);\n    });\n  }, [store, key]);\n  useSafeLayoutEffect(() => {\n    if (value === void 0) return;\n    store.setState(key, value);\n    return batch(store, [key], () => {\n      if (value === void 0) return;\n      store.setState(key, value);\n    });\n  });\n}\nfunction useStore(createStore, props) {\n  const [store, setStore] = React.useState(() => createStore(props));\n  useSafeLayoutEffect(() => init(store), [store]);\n  const useState2 = React.useCallback(\n    (keyOrSelector) => useStoreState(store, keyOrSelector),\n    [store]\n  );\n  const memoizedStore = React.useMemo(\n    () => __spreadProps(__spreadValues({}, store), { useState: useState2 }),\n    [store, useState2]\n  );\n  const updateStore = useEvent(() => {\n    setStore((store2) => createStore(__spreadValues(__spreadValues({}, props), store2.getState())));\n  });\n  return [memoizedStore, updateStore];\n}\n\nexport {\n  useStoreState,\n  useStoreStateObject,\n  useStoreProps,\n  useStore\n};\n", "\"use client\";\nimport {\n  batch,\n  createStore,\n  init,\n  setup,\n  throwOnConflictingProps\n} from \"./BCALMBPZ.js\";\nimport {\n  chain,\n  defaultValue\n} from \"./PBFD2E7P.js\";\nimport {\n  getDocument,\n  sortBasedOnDOMPosition\n} from \"./DTR5TSDJ.js\";\nimport {\n  __spreadProps,\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/collection/collection-store.ts\nfunction getCommonParent(items) {\n  var _a;\n  const firstItem = items.find((item) => !!item.element);\n  const lastItem = [...items].reverse().find((item) => !!item.element);\n  let parentElement = (_a = firstItem == null ? void 0 : firstItem.element) == null ? void 0 : _a.parentElement;\n  while (parentElement && (lastItem == null ? void 0 : lastItem.element)) {\n    const parent = parentElement;\n    if (lastItem && parent.contains(lastItem.element)) {\n      return parentElement;\n    }\n    parentElement = parentElement.parentElement;\n  }\n  return getDocument(parentElement).body;\n}\nfunction getPrivateStore(store) {\n  return store == null ? void 0 : store.__unstablePrivateStore;\n}\nfunction createCollectionStore(props = {}) {\n  var _a;\n  throwOnConflictingProps(props, props.store);\n  const syncState = (_a = props.store) == null ? void 0 : _a.getState();\n  const items = defaultValue(\n    props.items,\n    syncState == null ? void 0 : syncState.items,\n    props.defaultItems,\n    []\n  );\n  const itemsMap = new Map(items.map((item) => [item.id, item]));\n  const initialState = {\n    items,\n    renderedItems: defaultValue(syncState == null ? void 0 : syncState.renderedItems, [])\n  };\n  const syncPrivateStore = getPrivateStore(props.store);\n  const privateStore = createStore(\n    { items, renderedItems: initialState.renderedItems },\n    syncPrivateStore\n  );\n  const collection = createStore(initialState, props.store);\n  const sortItems = (renderedItems) => {\n    const sortedItems = sortBasedOnDOMPosition(renderedItems, (i) => i.element);\n    privateStore.setState(\"renderedItems\", sortedItems);\n    collection.setState(\"renderedItems\", sortedItems);\n  };\n  setup(collection, () => init(privateStore));\n  setup(privateStore, () => {\n    return batch(privateStore, [\"items\"], (state) => {\n      collection.setState(\"items\", state.items);\n    });\n  });\n  setup(privateStore, () => {\n    return batch(privateStore, [\"renderedItems\"], (state) => {\n      let firstRun = true;\n      let raf = requestAnimationFrame(() => {\n        const { renderedItems } = collection.getState();\n        if (state.renderedItems === renderedItems) return;\n        sortItems(state.renderedItems);\n      });\n      if (typeof IntersectionObserver !== \"function\") {\n        return () => cancelAnimationFrame(raf);\n      }\n      const ioCallback = () => {\n        if (firstRun) {\n          firstRun = false;\n          return;\n        }\n        cancelAnimationFrame(raf);\n        raf = requestAnimationFrame(() => sortItems(state.renderedItems));\n      };\n      const root = getCommonParent(state.renderedItems);\n      const observer = new IntersectionObserver(ioCallback, { root });\n      for (const item of state.renderedItems) {\n        if (!item.element) continue;\n        observer.observe(item.element);\n      }\n      return () => {\n        cancelAnimationFrame(raf);\n        observer.disconnect();\n      };\n    });\n  });\n  const mergeItem = (item, setItems, canDeleteFromMap = false) => {\n    let prevItem;\n    setItems((items2) => {\n      const index = items2.findIndex(({ id }) => id === item.id);\n      const nextItems = items2.slice();\n      if (index !== -1) {\n        prevItem = items2[index];\n        const nextItem = __spreadValues(__spreadValues({}, prevItem), item);\n        nextItems[index] = nextItem;\n        itemsMap.set(item.id, nextItem);\n      } else {\n        nextItems.push(item);\n        itemsMap.set(item.id, item);\n      }\n      return nextItems;\n    });\n    const unmergeItem = () => {\n      setItems((items2) => {\n        if (!prevItem) {\n          if (canDeleteFromMap) {\n            itemsMap.delete(item.id);\n          }\n          return items2.filter(({ id }) => id !== item.id);\n        }\n        const index = items2.findIndex(({ id }) => id === item.id);\n        if (index === -1) return items2;\n        const nextItems = items2.slice();\n        nextItems[index] = prevItem;\n        itemsMap.set(item.id, prevItem);\n        return nextItems;\n      });\n    };\n    return unmergeItem;\n  };\n  const registerItem = (item) => mergeItem(\n    item,\n    (getItems) => privateStore.setState(\"items\", getItems),\n    true\n  );\n  return __spreadProps(__spreadValues({}, collection), {\n    registerItem,\n    renderItem: (item) => chain(\n      registerItem(item),\n      mergeItem(\n        item,\n        (getItems) => privateStore.setState(\"renderedItems\", getItems)\n      )\n    ),\n    item: (id) => {\n      if (!id) return null;\n      let item = itemsMap.get(id);\n      if (!item) {\n        const { items: items2 } = privateStore.getState();\n        item = items2.find((item2) => item2.id === id);\n        if (item) {\n          itemsMap.set(id, item);\n        }\n      }\n      return item || null;\n    },\n    // @ts-expect-error Internal\n    __unstablePrivateStore: privateStore\n  });\n}\n\nexport {\n  createCollectionStore\n};\n", "\"use client\";\nimport {\n  useStore,\n  useStoreProps\n} from \"./YV4JVR4I.js\";\nimport {\n  useUpdateEffect\n} from \"./ABQUS43J.js\";\n\n// src/collection/collection-store.ts\nimport * as Core from \"@ariakit/core/collection/collection-store\";\nfunction useCollectionStoreProps(store, update, props) {\n  useUpdateEffect(update, [props.store]);\n  useStoreProps(store, props, \"items\", \"setItems\");\n  return store;\n}\nfunction useCollectionStore(props = {}) {\n  const [store, update] = useStore(Core.createCollectionStore, props);\n  return useCollectionStoreProps(store, update, props);\n}\n\nexport {\n  useCollectionStoreProps,\n  useCollectionStore\n};\n", "\"use client\";\n\n// src/utils/array.ts\nfunction toArray(arg) {\n  if (Array.isArray(arg)) {\n    return arg;\n  }\n  return typeof arg !== \"undefined\" ? [arg] : [];\n}\nfunction addItemToArray(array, item, index = -1) {\n  if (!(index in array)) {\n    return [...array, item];\n  }\n  return [...array.slice(0, index), item, ...array.slice(index)];\n}\nfunction flatten2DArray(array) {\n  const flattened = [];\n  for (const row of array) {\n    flattened.push(...row);\n  }\n  return flattened;\n}\nfunction reverseArray(array) {\n  return array.slice().reverse();\n}\n\nexport {\n  toArray,\n  addItemToArray,\n  flatten2DArray,\n  reverseArray\n};\n", "\"use client\";\nimport {\n  createCollectionStore\n} from \"./CYQWQL4J.js\";\nimport {\n  flatten2DArray,\n  reverseArray\n} from \"./7PRQYBBV.js\";\nimport {\n  createStore,\n  setup,\n  sync\n} from \"./BCALMBPZ.js\";\nimport {\n  defaultValue\n} from \"./PBFD2E7P.js\";\nimport {\n  __spreadProps,\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/composite/composite-store.ts\nvar NULL_ITEM = { id: null };\nfunction findFirstEnabledItem(items, excludeId) {\n  return items.find((item) => {\n    if (excludeId) {\n      return !item.disabled && item.id !== excludeId;\n    }\n    return !item.disabled;\n  });\n}\nfunction getEnabledItems(items, excludeId) {\n  return items.filter((item) => {\n    if (excludeId) {\n      return !item.disabled && item.id !== excludeId;\n    }\n    return !item.disabled;\n  });\n}\nfunction getItemsInRow(items, rowId) {\n  return items.filter((item) => item.rowId === rowId);\n}\nfunction flipItems(items, activeId, shouldInsertNullItem = false) {\n  const index = items.findIndex((item) => item.id === activeId);\n  return [\n    ...items.slice(index + 1),\n    ...shouldInsertNullItem ? [NULL_ITEM] : [],\n    ...items.slice(0, index)\n  ];\n}\nfunction groupItemsByRows(items) {\n  const rows = [];\n  for (const item of items) {\n    const row = rows.find((currentRow) => {\n      var _a;\n      return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId;\n    });\n    if (row) {\n      row.push(item);\n    } else {\n      rows.push([item]);\n    }\n  }\n  return rows;\n}\nfunction getMaxRowLength(array) {\n  let maxLength = 0;\n  for (const { length } of array) {\n    if (length > maxLength) {\n      maxLength = length;\n    }\n  }\n  return maxLength;\n}\nfunction createEmptyItem(rowId) {\n  return {\n    id: \"__EMPTY_ITEM__\",\n    disabled: true,\n    rowId\n  };\n}\nfunction normalizeRows(rows, activeId, focusShift) {\n  const maxLength = getMaxRowLength(rows);\n  for (const row of rows) {\n    for (let i = 0; i < maxLength; i += 1) {\n      const item = row[i];\n      if (!item || focusShift && item.disabled) {\n        const isFirst = i === 0;\n        const previousItem = isFirst && focusShift ? findFirstEnabledItem(row) : row[i - 1];\n        row[i] = previousItem && activeId !== previousItem.id && focusShift ? previousItem : createEmptyItem(previousItem == null ? void 0 : previousItem.rowId);\n      }\n    }\n  }\n  return rows;\n}\nfunction verticalizeItems(items) {\n  const rows = groupItemsByRows(items);\n  const maxLength = getMaxRowLength(rows);\n  const verticalized = [];\n  for (let i = 0; i < maxLength; i += 1) {\n    for (const row of rows) {\n      const item = row[i];\n      if (item) {\n        verticalized.push(__spreadProps(__spreadValues({}, item), {\n          // If there's no rowId, it means that it's not a grid composite, but\n          // a single row instead. So, instead of verticalizing it, that is,\n          // assigning a different rowId based on the column index, we keep it\n          // undefined so they will be part of the same row. This is useful\n          // when using up/down on one-dimensional composites.\n          rowId: item.rowId ? `${i}` : void 0\n        }));\n      }\n    }\n  }\n  return verticalized;\n}\nfunction createCompositeStore(props = {}) {\n  var _a;\n  const syncState = (_a = props.store) == null ? void 0 : _a.getState();\n  const collection = createCollectionStore(props);\n  const activeId = defaultValue(\n    props.activeId,\n    syncState == null ? void 0 : syncState.activeId,\n    props.defaultActiveId\n  );\n  const initialState = __spreadProps(__spreadValues({}, collection.getState()), {\n    id: defaultValue(\n      props.id,\n      syncState == null ? void 0 : syncState.id,\n      `id-${Math.random().toString(36).slice(2, 8)}`\n    ),\n    activeId,\n    baseElement: defaultValue(syncState == null ? void 0 : syncState.baseElement, null),\n    includesBaseElement: defaultValue(\n      props.includesBaseElement,\n      syncState == null ? void 0 : syncState.includesBaseElement,\n      activeId === null\n    ),\n    moves: defaultValue(syncState == null ? void 0 : syncState.moves, 0),\n    orientation: defaultValue(\n      props.orientation,\n      syncState == null ? void 0 : syncState.orientation,\n      \"both\"\n    ),\n    rtl: defaultValue(props.rtl, syncState == null ? void 0 : syncState.rtl, false),\n    virtualFocus: defaultValue(\n      props.virtualFocus,\n      syncState == null ? void 0 : syncState.virtualFocus,\n      false\n    ),\n    focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, false),\n    focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, false),\n    focusShift: defaultValue(props.focusShift, syncState == null ? void 0 : syncState.focusShift, false)\n  });\n  const composite = createStore(initialState, collection, props.store);\n  setup(\n    composite,\n    () => sync(composite, [\"renderedItems\", \"activeId\"], (state) => {\n      composite.setState(\"activeId\", (activeId2) => {\n        var _a2;\n        if (activeId2 !== void 0) return activeId2;\n        return (_a2 = findFirstEnabledItem(state.renderedItems)) == null ? void 0 : _a2.id;\n      });\n    })\n  );\n  const getNextId = (direction = \"next\", options = {}) => {\n    var _a2, _b;\n    const defaultState = composite.getState();\n    const {\n      skip = 0,\n      activeId: activeId2 = defaultState.activeId,\n      focusShift = defaultState.focusShift,\n      focusLoop = defaultState.focusLoop,\n      focusWrap = defaultState.focusWrap,\n      includesBaseElement = defaultState.includesBaseElement,\n      renderedItems = defaultState.renderedItems,\n      rtl = defaultState.rtl\n    } = options;\n    const isVerticalDirection = direction === \"up\" || direction === \"down\";\n    const isNextDirection = direction === \"next\" || direction === \"down\";\n    const canReverse = isNextDirection ? rtl && !isVerticalDirection : !rtl || isVerticalDirection;\n    const canShift = focusShift && !skip;\n    let items = !isVerticalDirection ? renderedItems : flatten2DArray(\n      normalizeRows(groupItemsByRows(renderedItems), activeId2, canShift)\n    );\n    items = canReverse ? reverseArray(items) : items;\n    items = isVerticalDirection ? verticalizeItems(items) : items;\n    if (activeId2 == null) {\n      return (_a2 = findFirstEnabledItem(items)) == null ? void 0 : _a2.id;\n    }\n    const activeItem = items.find((item) => item.id === activeId2);\n    if (!activeItem) {\n      return (_b = findFirstEnabledItem(items)) == null ? void 0 : _b.id;\n    }\n    const isGrid = items.some((item) => item.rowId);\n    const activeIndex = items.indexOf(activeItem);\n    const nextItems = items.slice(activeIndex + 1);\n    const nextItemsInRow = getItemsInRow(nextItems, activeItem.rowId);\n    if (skip) {\n      const nextEnabledItemsInRow = getEnabledItems(nextItemsInRow, activeId2);\n      const nextItem2 = nextEnabledItemsInRow.slice(skip)[0] || // If we can't find an item, just return the last one.\n      nextEnabledItemsInRow[nextEnabledItemsInRow.length - 1];\n      return nextItem2 == null ? void 0 : nextItem2.id;\n    }\n    const canLoop = focusLoop && (isVerticalDirection ? focusLoop !== \"horizontal\" : focusLoop !== \"vertical\");\n    const canWrap = isGrid && focusWrap && (isVerticalDirection ? focusWrap !== \"horizontal\" : focusWrap !== \"vertical\");\n    const hasNullItem = isNextDirection ? (!isGrid || isVerticalDirection) && canLoop && includesBaseElement : isVerticalDirection ? includesBaseElement : false;\n    if (canLoop) {\n      const loopItems = canWrap && !hasNullItem ? items : getItemsInRow(items, activeItem.rowId);\n      const sortedItems = flipItems(loopItems, activeId2, hasNullItem);\n      const nextItem2 = findFirstEnabledItem(sortedItems, activeId2);\n      return nextItem2 == null ? void 0 : nextItem2.id;\n    }\n    if (canWrap) {\n      const nextItem2 = findFirstEnabledItem(\n        // We can use nextItems, which contains all the next items, including\n        // items from other rows, to wrap between rows. However, if there is a\n        // null item (the composite container), we'll only use the next items in\n        // the row. So moving next from the last item will focus on the\n        // composite container. On grid composites, horizontal navigation never\n        // focuses on the composite container, only vertical.\n        hasNullItem ? nextItemsInRow : nextItems,\n        activeId2\n      );\n      const nextId = hasNullItem ? (nextItem2 == null ? void 0 : nextItem2.id) || null : nextItem2 == null ? void 0 : nextItem2.id;\n      return nextId;\n    }\n    const nextItem = findFirstEnabledItem(nextItemsInRow, activeId2);\n    if (!nextItem && hasNullItem) {\n      return null;\n    }\n    return nextItem == null ? void 0 : nextItem.id;\n  };\n  return __spreadProps(__spreadValues(__spreadValues({}, collection), composite), {\n    setBaseElement: (element) => composite.setState(\"baseElement\", element),\n    setActiveId: (id) => composite.setState(\"activeId\", id),\n    move: (id) => {\n      if (id === void 0) return;\n      composite.setState(\"activeId\", id);\n      composite.setState(\"moves\", (moves) => moves + 1);\n    },\n    first: () => {\n      var _a2;\n      return (_a2 = findFirstEnabledItem(composite.getState().renderedItems)) == null ? void 0 : _a2.id;\n    },\n    last: () => {\n      var _a2;\n      return (_a2 = findFirstEnabledItem(reverseArray(composite.getState().renderedItems))) == null ? void 0 : _a2.id;\n    },\n    next: (options) => {\n      if (options !== void 0 && typeof options === \"number\") {\n        options = { skip: options };\n      }\n      return getNextId(\"next\", options);\n    },\n    previous: (options) => {\n      if (options !== void 0 && typeof options === \"number\") {\n        options = { skip: options };\n      }\n      return getNextId(\"previous\", options);\n    },\n    down: (options) => {\n      if (options !== void 0 && typeof options === \"number\") {\n        options = { skip: options };\n      }\n      return getNextId(\"down\", options);\n    },\n    up: (options) => {\n      if (options !== void 0 && typeof options === \"number\") {\n        options = { skip: options };\n      }\n      return getNextId(\"up\", options);\n    }\n  });\n}\n\nexport {\n  createCompositeStore\n};\n", "\"use client\";\nimport {\n  useCollectionStoreProps\n} from \"./C3IKGW5T.js\";\nimport {\n  useStore,\n  useStoreProps\n} from \"./YV4JVR4I.js\";\nimport {\n  useId\n} from \"./ABQUS43J.js\";\nimport {\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/composite/composite-store.ts\nimport * as Core from \"@ariakit/core/composite/composite-store\";\nfunction useCompositeStoreOptions(props) {\n  const id = useId(props.id);\n  return __spreadValues({ id }, props);\n}\nfunction useCompositeStoreProps(store, update, props) {\n  store = useCollectionStoreProps(store, update, props);\n  useStoreProps(store, props, \"activeId\", \"setActiveId\");\n  useStoreProps(store, props, \"includesBaseElement\");\n  useStoreProps(store, props, \"virtualFocus\");\n  useStoreProps(store, props, \"orientation\");\n  useStoreProps(store, props, \"rtl\");\n  useStoreProps(store, props, \"focusLoop\");\n  useStoreProps(store, props, \"focusWrap\");\n  useStoreProps(store, props, \"focusShift\");\n  return store;\n}\nfunction useCompositeStore(props = {}) {\n  props = useCompositeStoreOptions(props);\n  const [store, update] = useStore(Core.createCompositeStore, props);\n  return useCompositeStoreProps(store, update, props);\n}\n\nexport {\n  useCompositeStoreOptions,\n  useCompositeStoreProps,\n  useCompositeStore\n};\n", "\"use client\";\nimport {\n  createStore,\n  mergeStore,\n  omit,\n  setup,\n  subscribe,\n  sync,\n  throwOnConflictingProps\n} from \"./BCALMBPZ.js\";\nimport {\n  defaultValue\n} from \"./PBFD2E7P.js\";\nimport {\n  __spreadProps,\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/disclosure/disclosure-store.ts\nfunction createDisclosureStore(props = {}) {\n  const store = mergeStore(\n    props.store,\n    omit(props.disclosure, [\"contentElement\", \"disclosureElement\"])\n  );\n  throwOnConflictingProps(props, store);\n  const syncState = store == null ? void 0 : store.getState();\n  const open = defaultValue(\n    props.open,\n    syncState == null ? void 0 : syncState.open,\n    props.defaultOpen,\n    false\n  );\n  const animated = defaultValue(props.animated, syncState == null ? void 0 : syncState.animated, false);\n  const initialState = {\n    open,\n    animated,\n    animating: !!animated && open,\n    mounted: open,\n    contentElement: defaultValue(syncState == null ? void 0 : syncState.contentElement, null),\n    disclosureElement: defaultValue(syncState == null ? void 0 : syncState.disclosureElement, null)\n  };\n  const disclosure = createStore(initialState, store);\n  setup(\n    disclosure,\n    () => sync(disclosure, [\"animated\", \"animating\"], (state) => {\n      if (state.animated) return;\n      disclosure.setState(\"animating\", false);\n    })\n  );\n  setup(\n    disclosure,\n    () => subscribe(disclosure, [\"open\"], () => {\n      if (!disclosure.getState().animated) return;\n      disclosure.setState(\"animating\", true);\n    })\n  );\n  setup(\n    disclosure,\n    () => sync(disclosure, [\"open\", \"animating\"], (state) => {\n      disclosure.setState(\"mounted\", state.open || state.animating);\n    })\n  );\n  return __spreadProps(__spreadValues({}, disclosure), {\n    disclosure: props.disclosure,\n    setOpen: (value) => disclosure.setState(\"open\", value),\n    show: () => disclosure.setState(\"open\", true),\n    hide: () => disclosure.setState(\"open\", false),\n    toggle: () => disclosure.setState(\"open\", (open2) => !open2),\n    stopAnimation: () => disclosure.setState(\"animating\", false),\n    setContentElement: (value) => disclosure.setState(\"contentElement\", value),\n    setDisclosureElement: (value) => disclosure.setState(\"disclosureElement\", value)\n  });\n}\n\nexport {\n  createDisclosureStore\n};\n", "\"use client\";\nimport {\n  useStore,\n  useStoreProps\n} from \"./YV4JVR4I.js\";\nimport {\n  useUpdateEffect\n} from \"./ABQUS43J.js\";\n\n// src/disclosure/disclosure-store.ts\nimport * as Core from \"@ariakit/core/disclosure/disclosure-store\";\nfunction useDisclosureStoreProps(store, update, props) {\n  useUpdateEffect(update, [props.store, props.disclosure]);\n  useStoreProps(store, props, \"open\", \"setOpen\");\n  useStoreProps(store, props, \"mounted\", \"setMounted\");\n  useStoreProps(store, props, \"animated\");\n  return Object.assign(store, { disclosure: props.disclosure });\n}\nfunction useDisclosureStore(props = {}) {\n  const [store, update] = useStore(Core.createDisclosureStore, props);\n  return useDisclosureStoreProps(store, update, props);\n}\n\nexport {\n  useDisclosureStoreProps,\n  useDisclosureStore\n};\n", "\"use client\";\nimport {\n  createDisclosureStore\n} from \"./RCQ5P4YE.js\";\n\n// src/dialog/dialog-store.ts\nfunction createDialogStore(props = {}) {\n  return createDisclosureStore(props);\n}\n\nexport {\n  createDialogStore\n};\n", "\"use client\";\nimport {\n  useDisclosureStoreProps\n} from \"./WYCIER3C.js\";\nimport {\n  useStore\n} from \"./YV4JVR4I.js\";\n\n// src/dialog/dialog-store.ts\nimport * as Core from \"@ariakit/core/dialog/dialog-store\";\nfunction useDialogStoreProps(store, update, props) {\n  return useDisclosureStoreProps(store, update, props);\n}\nfunction useDialogStore(props = {}) {\n  const [store, update] = useStore(Core.createDialogStore, props);\n  return useDialogStoreProps(store, update, props);\n}\n\nexport {\n  useDialogStoreProps,\n  useDialogStore\n};\n", "\"use client\";\nimport {\n  createDialogStore\n} from \"./FZZ2AVHF.js\";\nimport {\n  createStore,\n  mergeStore,\n  omit,\n  throwOnConflictingProps\n} from \"./BCALMBPZ.js\";\nimport {\n  defaultValue\n} from \"./PBFD2E7P.js\";\nimport {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/popover/popover-store.ts\nfunction createPopoverStore(_a = {}) {\n  var _b = _a, {\n    popover: otherPopover\n  } = _b, props = __objRest(_b, [\n    \"popover\"\n  ]);\n  const store = mergeStore(\n    props.store,\n    omit(otherPopover, [\n      \"arrowElement\",\n      \"anchorElement\",\n      \"contentElement\",\n      \"popoverElement\",\n      \"disclosureElement\"\n    ])\n  );\n  throwOnConflictingProps(props, store);\n  const syncState = store == null ? void 0 : store.getState();\n  const dialog = createDialogStore(__spreadProps(__spreadValues({}, props), { store }));\n  const placement = defaultValue(\n    props.placement,\n    syncState == null ? void 0 : syncState.placement,\n    \"bottom\"\n  );\n  const initialState = __spreadProps(__spreadValues({}, dialog.getState()), {\n    placement,\n    currentPlacement: placement,\n    anchorElement: defaultValue(syncState == null ? void 0 : syncState.anchorElement, null),\n    popoverElement: defaultValue(syncState == null ? void 0 : syncState.popoverElement, null),\n    arrowElement: defaultValue(syncState == null ? void 0 : syncState.arrowElement, null),\n    rendered: Symbol(\"rendered\")\n  });\n  const popover = createStore(initialState, dialog, store);\n  return __spreadProps(__spreadValues(__spreadValues({}, dialog), popover), {\n    setAnchorElement: (element) => popover.setState(\"anchorElement\", element),\n    setPopoverElement: (element) => popover.setState(\"popoverElement\", element),\n    setArrowElement: (element) => popover.setState(\"arrowElement\", element),\n    render: () => popover.setState(\"rendered\", Symbol(\"rendered\"))\n  });\n}\n\nexport {\n  createPopoverStore\n};\n", "\"use client\";\nimport {\n  useDialogStoreProps\n} from \"./BM6PGYQY.js\";\nimport {\n  useStore,\n  useStoreProps\n} from \"./YV4JVR4I.js\";\nimport {\n  useUpdateEffect\n} from \"./ABQUS43J.js\";\n\n// src/popover/popover-store.ts\nimport * as Core from \"@ariakit/core/popover/popover-store\";\nfunction usePopoverStoreProps(store, update, props) {\n  useUpdateEffect(update, [props.popover]);\n  useStoreProps(store, props, \"placement\");\n  return useDialogStoreProps(store, update, props);\n}\nfunction usePopoverStore(props = {}) {\n  const [store, update] = useStore(Core.createPopoverStore, props);\n  return usePopoverStoreProps(store, update, props);\n}\n\nexport {\n  usePopoverStoreProps,\n  usePopoverStore\n};\n", "\"use client\";\nimport {\n  createCompositeStore\n} from \"../__chunks/AJZ4BYF3.js\";\nimport \"../__chunks/CYQWQL4J.js\";\nimport \"../__chunks/7PRQYBBV.js\";\nimport {\n  createPopoverStore\n} from \"../__chunks/ME2CUF3F.js\";\nimport \"../__chunks/FZZ2AVHF.js\";\nimport \"../__chunks/RCQ5P4YE.js\";\nimport {\n  batch,\n  createStore,\n  mergeStore,\n  pick,\n  setup,\n  sync,\n  throwOnConflictingProps\n} from \"../__chunks/BCALMBPZ.js\";\nimport {\n  chain,\n  defaultValue\n} from \"../__chunks/PBFD2E7P.js\";\nimport {\n  isSafari,\n  isTouchDevice\n} from \"../__chunks/QAGXQEUG.js\";\nimport \"../__chunks/DTR5TSDJ.js\";\nimport {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"../__chunks/3YLGPPWQ.js\";\n\n// src/combobox/combobox-store.ts\nvar isTouchSafari = isSafari() && isTouchDevice();\nfunction createComboboxStore(_a = {}) {\n  var _b = _a, {\n    tag\n  } = _b, props = __objRest(_b, [\n    \"tag\"\n  ]);\n  const store = mergeStore(props.store, pick(tag, [\"value\", \"rtl\"]));\n  throwOnConflictingProps(props, store);\n  const tagState = tag == null ? void 0 : tag.getState();\n  const syncState = store == null ? void 0 : store.getState();\n  const activeId = defaultValue(\n    props.activeId,\n    syncState == null ? void 0 : syncState.activeId,\n    props.defaultActiveId,\n    null\n  );\n  const composite = createCompositeStore(__spreadProps(__spreadValues({}, props), {\n    activeId,\n    includesBaseElement: defaultValue(\n      props.includesBaseElement,\n      syncState == null ? void 0 : syncState.includesBaseElement,\n      true\n    ),\n    orientation: defaultValue(\n      props.orientation,\n      syncState == null ? void 0 : syncState.orientation,\n      \"vertical\"\n    ),\n    focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, true),\n    focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, true),\n    virtualFocus: defaultValue(\n      props.virtualFocus,\n      syncState == null ? void 0 : syncState.virtualFocus,\n      true\n    )\n  }));\n  const popover = createPopoverStore(__spreadProps(__spreadValues({}, props), {\n    placement: defaultValue(\n      props.placement,\n      syncState == null ? void 0 : syncState.placement,\n      \"bottom-start\"\n    )\n  }));\n  const value = defaultValue(\n    props.value,\n    syncState == null ? void 0 : syncState.value,\n    props.defaultValue,\n    \"\"\n  );\n  const selectedValue = defaultValue(\n    props.selectedValue,\n    syncState == null ? void 0 : syncState.selectedValue,\n    tagState == null ? void 0 : tagState.values,\n    props.defaultSelectedValue,\n    \"\"\n  );\n  const multiSelectable = Array.isArray(selectedValue);\n  const initialState = __spreadProps(__spreadValues(__spreadValues({}, composite.getState()), popover.getState()), {\n    value,\n    selectedValue,\n    resetValueOnSelect: defaultValue(\n      props.resetValueOnSelect,\n      syncState == null ? void 0 : syncState.resetValueOnSelect,\n      multiSelectable\n    ),\n    resetValueOnHide: defaultValue(\n      props.resetValueOnHide,\n      syncState == null ? void 0 : syncState.resetValueOnHide,\n      multiSelectable && !tag\n    ),\n    activeValue: syncState == null ? void 0 : syncState.activeValue\n  });\n  const combobox = createStore(initialState, composite, popover, store);\n  if (isTouchSafari) {\n    setup(\n      combobox,\n      () => sync(combobox, [\"virtualFocus\"], () => {\n        combobox.setState(\"virtualFocus\", false);\n      })\n    );\n  }\n  setup(combobox, () => {\n    if (!tag) return;\n    return chain(\n      sync(combobox, [\"selectedValue\"], (state) => {\n        if (!Array.isArray(state.selectedValue)) return;\n        tag.setValues(state.selectedValue);\n      }),\n      sync(tag, [\"values\"], (state) => {\n        combobox.setState(\"selectedValue\", state.values);\n      })\n    );\n  });\n  setup(\n    combobox,\n    () => sync(combobox, [\"resetValueOnHide\", \"mounted\"], (state) => {\n      if (!state.resetValueOnHide) return;\n      if (state.mounted) return;\n      combobox.setState(\"value\", value);\n    })\n  );\n  setup(\n    combobox,\n    () => sync(combobox, [\"open\"], (state) => {\n      if (state.open) return;\n      combobox.setState(\"activeId\", activeId);\n      combobox.setState(\"moves\", 0);\n    })\n  );\n  setup(\n    combobox,\n    () => sync(combobox, [\"moves\", \"activeId\"], (state, prevState) => {\n      if (state.moves === prevState.moves) {\n        combobox.setState(\"activeValue\", void 0);\n      }\n    })\n  );\n  setup(\n    combobox,\n    () => batch(combobox, [\"moves\", \"renderedItems\"], (state, prev) => {\n      if (state.moves === prev.moves) return;\n      const { activeId: activeId2 } = combobox.getState();\n      const activeItem = composite.item(activeId2);\n      combobox.setState(\"activeValue\", activeItem == null ? void 0 : activeItem.value);\n    })\n  );\n  return __spreadProps(__spreadValues(__spreadValues(__spreadValues({}, popover), composite), combobox), {\n    tag,\n    setValue: (value2) => combobox.setState(\"value\", value2),\n    resetValue: () => combobox.setState(\"value\", initialState.value),\n    setSelectedValue: (selectedValue2) => combobox.setState(\"selectedValue\", selectedValue2)\n  });\n}\nexport {\n  createComboboxStore\n};\n", "\"use client\";\nimport {\n  useTagContext\n} from \"./3XAVFTCA.js\";\nimport {\n  useCompositeStoreOptions,\n  useCompositeStoreProps\n} from \"./4CMBR7SL.js\";\nimport {\n  usePopoverStoreProps\n} from \"./O2PQ2652.js\";\nimport {\n  useStore,\n  useStoreProps\n} from \"./YV4JVR4I.js\";\nimport {\n  useUpdateEffect\n} from \"./ABQUS43J.js\";\nimport {\n  __spreadProps,\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/combobox/combobox-store.ts\nimport * as Core from \"@ariakit/core/combobox/combobox-store\";\nfunction useComboboxStoreOptions(props) {\n  const tag = useTagContext();\n  props = __spreadProps(__spreadValues({}, props), {\n    tag: props.tag !== void 0 ? props.tag : tag\n  });\n  return useCompositeStoreOptions(props);\n}\nfunction useComboboxStoreProps(store, update, props) {\n  useUpdateEffect(update, [props.tag]);\n  useStoreProps(store, props, \"value\", \"setValue\");\n  useStoreProps(store, props, \"selectedValue\", \"setSelectedValue\");\n  useStoreProps(store, props, \"resetValueOnHide\");\n  useStoreProps(store, props, \"resetValueOnSelect\");\n  return Object.assign(\n    useCompositeStoreProps(\n      usePopoverStoreProps(store, update, props),\n      update,\n      props\n    ),\n    { tag: props.tag }\n  );\n}\nfunction useComboboxStore(props = {}) {\n  props = useComboboxStoreOptions(props);\n  const [store, update] = useStore(Core.createComboboxStore, props);\n  return useComboboxStoreProps(store, update, props);\n}\n\nexport {\n  useComboboxStoreOptions,\n  useComboboxStoreProps,\n  useComboboxStore\n};\n", "\"use client\";\nimport {\n  createStoreContext\n} from \"./LMDWO4NN.js\";\n\n// src/disclosure/disclosure-context.tsx\nvar ctx = createStoreContext();\nvar useDisclosureContext = ctx.useContext;\nvar useDisclosureScopedContext = ctx.useScopedContext;\nvar useDisclosureProviderContext = ctx.useProviderContext;\nvar DisclosureContextProvider = ctx.ContextProvider;\nvar DisclosureScopedContextProvider = ctx.ScopedContextProvider;\n\nexport {\n  useDisclosureContext,\n  useDisclosureScopedContext,\n  useDisclosureProviderContext,\n  DisclosureContextProvider,\n  DisclosureScopedContextProvider\n};\n", "\"use client\";\nimport {\n  DisclosureContextProvider,\n  DisclosureScopedContextProvider\n} from \"./S6EF7IVO.js\";\nimport {\n  createStoreContext\n} from \"./LMDWO4NN.js\";\n\n// src/dialog/dialog-context.tsx\nimport { createContext } from \"react\";\nvar ctx = createStoreContext(\n  [DisclosureContextProvider],\n  [DisclosureScopedContextProvider]\n);\nvar useDialogContext = ctx.useContext;\nvar useDialogScopedContext = ctx.useScopedContext;\nvar useDialogProviderContext = ctx.useProviderContext;\nvar DialogContextProvider = ctx.ContextProvider;\nvar DialogScopedContextProvider = ctx.ScopedContextProvider;\nvar DialogHeadingContext = createContext(void 0);\nvar DialogDescriptionContext = createContext(void 0);\n\nexport {\n  useDialogContext,\n  useDialogScopedContext,\n  useDialogProviderContext,\n  DialogContextProvider,\n  DialogScopedContextProvider,\n  DialogHeadingContext,\n  DialogDescriptionContext\n};\n", "\"use client\";\nimport {\n  DialogContextProvider,\n  DialogScopedContextProvider\n} from \"./RS7LB2H4.js\";\nimport {\n  createStoreContext\n} from \"./LMDWO4NN.js\";\n\n// src/popover/popover-context.tsx\nvar ctx = createStoreContext(\n  [DialogContextProvider],\n  [DialogScopedContextProvider]\n);\nvar usePopoverContext = ctx.useContext;\nvar usePopoverScopedContext = ctx.useScopedContext;\nvar usePopoverProviderContext = ctx.useProviderContext;\nvar PopoverContextProvider = ctx.ContextProvider;\nvar PopoverScopedContextProvider = ctx.ScopedContextProvider;\n\nexport {\n  usePopoverContext,\n  usePopoverScopedContext,\n  usePopoverProviderContext,\n  PopoverContextProvider,\n  PopoverScopedContextProvider\n};\n", "\"use client\";\nimport {\n  CompositeContextProvider,\n  CompositeScopedContextProvider\n} from \"./P7GR5CS5.js\";\nimport {\n  PopoverContextProvider,\n  PopoverScopedContextProvider\n} from \"./MTZPJQMC.js\";\nimport {\n  createStoreContext\n} from \"./LMDWO4NN.js\";\n\n// src/combobox/combobox-context.tsx\nimport { createContext } from \"react\";\nvar ComboboxListRoleContext = createContext(\n  void 0\n);\nvar ctx = createStoreContext(\n  [PopoverContextProvider, CompositeContextProvider],\n  [PopoverScopedContextProvider, CompositeScopedContextProvider]\n);\nvar useComboboxContext = ctx.useContext;\nvar useComboboxScopedContext = ctx.useScopedContext;\nvar useComboboxProviderContext = ctx.useProviderContext;\nvar ComboboxContextProvider = ctx.ContextProvider;\nvar ComboboxScopedContextProvider = ctx.ScopedContextProvider;\nvar ComboboxItemValueContext = createContext(\n  void 0\n);\nvar ComboboxItemCheckedContext = createContext(false);\n\nexport {\n  ComboboxListRoleContext,\n  useComboboxContext,\n  useComboboxScopedContext,\n  useComboboxProviderContext,\n  ComboboxContextProvider,\n  ComboboxScopedContextProvider,\n  ComboboxItemValueContext,\n  ComboboxItemCheckedContext\n};\n", "\"use client\";\nimport {\n  usePopoverProviderContext\n} from \"./MTZPJQMC.js\";\nimport {\n  createElement,\n  createHook,\n  forwardRef\n} from \"./LMDWO4NN.js\";\nimport {\n  useMergeRefs\n} from \"./ABQUS43J.js\";\nimport {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/popover/popover-anchor.tsx\nvar TagName = \"div\";\nvar usePopoverAnchor = createHook(\n  function usePopoverAnchor2(_a) {\n    var _b = _a, { store } = _b, props = __objRest(_b, [\"store\"]);\n    const context = usePopoverProviderContext();\n    store = store || context;\n    props = __spreadProps(__spreadValues({}, props), {\n      ref: useMergeRefs(store == null ? void 0 : store.setAnchorElement, props.ref)\n    });\n    return props;\n  }\n);\nvar PopoverAnchor = forwardRef(function PopoverAnchor2(props) {\n  const htmlProps = usePopoverAnchor(props);\n  return createElement(TagName, htmlProps);\n});\n\nexport {\n  usePopoverAnchor,\n  PopoverAnchor\n};\n", "\"use client\";\n\n// src/composite/utils.ts\nimport { getDocument, isTextField } from \"@ariakit/core/utils/dom\";\nvar NULL_ITEM = { id: null };\nfunction flipItems(items, activeId, shouldInsertNullItem = false) {\n  const index = items.findIndex((item) => item.id === activeId);\n  return [\n    ...items.slice(index + 1),\n    ...shouldInsertNullItem ? [NULL_ITEM] : [],\n    ...items.slice(0, index)\n  ];\n}\nfunction findFirstEnabledItem(items, excludeId) {\n  return items.find((item) => {\n    if (excludeId) {\n      return !item.disabled && item.id !== excludeId;\n    }\n    return !item.disabled;\n  });\n}\nfunction getEnabledItem(store, id) {\n  if (!id) return null;\n  return store.item(id) || null;\n}\nfunction groupItemsByRows(items) {\n  const rows = [];\n  for (const item of items) {\n    const row = rows.find((currentRow) => {\n      var _a;\n      return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId;\n    });\n    if (row) {\n      row.push(item);\n    } else {\n      rows.push([item]);\n    }\n  }\n  return rows;\n}\nfunction selectTextField(element, collapseToEnd = false) {\n  if (isTextField(element)) {\n    element.setSelectionRange(\n      collapseToEnd ? element.value.length : 0,\n      element.value.length\n    );\n  } else if (element.isContentEditable) {\n    const selection = getDocument(element).getSelection();\n    selection == null ? void 0 : selection.selectAllChildren(element);\n    if (collapseToEnd) {\n      selection == null ? void 0 : selection.collapseToEnd();\n    }\n  }\n}\nvar FOCUS_SILENTLY = Symbol(\"FOCUS_SILENTLY\");\nfunction focusSilently(element) {\n  element[FOCUS_SILENTLY] = true;\n  element.focus({ preventScroll: true });\n}\nfunction silentlyFocused(element) {\n  const isSilentlyFocused = element[FOCUS_SILENTLY];\n  delete element[FOCUS_SILENTLY];\n  return isSilentlyFocused;\n}\nfunction isItem(store, element, exclude) {\n  if (!element) return false;\n  if (element === exclude) return false;\n  const item = store.item(element.id);\n  if (!item) return false;\n  if (exclude && item.element === exclude) return false;\n  return true;\n}\n\nexport {\n  flipItems,\n  findFirstEnabledItem,\n  getEnabledItem,\n  groupItemsByRows,\n  selectTextField,\n  focusSilently,\n  silentlyFocused,\n  isItem\n};\n", "\"use client\";\n\n// src/focusable/focusable-context.tsx\nimport { createContext } from \"react\";\nvar FocusableContext = createContext(true);\n\nexport {\n  FocusableContext\n};\n", "\"use client\";\nimport {\n  contains,\n  getActiveElement,\n  isFrame,\n  isVisible\n} from \"../__chunks/DTR5TSDJ.js\";\nimport {\n  __spreadValues\n} from \"../__chunks/3YLGPPWQ.js\";\n\n// src/utils/focus.ts\nvar 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'])\";\nfunction hasNegativeTabIndex(element) {\n  const tabIndex = Number.parseInt(element.getAttribute(\"tabindex\") || \"0\", 10);\n  return tabIndex < 0;\n}\nfunction isFocusable(element) {\n  if (!element.matches(selector)) return false;\n  if (!isVisible(element)) return false;\n  if (element.closest(\"[inert]\")) return false;\n  return true;\n}\nfunction isTabbable(element) {\n  if (!isFocusable(element)) return false;\n  if (hasNegativeTabIndex(element)) return false;\n  if (!(\"form\" in element)) return true;\n  if (!element.form) return true;\n  if (element.checked) return true;\n  if (element.type !== \"radio\") return true;\n  const radioGroup = element.form.elements.namedItem(element.name);\n  if (!radioGroup) return true;\n  if (!(\"length\" in radioGroup)) return true;\n  const activeElement = getActiveElement(element);\n  if (!activeElement) return true;\n  if (activeElement === element) return true;\n  if (!(\"form\" in activeElement)) return true;\n  if (activeElement.form !== element.form) return true;\n  if (activeElement.name !== element.name) return true;\n  return false;\n}\nfunction getAllFocusableIn(container, includeContainer) {\n  const elements = Array.from(\n    container.querySelectorAll(selector)\n  );\n  if (includeContainer) {\n    elements.unshift(container);\n  }\n  const focusableElements = elements.filter(isFocusable);\n  focusableElements.forEach((element, i) => {\n    if (isFrame(element) && element.contentDocument) {\n      const frameBody = element.contentDocument.body;\n      focusableElements.splice(i, 1, ...getAllFocusableIn(frameBody));\n    }\n  });\n  return focusableElements;\n}\nfunction getAllFocusable(includeBody) {\n  return getAllFocusableIn(document.body, includeBody);\n}\nfunction getFirstFocusableIn(container, includeContainer) {\n  const [first] = getAllFocusableIn(container, includeContainer);\n  return first || null;\n}\nfunction getFirstFocusable(includeBody) {\n  return getFirstFocusableIn(document.body, includeBody);\n}\nfunction getAllTabbableIn(container, includeContainer, fallbackToFocusable) {\n  const elements = Array.from(\n    container.querySelectorAll(selector)\n  );\n  const tabbableElements = elements.filter(isTabbable);\n  if (includeContainer && isTabbable(container)) {\n    tabbableElements.unshift(container);\n  }\n  tabbableElements.forEach((element, i) => {\n    if (isFrame(element) && element.contentDocument) {\n      const frameBody = element.contentDocument.body;\n      const allFrameTabbable = getAllTabbableIn(\n        frameBody,\n        false,\n        fallbackToFocusable\n      );\n      tabbableElements.splice(i, 1, ...allFrameTabbable);\n    }\n  });\n  if (!tabbableElements.length && fallbackToFocusable) {\n    return elements;\n  }\n  return tabbableElements;\n}\nfunction getAllTabbable(fallbackToFocusable) {\n  return getAllTabbableIn(document.body, false, fallbackToFocusable);\n}\nfunction getFirstTabbableIn(container, includeContainer, fallbackToFocusable) {\n  const [first] = getAllTabbableIn(\n    container,\n    includeContainer,\n    fallbackToFocusable\n  );\n  return first || null;\n}\nfunction getFirstTabbable(fallbackToFocusable) {\n  return getFirstTabbableIn(document.body, false, fallbackToFocusable);\n}\nfunction getLastTabbableIn(container, includeContainer, fallbackToFocusable) {\n  const allTabbable = getAllTabbableIn(\n    container,\n    includeContainer,\n    fallbackToFocusable\n  );\n  return allTabbable[allTabbable.length - 1] || null;\n}\nfunction getLastTabbable(fallbackToFocusable) {\n  return getLastTabbableIn(document.body, false, fallbackToFocusable);\n}\nfunction getNextTabbableIn(container, includeContainer, fallbackToFirst, fallbackToFocusable) {\n  const activeElement = getActiveElement(container);\n  const allFocusable = getAllFocusableIn(container, includeContainer);\n  const activeIndex = allFocusable.indexOf(activeElement);\n  const nextFocusableElements = allFocusable.slice(activeIndex + 1);\n  return nextFocusableElements.find(isTabbable) || (fallbackToFirst ? allFocusable.find(isTabbable) : null) || (fallbackToFocusable ? nextFocusableElements[0] : null) || null;\n}\nfunction getNextTabbable(fallbackToFirst, fallbackToFocusable) {\n  return getNextTabbableIn(\n    document.body,\n    false,\n    fallbackToFirst,\n    fallbackToFocusable\n  );\n}\nfunction getPreviousTabbableIn(container, includeContainer, fallbackToLast, fallbackToFocusable) {\n  const activeElement = getActiveElement(container);\n  const allFocusable = getAllFocusableIn(container, includeContainer).reverse();\n  const activeIndex = allFocusable.indexOf(activeElement);\n  const previousFocusableElements = allFocusable.slice(activeIndex + 1);\n  return previousFocusableElements.find(isTabbable) || (fallbackToLast ? allFocusable.find(isTabbable) : null) || (fallbackToFocusable ? previousFocusableElements[0] : null) || null;\n}\nfunction getPreviousTabbable(fallbackToFirst, fallbackToFocusable) {\n  return getPreviousTabbableIn(\n    document.body,\n    false,\n    fallbackToFirst,\n    fallbackToFocusable\n  );\n}\nfunction getClosestFocusable(element) {\n  while (element && !isFocusable(element)) {\n    element = element.closest(selector);\n  }\n  return element || null;\n}\nfunction hasFocus(element) {\n  const activeElement = getActiveElement(element);\n  if (!activeElement) return false;\n  if (activeElement === element) return true;\n  const activeDescendant = activeElement.getAttribute(\"aria-activedescendant\");\n  if (!activeDescendant) return false;\n  return activeDescendant === element.id;\n}\nfunction hasFocusWithin(element) {\n  const activeElement = getActiveElement(element);\n  if (!activeElement) return false;\n  if (contains(element, activeElement)) return true;\n  const activeDescendant = activeElement.getAttribute(\"aria-activedescendant\");\n  if (!activeDescendant) return false;\n  if (!(\"id\" in element)) return false;\n  if (activeDescendant === element.id) return true;\n  return !!element.querySelector(`#${CSS.escape(activeDescendant)}`);\n}\nfunction focusIfNeeded(element) {\n  if (!hasFocusWithin(element) && isFocusable(element)) {\n    element.focus();\n  }\n}\nfunction disableFocus(element) {\n  var _a;\n  const currentTabindex = (_a = element.getAttribute(\"tabindex\")) != null ? _a : \"\";\n  element.setAttribute(\"data-tabindex\", currentTabindex);\n  element.setAttribute(\"tabindex\", \"-1\");\n}\nfunction disableFocusIn(container, includeContainer) {\n  const tabbableElements = getAllTabbableIn(container, includeContainer);\n  for (const element of tabbableElements) {\n    disableFocus(element);\n  }\n}\nfunction restoreFocusIn(container) {\n  const elements = container.querySelectorAll(\"[data-tabindex]\");\n  const restoreTabIndex = (element) => {\n    const tabindex = element.getAttribute(\"data-tabindex\");\n    element.removeAttribute(\"data-tabindex\");\n    if (tabindex) {\n      element.setAttribute(\"tabindex\", tabindex);\n    } else {\n      element.removeAttribute(\"tabindex\");\n    }\n  };\n  if (container.hasAttribute(\"data-tabindex\")) {\n    restoreTabIndex(container);\n  }\n  for (const element of elements) {\n    restoreTabIndex(element);\n  }\n}\nfunction focusIntoView(element, options) {\n  if (!(\"scrollIntoView\" in element)) {\n    element.focus();\n  } else {\n    element.focus({ preventScroll: true });\n    element.scrollIntoView(__spreadValues({ block: \"nearest\", inline: \"nearest\" }, options));\n  }\n}\nexport {\n  disableFocus,\n  disableFocusIn,\n  focusIfNeeded,\n  focusIntoView,\n  getAllFocusable,\n  getAllFocusableIn,\n  getAllTabbable,\n  getAllTabbableIn,\n  getClosestFocusable,\n  getFirstFocusable,\n  getFirstFocusableIn,\n  getFirstTabbable,\n  getFirstTabbableIn,\n  getLastTabbable,\n  getLastTabbableIn,\n  getNextTabbable,\n  getNextTabbableIn,\n  getPreviousTabbable,\n  getPreviousTabbableIn,\n  hasFocus,\n  hasFocusWithin,\n  isFocusable,\n  isTabbable,\n  restoreFocusIn\n};\n", "\"use client\";\nimport {\n  FocusableContext\n} from \"./SWN3JYXT.js\";\nimport {\n  createElement,\n  createHook,\n  forwardRef\n} from \"./LMDWO4NN.js\";\nimport {\n  useEvent,\n  useMergeRefs,\n  useTagName\n} from \"./ABQUS43J.js\";\nimport {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/focusable/focusable.tsx\nimport { isButton } from \"@ariakit/core/utils/dom\";\nimport {\n  addGlobalEventListener,\n  isFocusEventOutside,\n  isPortalEvent,\n  isSelfTarget,\n  queueBeforeEvent\n} from \"@ariakit/core/utils/events\";\nimport {\n  focusIfNeeded,\n  getClosestFocusable,\n  hasFocus,\n  isFocusable\n} from \"@ariakit/core/utils/focus\";\nimport {\n  disabledFromProps,\n  removeUndefinedValues\n} from \"@ariakit/core/utils/misc\";\nimport { isSafari } from \"@ariakit/core/utils/platform\";\nimport { useContext, useEffect, useMemo, useRef, useState } from \"react\";\nvar TagName = \"div\";\nvar isSafariBrowser = isSafari();\nvar alwaysFocusVisibleInputTypes = [\n  \"text\",\n  \"search\",\n  \"url\",\n  \"tel\",\n  \"email\",\n  \"password\",\n  \"number\",\n  \"date\",\n  \"month\",\n  \"week\",\n  \"time\",\n  \"datetime\",\n  \"datetime-local\"\n];\nvar safariFocusAncestorSymbol = Symbol(\"safariFocusAncestor\");\nfunction isSafariFocusAncestor(element) {\n  if (!element) return false;\n  return !!element[safariFocusAncestorSymbol];\n}\nfunction markSafariFocusAncestor(element, value) {\n  if (!element) return;\n  element[safariFocusAncestorSymbol] = value;\n}\nfunction isAlwaysFocusVisible(element) {\n  const { tagName, readOnly, type } = element;\n  if (tagName === \"TEXTAREA\" && !readOnly) return true;\n  if (tagName === \"SELECT\" && !readOnly) return true;\n  if (tagName === \"INPUT\" && !readOnly) {\n    return alwaysFocusVisibleInputTypes.includes(type);\n  }\n  if (element.isContentEditable) return true;\n  const role = element.getAttribute(\"role\");\n  if (role === \"combobox\" && element.dataset.name) {\n    return true;\n  }\n  return false;\n}\nfunction getLabels(element) {\n  if (\"labels\" in element) {\n    return element.labels;\n  }\n  return null;\n}\nfunction isNativeCheckboxOrRadio(element) {\n  const tagName = element.tagName.toLowerCase();\n  if (tagName === \"input\" && element.type) {\n    return element.type === \"radio\" || element.type === \"checkbox\";\n  }\n  return false;\n}\nfunction isNativeTabbable(tagName) {\n  if (!tagName) return true;\n  return tagName === \"button\" || tagName === \"summary\" || tagName === \"input\" || tagName === \"select\" || tagName === \"textarea\" || tagName === \"a\";\n}\nfunction supportsDisabledAttribute(tagName) {\n  if (!tagName) return true;\n  return tagName === \"button\" || tagName === \"input\" || tagName === \"select\" || tagName === \"textarea\";\n}\nfunction getTabIndex(focusable, trulyDisabled, nativeTabbable, supportsDisabled, tabIndexProp) {\n  if (!focusable) {\n    return tabIndexProp;\n  }\n  if (trulyDisabled) {\n    if (nativeTabbable && !supportsDisabled) {\n      return -1;\n    }\n    return;\n  }\n  if (nativeTabbable) {\n    return tabIndexProp;\n  }\n  return tabIndexProp || 0;\n}\nfunction useDisableEvent(onEvent, disabled) {\n  return useEvent((event) => {\n    onEvent == null ? void 0 : onEvent(event);\n    if (event.defaultPrevented) return;\n    if (disabled) {\n      event.stopPropagation();\n      event.preventDefault();\n    }\n  });\n}\nvar isKeyboardModality = true;\nfunction onGlobalMouseDown(event) {\n  const target = event.target;\n  if (target && \"hasAttribute\" in target) {\n    if (!target.hasAttribute(\"data-focus-visible\")) {\n      isKeyboardModality = false;\n    }\n  }\n}\nfunction onGlobalKeyDown(event) {\n  if (event.metaKey) return;\n  if (event.ctrlKey) return;\n  if (event.altKey) return;\n  isKeyboardModality = true;\n}\nvar useFocusable = createHook(\n  function useFocusable2(_a) {\n    var _b = _a, {\n      focusable = true,\n      accessibleWhenDisabled,\n      autoFocus,\n      onFocusVisible\n    } = _b, props = __objRest(_b, [\n      \"focusable\",\n      \"accessibleWhenDisabled\",\n      \"autoFocus\",\n      \"onFocusVisible\"\n    ]);\n    const ref = useRef(null);\n    useEffect(() => {\n      if (!focusable) return;\n      addGlobalEventListener(\"mousedown\", onGlobalMouseDown, true);\n      addGlobalEventListener(\"keydown\", onGlobalKeyDown, true);\n    }, [focusable]);\n    if (isSafariBrowser) {\n      useEffect(() => {\n        if (!focusable) return;\n        const element = ref.current;\n        if (!element) return;\n        if (!isNativeCheckboxOrRadio(element)) return;\n        const labels = getLabels(element);\n        if (!labels) return;\n        const onMouseUp = () => queueMicrotask(() => element.focus());\n        for (const label of labels) {\n          label.addEventListener(\"mouseup\", onMouseUp);\n        }\n        return () => {\n          for (const label of labels) {\n            label.removeEventListener(\"mouseup\", onMouseUp);\n          }\n        };\n      }, [focusable]);\n    }\n    const disabled = focusable && disabledFromProps(props);\n    const trulyDisabled = !!disabled && !accessibleWhenDisabled;\n    const [focusVisible, setFocusVisible] = useState(false);\n    useEffect(() => {\n      if (!focusable) return;\n      if (trulyDisabled && focusVisible) {\n        setFocusVisible(false);\n      }\n    }, [focusable, trulyDisabled, focusVisible]);\n    useEffect(() => {\n      if (!focusable) return;\n      if (!focusVisible) return;\n      const element = ref.current;\n      if (!element) return;\n      if (typeof IntersectionObserver === \"undefined\") return;\n      const observer = new IntersectionObserver(() => {\n        if (!isFocusable(element)) {\n          setFocusVisible(false);\n        }\n      });\n      observer.observe(element);\n      return () => observer.disconnect();\n    }, [focusable, focusVisible]);\n    const onKeyPressCapture = useDisableEvent(\n      props.onKeyPressCapture,\n      disabled\n    );\n    const onMouseDownCapture = useDisableEvent(\n      props.onMouseDownCapture,\n      disabled\n    );\n    const onClickCapture = useDisableEvent(props.onClickCapture, disabled);\n    const onMouseDownProp = props.onMouseDown;\n    const onMouseDown = useEvent((event) => {\n      onMouseDownProp == null ? void 0 : onMouseDownProp(event);\n      if (event.defaultPrevented) return;\n      if (!focusable) return;\n      const element = event.currentTarget;\n      if (!isSafariBrowser) return;\n      if (isPortalEvent(event)) return;\n      if (!isButton(element) && !isNativeCheckboxOrRadio(element)) return;\n      let receivedFocus = false;\n      const onFocus = () => {\n        receivedFocus = true;\n      };\n      const options = { capture: true, once: true };\n      element.addEventListener(\"focusin\", onFocus, options);\n      const focusableContainer = getClosestFocusable(element.parentElement);\n      markSafariFocusAncestor(focusableContainer, true);\n      queueBeforeEvent(element, \"mouseup\", () => {\n        element.removeEventListener(\"focusin\", onFocus, true);\n        markSafariFocusAncestor(focusableContainer, false);\n        if (receivedFocus) return;\n        focusIfNeeded(element);\n      });\n    });\n    const handleFocusVisible = (event, currentTarget) => {\n      if (currentTarget) {\n        event.currentTarget = currentTarget;\n      }\n      if (!focusable) return;\n      const element = event.currentTarget;\n      if (!element) return;\n      if (!hasFocus(element)) return;\n      onFocusVisible == null ? void 0 : onFocusVisible(event);\n      if (event.defaultPrevented) return;\n      element.dataset.focusVisible = \"true\";\n      setFocusVisible(true);\n    };\n    const onKeyDownCaptureProp = props.onKeyDownCapture;\n    const onKeyDownCapture = useEvent((event) => {\n      onKeyDownCaptureProp == null ? void 0 : onKeyDownCaptureProp(event);\n      if (event.defaultPrevented) return;\n      if (!focusable) return;\n      if (focusVisible) return;\n      if (event.metaKey) return;\n      if (event.altKey) return;\n      if (event.ctrlKey) return;\n      if (!isSelfTarget(event)) return;\n      const element = event.currentTarget;\n      const applyFocusVisible = () => handleFocusVisible(event, element);\n      queueBeforeEvent(element, \"focusout\", applyFocusVisible);\n    });\n    const onFocusCaptureProp = props.onFocusCapture;\n    const onFocusCapture = useEvent((event) => {\n      onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event);\n      if (event.defaultPrevented) return;\n      if (!focusable) return;\n      if (!isSelfTarget(event)) {\n        setFocusVisible(false);\n        return;\n      }\n      const element = event.currentTarget;\n      const applyFocusVisible = () => handleFocusVisible(event, element);\n      if (isKeyboardModality || isAlwaysFocusVisible(event.target)) {\n        queueBeforeEvent(event.target, \"focusout\", applyFocusVisible);\n      } else {\n        setFocusVisible(false);\n      }\n    });\n    const onBlurProp = props.onBlur;\n    const onBlur = useEvent((event) => {\n      onBlurProp == null ? void 0 : onBlurProp(event);\n      if (!focusable) return;\n      if (!isFocusEventOutside(event)) return;\n      setFocusVisible(false);\n    });\n    const autoFocusOnShow = useContext(FocusableContext);\n    const autoFocusRef = useEvent((element) => {\n      if (!focusable) return;\n      if (!autoFocus) return;\n      if (!element) return;\n      if (!autoFocusOnShow) return;\n      queueMicrotask(() => {\n        if (hasFocus(element)) return;\n        if (!isFocusable(element)) return;\n        element.focus();\n      });\n    });\n    const tagName = useTagName(ref);\n    const nativeTabbable = focusable && isNativeTabbable(tagName);\n    const supportsDisabled = focusable && supportsDisabledAttribute(tagName);\n    const styleProp = props.style;\n    const style = useMemo(() => {\n      if (trulyDisabled) {\n        return __spreadValues({ pointerEvents: \"none\" }, styleProp);\n      }\n      return styleProp;\n    }, [trulyDisabled, styleProp]);\n    props = __spreadProps(__spreadValues({\n      \"data-focus-visible\": focusable && focusVisible || void 0,\n      \"data-autofocus\": autoFocus || void 0,\n      \"aria-disabled\": disabled || void 0\n    }, props), {\n      ref: useMergeRefs(ref, autoFocusRef, props.ref),\n      style,\n      tabIndex: getTabIndex(\n        focusable,\n        trulyDisabled,\n        nativeTabbable,\n        supportsDisabled,\n        props.tabIndex\n      ),\n      disabled: supportsDisabled && trulyDisabled ? true : void 0,\n      // TODO: Test Focusable contentEditable.\n      contentEditable: disabled ? void 0 : props.contentEditable,\n      onKeyPressCapture,\n      onClickCapture,\n      onMouseDownCapture,\n      onMouseDown,\n      onKeyDownCapture,\n      onFocusCapture,\n      onBlur\n    });\n    return removeUndefinedValues(props);\n  }\n);\nvar Focusable = forwardRef(function Focusable2(props) {\n  const htmlProps = useFocusable(props);\n  return createElement(TagName, htmlProps);\n});\n\nexport {\n  isSafariFocusAncestor,\n  useFocusable,\n  Focusable\n};\n", "\"use client\";\nimport {\n  findFirstEnabledItem,\n  getEnabledItem,\n  groupItemsByRows,\n  isItem,\n  silentlyFocused\n} from \"./5VQZOHHZ.js\";\nimport {\n  CompositeContextProvider,\n  useCompositeProviderContext\n} from \"./P7GR5CS5.js\";\nimport {\n  useFocusable\n} from \"./LVA2YJMS.js\";\nimport {\n  createElement,\n  createHook,\n  forwardRef\n} from \"./LMDWO4NN.js\";\nimport {\n  useBooleanEvent,\n  useEvent,\n  useMergeRefs,\n  useSafeLayoutEffect,\n  useTransactionState,\n  useWrapElement\n} from \"./ABQUS43J.js\";\nimport {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/composite/composite.tsx\nimport { flatten2DArray, reverseArray } from \"@ariakit/core/utils/array\";\nimport { getActiveElement, isTextField } from \"@ariakit/core/utils/dom\";\nimport {\n  fireBlurEvent,\n  fireKeyboardEvent,\n  isSelfTarget\n} from \"@ariakit/core/utils/events\";\nimport { focusIntoView, hasFocus } from \"@ariakit/core/utils/focus\";\nimport { invariant } from \"@ariakit/core/utils/misc\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TagName = \"div\";\nfunction isGrid(items) {\n  return items.some((item) => !!item.rowId);\n}\nfunction isPrintableKey(event) {\n  const target = event.target;\n  if (target && !isTextField(target)) return false;\n  return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\nfunction isModifierKey(event) {\n  return event.key === \"Shift\" || event.key === \"Control\" || event.key === \"Alt\" || event.key === \"Meta\";\n}\nfunction useKeyboardEventProxy(store, onKeyboardEvent, previousElementRef) {\n  return useEvent((event) => {\n    var _a;\n    onKeyboardEvent == null ? void 0 : onKeyboardEvent(event);\n    if (event.defaultPrevented) return;\n    if (event.isPropagationStopped()) return;\n    if (!isSelfTarget(event)) return;\n    if (isModifierKey(event)) return;\n    if (isPrintableKey(event)) return;\n    const state = store.getState();\n    const activeElement = (_a = getEnabledItem(store, state.activeId)) == null ? void 0 : _a.element;\n    if (!activeElement) return;\n    const _b = event, { view } = _b, eventInit = __objRest(_b, [\"view\"]);\n    const previousElement = previousElementRef == null ? void 0 : previousElementRef.current;\n    if (activeElement !== previousElement) {\n      activeElement.focus();\n    }\n    if (!fireKeyboardEvent(activeElement, event.type, eventInit)) {\n      event.preventDefault();\n    }\n    if (event.currentTarget.contains(activeElement)) {\n      event.stopPropagation();\n    }\n  });\n}\nfunction findFirstEnabledItemInTheLastRow(items) {\n  return findFirstEnabledItem(\n    flatten2DArray(reverseArray(groupItemsByRows(items)))\n  );\n}\nfunction useScheduleFocus(store) {\n  const [scheduled, setScheduled] = useState(false);\n  const schedule = useCallback(() => setScheduled(true), []);\n  const activeItem = store.useState(\n    (state) => getEnabledItem(store, state.activeId)\n  );\n  useEffect(() => {\n    const activeElement = activeItem == null ? void 0 : activeItem.element;\n    if (!scheduled) return;\n    if (!activeElement) return;\n    setScheduled(false);\n    activeElement.focus({ preventScroll: true });\n  }, [activeItem, scheduled]);\n  return schedule;\n}\nvar useComposite = createHook(\n  function useComposite2(_a) {\n    var _b = _a, {\n      store,\n      composite = true,\n      focusOnMove = composite,\n      moveOnKeyPress = true\n    } = _b, props = __objRest(_b, [\n      \"store\",\n      \"composite\",\n      \"focusOnMove\",\n      \"moveOnKeyPress\"\n    ]);\n    const context = useCompositeProviderContext();\n    store = store || context;\n    invariant(\n      store,\n      process.env.NODE_ENV !== \"production\" && \"Composite must receive a `store` prop or be wrapped in a CompositeProvider component.\"\n    );\n    const ref = useRef(null);\n    const previousElementRef = useRef(null);\n    const scheduleFocus = useScheduleFocus(store);\n    const moves = store.useState(\"moves\");\n    const [, setBaseElement] = useTransactionState(\n      composite ? store.setBaseElement : null\n    );\n    useEffect(() => {\n      var _a2;\n      if (!store) return;\n      if (!moves) return;\n      if (!composite) return;\n      if (!focusOnMove) return;\n      const { activeId: activeId2 } = store.getState();\n      const itemElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element;\n      if (!itemElement) return;\n      focusIntoView(itemElement);\n    }, [store, moves, composite, focusOnMove]);\n    useSafeLayoutEffect(() => {\n      if (!store) return;\n      if (!moves) return;\n      if (!composite) return;\n      const { baseElement, activeId: activeId2 } = store.getState();\n      const isSelfAcive = activeId2 === null;\n      if (!isSelfAcive) return;\n      if (!baseElement) return;\n      const previousElement = previousElementRef.current;\n      previousElementRef.current = null;\n      if (previousElement) {\n        fireBlurEvent(previousElement, { relatedTarget: baseElement });\n      }\n      if (!hasFocus(baseElement)) {\n        baseElement.focus();\n      }\n    }, [store, moves, composite]);\n    const activeId = store.useState(\"activeId\");\n    const virtualFocus = store.useState(\"virtualFocus\");\n    useSafeLayoutEffect(() => {\n      var _a2;\n      if (!store) return;\n      if (!composite) return;\n      if (!virtualFocus) return;\n      const previousElement = previousElementRef.current;\n      previousElementRef.current = null;\n      if (!previousElement) return;\n      const activeElement = (_a2 = getEnabledItem(store, activeId)) == null ? void 0 : _a2.element;\n      const relatedTarget = activeElement || getActiveElement(previousElement);\n      if (relatedTarget === previousElement) return;\n      fireBlurEvent(previousElement, { relatedTarget });\n    }, [store, activeId, virtualFocus, composite]);\n    const onKeyDownCapture = useKeyboardEventProxy(\n      store,\n      props.onKeyDownCapture,\n      previousElementRef\n    );\n    const onKeyUpCapture = useKeyboardEventProxy(\n      store,\n      props.onKeyUpCapture,\n      previousElementRef\n    );\n    const onFocusCaptureProp = props.onFocusCapture;\n    const onFocusCapture = useEvent((event) => {\n      onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event);\n      if (event.defaultPrevented) return;\n      if (!store) return;\n      const { virtualFocus: virtualFocus2 } = store.getState();\n      if (!virtualFocus2) return;\n      const previousActiveElement = event.relatedTarget;\n      const isSilentlyFocused = silentlyFocused(event.currentTarget);\n      if (isSelfTarget(event) && isSilentlyFocused) {\n        event.stopPropagation();\n        previousElementRef.current = previousActiveElement;\n      }\n    });\n    const onFocusProp = props.onFocus;\n    const onFocus = useEvent((event) => {\n      onFocusProp == null ? void 0 : onFocusProp(event);\n      if (event.defaultPrevented) return;\n      if (!composite) return;\n      if (!store) return;\n      const { relatedTarget } = event;\n      const { virtualFocus: virtualFocus2 } = store.getState();\n      if (virtualFocus2) {\n        if (isSelfTarget(event) && !isItem(store, relatedTarget)) {\n          queueMicrotask(scheduleFocus);\n        }\n      } else if (isSelfTarget(event)) {\n        store.setActiveId(null);\n      }\n    });\n    const onBlurCaptureProp = props.onBlurCapture;\n    const onBlurCapture = useEvent((event) => {\n      var _a2;\n      onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event);\n      if (event.defaultPrevented) return;\n      if (!store) return;\n      const { virtualFocus: virtualFocus2, activeId: activeId2 } = store.getState();\n      if (!virtualFocus2) return;\n      const activeElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element;\n      const nextActiveElement = event.relatedTarget;\n      const nextActiveElementIsItem = isItem(store, nextActiveElement);\n      const previousElement = previousElementRef.current;\n      previousElementRef.current = null;\n      if (isSelfTarget(event) && nextActiveElementIsItem) {\n        if (nextActiveElement === activeElement) {\n          if (previousElement && previousElement !== nextActiveElement) {\n            fireBlurEvent(previousElement, event);\n          }\n        } else if (activeElement) {\n          fireBlurEvent(activeElement, event);\n        } else if (previousElement) {\n          fireBlurEvent(previousElement, event);\n        }\n        event.stopPropagation();\n      } else {\n        const targetIsItem = isItem(store, event.target);\n        if (!targetIsItem && activeElement) {\n          fireBlurEvent(activeElement, event);\n        }\n      }\n    });\n    const onKeyDownProp = props.onKeyDown;\n    const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);\n    const onKeyDown = useEvent((event) => {\n      var _a2;\n      onKeyDownProp == null ? void 0 : onKeyDownProp(event);\n      if (event.defaultPrevented) return;\n      if (!store) return;\n      if (!isSelfTarget(event)) return;\n      const { orientation, renderedItems, activeId: activeId2 } = store.getState();\n      const activeItem = getEnabledItem(store, activeId2);\n      if ((_a2 = activeItem == null ? void 0 : activeItem.element) == null ? void 0 : _a2.isConnected) return;\n      const isVertical = orientation !== \"horizontal\";\n      const isHorizontal = orientation !== \"vertical\";\n      const grid = isGrid(renderedItems);\n      const isHorizontalKey = event.key === \"ArrowLeft\" || event.key === \"ArrowRight\" || event.key === \"Home\" || event.key === \"End\";\n      if (isHorizontalKey && isTextField(event.currentTarget)) return;\n      const up = () => {\n        if (grid) {\n          const item = findFirstEnabledItemInTheLastRow(renderedItems);\n          return item == null ? void 0 : item.id;\n        }\n        return store == null ? void 0 : store.last();\n      };\n      const keyMap = {\n        ArrowUp: (grid || isVertical) && up,\n        ArrowRight: (grid || isHorizontal) && store.first,\n        ArrowDown: (grid || isVertical) && store.first,\n        ArrowLeft: (grid || isHorizontal) && store.last,\n        Home: store.first,\n        End: store.last,\n        PageUp: store.first,\n        PageDown: store.last\n      };\n      const action = keyMap[event.key];\n      if (action) {\n        const id = action();\n        if (id !== void 0) {\n          if (!moveOnKeyPressProp(event)) return;\n          event.preventDefault();\n          store.move(id);\n        }\n      }\n    });\n    props = useWrapElement(\n      props,\n      (element) => /* @__PURE__ */ jsx(CompositeContextProvider, { value: store, children: element }),\n      [store]\n    );\n    const activeDescendant = store.useState((state) => {\n      var _a2;\n      if (!store) return;\n      if (!composite) return;\n      if (!state.virtualFocus) return;\n      return (_a2 = getEnabledItem(store, state.activeId)) == null ? void 0 : _a2.id;\n    });\n    props = __spreadProps(__spreadValues({\n      \"aria-activedescendant\": activeDescendant\n    }, props), {\n      ref: useMergeRefs(ref, setBaseElement, props.ref),\n      onKeyDownCapture,\n      onKeyUpCapture,\n      onFocusCapture,\n      onFocus,\n      onBlurCapture,\n      onKeyDown\n    });\n    const focusable = store.useState(\n      (state) => composite && (state.virtualFocus || state.activeId === null)\n    );\n    props = useFocusable(__spreadValues({ focusable }, props));\n    return props;\n  }\n);\nvar Composite = forwardRef(function Composite2(props) {\n  const htmlProps = useComposite(props);\n  return createElement(TagName, htmlProps);\n});\n\nexport {\n  useComposite,\n  Composite\n};\n", "\"use client\";\nimport {\n  useComboboxProviderContext\n} from \"../__chunks/VEVQD5MH.js\";\nimport {\n  usePopoverAnchor\n} from \"../__chunks/OMU7RWRV.js\";\nimport {\n  useComposite\n} from \"../__chunks/ITI7HKP4.js\";\nimport \"../__chunks/5VQZOHHZ.js\";\nimport \"../__chunks/P7GR5CS5.js\";\nimport \"../__chunks/VDHZ5F7K.js\";\nimport \"../__chunks/MTZPJQMC.js\";\nimport \"../__chunks/RS7LB2H4.js\";\nimport \"../__chunks/S6EF7IVO.js\";\nimport \"../__chunks/LVA2YJMS.js\";\nimport \"../__chunks/SWN3JYXT.js\";\nimport {\n  createElement,\n  createHook,\n  forwardRef\n} from \"../__chunks/LMDWO4NN.js\";\nimport {\n  useBooleanEvent,\n  useEvent,\n  useForceUpdate,\n  useId,\n  useMergeRefs,\n  useSafeLayoutEffect,\n  useUpdateEffect,\n  useUpdateLayoutEffect\n} from \"../__chunks/ABQUS43J.js\";\nimport \"../__chunks/SK3NAZA3.js\";\nimport {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"../__chunks/3YLGPPWQ.js\";\n\n// src/combobox/combobox.tsx\nimport {\n  getPopupRole,\n  getScrollingElement,\n  getTextboxSelection,\n  setSelectionRange\n} from \"@ariakit/core/utils/dom\";\nimport {\n  isFocusEventOutside,\n  queueBeforeEvent\n} from \"@ariakit/core/utils/events\";\nimport { hasFocus } from \"@ariakit/core/utils/focus\";\nimport {\n  invariant,\n  isFalsyBooleanCallback,\n  noop,\n  normalizeString\n} from \"@ariakit/core/utils/misc\";\nimport { sync } from \"@ariakit/core/utils/store\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nvar TagName = \"input\";\nfunction isFirstItemAutoSelected(items, activeValue, autoSelect) {\n  if (!autoSelect) return false;\n  const firstItem = items.find((item) => !item.disabled && item.value);\n  return (firstItem == null ? void 0 : firstItem.value) === activeValue;\n}\nfunction hasCompletionString(value, activeValue) {\n  if (!activeValue) return false;\n  if (value == null) return false;\n  value = normalizeString(value);\n  return activeValue.length > value.length && activeValue.toLowerCase().indexOf(value.toLowerCase()) === 0;\n}\nfunction isInputEvent(event) {\n  return event.type === \"input\";\n}\nfunction isAriaAutoCompleteValue(value) {\n  return value === \"inline\" || value === \"list\" || value === \"both\" || value === \"none\";\n}\nfunction getDefaultAutoSelectId(items) {\n  const item = items.find((item2) => {\n    var _a;\n    if (item2.disabled) return false;\n    return ((_a = item2.element) == null ? void 0 : _a.getAttribute(\"role\")) !== \"tab\";\n  });\n  return item == null ? void 0 : item.id;\n}\nvar useCombobox = createHook(\n  function useCombobox2(_a) {\n    var _b = _a, {\n      store,\n      focusable = true,\n      autoSelect: autoSelectProp = false,\n      getAutoSelectId,\n      setValueOnChange,\n      showMinLength = 0,\n      showOnChange,\n      showOnMouseDown,\n      showOnClick = showOnMouseDown,\n      showOnKeyDown,\n      showOnKeyPress = showOnKeyDown,\n      blurActiveItemOnClick,\n      setValueOnClick = true,\n      moveOnKeyPress = true,\n      autoComplete = \"list\"\n    } = _b, props = __objRest(_b, [\n      \"store\",\n      \"focusable\",\n      \"autoSelect\",\n      \"getAutoSelectId\",\n      \"setValueOnChange\",\n      \"showMinLength\",\n      \"showOnChange\",\n      \"showOnMouseDown\",\n      \"showOnClick\",\n      \"showOnKeyDown\",\n      \"showOnKeyPress\",\n      \"blurActiveItemOnClick\",\n      \"setValueOnClick\",\n      \"moveOnKeyPress\",\n      \"autoComplete\"\n    ]);\n    const context = useComboboxProviderContext();\n    store = store || context;\n    invariant(\n      store,\n      process.env.NODE_ENV !== \"production\" && \"Combobox must receive a `store` prop or be wrapped in a ComboboxProvider component.\"\n    );\n    const ref = useRef(null);\n    const [valueUpdated, forceValueUpdate] = useForceUpdate();\n    const canAutoSelectRef = useRef(false);\n    const composingRef = useRef(false);\n    const autoSelect = store.useState(\n      (state) => state.virtualFocus && autoSelectProp\n    );\n    const inline = autoComplete === \"inline\" || autoComplete === \"both\";\n    const [canInline, setCanInline] = useState(inline);\n    useUpdateLayoutEffect(() => {\n      if (!inline) return;\n      setCanInline(true);\n    }, [inline]);\n    const storeValue = store.useState(\"value\");\n    const prevSelectedValueRef = useRef();\n    useEffect(() => {\n      return sync(store, [\"selectedValue\", \"activeId\"], (_, prev) => {\n        prevSelectedValueRef.current = prev.selectedValue;\n      });\n    }, []);\n    const inlineActiveValue = store.useState((state) => {\n      var _a2;\n      if (!inline) return;\n      if (!canInline) return;\n      if (state.activeValue && Array.isArray(state.selectedValue)) {\n        if (state.selectedValue.includes(state.activeValue)) return;\n        if ((_a2 = prevSelectedValueRef.current) == null ? void 0 : _a2.includes(state.activeValue)) return;\n      }\n      return state.activeValue;\n    });\n    const items = store.useState(\"renderedItems\");\n    const open = store.useState(\"open\");\n    const contentElement = store.useState(\"contentElement\");\n    const value = useMemo(() => {\n      if (!inline) return storeValue;\n      if (!canInline) return storeValue;\n      const firstItemAutoSelected = isFirstItemAutoSelected(\n        items,\n        inlineActiveValue,\n        autoSelect\n      );\n      if (firstItemAutoSelected) {\n        if (hasCompletionString(storeValue, inlineActiveValue)) {\n          const slice = (inlineActiveValue == null ? void 0 : inlineActiveValue.slice(storeValue.length)) || \"\";\n          return storeValue + slice;\n        }\n        return storeValue;\n      }\n      return inlineActiveValue || storeValue;\n    }, [inline, canInline, items, inlineActiveValue, autoSelect, storeValue]);\n    useEffect(() => {\n      const element = ref.current;\n      if (!element) return;\n      const onCompositeItemMove = () => setCanInline(true);\n      element.addEventListener(\"combobox-item-move\", onCompositeItemMove);\n      return () => {\n        element.removeEventListener(\"combobox-item-move\", onCompositeItemMove);\n      };\n    }, []);\n    useEffect(() => {\n      if (!inline) return;\n      if (!canInline) return;\n      if (!inlineActiveValue) return;\n      const firstItemAutoSelected = isFirstItemAutoSelected(\n        items,\n        inlineActiveValue,\n        autoSelect\n      );\n      if (!firstItemAutoSelected) return;\n      if (!hasCompletionString(storeValue, inlineActiveValue)) return;\n      let cleanup = noop;\n      queueMicrotask(() => {\n        const element = ref.current;\n        if (!element) return;\n        const { start: prevStart, end: prevEnd } = getTextboxSelection(element);\n        const nextStart = storeValue.length;\n        const nextEnd = inlineActiveValue.length;\n        setSelectionRange(element, nextStart, nextEnd);\n        cleanup = () => {\n          if (!hasFocus(element)) return;\n          const { start, end } = getTextboxSelection(element);\n          if (start !== nextStart) return;\n          if (end !== nextEnd) return;\n          setSelectionRange(element, prevStart, prevEnd);\n        };\n      });\n      return () => cleanup();\n    }, [\n      valueUpdated,\n      inline,\n      canInline,\n      inlineActiveValue,\n      items,\n      autoSelect,\n      storeValue\n    ]);\n    const scrollingElementRef = useRef(null);\n    const getAutoSelectIdProp = useEvent(getAutoSelectId);\n    const autoSelectIdRef = useRef(null);\n    useEffect(() => {\n      if (!open) return;\n      if (!contentElement) return;\n      const scrollingElement = getScrollingElement(contentElement);\n      if (!scrollingElement) return;\n      scrollingElementRef.current = scrollingElement;\n      const onUserScroll = () => {\n        canAutoSelectRef.current = false;\n      };\n      const onScroll = () => {\n        if (!store) return;\n        if (!canAutoSelectRef.current) return;\n        const { activeId } = store.getState();\n        if (activeId === null) return;\n        if (activeId === autoSelectIdRef.current) return;\n        canAutoSelectRef.current = false;\n      };\n      const options = { passive: true, capture: true };\n      scrollingElement.addEventListener(\"wheel\", onUserScroll, options);\n      scrollingElement.addEventListener(\"touchmove\", onUserScroll, options);\n      scrollingElement.addEventListener(\"scroll\", onScroll, options);\n      return () => {\n        scrollingElement.removeEventListener(\"wheel\", onUserScroll, true);\n        scrollingElement.removeEventListener(\"touchmove\", onUserScroll, true);\n        scrollingElement.removeEventListener(\"scroll\", onScroll, true);\n      };\n    }, [open, contentElement, store]);\n    useSafeLayoutEffect(() => {\n      if (!storeValue) return;\n      if (composingRef.current) return;\n      canAutoSelectRef.current = true;\n    }, [storeValue]);\n    useSafeLayoutEffect(() => {\n      if (autoSelect !== \"always\" && open) return;\n      canAutoSelectRef.current = open;\n    }, [autoSelect, open]);\n    const resetValueOnSelect = store.useState(\"resetValueOnSelect\");\n    useUpdateEffect(() => {\n      var _a2, _b2;\n      const canAutoSelect = canAutoSelectRef.current;\n      if (!store) return;\n      if (!open) return;\n      if (!canAutoSelect && !resetValueOnSelect) return;\n      const { baseElement, contentElement: contentElement2, activeId } = store.getState();\n      if (baseElement && !hasFocus(baseElement)) return;\n      if (contentElement2 == null ? void 0 : contentElement2.hasAttribute(\"data-placing\")) {\n        const observer = new MutationObserver(forceValueUpdate);\n        observer.observe(contentElement2, { attributeFilter: [\"data-placing\"] });\n        return () => observer.disconnect();\n      }\n      if (autoSelect && canAutoSelect) {\n        const userAutoSelectId = getAutoSelectIdProp(items);\n        const autoSelectId = userAutoSelectId !== void 0 ? userAutoSelectId : (_a2 = getDefaultAutoSelectId(items)) != null ? _a2 : store.first();\n        autoSelectIdRef.current = autoSelectId;\n        store.move(autoSelectId != null ? autoSelectId : null);\n      } else {\n        const element = (_b2 = store.item(activeId || store.first())) == null ? void 0 : _b2.element;\n        if (element && \"scrollIntoView\" in element) {\n          element.scrollIntoView({ block: \"nearest\", inline: \"nearest\" });\n        }\n      }\n      return;\n    }, [\n      store,\n      open,\n      valueUpdated,\n      storeValue,\n      autoSelect,\n      resetValueOnSelect,\n      getAutoSelectIdProp,\n      items\n    ]);\n    useEffect(() => {\n      if (!inline) return;\n      const combobox = ref.current;\n      if (!combobox) return;\n      const elements = [combobox, contentElement].filter(\n        (value2) => !!value2\n      );\n      const onBlur2 = (event) => {\n        if (elements.every((el) => isFocusEventOutside(event, el))) {\n          store == null ? void 0 : store.setValue(value);\n        }\n      };\n      for (const element of elements) {\n        element.addEventListener(\"focusout\", onBlur2);\n      }\n      return () => {\n        for (const element of elements) {\n          element.removeEventListener(\"focusout\", onBlur2);\n        }\n      };\n    }, [inline, contentElement, store, value]);\n    const canShow = (event) => {\n      const currentTarget = event.currentTarget;\n      return currentTarget.value.length >= showMinLength;\n    };\n    const onChangeProp = props.onChange;\n    const showOnChangeProp = useBooleanEvent(showOnChange != null ? showOnChange : canShow);\n    const setValueOnChangeProp = useBooleanEvent(\n      // If the combobox is combined with tags, the value will be set by the tag\n      // input component.\n      setValueOnChange != null ? setValueOnChange : !store.tag\n    );\n    const onChange = useEvent((event) => {\n      onChangeProp == null ? void 0 : onChangeProp(event);\n      if (event.defaultPrevented) return;\n      if (!store) return;\n      const currentTarget = event.currentTarget;\n      const { value: value2, selectionStart, selectionEnd } = currentTarget;\n      const nativeEvent = event.nativeEvent;\n      canAutoSelectRef.current = true;\n      if (isInputEvent(nativeEvent)) {\n        if (nativeEvent.isComposing) {\n          canAutoSelectRef.current = false;\n          composingRef.current = true;\n        }\n        if (inline) {\n          const textInserted = nativeEvent.inputType === \"insertText\" || nativeEvent.inputType === \"insertCompositionText\";\n          const caretAtEnd = selectionStart === value2.length;\n          setCanInline(textInserted && caretAtEnd);\n        }\n      }\n      if (setValueOnChangeProp(event)) {\n        const isSameValue = value2 === store.getState().value;\n        store.setValue(value2);\n        queueMicrotask(() => {\n          setSelectionRange(currentTarget, selectionStart, selectionEnd);\n        });\n        if (inline && autoSelect && isSameValue) {\n          forceValueUpdate();\n        }\n      }\n      if (showOnChangeProp(event)) {\n        store.show();\n      }\n      if (!autoSelect || !canAutoSelectRef.current) {\n        store.setActiveId(null);\n      }\n    });\n    const onCompositionEndProp = props.onCompositionEnd;\n    const onCompositionEnd = useEvent((event) => {\n      canAutoSelectRef.current = true;\n      composingRef.current = false;\n      onCompositionEndProp == null ? void 0 : onCompositionEndProp(event);\n      if (event.defaultPrevented) return;\n      if (!autoSelect) return;\n      forceValueUpdate();\n    });\n    const onMouseDownProp = props.onMouseDown;\n    const blurActiveItemOnClickProp = useBooleanEvent(\n      blurActiveItemOnClick != null ? blurActiveItemOnClick : () => !!(store == null ? void 0 : store.getState().includesBaseElement)\n    );\n    const setValueOnClickProp = useBooleanEvent(setValueOnClick);\n    const showOnClickProp = useBooleanEvent(showOnClick != null ? showOnClick : canShow);\n    const onMouseDown = useEvent((event) => {\n      onMouseDownProp == null ? void 0 : onMouseDownProp(event);\n      if (event.defaultPrevented) return;\n      if (event.button) return;\n      if (event.ctrlKey) return;\n      if (!store) return;\n      if (blurActiveItemOnClickProp(event)) {\n        store.setActiveId(null);\n      }\n      if (setValueOnClickProp(event)) {\n        store.setValue(value);\n      }\n      if (showOnClickProp(event)) {\n        queueBeforeEvent(event.currentTarget, \"mouseup\", store.show);\n      }\n    });\n    const onKeyDownProp = props.onKeyDown;\n    const showOnKeyPressProp = useBooleanEvent(showOnKeyPress != null ? showOnKeyPress : canShow);\n    const onKeyDown = useEvent((event) => {\n      onKeyDownProp == null ? void 0 : onKeyDownProp(event);\n      if (!event.repeat) {\n        canAutoSelectRef.current = false;\n      }\n      if (event.defaultPrevented) return;\n      if (event.ctrlKey) return;\n      if (event.altKey) return;\n      if (event.shiftKey) return;\n      if (event.metaKey) return;\n      if (!store) return;\n      const { open: open2 } = store.getState();\n      if (open2) return;\n      if (event.key === \"ArrowUp\" || event.key === \"ArrowDown\") {\n        if (showOnKeyPressProp(event)) {\n          event.preventDefault();\n          store.show();\n        }\n      }\n    });\n    const onBlurProp = props.onBlur;\n    const onBlur = useEvent((event) => {\n      canAutoSelectRef.current = false;\n      onBlurProp == null ? void 0 : onBlurProp(event);\n      if (event.defaultPrevented) return;\n    });\n    const id = useId(props.id);\n    const ariaAutoComplete = isAriaAutoCompleteValue(autoComplete) ? autoComplete : void 0;\n    const isActiveItem = store.useState((state) => state.activeId === null);\n    props = __spreadProps(__spreadValues({\n      id,\n      role: \"combobox\",\n      \"aria-autocomplete\": ariaAutoComplete,\n      \"aria-haspopup\": getPopupRole(contentElement, \"listbox\"),\n      \"aria-expanded\": open,\n      \"aria-controls\": contentElement == null ? void 0 : contentElement.id,\n      \"data-active-item\": isActiveItem || void 0,\n      value\n    }, props), {\n      ref: useMergeRefs(ref, props.ref),\n      onChange,\n      onCompositionEnd,\n      onMouseDown,\n      onKeyDown,\n      onBlur\n    });\n    props = useComposite(__spreadProps(__spreadValues({\n      store,\n      focusable\n    }, props), {\n      // Enable inline autocomplete when the user moves from the combobox input\n      // to an item.\n      moveOnKeyPress: (event) => {\n        if (isFalsyBooleanCallback(moveOnKeyPress, event)) return false;\n        if (inline) setCanInline(true);\n        return true;\n      }\n    }));\n    props = usePopoverAnchor(__spreadValues({ store }, props));\n    return __spreadValues({ autoComplete: \"off\" }, props);\n  }\n);\nvar Combobox = forwardRef(function Combobox2(props) {\n  const htmlProps = useCombobox(props);\n  return createElement(TagName, htmlProps);\n});\nexport {\n  Combobox,\n  useCombobox\n};\n", "\"use client\";\nimport {\n  useComboboxStore\n} from \"../__chunks/FEOFMWBY.js\";\nimport {\n  ComboboxContextProvider\n} from \"../__chunks/VEVQD5MH.js\";\nimport \"../__chunks/3XAVFTCA.js\";\nimport \"../__chunks/4CMBR7SL.js\";\nimport \"../__chunks/C3IKGW5T.js\";\nimport \"../__chunks/P7GR5CS5.js\";\nimport \"../__chunks/VDHZ5F7K.js\";\nimport \"../__chunks/MTZPJQMC.js\";\nimport \"../__chunks/RS7LB2H4.js\";\nimport \"../__chunks/S6EF7IVO.js\";\nimport \"../__chunks/LMDWO4NN.js\";\nimport \"../__chunks/O2PQ2652.js\";\nimport \"../__chunks/BM6PGYQY.js\";\nimport \"../__chunks/WYCIER3C.js\";\nimport \"../__chunks/YV4JVR4I.js\";\nimport \"../__chunks/ABQUS43J.js\";\nimport \"../__chunks/SK3NAZA3.js\";\nimport \"../__chunks/3YLGPPWQ.js\";\n\n// src/combobox/combobox-provider.tsx\nimport { jsx } from \"react/jsx-runtime\";\nfunction ComboboxProvider(props = {}) {\n  const store = useComboboxStore(props);\n  return /* @__PURE__ */ jsx(ComboboxContextProvider, { value: store, children: props.children });\n}\nexport {\n  ComboboxProvider\n};\n", "\"use client\";\nimport {\n  useFocusable\n} from \"./LVA2YJMS.js\";\nimport {\n  createElement,\n  createHook,\n  forwardRef\n} from \"./LMDWO4NN.js\";\nimport {\n  useEvent,\n  useMergeRefs,\n  useMetadataProps\n} from \"./ABQUS43J.js\";\nimport {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/command/command.tsx\nimport { isButton, isTextField } from \"@ariakit/core/utils/dom\";\nimport {\n  fireClickEvent,\n  isSelfTarget,\n  queueBeforeEvent\n} from \"@ariakit/core/utils/events\";\nimport { disabledFromProps } from \"@ariakit/core/utils/misc\";\nimport { isFirefox } from \"@ariakit/core/utils/platform\";\nimport { useEffect, useRef, useState } from \"react\";\nvar TagName = \"button\";\nfunction isNativeClick(event) {\n  if (!event.isTrusted) return false;\n  const element = event.currentTarget;\n  if (event.key === \"Enter\") {\n    return isButton(element) || element.tagName === \"SUMMARY\" || element.tagName === \"A\";\n  }\n  if (event.key === \" \") {\n    return isButton(element) || element.tagName === \"SUMMARY\" || element.tagName === \"INPUT\" || element.tagName === \"SELECT\";\n  }\n  return false;\n}\nvar symbol = Symbol(\"command\");\nvar useCommand = createHook(\n  function useCommand2(_a) {\n    var _b = _a, { clickOnEnter = true, clickOnSpace = true } = _b, props = __objRest(_b, [\"clickOnEnter\", \"clickOnSpace\"]);\n    const ref = useRef(null);\n    const [isNativeButton, setIsNativeButton] = useState(false);\n    useEffect(() => {\n      if (!ref.current) return;\n      setIsNativeButton(isButton(ref.current));\n    }, []);\n    const [active, setActive] = useState(false);\n    const activeRef = useRef(false);\n    const disabled = disabledFromProps(props);\n    const [isDuplicate, metadataProps] = useMetadataProps(props, symbol, true);\n    const onKeyDownProp = props.onKeyDown;\n    const onKeyDown = useEvent((event) => {\n      onKeyDownProp == null ? void 0 : onKeyDownProp(event);\n      const element = event.currentTarget;\n      if (event.defaultPrevented) return;\n      if (isDuplicate) return;\n      if (disabled) return;\n      if (!isSelfTarget(event)) return;\n      if (isTextField(element)) return;\n      if (element.isContentEditable) return;\n      const isEnter = clickOnEnter && event.key === \"Enter\";\n      const isSpace = clickOnSpace && event.key === \" \";\n      const shouldPreventEnter = event.key === \"Enter\" && !clickOnEnter;\n      const shouldPreventSpace = event.key === \" \" && !clickOnSpace;\n      if (shouldPreventEnter || shouldPreventSpace) {\n        event.preventDefault();\n        return;\n      }\n      if (isEnter || isSpace) {\n        const nativeClick = isNativeClick(event);\n        if (isEnter) {\n          if (!nativeClick) {\n            event.preventDefault();\n            const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, [\"view\"]);\n            const click = () => fireClickEvent(element, eventInit);\n            if (isFirefox()) {\n              queueBeforeEvent(element, \"keyup\", click);\n            } else {\n              queueMicrotask(click);\n            }\n          }\n        } else if (isSpace) {\n          activeRef.current = true;\n          if (!nativeClick) {\n            event.preventDefault();\n            setActive(true);\n          }\n        }\n      }\n    });\n    const onKeyUpProp = props.onKeyUp;\n    const onKeyUp = useEvent((event) => {\n      onKeyUpProp == null ? void 0 : onKeyUpProp(event);\n      if (event.defaultPrevented) return;\n      if (isDuplicate) return;\n      if (disabled) return;\n      if (event.metaKey) return;\n      const isSpace = clickOnSpace && event.key === \" \";\n      if (activeRef.current && isSpace) {\n        activeRef.current = false;\n        if (!isNativeClick(event)) {\n          event.preventDefault();\n          setActive(false);\n          const element = event.currentTarget;\n          const _a2 = event, { view } = _a2, eventInit = __objRest(_a2, [\"view\"]);\n          queueMicrotask(() => fireClickEvent(element, eventInit));\n        }\n      }\n    });\n    props = __spreadProps(__spreadValues(__spreadValues({\n      \"data-active\": active || void 0,\n      type: isNativeButton ? \"button\" : void 0\n    }, metadataProps), props), {\n      ref: useMergeRefs(ref, props.ref),\n      onKeyDown,\n      onKeyUp\n    });\n    props = useFocusable(props);\n    return props;\n  }\n);\nvar Command = forwardRef(function Command2(props) {\n  const htmlProps = useCommand(props);\n  return createElement(TagName, htmlProps);\n});\n\nexport {\n  useCommand,\n  Command\n};\n", "\"use client\";\nimport {\n  ComboboxItemValueContext,\n  useComboboxScopedContext\n} from \"../__chunks/VEVQD5MH.js\";\nimport \"../__chunks/P7GR5CS5.js\";\nimport \"../__chunks/VDHZ5F7K.js\";\nimport \"../__chunks/MTZPJQMC.js\";\nimport \"../__chunks/RS7LB2H4.js\";\nimport \"../__chunks/S6EF7IVO.js\";\nimport {\n  createElement,\n  createHook,\n  forwardRef\n} from \"../__chunks/LMDWO4NN.js\";\nimport {\n  useStoreState\n} from \"../__chunks/YV4JVR4I.js\";\nimport \"../__chunks/ABQUS43J.js\";\nimport \"../__chunks/SK3NAZA3.js\";\nimport {\n  __objRest,\n  __spreadValues\n} from \"../__chunks/3YLGPPWQ.js\";\n\n// src/combobox/combobox-item-value.tsx\nimport { toArray } from \"@ariakit/core/utils/array\";\nimport {\n  normalizeString,\n  removeUndefinedValues\n} from \"@ariakit/core/utils/misc\";\nimport { useContext, useMemo } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TagName = \"span\";\nfunction normalizeValue(value) {\n  return normalizeString(value).toLowerCase();\n}\nfunction getOffsets(string, values) {\n  const offsets = [];\n  for (const value of values) {\n    let pos = 0;\n    const length = value.length;\n    while (string.indexOf(value, pos) !== -1) {\n      const index = string.indexOf(value, pos);\n      if (index !== -1) {\n        offsets.push([index, length]);\n      }\n      pos = index + 1;\n    }\n  }\n  return offsets;\n}\nfunction filterOverlappingOffsets(offsets) {\n  return offsets.filter(([offset, length], i, arr) => {\n    return !arr.some(\n      ([o, l], j) => j !== i && o <= offset && o + l >= offset + length\n    );\n  });\n}\nfunction sortOffsets(offsets) {\n  return offsets.sort(([a], [b]) => a - b);\n}\nfunction splitValue(itemValue, userValue) {\n  if (!itemValue) return itemValue;\n  if (!userValue) return itemValue;\n  const userValues = toArray(userValue).filter(Boolean).map(normalizeValue);\n  const parts = [];\n  const span = (value, autocomplete = false) => /* @__PURE__ */ jsx(\n    \"span\",\n    {\n      \"data-autocomplete-value\": autocomplete ? \"\" : void 0,\n      \"data-user-value\": autocomplete ? void 0 : \"\",\n      children: value\n    },\n    parts.length\n  );\n  const offsets = sortOffsets(\n    filterOverlappingOffsets(\n      // Convert userValues into a set to avoid duplicates\n      getOffsets(normalizeValue(itemValue), new Set(userValues))\n    )\n  );\n  if (!offsets.length) {\n    parts.push(span(itemValue, true));\n    return parts;\n  }\n  const [firstOffset] = offsets[0];\n  const values = [\n    itemValue.slice(0, firstOffset),\n    ...offsets.flatMap(([offset, length], i) => {\n      var _a;\n      const value = itemValue.slice(offset, offset + length);\n      const nextOffset = (_a = offsets[i + 1]) == null ? void 0 : _a[0];\n      const nextValue = itemValue.slice(offset + length, nextOffset);\n      return [value, nextValue];\n    })\n  ];\n  values.forEach((value, i) => {\n    if (!value) return;\n    parts.push(span(value, i % 2 === 0));\n  });\n  return parts;\n}\nvar useComboboxItemValue = createHook(function useComboboxItemValue2(_a) {\n  var _b = _a, { store, value, userValue } = _b, props = __objRest(_b, [\"store\", \"value\", \"userValue\"]);\n  const context = useComboboxScopedContext();\n  store = store || context;\n  const itemContext = useContext(ComboboxItemValueContext);\n  const itemValue = value != null ? value : itemContext;\n  const inputValue = useStoreState(store, (state) => userValue != null ? userValue : state == null ? void 0 : state.value);\n  const children = useMemo(() => {\n    if (!itemValue) return;\n    if (!inputValue) return itemValue;\n    return splitValue(itemValue, inputValue);\n  }, [itemValue, inputValue]);\n  props = __spreadValues({\n    children\n  }, props);\n  return removeUndefinedValues(props);\n});\nvar ComboboxItemValue = forwardRef(function ComboboxItemValue2(props) {\n  const htmlProps = useComboboxItemValue(props);\n  return createElement(TagName, htmlProps);\n});\nexport {\n  ComboboxItemValue,\n  useComboboxItemValue\n};\n", "\"use client\";\nimport {\n  useCompositeContext\n} from \"./P7GR5CS5.js\";\nimport {\n  createElement,\n  createHook,\n  forwardRef,\n  memo\n} from \"./LMDWO4NN.js\";\nimport {\n  useBooleanEvent,\n  useEvent,\n  useIsMouseMoving,\n  useMergeRefs\n} from \"./ABQUS43J.js\";\nimport {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/composite/composite-hover.tsx\nimport { contains } from \"@ariakit/core/utils/dom\";\nimport { hasFocus, hasFocusWithin } from \"@ariakit/core/utils/focus\";\nimport {\n  hasOwnProperty,\n  invariant,\n  removeUndefinedValues\n} from \"@ariakit/core/utils/misc\";\nimport { useCallback } from \"react\";\nvar TagName = \"div\";\nfunction getMouseDestination(event) {\n  const relatedTarget = event.relatedTarget;\n  if ((relatedTarget == null ? void 0 : relatedTarget.nodeType) === Node.ELEMENT_NODE) {\n    return relatedTarget;\n  }\n  return null;\n}\nfunction hoveringInside(event) {\n  const nextElement = getMouseDestination(event);\n  if (!nextElement) return false;\n  return contains(event.currentTarget, nextElement);\n}\nvar symbol = Symbol(\"composite-hover\");\nfunction movingToAnotherItem(event) {\n  let dest = getMouseDestination(event);\n  if (!dest) return false;\n  do {\n    if (hasOwnProperty(dest, symbol) && dest[symbol]) return true;\n    dest = dest.parentElement;\n  } while (dest);\n  return false;\n}\nvar useCompositeHover = createHook(\n  function useCompositeHover2(_a) {\n    var _b = _a, {\n      store,\n      focusOnHover = true,\n      blurOnHoverEnd = !!focusOnHover\n    } = _b, props = __objRest(_b, [\n      \"store\",\n      \"focusOnHover\",\n      \"blurOnHoverEnd\"\n    ]);\n    const context = useCompositeContext();\n    store = store || context;\n    invariant(\n      store,\n      process.env.NODE_ENV !== \"production\" && \"CompositeHover must be wrapped in a Composite component.\"\n    );\n    const isMouseMoving = useIsMouseMoving();\n    const onMouseMoveProp = props.onMouseMove;\n    const focusOnHoverProp = useBooleanEvent(focusOnHover);\n    const onMouseMove = useEvent((event) => {\n      onMouseMoveProp == null ? void 0 : onMouseMoveProp(event);\n      if (event.defaultPrevented) return;\n      if (!isMouseMoving()) return;\n      if (!focusOnHoverProp(event)) return;\n      if (!hasFocusWithin(event.currentTarget)) {\n        const baseElement = store == null ? void 0 : store.getState().baseElement;\n        if (baseElement && !hasFocus(baseElement)) {\n          baseElement.focus();\n        }\n      }\n      store == null ? void 0 : store.setActiveId(event.currentTarget.id);\n    });\n    const onMouseLeaveProp = props.onMouseLeave;\n    const blurOnHoverEndProp = useBooleanEvent(blurOnHoverEnd);\n    const onMouseLeave = useEvent((event) => {\n      var _a2;\n      onMouseLeaveProp == null ? void 0 : onMouseLeaveProp(event);\n      if (event.defaultPrevented) return;\n      if (!isMouseMoving()) return;\n      if (hoveringInside(event)) return;\n      if (movingToAnotherItem(event)) return;\n      if (!focusOnHoverProp(event)) return;\n      if (!blurOnHoverEndProp(event)) return;\n      store == null ? void 0 : store.setActiveId(null);\n      (_a2 = store == null ? void 0 : store.getState().baseElement) == null ? void 0 : _a2.focus();\n    });\n    const ref = useCallback((element) => {\n      if (!element) return;\n      element[symbol] = true;\n    }, []);\n    props = __spreadProps(__spreadValues({}, props), {\n      ref: useMergeRefs(ref, props.ref),\n      onMouseMove,\n      onMouseLeave\n    });\n    return removeUndefinedValues(props);\n  }\n);\nvar CompositeHover = memo(\n  forwardRef(function CompositeHover2(props) {\n    const htmlProps = useCompositeHover(props);\n    return createElement(TagName, htmlProps);\n  })\n);\n\nexport {\n  useCompositeHover,\n  CompositeHover\n};\n", "\"use client\";\nimport {\n  useCollectionContext\n} from \"./VDHZ5F7K.js\";\nimport {\n  createElement,\n  createHook,\n  forwardRef\n} from \"./LMDWO4NN.js\";\nimport {\n  useId,\n  useMergeRefs\n} from \"./ABQUS43J.js\";\nimport {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/collection/collection-item.tsx\nimport { identity, removeUndefinedValues } from \"@ariakit/core/utils/misc\";\nimport { useEffect, useRef } from \"react\";\nvar TagName = \"div\";\nvar useCollectionItem = createHook(\n  function useCollectionItem2(_a) {\n    var _b = _a, {\n      store,\n      shouldRegisterItem = true,\n      getItem = identity,\n      element: element\n    } = _b, props = __objRest(_b, [\n      \"store\",\n      \"shouldRegisterItem\",\n      \"getItem\",\n      // @ts-expect-error This prop may come from a collection renderer.\n      \"element\"\n    ]);\n    const context = useCollectionContext();\n    store = store || context;\n    const id = useId(props.id);\n    const ref = useRef(element);\n    useEffect(() => {\n      const element2 = ref.current;\n      if (!id) return;\n      if (!element2) return;\n      if (!shouldRegisterItem) return;\n      const item = getItem({ id, element: element2 });\n      return store == null ? void 0 : store.renderItem(item);\n    }, [id, shouldRegisterItem, getItem, store]);\n    props = __spreadProps(__spreadValues({}, props), {\n      ref: useMergeRefs(ref, props.ref)\n    });\n    return removeUndefinedValues(props);\n  }\n);\nvar CollectionItem = forwardRef(function CollectionItem2(props) {\n  const htmlProps = useCollectionItem(props);\n  return createElement(TagName, htmlProps);\n});\n\nexport {\n  useCollectionItem,\n  CollectionItem\n};\n", "\"use client\";\nimport {\n  useCollectionItem\n} from \"./RZ4GPYOB.js\";\nimport {\n  useCommand\n} from \"./KUU7WJ55.js\";\nimport {\n  focusSilently,\n  getEnabledItem,\n  isItem,\n  selectTextField\n} from \"./5VQZOHHZ.js\";\nimport {\n  CompositeItemContext,\n  CompositeRowContext,\n  useCompositeContext\n} from \"./P7GR5CS5.js\";\nimport {\n  createElement,\n  createHook,\n  forwardRef,\n  memo\n} from \"./LMDWO4NN.js\";\nimport {\n  useStoreStateObject\n} from \"./YV4JVR4I.js\";\nimport {\n  useBooleanEvent,\n  useEvent,\n  useId,\n  useMergeRefs,\n  useWrapElement\n} from \"./ABQUS43J.js\";\nimport {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/composite/composite-item.tsx\nimport {\n  getScrollingElement,\n  getTextboxSelection,\n  getTextboxValue,\n  isButton,\n  isTextField,\n  isTextbox\n} from \"@ariakit/core/utils/dom\";\nimport { isPortalEvent, isSelfTarget } from \"@ariakit/core/utils/events\";\nimport {\n  disabledFromProps,\n  removeUndefinedValues\n} from \"@ariakit/core/utils/misc\";\nimport { isSafari } from \"@ariakit/core/utils/platform\";\nimport { useCallback, useContext, useMemo, useRef } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TagName = \"button\";\nfunction isEditableElement(element) {\n  if (isTextbox(element)) return true;\n  return element.tagName === \"INPUT\" && !isButton(element);\n}\nfunction getNextPageOffset(scrollingElement, pageUp = false) {\n  const height = scrollingElement.clientHeight;\n  const { top } = scrollingElement.getBoundingClientRect();\n  const pageSize = Math.max(height * 0.875, height - 40) * 1.5;\n  const pageOffset = pageUp ? height - pageSize + top : pageSize + top;\n  if (scrollingElement.tagName === \"HTML\") {\n    return pageOffset + scrollingElement.scrollTop;\n  }\n  return pageOffset;\n}\nfunction getItemOffset(itemElement, pageUp = false) {\n  const { top } = itemElement.getBoundingClientRect();\n  if (pageUp) {\n    return top + itemElement.clientHeight;\n  }\n  return top;\n}\nfunction findNextPageItemId(element, store, next, pageUp = false) {\n  var _a;\n  if (!store) return;\n  if (!next) return;\n  const { renderedItems } = store.getState();\n  const scrollingElement = getScrollingElement(element);\n  if (!scrollingElement) return;\n  const nextPageOffset = getNextPageOffset(scrollingElement, pageUp);\n  let id;\n  let prevDifference;\n  for (let i = 0; i < renderedItems.length; i += 1) {\n    const previousId = id;\n    id = next(i);\n    if (!id) break;\n    if (id === previousId) continue;\n    const itemElement = (_a = getEnabledItem(store, id)) == null ? void 0 : _a.element;\n    if (!itemElement) continue;\n    const itemOffset = getItemOffset(itemElement, pageUp);\n    const difference = itemOffset - nextPageOffset;\n    const absDifference = Math.abs(difference);\n    if (pageUp && difference <= 0 || !pageUp && difference >= 0) {\n      if (prevDifference !== void 0 && prevDifference < absDifference) {\n        id = previousId;\n      }\n      break;\n    }\n    prevDifference = absDifference;\n  }\n  return id;\n}\nfunction targetIsAnotherItem(event, store) {\n  if (isSelfTarget(event)) return false;\n  return isItem(store, event.target);\n}\nvar useCompositeItem = createHook(\n  function useCompositeItem2(_a) {\n    var _b = _a, {\n      store,\n      rowId: rowIdProp,\n      preventScrollOnKeyDown = false,\n      moveOnKeyPress = true,\n      tabbable = false,\n      getItem: getItemProp,\n      \"aria-setsize\": ariaSetSizeProp,\n      \"aria-posinset\": ariaPosInSetProp\n    } = _b, props = __objRest(_b, [\n      \"store\",\n      \"rowId\",\n      \"preventScrollOnKeyDown\",\n      \"moveOnKeyPress\",\n      \"tabbable\",\n      \"getItem\",\n      \"aria-setsize\",\n      \"aria-posinset\"\n    ]);\n    const context = useCompositeContext();\n    store = store || context;\n    const id = useId(props.id);\n    const ref = useRef(null);\n    const row = useContext(CompositeRowContext);\n    const disabled = disabledFromProps(props);\n    const trulyDisabled = disabled && !props.accessibleWhenDisabled;\n    const {\n      rowId,\n      baseElement,\n      isActiveItem,\n      ariaSetSize,\n      ariaPosInSet,\n      isTabbable\n    } = useStoreStateObject(store, {\n      rowId(state) {\n        if (rowIdProp) return rowIdProp;\n        if (!state) return;\n        if (!(row == null ? void 0 : row.baseElement)) return;\n        if (row.baseElement !== state.baseElement) return;\n        return row.id;\n      },\n      baseElement(state) {\n        return (state == null ? void 0 : state.baseElement) || void 0;\n      },\n      isActiveItem(state) {\n        return !!state && state.activeId === id;\n      },\n      ariaSetSize(state) {\n        if (ariaSetSizeProp != null) return ariaSetSizeProp;\n        if (!state) return;\n        if (!(row == null ? void 0 : row.ariaSetSize)) return;\n        if (row.baseElement !== state.baseElement) return;\n        return row.ariaSetSize;\n      },\n      ariaPosInSet(state) {\n        if (ariaPosInSetProp != null) return ariaPosInSetProp;\n        if (!state) return;\n        if (!(row == null ? void 0 : row.ariaPosInSet)) return;\n        if (row.baseElement !== state.baseElement) return;\n        const itemsInRow = state.renderedItems.filter(\n          (item) => item.rowId === rowId\n        );\n        return row.ariaPosInSet + itemsInRow.findIndex((item) => item.id === id);\n      },\n      isTabbable(state) {\n        if (!(state == null ? void 0 : state.renderedItems.length)) return true;\n        if (state.virtualFocus) return false;\n        if (tabbable) return true;\n        if (state.activeId === null) return false;\n        const item = store == null ? void 0 : store.item(state.activeId);\n        if (item == null ? void 0 : item.disabled) return true;\n        if (!(item == null ? void 0 : item.element)) return true;\n        return state.activeId === id;\n      }\n    });\n    const getItem = useCallback(\n      (item) => {\n        var _a2;\n        const nextItem = __spreadProps(__spreadValues({}, item), {\n          id: id || item.id,\n          rowId,\n          disabled: !!trulyDisabled,\n          children: (_a2 = item.element) == null ? void 0 : _a2.textContent\n        });\n        if (getItemProp) {\n          return getItemProp(nextItem);\n        }\n        return nextItem;\n      },\n      [id, rowId, trulyDisabled, getItemProp]\n    );\n    const onFocusProp = props.onFocus;\n    const hasFocusedComposite = useRef(false);\n    const onFocus = useEvent((event) => {\n      onFocusProp == null ? void 0 : onFocusProp(event);\n      if (event.defaultPrevented) return;\n      if (isPortalEvent(event)) return;\n      if (!id) return;\n      if (!store) return;\n      if (targetIsAnotherItem(event, store)) return;\n      const { virtualFocus, baseElement: baseElement2 } = store.getState();\n      store.setActiveId(id);\n      if (isTextbox(event.currentTarget)) {\n        selectTextField(event.currentTarget);\n      }\n      if (!virtualFocus) return;\n      if (!isSelfTarget(event)) return;\n      if (isEditableElement(event.currentTarget)) return;\n      if (!(baseElement2 == null ? void 0 : baseElement2.isConnected)) return;\n      if (isSafari() && event.currentTarget.hasAttribute(\"data-autofocus\")) {\n        event.currentTarget.scrollIntoView({\n          block: \"nearest\",\n          inline: \"nearest\"\n        });\n      }\n      hasFocusedComposite.current = true;\n      const fromComposite = event.relatedTarget === baseElement2 || isItem(store, event.relatedTarget);\n      if (fromComposite) {\n        focusSilently(baseElement2);\n      } else {\n        baseElement2.focus();\n      }\n    });\n    const onBlurCaptureProp = props.onBlurCapture;\n    const onBlurCapture = useEvent((event) => {\n      onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event);\n      if (event.defaultPrevented) return;\n      const state = store == null ? void 0 : store.getState();\n      if ((state == null ? void 0 : state.virtualFocus) && hasFocusedComposite.current) {\n        hasFocusedComposite.current = false;\n        event.preventDefault();\n        event.stopPropagation();\n      }\n    });\n    const onKeyDownProp = props.onKeyDown;\n    const preventScrollOnKeyDownProp = useBooleanEvent(preventScrollOnKeyDown);\n    const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);\n    const onKeyDown = useEvent((event) => {\n      onKeyDownProp == null ? void 0 : onKeyDownProp(event);\n      if (event.defaultPrevented) return;\n      if (!isSelfTarget(event)) return;\n      if (!store) return;\n      const { currentTarget } = event;\n      const state = store.getState();\n      const item = store.item(id);\n      const isGrid = !!(item == null ? void 0 : item.rowId);\n      const isVertical = state.orientation !== \"horizontal\";\n      const isHorizontal = state.orientation !== \"vertical\";\n      const canHomeEnd = () => {\n        if (isGrid) return true;\n        if (isHorizontal) return true;\n        if (!state.baseElement) return true;\n        if (!isTextField(state.baseElement)) return true;\n        return false;\n      };\n      const keyMap = {\n        ArrowUp: (isGrid || isVertical) && store.up,\n        ArrowRight: (isGrid || isHorizontal) && store.next,\n        ArrowDown: (isGrid || isVertical) && store.down,\n        ArrowLeft: (isGrid || isHorizontal) && store.previous,\n        Home: () => {\n          if (!canHomeEnd()) return;\n          if (!isGrid || event.ctrlKey) {\n            return store == null ? void 0 : store.first();\n          }\n          return store == null ? void 0 : store.previous(-1);\n        },\n        End: () => {\n          if (!canHomeEnd()) return;\n          if (!isGrid || event.ctrlKey) {\n            return store == null ? void 0 : store.last();\n          }\n          return store == null ? void 0 : store.next(-1);\n        },\n        PageUp: () => {\n          return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.up, true);\n        },\n        PageDown: () => {\n          return findNextPageItemId(currentTarget, store, store == null ? void 0 : store.down);\n        }\n      };\n      const action = keyMap[event.key];\n      if (action) {\n        if (isTextbox(currentTarget)) {\n          const selection = getTextboxSelection(currentTarget);\n          const isLeft = isHorizontal && event.key === \"ArrowLeft\";\n          const isRight = isHorizontal && event.key === \"ArrowRight\";\n          const isUp = isVertical && event.key === \"ArrowUp\";\n          const isDown = isVertical && event.key === \"ArrowDown\";\n          if (isRight || isDown) {\n            const { length: valueLength } = getTextboxValue(currentTarget);\n            if (selection.end !== valueLength) return;\n          } else if ((isLeft || isUp) && selection.start !== 0) return;\n        }\n        const nextId = action();\n        if (preventScrollOnKeyDownProp(event) || nextId !== void 0) {\n          if (!moveOnKeyPressProp(event)) return;\n          event.preventDefault();\n          store.move(nextId);\n        }\n      }\n    });\n    const providerValue = useMemo(\n      () => ({ id, baseElement }),\n      [id, baseElement]\n    );\n    props = useWrapElement(\n      props,\n      (element) => /* @__PURE__ */ jsx(CompositeItemContext.Provider, { value: providerValue, children: element }),\n      [providerValue]\n    );\n    props = __spreadProps(__spreadValues({\n      id,\n      \"data-active-item\": isActiveItem || void 0\n    }, props), {\n      ref: useMergeRefs(ref, props.ref),\n      tabIndex: isTabbable ? props.tabIndex : -1,\n      onFocus,\n      onBlurCapture,\n      onKeyDown\n    });\n    props = useCommand(props);\n    props = useCollectionItem(__spreadProps(__spreadValues({\n      store\n    }, props), {\n      getItem,\n      shouldRegisterItem: id ? props.shouldRegisterItem : false\n    }));\n    return removeUndefinedValues(__spreadProps(__spreadValues({}, props), {\n      \"aria-setsize\": ariaSetSize,\n      \"aria-posinset\": ariaPosInSet\n    }));\n  }\n);\nvar CompositeItem = memo(\n  forwardRef(function CompositeItem2(props) {\n    const htmlProps = useCompositeItem(props);\n    return createElement(TagName, htmlProps);\n  })\n);\n\nexport {\n  useCompositeItem,\n  CompositeItem\n};\n", "\"use client\";\nimport {\n  useCompositeHover\n} from \"./UQQRIHDV.js\";\nimport {\n  ComboboxItemCheckedContext,\n  ComboboxItemValueContext,\n  ComboboxListRoleContext,\n  useComboboxScopedContext\n} from \"./VEVQD5MH.js\";\nimport {\n  useCompositeItem\n} from \"./P2CTZE2T.js\";\nimport {\n  createElement,\n  createHook,\n  forwardRef,\n  memo\n} from \"./LMDWO4NN.js\";\nimport {\n  useStoreStateObject\n} from \"./YV4JVR4I.js\";\nimport {\n  useBooleanEvent,\n  useEvent,\n  useWrapElement\n} from \"./ABQUS43J.js\";\nimport {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/combobox/combobox-item.tsx\nimport { isTextField } from \"@ariakit/core/utils/dom\";\nimport { isDownloading, isOpeningInNewTab } from \"@ariakit/core/utils/events\";\nimport { hasFocus } from \"@ariakit/core/utils/focus\";\nimport { invariant } from \"@ariakit/core/utils/misc\";\nimport { useCallback, useContext } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TagName = \"div\";\nfunction isSelected(storeValue, itemValue) {\n  if (itemValue == null) return;\n  if (storeValue == null) return false;\n  if (Array.isArray(storeValue)) {\n    return storeValue.includes(itemValue);\n  }\n  return storeValue === itemValue;\n}\nfunction getItemRole(popupRole) {\n  var _a;\n  const itemRoleByPopupRole = {\n    menu: \"menuitem\",\n    listbox: \"option\",\n    tree: \"treeitem\"\n  };\n  const key = popupRole;\n  return (_a = itemRoleByPopupRole[key]) != null ? _a : \"option\";\n}\nvar useComboboxItem = createHook(\n  function useComboboxItem2(_a) {\n    var _b = _a, {\n      store,\n      value,\n      hideOnClick,\n      setValueOnClick,\n      selectValueOnClick = true,\n      resetValueOnSelect,\n      focusOnHover = false,\n      moveOnKeyPress = true,\n      getItem: getItemProp\n    } = _b, props = __objRest(_b, [\n      \"store\",\n      \"value\",\n      \"hideOnClick\",\n      \"setValueOnClick\",\n      \"selectValueOnClick\",\n      \"resetValueOnSelect\",\n      \"focusOnHover\",\n      \"moveOnKeyPress\",\n      \"getItem\"\n    ]);\n    var _a2;\n    const context = useComboboxScopedContext();\n    store = store || context;\n    invariant(\n      store,\n      process.env.NODE_ENV !== \"production\" && \"ComboboxItem must be wrapped in a ComboboxList or ComboboxPopover component.\"\n    );\n    const { resetValueOnSelectState, multiSelectable, selected } = useStoreStateObject(store, {\n      resetValueOnSelectState: \"resetValueOnSelect\",\n      multiSelectable(state) {\n        return Array.isArray(state.selectedValue);\n      },\n      selected(state) {\n        return isSelected(state.selectedValue, value);\n      }\n    });\n    const getItem = useCallback(\n      (item) => {\n        const nextItem = __spreadProps(__spreadValues({}, item), { value });\n        if (getItemProp) {\n          return getItemProp(nextItem);\n        }\n        return nextItem;\n      },\n      [value, getItemProp]\n    );\n    setValueOnClick = setValueOnClick != null ? setValueOnClick : !multiSelectable;\n    hideOnClick = hideOnClick != null ? hideOnClick : value != null && !multiSelectable;\n    const onClickProp = props.onClick;\n    const setValueOnClickProp = useBooleanEvent(setValueOnClick);\n    const selectValueOnClickProp = useBooleanEvent(selectValueOnClick);\n    const resetValueOnSelectProp = useBooleanEvent(\n      (_a2 = resetValueOnSelect != null ? resetValueOnSelect : resetValueOnSelectState) != null ? _a2 : multiSelectable\n    );\n    const hideOnClickProp = useBooleanEvent(hideOnClick);\n    const onClick = useEvent((event) => {\n      onClickProp == null ? void 0 : onClickProp(event);\n      if (event.defaultPrevented) return;\n      if (isDownloading(event)) return;\n      if (isOpeningInNewTab(event)) return;\n      if (value != null) {\n        if (selectValueOnClickProp(event)) {\n          if (resetValueOnSelectProp(event)) {\n            store == null ? void 0 : store.resetValue();\n          }\n          store == null ? void 0 : store.setSelectedValue((prevValue) => {\n            if (!Array.isArray(prevValue)) return value;\n            if (prevValue.includes(value)) {\n              return prevValue.filter((v) => v !== value);\n            }\n            return [...prevValue, value];\n          });\n        }\n        if (setValueOnClickProp(event)) {\n          store == null ? void 0 : store.setValue(value);\n        }\n      }\n      if (hideOnClickProp(event)) {\n        store == null ? void 0 : store.hide();\n      }\n    });\n    const onKeyDownProp = props.onKeyDown;\n    const onKeyDown = useEvent((event) => {\n      onKeyDownProp == null ? void 0 : onKeyDownProp(event);\n      if (event.defaultPrevented) return;\n      const baseElement = store == null ? void 0 : store.getState().baseElement;\n      if (!baseElement) return;\n      if (hasFocus(baseElement)) return;\n      const printable = event.key.length === 1;\n      if (printable || event.key === \"Backspace\" || event.key === \"Delete\") {\n        queueMicrotask(() => baseElement.focus());\n        if (isTextField(baseElement)) {\n          store == null ? void 0 : store.setValue(baseElement.value);\n        }\n      }\n    });\n    if (multiSelectable && selected != null) {\n      props = __spreadValues({\n        \"aria-selected\": selected\n      }, props);\n    }\n    props = useWrapElement(\n      props,\n      (element) => /* @__PURE__ */ jsx(ComboboxItemValueContext.Provider, { value, children: /* @__PURE__ */ jsx(ComboboxItemCheckedContext.Provider, { value: selected != null ? selected : false, children: element }) }),\n      [value, selected]\n    );\n    const popupRole = useContext(ComboboxListRoleContext);\n    props = __spreadProps(__spreadValues({\n      role: getItemRole(popupRole),\n      children: value\n    }, props), {\n      onClick,\n      onKeyDown\n    });\n    const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress);\n    props = useCompositeItem(__spreadProps(__spreadValues({\n      store\n    }, props), {\n      getItem,\n      // Dispatch a custom event on the combobox input when moving to an item\n      // with the keyboard so the Combobox component can enable inline\n      // autocompletion.\n      moveOnKeyPress: (event) => {\n        if (!moveOnKeyPressProp(event)) return false;\n        const moveEvent = new Event(\"combobox-item-move\");\n        const baseElement = store == null ? void 0 : store.getState().baseElement;\n        baseElement == null ? void 0 : baseElement.dispatchEvent(moveEvent);\n        return true;\n      }\n    }));\n    props = useCompositeHover(__spreadValues({ store, focusOnHover }, props));\n    return props;\n  }\n);\nvar ComboboxItem = memo(\n  forwardRef(function ComboboxItem2(props) {\n    const htmlProps = useComboboxItem(props);\n    return createElement(TagName, htmlProps);\n  })\n);\n\nexport {\n  useComboboxItem,\n  ComboboxItem\n};\n", "\"use client\";\nimport {\n  useComboboxProviderContext\n} from \"../__chunks/VEVQD5MH.js\";\nimport \"../__chunks/P7GR5CS5.js\";\nimport \"../__chunks/VDHZ5F7K.js\";\nimport \"../__chunks/MTZPJQMC.js\";\nimport \"../__chunks/RS7LB2H4.js\";\nimport \"../__chunks/S6EF7IVO.js\";\nimport {\n  createElement,\n  createHook,\n  forwardRef,\n  memo\n} from \"../__chunks/LMDWO4NN.js\";\nimport \"../__chunks/ABQUS43J.js\";\nimport \"../__chunks/SK3NAZA3.js\";\nimport {\n  __objRest,\n  __spreadValues\n} from \"../__chunks/3YLGPPWQ.js\";\n\n// src/combobox/combobox-label.tsx\nimport { invariant, removeUndefinedValues } from \"@ariakit/core/utils/misc\";\nvar TagName = \"label\";\nvar useComboboxLabel = createHook(\n  function useComboboxLabel2(_a) {\n    var _b = _a, { store } = _b, props = __objRest(_b, [\"store\"]);\n    const context = useComboboxProviderContext();\n    store = store || context;\n    invariant(\n      store,\n      process.env.NODE_ENV !== \"production\" && \"ComboboxLabel must receive a `store` prop or be wrapped in a ComboboxProvider component.\"\n    );\n    const comboboxId = store.useState((state) => {\n      var _a2;\n      return (_a2 = state.baseElement) == null ? void 0 : _a2.id;\n    });\n    props = __spreadValues({\n      htmlFor: comboboxId\n    }, props);\n    return removeUndefinedValues(props);\n  }\n);\nvar ComboboxLabel = memo(\n  forwardRef(function ComboboxLabel2(props) {\n    const htmlProps = useComboboxLabel(props);\n    return createElement(TagName, htmlProps);\n  })\n);\nexport {\n  ComboboxLabel,\n  useComboboxLabel\n};\n", "\"use client\";\nimport {\n  DialogScopedContextProvider\n} from \"./RS7LB2H4.js\";\nimport {\n  useDisclosureProviderContext\n} from \"./S6EF7IVO.js\";\nimport {\n  createElement,\n  createHook,\n  forwardRef\n} from \"./LMDWO4NN.js\";\nimport {\n  useStoreState\n} from \"./YV4JVR4I.js\";\nimport {\n  useId,\n  useMergeRefs,\n  useSafeLayoutEffect,\n  useWrapElement\n} from \"./ABQUS43J.js\";\nimport {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/disclosure/disclosure-content.tsx\nimport { invariant, removeUndefinedValues } from \"@ariakit/core/utils/misc\";\nimport { useMemo, useRef, useState } from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TagName = \"div\";\nfunction afterTimeout(timeoutMs, cb) {\n  const timeoutId = setTimeout(cb, timeoutMs);\n  return () => clearTimeout(timeoutId);\n}\nfunction afterPaint(cb) {\n  let raf = requestAnimationFrame(() => {\n    raf = requestAnimationFrame(cb);\n  });\n  return () => cancelAnimationFrame(raf);\n}\nfunction parseCSSTime(...times) {\n  return times.join(\", \").split(\", \").reduce((longestTime, currentTimeString) => {\n    const multiplier = currentTimeString.endsWith(\"ms\") ? 1 : 1e3;\n    const currentTime = Number.parseFloat(currentTimeString || \"0s\") * multiplier;\n    if (currentTime > longestTime) return currentTime;\n    return longestTime;\n  }, 0);\n}\nfunction isHidden(mounted, hidden, alwaysVisible) {\n  return !alwaysVisible && hidden !== false && (!mounted || !!hidden);\n}\nvar useDisclosureContent = createHook(function useDisclosureContent2(_a) {\n  var _b = _a, { store, alwaysVisible } = _b, props = __objRest(_b, [\"store\", \"alwaysVisible\"]);\n  const context = useDisclosureProviderContext();\n  store = store || context;\n  invariant(\n    store,\n    process.env.NODE_ENV !== \"production\" && \"DisclosureContent must receive a `store` prop or be wrapped in a DisclosureProvider component.\"\n  );\n  const ref = useRef(null);\n  const id = useId(props.id);\n  const [transition, setTransition] = useState(null);\n  const open = store.useState(\"open\");\n  const mounted = store.useState(\"mounted\");\n  const animated = store.useState(\"animated\");\n  const contentElement = store.useState(\"contentElement\");\n  const otherElement = useStoreState(store.disclosure, \"contentElement\");\n  useSafeLayoutEffect(() => {\n    if (!ref.current) return;\n    store == null ? void 0 : store.setContentElement(ref.current);\n  }, [store]);\n  useSafeLayoutEffect(() => {\n    let previousAnimated;\n    store == null ? void 0 : store.setState(\"animated\", (animated2) => {\n      previousAnimated = animated2;\n      return true;\n    });\n    return () => {\n      if (previousAnimated === void 0) return;\n      store == null ? void 0 : store.setState(\"animated\", previousAnimated);\n    };\n  }, [store]);\n  useSafeLayoutEffect(() => {\n    if (!animated) return;\n    if (!(contentElement == null ? void 0 : contentElement.isConnected)) {\n      setTransition(null);\n      return;\n    }\n    return afterPaint(() => {\n      setTransition(open ? \"enter\" : mounted ? \"leave\" : null);\n    });\n  }, [animated, contentElement, open, mounted]);\n  useSafeLayoutEffect(() => {\n    if (!store) return;\n    if (!animated) return;\n    if (!transition) return;\n    if (!contentElement) return;\n    const stopAnimation = () => store == null ? void 0 : store.setState(\"animating\", false);\n    const stopAnimationSync = () => flushSync(stopAnimation);\n    if (transition === \"leave\" && open) return;\n    if (transition === \"enter\" && !open) return;\n    if (typeof animated === \"number\") {\n      const timeout2 = animated;\n      return afterTimeout(timeout2, stopAnimationSync);\n    }\n    const {\n      transitionDuration,\n      animationDuration,\n      transitionDelay,\n      animationDelay\n    } = getComputedStyle(contentElement);\n    const {\n      transitionDuration: transitionDuration2 = \"0\",\n      animationDuration: animationDuration2 = \"0\",\n      transitionDelay: transitionDelay2 = \"0\",\n      animationDelay: animationDelay2 = \"0\"\n    } = otherElement ? getComputedStyle(otherElement) : {};\n    const delay = parseCSSTime(\n      transitionDelay,\n      animationDelay,\n      transitionDelay2,\n      animationDelay2\n    );\n    const duration = parseCSSTime(\n      transitionDuration,\n      animationDuration,\n      transitionDuration2,\n      animationDuration2\n    );\n    const timeout = delay + duration;\n    if (!timeout) {\n      if (transition === \"enter\") {\n        store.setState(\"animated\", false);\n      }\n      stopAnimation();\n      return;\n    }\n    const frameRate = 1e3 / 60;\n    const maxTimeout = Math.max(timeout - frameRate, 0);\n    return afterTimeout(maxTimeout, stopAnimationSync);\n  }, [store, animated, contentElement, otherElement, open, transition]);\n  props = useWrapElement(\n    props,\n    (element) => /* @__PURE__ */ jsx(DialogScopedContextProvider, { value: store, children: element }),\n    [store]\n  );\n  const hidden = isHidden(mounted, props.hidden, alwaysVisible);\n  const styleProp = props.style;\n  const style = useMemo(() => {\n    if (hidden) {\n      return __spreadProps(__spreadValues({}, styleProp), { display: \"none\" });\n    }\n    return styleProp;\n  }, [hidden, styleProp]);\n  props = __spreadProps(__spreadValues({\n    id,\n    \"data-open\": open || void 0,\n    \"data-enter\": transition === \"enter\" || void 0,\n    \"data-leave\": transition === \"leave\" || void 0,\n    hidden\n  }, props), {\n    ref: useMergeRefs(id ? store.setContentElement : null, ref, props.ref),\n    style\n  });\n  return removeUndefinedValues(props);\n});\nvar DisclosureContentImpl = forwardRef(function DisclosureContentImpl2(props) {\n  const htmlProps = useDisclosureContent(props);\n  return createElement(TagName, htmlProps);\n});\nvar DisclosureContent = forwardRef(function DisclosureContent2(_a) {\n  var _b = _a, {\n    unmountOnHide\n  } = _b, props = __objRest(_b, [\n    \"unmountOnHide\"\n  ]);\n  const context = useDisclosureProviderContext();\n  const store = props.store || context;\n  const mounted = useStoreState(\n    store,\n    (state) => !unmountOnHide || (state == null ? void 0 : state.mounted)\n  );\n  if (mounted === false) return null;\n  return /* @__PURE__ */ jsx(DisclosureContentImpl, __spreadValues({}, props));\n});\n\nexport {\n  isHidden,\n  useDisclosureContent,\n  DisclosureContent\n};\n", "\"use client\";\nimport {\n  ComboboxListRoleContext,\n  ComboboxScopedContextProvider,\n  useComboboxContext,\n  useComboboxScopedContext\n} from \"./VEVQD5MH.js\";\nimport {\n  isHidden\n} from \"./VGCJ63VH.js\";\nimport {\n  createElement,\n  createHook,\n  forwardRef\n} from \"./LMDWO4NN.js\";\nimport {\n  useAttribute,\n  useId,\n  useMergeRefs,\n  useSafeLayoutEffect,\n  useWrapElement\n} from \"./ABQUS43J.js\";\nimport {\n  __objRest,\n  __spreadProps,\n  __spreadValues\n} from \"./3YLGPPWQ.js\";\n\n// src/combobox/combobox-list.tsx\nimport { invariant, removeUndefinedValues } from \"@ariakit/core/utils/misc\";\nimport { useRef, useState } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TagName = \"div\";\nvar useComboboxList = createHook(\n  function useComboboxList2(_a) {\n    var _b = _a, { store, alwaysVisible } = _b, props = __objRest(_b, [\"store\", \"alwaysVisible\"]);\n    const scopedContext = useComboboxScopedContext(true);\n    const context = useComboboxContext();\n    store = store || context;\n    const scopedContextSameStore = !!store && store === scopedContext;\n    invariant(\n      store,\n      process.env.NODE_ENV !== \"production\" && \"ComboboxList must receive a `store` prop or be wrapped in a ComboboxProvider component.\"\n    );\n    const ref = useRef(null);\n    const id = useId(props.id);\n    const mounted = store.useState(\"mounted\");\n    const hidden = isHidden(mounted, props.hidden, alwaysVisible);\n    const style = hidden ? __spreadProps(__spreadValues({}, props.style), { display: \"none\" }) : props.style;\n    const multiSelectable = store.useState(\n      (state) => Array.isArray(state.selectedValue)\n    );\n    const role = useAttribute(ref, \"role\", props.role);\n    const isCompositeRole = role === \"listbox\" || role === \"tree\" || role === \"grid\";\n    const ariaMultiSelectable = isCompositeRole ? multiSelectable || void 0 : void 0;\n    const [hasListboxInside, setHasListboxInside] = useState(false);\n    const contentElement = store.useState(\"contentElement\");\n    useSafeLayoutEffect(() => {\n      if (!mounted) return;\n      const element = ref.current;\n      if (!element) return;\n      if (contentElement !== element) return;\n      const callback = () => {\n        setHasListboxInside(!!element.querySelector(\"[role='listbox']\"));\n      };\n      const observer = new MutationObserver(callback);\n      observer.observe(element, {\n        subtree: true,\n        childList: true,\n        attributeFilter: [\"role\"]\n      });\n      callback();\n      return () => observer.disconnect();\n    }, [mounted, contentElement]);\n    if (!hasListboxInside) {\n      props = __spreadValues({\n        role: \"listbox\",\n        \"aria-multiselectable\": ariaMultiSelectable\n      }, props);\n    }\n    props = useWrapElement(\n      props,\n      (element) => /* @__PURE__ */ jsx(ComboboxScopedContextProvider, { value: store, children: /* @__PURE__ */ jsx(ComboboxListRoleContext.Provider, { value: role, children: element }) }),\n      [store, role]\n    );\n    const setContentElement = id && (!scopedContext || !scopedContextSameStore) ? store.setContentElement : null;\n    props = __spreadProps(__spreadValues({\n      id,\n      hidden\n    }, props), {\n      ref: useMergeRefs(setContentElement, ref, props.ref),\n      style\n    });\n    return removeUndefinedValues(props);\n  }\n);\nvar ComboboxList = forwardRef(function ComboboxList2(props) {\n  const htmlProps = useComboboxList(props);\n  return createElement(TagName, htmlProps);\n});\n\nexport {\n  useComboboxList,\n  ComboboxList\n};\n", "/**\n * External dependencies\n */\n// eslint-disable-next-line no-restricted-imports\nimport * as Ariakit from '@ariakit/react';\nimport removeAccents from 'remove-accents';\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useState, useMemo, useDeferredValue } from '@wordpress/element';\nimport {\n\tVisuallyHidden,\n\tIcon,\n\tComposite,\n\tSpinner,\n} from '@wordpress/components';\nimport { search, check } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { getCurrentValue } from './utils';\nimport type { Filter, NormalizedFilter, View, Option } from '../../types';\nimport useElements from '../../hooks/use-elements';\n\ninterface SearchWidgetProps {\n\tview: View;\n\tfilter: NormalizedFilter & {\n\t\telements: Option[];\n\t};\n\tonChangeView: ( view: View ) => void;\n}\n\nfunction normalizeSearchInput( input = '' ) {\n\treturn removeAccents( input.trim().toLowerCase() );\n}\n\nconst getNewValue = (\n\tfilterDefinition: NormalizedFilter,\n\tcurrentFilter: Filter | undefined,\n\tvalue: any\n) => {\n\tif ( filterDefinition.singleSelection ) {\n\t\treturn value;\n\t}\n\n\tif ( Array.isArray( currentFilter?.value ) ) {\n\t\treturn currentFilter.value.includes( value )\n\t\t\t? currentFilter.value.filter( ( v ) => v !== value )\n\t\t\t: [ ...currentFilter.value, value ];\n\t}\n\n\treturn [ value ];\n};\n\nfunction generateFilterElementCompositeItemId(\n\tprefix: string,\n\tfilterElementValue: string\n) {\n\treturn `${ prefix }-${ filterElementValue }`;\n}\n\nconst MultiSelectionOption = ( { selected }: { selected: boolean } ) => {\n\treturn (\n\t\t<span\n\t\t\tclassName={ clsx(\n\t\t\t\t'dataviews-filters__search-widget-listitem-multi-selection',\n\t\t\t\t{ 'is-selected': selected }\n\t\t\t) }\n\t\t>\n\t\t\t{ selected && <Icon icon={ check } /> }\n\t\t</span>\n\t);\n};\n\nconst SingleSelectionOption = ( { selected }: { selected: boolean } ) => {\n\treturn (\n\t\t<span\n\t\t\tclassName={ clsx(\n\t\t\t\t'dataviews-filters__search-widget-listitem-single-selection',\n\t\t\t\t{ 'is-selected': selected }\n\t\t\t) }\n\t\t/>\n\t);\n};\n\nfunction ListBox( { view, filter, onChangeView }: SearchWidgetProps ) {\n\tconst baseId = useInstanceId( ListBox, 'dataviews-filter-list-box' );\n\n\tconst [ activeCompositeId, setActiveCompositeId ] = useState<\n\t\tstring | null | undefined\n\t>(\n\t\t// When there are one or less operators, the first item is set as active\n\t\t// (by setting the initial `activeId` to `undefined`).\n\t\t// With 2 or more operators, the focus is moved on the operators control\n\t\t// (by setting the initial `activeId` to `null`), meaning that there won't\n\t\t// be an active item initially. Focus is then managed via the\n\t\t// `onFocusVisible` callback.\n\t\tfilter.operators?.length === 1 ? undefined : null\n\t);\n\tconst currentFilter = view.filters?.find(\n\t\t( f ) => f.field === filter.field\n\t);\n\tconst currentValue = getCurrentValue( filter, currentFilter );\n\treturn (\n\t\t<Composite\n\t\t\tvirtualFocus\n\t\t\tfocusLoop\n\t\t\tactiveId={ activeCompositeId }\n\t\t\tsetActiveId={ setActiveCompositeId }\n\t\t\trole=\"listbox\"\n\t\t\tclassName=\"dataviews-filters__search-widget-listbox\"\n\t\t\taria-label={ sprintf(\n\t\t\t\t/* translators: List of items for a filter. 1: Filter name. e.g.: \"List of: Author\". */\n\t\t\t\t__( 'List of: %1$s' ),\n\t\t\t\tfilter.name\n\t\t\t) }\n\t\t\tonFocusVisible={ () => {\n\t\t\t\t// `onFocusVisible` needs the `Composite` component to be focusable,\n\t\t\t\t// which is implicitly achieved via the `virtualFocus` prop.\n\t\t\t\tif ( ! activeCompositeId && filter.elements.length ) {\n\t\t\t\t\tsetActiveCompositeId(\n\t\t\t\t\t\tgenerateFilterElementCompositeItemId(\n\t\t\t\t\t\t\tbaseId,\n\t\t\t\t\t\t\tfilter.elements[ 0 ].value\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t\trender={ <Composite.Typeahead /> }\n\t\t>\n\t\t\t{ filter.elements.map( ( element ) => (\n\t\t\t\t<Composite.Hover\n\t\t\t\t\tkey={ element.value }\n\t\t\t\t\trender={\n\t\t\t\t\t\t<Composite.Item\n\t\t\t\t\t\t\tid={ generateFilterElementCompositeItemId(\n\t\t\t\t\t\t\t\tbaseId,\n\t\t\t\t\t\t\t\telement.value\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\taria-label={ element.label }\n\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-filters__search-widget-listitem\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tconst newFilters = currentFilter\n\t\t\t\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t\t\t\t...( view.filters ?? [] ).map(\n\t\t\t\t\t\t\t\t\t\t\t\t( _filter ) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_filter.field ===\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilter.field\n\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentFilter.operator ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilter\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: getNewValue(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentFilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telement.value\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn _filter;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t  ]\n\t\t\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t\t\t...( view.filters ?? [] ),\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: getNewValue(\n\t\t\t\t\t\t\t\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcurrentFilter,\n\t\t\t\t\t\t\t\t\t\t\t\t\telement.value\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t  ];\n\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\tfilters: newFilters,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ filter.singleSelection && (\n\t\t\t\t\t\t<SingleSelectionOption\n\t\t\t\t\t\t\tselected={ currentValue === element.value }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! filter.singleSelection && (\n\t\t\t\t\t\t<MultiSelectionOption\n\t\t\t\t\t\t\tselected={ currentValue.includes( element.value ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<span>{ element.label }</span>\n\t\t\t\t</Composite.Hover>\n\t\t\t) ) }\n\t\t</Composite>\n\t);\n}\n\nfunction ComboboxList( { view, filter, onChangeView }: SearchWidgetProps ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst deferredSearchValue = useDeferredValue( searchValue );\n\tconst currentFilter = view.filters?.find(\n\t\t( _filter ) => _filter.field === filter.field\n\t);\n\tconst currentValue = getCurrentValue( filter, currentFilter );\n\tconst matches = useMemo( () => {\n\t\tconst normalizedSearch = normalizeSearchInput( deferredSearchValue );\n\t\treturn filter.elements.filter( ( item ) =>\n\t\t\tnormalizeSearchInput( item.label ).includes( normalizedSearch )\n\t\t);\n\t}, [ filter.elements, deferredSearchValue ] );\n\treturn (\n\t\t<Ariakit.ComboboxProvider\n\t\t\tselectedValue={ currentValue }\n\t\t\tsetSelectedValue={ ( value ) => {\n\t\t\t\tconst newFilters = currentFilter\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t...( view.filters ?? [] ).map( ( _filter ) => {\n\t\t\t\t\t\t\t\tif ( _filter.field === filter.field ) {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\t\t\t\tcurrentFilter.operator ||\n\t\t\t\t\t\t\t\t\t\t\tfilter.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn _filter;\n\t\t\t\t\t\t\t} ),\n\t\t\t\t\t  ]\n\t\t\t\t\t: [\n\t\t\t\t\t\t\t...( view.filters ?? [] ),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t  ];\n\t\t\t\tonChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tpage: 1,\n\t\t\t\t\tfilters: newFilters,\n\t\t\t\t} );\n\t\t\t} }\n\t\t\tsetValue={ setSearchValue }\n\t\t>\n\t\t\t<div className=\"dataviews-filters__search-widget-filter-combobox__wrapper\">\n\t\t\t\t<Ariakit.ComboboxLabel\n\t\t\t\t\trender={\n\t\t\t\t\t\t<VisuallyHidden>\n\t\t\t\t\t\t\t{ __( 'Search items' ) }\n\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Search items' ) }\n\t\t\t\t</Ariakit.ComboboxLabel>\n\t\t\t\t<Ariakit.Combobox\n\t\t\t\t\tautoSelect=\"always\"\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t\tclassName=\"dataviews-filters__search-widget-filter-combobox__input\"\n\t\t\t\t/>\n\t\t\t\t<div className=\"dataviews-filters__search-widget-filter-combobox__icon\">\n\t\t\t\t\t<Icon icon={ search } />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<Ariakit.ComboboxList\n\t\t\t\tclassName=\"dataviews-filters__search-widget-filter-combobox-list\"\n\t\t\t\talwaysVisible\n\t\t\t>\n\t\t\t\t{ matches.map( ( element ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Ariakit.ComboboxItem\n\t\t\t\t\t\t\tresetValueOnSelect={ false }\n\t\t\t\t\t\t\tkey={ element.value }\n\t\t\t\t\t\t\tvalue={ element.value }\n\t\t\t\t\t\t\tclassName=\"dataviews-filters__search-widget-listitem\"\n\t\t\t\t\t\t\thideOnClick={ false }\n\t\t\t\t\t\t\tsetValueOnClick={ false }\n\t\t\t\t\t\t\tfocusOnHover\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ filter.singleSelection && (\n\t\t\t\t\t\t\t\t<SingleSelectionOption\n\t\t\t\t\t\t\t\t\tselected={ currentValue === element.value }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ ! filter.singleSelection && (\n\t\t\t\t\t\t\t\t<MultiSelectionOption\n\t\t\t\t\t\t\t\t\tselected={ currentValue.includes(\n\t\t\t\t\t\t\t\t\t\telement.value\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t<Ariakit.ComboboxItemValue\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-filters__search-widget-filter-combobox-item-value\"\n\t\t\t\t\t\t\t\t\tvalue={ element.label }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{ !! element.description && (\n\t\t\t\t\t\t\t\t\t<span className=\"dataviews-filters__search-widget-listitem-description\">\n\t\t\t\t\t\t\t\t\t\t{ element.description }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</Ariakit.ComboboxItem>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t\t{ ! matches.length && <p>{ __( 'No results found' ) }</p> }\n\t\t\t</Ariakit.ComboboxList>\n\t\t</Ariakit.ComboboxProvider>\n\t);\n}\n\nexport default function SearchWidget( props: SearchWidgetProps ) {\n\tconst { elements, isLoading } = useElements( {\n\t\telements: props.filter.elements,\n\t\tgetElements: props.filter.getElements,\n\t} );\n\n\tif ( isLoading ) {\n\t\treturn (\n\t\t\t<div className=\"dataviews-filters__search-widget-no-elements\">\n\t\t\t\t<Spinner />\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( elements.length === 0 ) {\n\t\treturn (\n\t\t\t<div className=\"dataviews-filters__search-widget-no-elements\">\n\t\t\t\t{ __( 'No elements found' ) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst Widget = elements.length > 10 ? ComboboxList : ListBox;\n\treturn <Widget { ...props } filter={ { ...props.filter, elements } } />;\n}\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedFilter, Filter } from '../../types';\n\nconst EMPTY_ARRAY: [] = [];\n\nexport const getCurrentValue = (\n\tfilterDefinition: NormalizedFilter,\n\tcurrentFilter?: Filter\n) => {\n\tif ( filterDefinition.singleSelection ) {\n\t\treturn currentFilter?.value;\n\t}\n\n\tif ( Array.isArray( currentFilter?.value ) ) {\n\t\treturn currentFilter.value;\n\t}\n\n\tif ( ! Array.isArray( currentFilter?.value ) && !! currentFilter?.value ) {\n\t\treturn [ currentFilter.value ];\n\t}\n\n\treturn EMPTY_ARRAY;\n};\n", "/**\n * WordPress dependencies\n */\nimport { useEffect, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { Option } from '../types';\n\nconst EMPTY_ARRAY: Option[] = [];\n\nexport default function useElements( {\n\telements,\n\tgetElements,\n}: {\n\telements?: Option[];\n\tgetElements?: () => Promise< Option[] >;\n} ) {\n\tconst staticElements =\n\t\tArray.isArray( elements ) && elements.length > 0\n\t\t\t? elements\n\t\t\t: EMPTY_ARRAY;\n\tconst [ records, setRecords ] = useState< Option[] >( staticElements );\n\tconst [ isLoading, setIsLoading ] = useState( false );\n\n\tuseEffect( () => {\n\t\tif ( ! getElements ) {\n\t\t\tsetRecords( staticElements );\n\t\t\treturn;\n\t\t}\n\n\t\tlet cancelled = false;\n\t\tsetIsLoading( true );\n\t\tgetElements()\n\t\t\t.then( ( fetchedElements ) => {\n\t\t\t\tif ( ! cancelled ) {\n\t\t\t\t\tconst dynamicElements =\n\t\t\t\t\t\tArray.isArray( fetchedElements ) &&\n\t\t\t\t\t\tfetchedElements.length > 0\n\t\t\t\t\t\t\t? fetchedElements\n\t\t\t\t\t\t\t: staticElements;\n\t\t\t\t\tsetRecords( dynamicElements );\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.catch( () => {\n\t\t\t\tif ( ! cancelled ) {\n\t\t\t\t\tsetRecords( staticElements );\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.finally( () => {\n\t\t\t\tif ( ! cancelled ) {\n\t\t\t\t\tsetIsLoading( false );\n\t\t\t\t}\n\t\t\t} );\n\n\t\treturn () => {\n\t\t\tcancelled = true;\n\t\t};\n\t}, [ getElements, staticElements ] );\n\n\treturn {\n\t\telements: records,\n\t\tisLoading,\n\t};\n}\n", "/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6/index.js';\n\n/**\n * WordPress dependencies\n */\nimport { useEvent } from '@wordpress/compose';\nimport { useMemo } from '@wordpress/element';\nimport { Flex } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tView,\n\tNormalizedFilter,\n\tNormalizedField,\n\tNormalizedRules,\n} from '../../types';\nimport { getCurrentValue } from './utils';\n\ninterface UserInputWidgetProps {\n\tview: View;\n\tfilter: NormalizedFilter;\n\tonChangeView: ( view: View ) => void;\n\tfields: NormalizedField< any >[];\n}\n\nexport default function InputWidget( {\n\tfilter,\n\tview,\n\tonChangeView,\n\tfields,\n}: UserInputWidgetProps ) {\n\tconst currentFilter = view.filters?.find(\n\t\t( f ) => f.field === filter.field\n\t);\n\tconst currentValue = getCurrentValue( filter, currentFilter );\n\n\t/*\n\t * We are reusing the field.Edit component for filters. By doing so,\n\t * we get for free a filter control specific to the field type\n\t * and other aspects of the field API (Edit control configuration, etc.).\n\t *\n\t * This approach comes with an issue: the field.Edit controls work with getValue\n\t * and setValue methods, which take an item (Item) as parameter. But, at this point,\n\t * we don't have an item and we don't know how to create one, either.\n\t *\n\t * So, what we do is to prepare the data and the relevant field configuration\n\t * as if Item was a plain object whose keys are the field ids:\n\t *\n\t * {\n\t *   [ fieldOne.id ]: value,\n\t *   [ fieldTwo.id ]: value,\n\t * }\n\t *\n\t */\n\tconst field = useMemo( () => {\n\t\tconst currentField = fields.find( ( f ) => f.id === filter.field );\n\t\tif ( currentField ) {\n\t\t\treturn {\n\t\t\t\t...currentField,\n\t\t\t\t// Deactivate validation for filters.\n\t\t\t\tisValid: {} satisfies NormalizedRules< any >,\n\t\t\t\t// Configure getValue/setValue as if Item was a plain object.\n\t\t\t\tgetValue: ( { item }: { item: any } ) =>\n\t\t\t\t\titem[ currentField.id ],\n\t\t\t\tsetValue: ( { value }: { value: any } ) => ( {\n\t\t\t\t\t[ currentField.id ]: value,\n\t\t\t\t} ),\n\t\t\t};\n\t\t}\n\t\treturn currentField;\n\t}, [ fields, filter.field ] );\n\n\tconst data = useMemo( () => {\n\t\treturn ( view.filters ?? [] ).reduce(\n\t\t\t( acc, activeFilter ) => {\n\t\t\t\t// We can now assume the field is stored as a Item prop.\n\t\t\t\tacc[ activeFilter.field ] = activeFilter.value;\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{} as Record< string, any >\n\t\t);\n\t}, [ view.filters ] );\n\n\tconst handleChange = useEvent( ( updatedData: Record< string, any > ) => {\n\t\tif ( ! field || ! currentFilter ) {\n\t\t\treturn;\n\t\t}\n\t\tconst nextValue = field.getValue( { item: updatedData } );\n\t\tif ( fastDeepEqual( nextValue, currentValue ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tonChangeView( {\n\t\t\t...view,\n\t\t\tfilters: ( view.filters ?? [] ).map( ( _filter ) =>\n\t\t\t\t_filter.field === filter.field\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t..._filter,\n\t\t\t\t\t\t\toperator:\n\t\t\t\t\t\t\t\tcurrentFilter.operator || filter.operators[ 0 ],\n\t\t\t\t\t\t\t// Consider empty strings as undefined:\n\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t// - undefined as value means the filter is unset: the filter widget displays no value and the search returns all records\n\t\t\t\t\t\t\t// - empty string as value means \"search empty string\": returns only the records that have an empty string as value\n\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t// In practice, this means the filter will not be able to find an empty string as the value.\n\t\t\t\t\t\t\tvalue: nextValue === '' ? undefined : nextValue,\n\t\t\t\t\t  }\n\t\t\t\t\t: _filter\n\t\t\t),\n\t\t} );\n\t} );\n\n\tif ( ! field || ! field.Edit || ! currentFilter ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Flex\n\t\t\tclassName=\"dataviews-filters__user-input-widget\"\n\t\t\tgap={ 2.5 }\n\t\t\tdirection=\"column\"\n\t\t>\n\t\t\t<field.Edit\n\t\t\t\thideLabelFromVision\n\t\t\t\tdata={ data }\n\t\t\t\tfield={ field }\n\t\t\t\toperator={ currentFilter.operator }\n\t\t\t\tonChange={ handleChange }\n\t\t\t/>\n\t\t</Flex>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { createInterpolateElement } from '@wordpress/element';\nimport type { ReactElement } from 'react';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedFilter, Operator, Option } from '../types';\nimport {\n\tOPERATOR_AFTER,\n\tOPERATOR_AFTER_INC,\n\tOPERATOR_BEFORE,\n\tOPERATOR_BEFORE_INC,\n\tOPERATOR_BETWEEN,\n\tOPERATOR_CONTAINS,\n\tOPERATOR_GREATER_THAN,\n\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\tOPERATOR_IN_THE_PAST,\n\tOPERATOR_IS,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_LESS_THAN,\n\tOPERATOR_LESS_THAN_OR_EQUAL,\n\tOPERATOR_NOT_CONTAINS,\n\tOPERATOR_NOT_ON,\n\tOPERATOR_ON,\n\tOPERATOR_OVER,\n\tOPERATOR_STARTS_WITH,\n} from '../constants';\n\nconst filterTextWrappers = {\n\tName: <span className=\"dataviews-filters__summary-filter-text-name\" />,\n\tValue: <span className=\"dataviews-filters__summary-filter-text-value\" />,\n};\n\nconst OPERATORS: {\n\tname: Operator;\n\tlabel: string;\n\tfilterText: (\n\t\tfilter: NormalizedFilter,\n\t\tactiveElements: Option[]\n\t) => ReactElement;\n\tselection: 'single' | 'multi' | 'custom';\n}[] = [\n\t{\n\t\tname: OPERATOR_IS_ANY,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Includes' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author is any: Admin, Editor\". */\n\t\t\t\t\t__( '<Name>%1$s includes: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements\n\t\t\t\t\t\t.map( ( element ) => element.label )\n\t\t\t\t\t\t.join( ', ' )\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'multi',\n\t},\n\t{\n\t\tname: OPERATOR_IS_NONE,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Is none of' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author is none of: Admin, Editor\". */\n\t\t\t\t\t__( '<Name>%1$s is none of: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements\n\t\t\t\t\t\t.map( ( element ) => element.label )\n\t\t\t\t\t\t.join( ', ' )\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'multi',\n\t},\n\t{\n\t\tname: OPERATOR_IS_ALL,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Includes all' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author includes all: Admin, Editor\". */\n\t\t\t\t\t__( '<Name>%1$s includes all: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements\n\t\t\t\t\t\t.map( ( element ) => element.label )\n\t\t\t\t\t\t.join( ', ' )\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'multi',\n\t},\n\t{\n\t\tname: OPERATOR_IS_NOT_ALL,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Is none of' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author is none of: Admin, Editor\". */\n\t\t\t\t\t__( '<Name>%1$s is none of: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements\n\t\t\t\t\t\t.map( ( element ) => element.label )\n\t\t\t\t\t\t.join( ', ' )\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'multi',\n\t},\n\t{\n\t\tname: OPERATOR_BETWEEN,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Between (inc)' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* 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\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s between (inc): </Name><Value>%2$s and %3$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label[ 0 ],\n\t\t\t\t\tactiveElements[ 0 ].label[ 1 ]\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'custom',\n\t},\n\t{\n\t\tname: OPERATOR_IN_THE_PAST,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'In the past' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"7 days\"): \"Date is in the past: 7 days\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is in the past: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\t`${ activeElements[ 0 ].value.value } ${ activeElements[ 0 ].value.unit }`\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'custom',\n\t},\n\t{\n\t\tname: OPERATOR_OVER,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Over' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"7 days\"): \"Date is over: 7 days\". */\n\t\t\t\t\t__( '<Name>%1$s is over: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\t`${ activeElements[ 0 ].value.value } ${ activeElements[ 0 ].value.unit }`\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'custom',\n\t},\n\t{\n\t\tname: OPERATOR_IS,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Is' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author is: Admin\". */\n\t\t\t\t\t__( '<Name>%1$s is: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_IS_NOT,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Is not' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Author\"). 2: Filter value (e.g. \"Admin\"): \"Author is not: Admin\". */\n\t\t\t\t\t__( '<Name>%1$s is not: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_LESS_THAN,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Less than' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Count\"). 2: Filter value (e.g. \"10\"): \"Count is less than: 10\". */\n\t\t\t\t\t__( '<Name>%1$s is less than: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_GREATER_THAN,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Greater than' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Count\"). 2: Filter value (e.g. \"10\"): \"Count is greater than: 10\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is greater than: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_LESS_THAN_OR_EQUAL,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Less than or equal' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Count\"). 2: Filter value (e.g. \"10\"): \"Count is less than or equal to: 10\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is less than or equal to: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_GREATER_THAN_OR_EQUAL,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Greater than or equal' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Count\"). 2: Filter value (e.g. \"10\"): \"Count is greater than or equal to: 10\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is greater than or equal to: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_BEFORE,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Before' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is before: 2024-01-01\". */\n\t\t\t\t\t__( '<Name>%1$s is before: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_AFTER,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'After' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is after: 2024-01-01\". */\n\t\t\t\t\t__( '<Name>%1$s is after: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_BEFORE_INC,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Before (inc)' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is on or before: 2024-01-01\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is on or before: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_AFTER_INC,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'After (inc)' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is on or after: 2024-01-01\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t'<Name>%1$s is on or after: </Name><Value>%2$s</Value>'\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_CONTAINS,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Contains' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Title\"). 2: Filter value (e.g. \"Hello\"): \"Title contains: Hello\". */\n\t\t\t\t\t__( '<Name>%1$s contains: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_NOT_CONTAINS,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( \"Doesn't contain\" ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Title\"). 2: Filter value (e.g. \"Hello\"): \"Title doesn't contain: Hello\". */\n\t\t\t\t\t__(\n\t\t\t\t\t\t\"<Name>%1$s doesn't contain: </Name><Value>%2$s</Value>\"\n\t\t\t\t\t),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_STARTS_WITH,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Starts with' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Title\"). 2: Filter value (e.g. \"Hello\"): \"Title starts with: Hello\". */\n\t\t\t\t\t__( '<Name>%1$s starts with: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_ON,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'On' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is: 2024-01-01\". */\n\t\t\t\t\t__( '<Name>%1$s is: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n\t{\n\t\tname: OPERATOR_NOT_ON,\n\t\t/* translators: DataViews operator name */\n\t\tlabel: __( 'Not on' ),\n\t\tfilterText: ( filter: NormalizedFilter, activeElements: Option[] ) =>\n\t\t\tcreateInterpolateElement(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: 1: Filter name (e.g. \"Date\"). 2: Filter value (e.g. \"2024-01-01\"): \"Date is not: 2024-01-01\". */\n\t\t\t\t\t__( '<Name>%1$s is not: </Name><Value>%2$s</Value>' ),\n\t\t\t\t\tfilter.name,\n\t\t\t\t\tactiveElements[ 0 ].label\n\t\t\t\t),\n\t\t\t\tfilterTextWrappers\n\t\t\t),\n\t\tselection: 'single',\n\t},\n];\n\nconst getOperatorByName = ( name: string | undefined ) =>\n\tOPERATORS.find( ( op ) => op.name === name );\n\nconst getAllOperatorNames = () => OPERATORS.map( ( op ) => op.name );\n\nconst isSingleSelectionOperator = ( name: string ) =>\n\tOPERATORS.filter( ( op ) => op.selection === 'single' ).some(\n\t\t( op ) => op.name === name\n\t);\n\nconst isRegisteredOperator = ( name: string ) =>\n\tOPERATORS.some( ( op ) => op.name === name );\n\nexport {\n\tgetOperatorByName,\n\tgetAllOperatorNames,\n\tisSingleSelectionOperator,\n\tisRegisteredOperator,\n};\n", "/**\n * External dependencies\n */\nimport type { Ref } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as componentsPrivateApis,\n\tButton,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport type { NormalizedFilter, View } from '../../types';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\ninterface AddFilterProps {\n\tfilters: NormalizedFilter[];\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n\tsetOpenedFilter: ( filter: string | null ) => void;\n}\n\nexport function AddFilterMenu( {\n\tfilters,\n\tview,\n\tonChangeView,\n\tsetOpenedFilter,\n\ttriggerProps,\n}: AddFilterProps & {\n\ttriggerProps: React.ComponentProps< typeof Menu.TriggerButton >;\n} ) {\n\tconst inactiveFilters = filters.filter( ( filter ) => ! filter.isVisible );\n\treturn (\n\t\t<Menu>\n\t\t\t<Menu.TriggerButton { ...triggerProps } />\n\t\t\t<Menu.Popover>\n\t\t\t\t{ inactiveFilters.map( ( filter ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Menu.Item\n\t\t\t\t\t\t\tkey={ filter.field }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetOpenedFilter( filter.field );\n\t\t\t\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t\t\t\t...view,\n\t\t\t\t\t\t\t\t\tpage: 1,\n\t\t\t\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t\t\t\t...( view.filters || [] ),\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tfield: filter.field,\n\t\t\t\t\t\t\t\t\t\t\tvalue: undefined,\n\t\t\t\t\t\t\t\t\t\t\toperator: filter.operators[ 0 ],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Menu.ItemLabel>{ filter.name }</Menu.ItemLabel>\n\t\t\t\t\t\t</Menu.Item>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</Menu.Popover>\n\t\t</Menu>\n\t);\n}\n\nfunction AddFilter(\n\t{ filters, view, onChangeView, setOpenedFilter }: AddFilterProps,\n\tref: Ref< HTMLButtonElement >\n) {\n\tif ( ! filters.length || filters.every( ( { isPrimary } ) => isPrimary ) ) {\n\t\treturn null;\n\t}\n\tconst inactiveFilters = filters.filter( ( filter ) => ! filter.isVisible );\n\treturn (\n\t\t<AddFilterMenu\n\t\t\ttriggerProps={ {\n\t\t\t\trender: (\n\t\t\t\t\t<Button\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tclassName=\"dataviews-filters-button\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tdisabled={ ! inactiveFilters.length }\n\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t/>\n\t\t\t\t),\n\t\t\t\tchildren: __( 'Add filter' ),\n\t\t\t} }\n\t\t\t{ ...{ filters, view, onChangeView, setOpenedFilter } }\n\t\t/>\n\t);\n}\n\nexport default forwardRef( AddFilter );\n", "/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedFilter, View } from '../../types';\n\ninterface ResetFilterProps {\n\tfilters: NormalizedFilter[];\n\tview: View;\n\tonChangeView: ( view: View ) => void;\n}\n\nexport default function ResetFilter( {\n\tfilters,\n\tview,\n\tonChangeView,\n}: ResetFilterProps ) {\n\tconst isPrimary = ( field: string ) =>\n\t\tfilters.some(\n\t\t\t( _filter ) => _filter.field === field && _filter.isPrimary\n\t\t);\n\tconst isDisabled =\n\t\t! view.search &&\n\t\t! view.filters?.some(\n\t\t\t( _filter ) =>\n\t\t\t\t! _filter.isLocked &&\n\t\t\t\t( _filter.value !== undefined || ! isPrimary( _filter.field ) )\n\t\t);\n\treturn (\n\t\t<Button\n\t\t\tdisabled={ isDisabled }\n\t\t\taccessibleWhenDisabled\n\t\t\tsize=\"compact\"\n\t\t\tvariant=\"tertiary\"\n\t\t\tclassName=\"dataviews-filters__reset-button\"\n\t\t\tonClick={ () => {\n\t\t\t\tonChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tpage: 1,\n\t\t\t\t\tsearch: '',\n\t\t\t\t\tfilters:\n\t\t\t\t\t\tview.filters?.filter( ( f ) => !! f.isLocked ) || [],\n\t\t\t\t} );\n\t\t\t} }\n\t\t>\n\t\t\t{ __( 'Reset' ) }\n\t\t</Button>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport {\n\tisRegisteredOperator,\n\tisSingleSelectionOperator,\n} from '../../utils/operators';\nimport type { NormalizedFilter, NormalizedField, View } from '../../types';\n\nfunction useFilters( fields: NormalizedField< any >[], view: View ) {\n\treturn useMemo( () => {\n\t\tconst filters: NormalizedFilter[] = [];\n\t\tfields.forEach( ( field ) => {\n\t\t\tif (\n\t\t\t\tfield.filterBy === false ||\n\t\t\t\t( ! field.hasElements && ! field.Edit )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst operators = field.filterBy.operators;\n\t\t\tconst isPrimary = !! field.filterBy?.isPrimary;\n\t\t\tconst isLocked =\n\t\t\t\tview.filters?.some(\n\t\t\t\t\t( f ) => f.field === field.id && !! f.isLocked\n\t\t\t\t) ?? false;\n\t\t\tfilters.push( {\n\t\t\t\tfield: field.id,\n\t\t\t\tname: field.label,\n\t\t\t\telements: field.elements,\n\t\t\t\tgetElements: field.getElements,\n\t\t\t\thasElements: field.hasElements,\n\t\t\t\tsingleSelection: operators.some( ( op ) =>\n\t\t\t\t\tisSingleSelectionOperator( op )\n\t\t\t\t),\n\t\t\t\toperators,\n\t\t\t\tisVisible:\n\t\t\t\t\tisLocked ||\n\t\t\t\t\tisPrimary ||\n\t\t\t\t\t!! view.filters?.some(\n\t\t\t\t\t\t( f ) =>\n\t\t\t\t\t\t\tf.field === field.id &&\n\t\t\t\t\t\t\tisRegisteredOperator( f.operator )\n\t\t\t\t\t),\n\t\t\t\tisPrimary,\n\t\t\t\tisLocked,\n\t\t\t} );\n\t\t} );\n\n\t\t// Sort filters by:\n\t\t// - locked filters go first\n\t\t// - primary filters go next\n\t\t// - then, sort by name\n\t\tfilters.sort( ( a, b ) => {\n\t\t\tif ( a.isLocked && ! b.isLocked ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( ! a.isLocked && b.isLocked ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif ( a.isPrimary && ! b.isPrimary ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( ! a.isPrimary && b.isPrimary ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\treturn a.name.localeCompare( b.name );\n\t\t} );\n\t\treturn filters;\n\t}, [ fields, view ] );\n}\n\nexport default useFilters;\n", "/**\n * WordPress dependencies\n */\nimport { useContext, useRef, useCallback, useEffect } from '@wordpress/element';\nimport { Button } from '@wordpress/components';\nimport { funnel } from '@wordpress/icons';\nimport { __, _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { AddFilterMenu } from './add-filter';\nimport DataViewsContext from '../dataviews-context';\nimport type { View } from '../../types';\n\nfunction FiltersToggle() {\n\tconst {\n\t\tfilters,\n\t\tview,\n\t\tonChangeView,\n\t\tsetOpenedFilter,\n\t\tisShowingFilter,\n\t\tsetIsShowingFilter,\n\t} = useContext( DataViewsContext );\n\n\tconst buttonRef = useRef< HTMLButtonElement >( null );\n\tconst onChangeViewWithFilterVisibility = useCallback(\n\t\t( _view: View ) => {\n\t\t\tonChangeView( _view );\n\t\t\tsetIsShowingFilter( true );\n\t\t},\n\t\t[ onChangeView, setIsShowingFilter ]\n\t);\n\tconst visibleFilters = filters.filter( ( filter ) => filter.isVisible );\n\n\tconst hasVisibleFilters = !! visibleFilters.length;\n\tif ( filters.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst addFilterButtonProps = {\n\t\tlabel: __( 'Add filter' ),\n\t\t'aria-expanded': false,\n\t\tisPressed: false,\n\t};\n\tconst toggleFiltersButtonProps = {\n\t\tlabel: _x( 'Filter', 'verb' ),\n\t\t'aria-expanded': isShowingFilter,\n\t\tisPressed: isShowingFilter,\n\t\tonClick: () => {\n\t\t\tif ( ! isShowingFilter ) {\n\t\t\t\tsetOpenedFilter( null );\n\t\t\t}\n\t\t\tsetIsShowingFilter( ! isShowingFilter );\n\t\t},\n\t};\n\tconst buttonComponent = (\n\t\t<Button\n\t\t\tref={ buttonRef }\n\t\t\tclassName=\"dataviews-filters__visibility-toggle\"\n\t\t\tsize=\"compact\"\n\t\t\ticon={ funnel }\n\t\t\t{ ...( hasVisibleFilters\n\t\t\t\t? toggleFiltersButtonProps\n\t\t\t\t: addFilterButtonProps ) }\n\t\t/>\n\t);\n\treturn (\n\t\t<div className=\"dataviews-filters__container-visibility-toggle\">\n\t\t\t{ ! hasVisibleFilters ? (\n\t\t\t\t<AddFilterMenu\n\t\t\t\t\tfilters={ filters }\n\t\t\t\t\tview={ view }\n\t\t\t\t\tonChangeView={ onChangeViewWithFilterVisibility }\n\t\t\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\t\t\ttriggerProps={ { render: buttonComponent } }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<FilterVisibilityToggle\n\t\t\t\t\tbuttonRef={ buttonRef }\n\t\t\t\t\tfiltersCount={ view.filters?.length }\n\t\t\t\t>\n\t\t\t\t\t{ buttonComponent }\n\t\t\t\t</FilterVisibilityToggle>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nfunction FilterVisibilityToggle( {\n\tbuttonRef,\n\tfiltersCount,\n\tchildren,\n}: {\n\tbuttonRef: React.RefObject< HTMLButtonElement >;\n\tfiltersCount?: number;\n\tchildren: React.ReactNode;\n} ) {\n\t// Focus the `add filter` button when unmounts.\n\tuseEffect(\n\t\t() => () => {\n\t\t\tbuttonRef.current?.focus();\n\t\t},\n\t\t[ buttonRef ]\n\t);\n\treturn (\n\t\t<>\n\t\t\t{ children }\n\t\t\t{ !! filtersCount && (\n\t\t\t\t<span className=\"dataviews-filters-toggle__count\">\n\t\t\t\t\t{ filtersCount }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default FiltersToggle;\n", "/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\nimport Filters from './filters';\n\nfunction FiltersToggled( props: { className?: string } ) {\n\tconst { isShowingFilter } = useContext( DataViewsContext );\n\tif ( ! isShowingFilter ) {\n\t\treturn null;\n\t}\n\treturn <Filters { ...props } />;\n}\n\nexport default FiltersToggled;\n", "/**\n * External dependencies\n */\nimport type { ComponentType } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\nimport { VIEW_LAYOUTS } from '../dataviews-layouts';\nimport type { ViewBaseProps } from '../../types';\n\ntype DataViewsLayoutProps = {\n\tclassName?: string;\n};\n\nexport default function DataViewsLayout( { className }: DataViewsLayoutProps ) {\n\tconst {\n\t\tactions = [],\n\t\tdata,\n\t\tfields,\n\t\tgetItemId,\n\t\tgetItemLevel,\n\t\tisLoading,\n\t\tview,\n\t\tonChangeView,\n\t\tselection,\n\t\tonChangeSelection,\n\t\tsetOpenedFilter,\n\t\tonClickItem,\n\t\tisItemClickable,\n\t\trenderItemLink,\n\t\tdefaultLayouts,\n\t\tempty = <p>{ __( 'No results' ) }</p>,\n\t} = useContext( DataViewsContext );\n\n\tconst ViewComponent = VIEW_LAYOUTS.find(\n\t\t( v ) => v.type === view.type && defaultLayouts[ v.type ]\n\t)?.component as ComponentType< ViewBaseProps< any > >;\n\n\treturn (\n\t\t<ViewComponent\n\t\t\tclassName={ className }\n\t\t\tactions={ actions }\n\t\t\tdata={ data }\n\t\t\tfields={ fields }\n\t\t\tgetItemId={ getItemId }\n\t\t\tgetItemLevel={ getItemLevel }\n\t\t\tisLoading={ isLoading }\n\t\t\tonChangeView={ onChangeView }\n\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\tselection={ selection }\n\t\t\tsetOpenedFilter={ setOpenedFilter }\n\t\t\tonClickItem={ onClickItem }\n\t\t\trenderItemLink={ renderItemLink }\n\t\t\tisItemClickable={ isItemClickable }\n\t\t\tview={ view }\n\t\t\tempty={ empty }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\nimport DataViewsPagination from '../dataviews-pagination';\nimport {\n\tBulkActionsFooter,\n\tuseSomeItemHasAPossibleBulkAction,\n} from '../dataviews-bulk-actions';\nimport { LAYOUT_GRID, LAYOUT_TABLE } from '../../constants';\n\nconst EMPTY_ARRAY: [] = [];\n\nexport default function DataViewsFooter() {\n\tconst {\n\t\tview,\n\t\tpaginationInfo: { totalItems = 0, totalPages },\n\t\tdata,\n\t\tactions = EMPTY_ARRAY,\n\t} = useContext( DataViewsContext );\n\tconst hasBulkActions =\n\t\tuseSomeItemHasAPossibleBulkAction( actions, data ) &&\n\t\t[ LAYOUT_TABLE, LAYOUT_GRID ].includes( view.type );\n\n\tif (\n\t\t! totalItems ||\n\t\t! totalPages ||\n\t\t( totalPages <= 1 && ! hasBulkActions )\n\t) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t!! totalItems && (\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tjustify=\"end\"\n\t\t\t\talign=\"center\"\n\t\t\t\tclassName=\"dataviews-footer\"\n\t\t\t\tgap=\"xs\"\n\t\t\t>\n\t\t\t\t{ hasBulkActions && <BulkActionsFooter /> }\n\t\t\t\t<DataViewsPagination />\n\t\t\t</Stack>\n\t\t)\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useEffect, useRef, memo, useContext } from '@wordpress/element';\nimport { SearchControl } from '@wordpress/components';\nimport { useDebouncedInput } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\n\ninterface SearchProps {\n\tlabel?: string;\n}\n\nconst DataViewsSearch = memo( function Search( { label }: SearchProps ) {\n\tconst { view, onChangeView } = useContext( DataViewsContext );\n\tconst [ search, setSearch, debouncedSearch ] = useDebouncedInput(\n\t\tview.search\n\t);\n\tuseEffect( () => {\n\t\tsetSearch( view.search ?? '' );\n\t}, [ view.search, setSearch ] );\n\tconst onChangeViewRef = useRef( onChangeView );\n\tconst viewRef = useRef( view );\n\tuseEffect( () => {\n\t\tonChangeViewRef.current = onChangeView;\n\t\tviewRef.current = view;\n\t}, [ onChangeView, view ] );\n\tuseEffect( () => {\n\t\tif ( debouncedSearch !== viewRef.current?.search ) {\n\t\t\tonChangeViewRef.current( {\n\t\t\t\t...viewRef.current,\n\t\t\t\tpage: 1,\n\t\t\t\tsearch: debouncedSearch,\n\t\t\t} );\n\t\t}\n\t}, [ debouncedSearch ] );\n\tconst searchLabel = label || __( 'Search' );\n\treturn (\n\t\t<SearchControl\n\t\t\tclassName=\"dataviews-search\"\n\t\t\tonChange={ setSearch }\n\t\t\tvalue={ search }\n\t\t\tlabel={ searchLabel }\n\t\t\tplaceholder={ searchLabel }\n\t\t\tsize=\"compact\"\n\t\t/>\n\t);\n} );\n\nexport default DataViewsSearch;\n", "/**\n * External dependencies\n */\nimport type { ChangeEvent } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n\tDropdown,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon,\n\tSelectControl,\n\t__experimentalGrid as Grid,\n\t__experimentalHeading as Heading,\n\t__experimentalText as Text,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { memo, useContext, useMemo } from '@wordpress/element';\nimport { cog } from '@wordpress/icons';\nimport warning from '@wordpress/warning';\nimport { useInstanceId } from '@wordpress/compose';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport { SORTING_DIRECTIONS, sortIcons, sortLabels } from '../../constants';\nimport { VIEW_LAYOUTS } from '../dataviews-layouts';\nimport type { View } from '../../types';\nimport DataViewsContext from '../dataviews-context';\nimport InfiniteScrollToggle from './infinite-scroll-toggle';\nimport { PropertiesSection } from './properties-section';\nimport { unlock } from '../../lock-unlock';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\nconst DATAVIEWS_CONFIG_POPOVER_PROPS = {\n\tclassName: 'dataviews-config__popover',\n\tplacement: 'bottom-end',\n\toffset: 9,\n};\n\nexport function ViewTypeMenu() {\n\tconst { view, onChangeView, defaultLayouts } =\n\t\tuseContext( DataViewsContext );\n\tconst availableLayouts = Object.keys( defaultLayouts );\n\tif ( availableLayouts.length <= 1 ) {\n\t\treturn null;\n\t}\n\tconst activeView = VIEW_LAYOUTS.find( ( v ) => view.type === v.type );\n\treturn (\n\t\t<Menu>\n\t\t\t<Menu.TriggerButton\n\t\t\t\trender={\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\ticon={ activeView?.icon }\n\t\t\t\t\t\tlabel={ __( 'Layout' ) }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Menu.Popover>\n\t\t\t\t{ availableLayouts.map( ( layout ) => {\n\t\t\t\t\tconst config = VIEW_LAYOUTS.find(\n\t\t\t\t\t\t( v ) => v.type === layout\n\t\t\t\t\t);\n\t\t\t\t\tif ( ! config ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Menu.RadioItem\n\t\t\t\t\t\t\tkey={ layout }\n\t\t\t\t\t\t\tvalue={ layout }\n\t\t\t\t\t\t\tname=\"view-actions-available-view\"\n\t\t\t\t\t\t\tchecked={ layout === view.type }\n\t\t\t\t\t\t\thideOnClick\n\t\t\t\t\t\t\tonChange={ (\n\t\t\t\t\t\t\t\te: ChangeEvent< HTMLInputElement >\n\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\tswitch ( e.target.value ) {\n\t\t\t\t\t\t\t\t\tcase 'list':\n\t\t\t\t\t\t\t\t\tcase 'grid':\n\t\t\t\t\t\t\t\t\tcase 'table':\n\t\t\t\t\t\t\t\t\tcase 'pickerGrid':\n\t\t\t\t\t\t\t\t\tcase 'pickerTable':\n\t\t\t\t\t\t\t\t\tcase 'activity':\n\t\t\t\t\t\t\t\t\t\tconst viewWithoutLayout = { ...view };\n\t\t\t\t\t\t\t\t\t\tif ( 'layout' in viewWithoutLayout ) {\n\t\t\t\t\t\t\t\t\t\t\tdelete viewWithoutLayout.layout;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn onChangeView( {\n\t\t\t\t\t\t\t\t\t\t\t...viewWithoutLayout,\n\t\t\t\t\t\t\t\t\t\t\ttype: e.target.value,\n\t\t\t\t\t\t\t\t\t\t\t...defaultLayouts[ e.target.value ],\n\t\t\t\t\t\t\t\t\t\t} as View );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twarning( 'Invalid dataview' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Menu.ItemLabel>{ config.label }</Menu.ItemLabel>\n\t\t\t\t\t\t</Menu.RadioItem>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</Menu.Popover>\n\t\t</Menu>\n\t);\n}\n\nfunction SortFieldControl() {\n\tconst { view, fields, onChangeView } = useContext( DataViewsContext );\n\tconst orderOptions = useMemo( () => {\n\t\tconst sortableFields = fields.filter(\n\t\t\t( field ) => field.enableSorting !== false\n\t\t);\n\t\treturn sortableFields.map( ( field ) => {\n\t\t\treturn {\n\t\t\t\tlabel: field.label,\n\t\t\t\tvalue: field.id,\n\t\t\t};\n\t\t} );\n\t}, [ fields ] );\n\n\treturn (\n\t\t<SelectControl\n\t\t\t__next40pxDefaultSize\n\t\t\tlabel={ __( 'Sort by' ) }\n\t\t\tvalue={ view.sort?.field }\n\t\t\toptions={ orderOptions }\n\t\t\tonChange={ ( value: string ) => {\n\t\t\t\tonChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tsort: {\n\t\t\t\t\t\tdirection: view?.sort?.direction || 'desc',\n\t\t\t\t\t\tfield: value,\n\t\t\t\t\t},\n\t\t\t\t\tshowLevels: false,\n\t\t\t\t} );\n\t\t\t} }\n\t\t/>\n\t);\n}\n\nfunction SortDirectionControl() {\n\tconst { view, fields, onChangeView } = useContext( DataViewsContext );\n\n\tconst sortableFields = fields.filter(\n\t\t( field ) => field.enableSorting !== false\n\t);\n\tif ( sortableFields.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tlet value = view.sort?.direction;\n\tif ( ! value && view.sort?.field ) {\n\t\tvalue = 'desc';\n\t}\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\tclassName=\"dataviews-view-config__sort-direction\"\n\t\t\t__next40pxDefaultSize\n\t\t\tisBlock\n\t\t\tlabel={ __( 'Order' ) }\n\t\t\tvalue={ value }\n\t\t\tonChange={ ( newDirection ) => {\n\t\t\t\tif ( newDirection === 'asc' || newDirection === 'desc' ) {\n\t\t\t\t\tonChangeView( {\n\t\t\t\t\t\t...view,\n\t\t\t\t\t\tsort: {\n\t\t\t\t\t\t\tdirection: newDirection,\n\t\t\t\t\t\t\tfield:\n\t\t\t\t\t\t\t\tview.sort?.field ||\n\t\t\t\t\t\t\t\t// If there is no field assigned as the sorting field assign the first sortable field.\n\t\t\t\t\t\t\t\tfields.find(\n\t\t\t\t\t\t\t\t\t( field ) => field.enableSorting !== false\n\t\t\t\t\t\t\t\t)?.id ||\n\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshowLevels: false,\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\twarning( 'Invalid direction' );\n\t\t\t} }\n\t\t>\n\t\t\t{ SORTING_DIRECTIONS.map( ( direction ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<ToggleGroupControlOptionIcon\n\t\t\t\t\t\tkey={ direction }\n\t\t\t\t\t\tvalue={ direction }\n\t\t\t\t\t\ticon={ sortIcons[ direction ] }\n\t\t\t\t\t\tlabel={ sortLabels[ direction ] }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ToggleGroupControl>\n\t);\n}\n\nfunction ItemsPerPageControl() {\n\tconst { view, config, onChangeView } = useContext( DataViewsContext );\n\tconst { infiniteScrollEnabled } = view;\n\tif (\n\t\t! config ||\n\t\t! config.perPageSizes ||\n\t\tconfig.perPageSizes.length < 2 ||\n\t\tconfig.perPageSizes.length > 6 ||\n\t\tinfiniteScrollEnabled\n\t) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\t__next40pxDefaultSize\n\t\t\tisBlock\n\t\t\tlabel={ __( 'Items per page' ) }\n\t\t\tvalue={ view.perPage || 10 }\n\t\t\tdisabled={ ! view?.sort?.field }\n\t\t\tonChange={ ( newItemsPerPage ) => {\n\t\t\t\tconst newItemsPerPageNumber =\n\t\t\t\t\ttypeof newItemsPerPage === 'number' ||\n\t\t\t\t\tnewItemsPerPage === undefined\n\t\t\t\t\t\t? newItemsPerPage\n\t\t\t\t\t\t: parseInt( newItemsPerPage, 10 );\n\t\t\t\tonChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tperPage: newItemsPerPageNumber,\n\t\t\t\t\tpage: 1,\n\t\t\t\t} );\n\t\t\t} }\n\t\t>\n\t\t\t{ config.perPageSizes.map( ( value ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\tkey={ value }\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tlabel={ value.toString() }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ToggleGroupControl>\n\t);\n}\n\nfunction SettingsSection( {\n\ttitle,\n\tdescription,\n\tchildren,\n}: {\n\ttitle: string;\n\tdescription?: string;\n\tchildren: React.ReactNode;\n} ) {\n\treturn (\n\t\t<Grid columns={ 12 } className=\"dataviews-settings-section\" gap={ 4 }>\n\t\t\t<div className=\"dataviews-settings-section__sidebar\">\n\t\t\t\t<Heading\n\t\t\t\t\tlevel={ 2 }\n\t\t\t\t\tclassName=\"dataviews-settings-section__title\"\n\t\t\t\t>\n\t\t\t\t\t{ title }\n\t\t\t\t</Heading>\n\t\t\t\t{ description && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\tvariant=\"muted\"\n\t\t\t\t\t\tclassName=\"dataviews-settings-section__description\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ description }\n\t\t\t\t\t</Text>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t<Grid\n\t\t\t\tcolumns={ 8 }\n\t\t\t\tgap={ 4 }\n\t\t\t\tclassName=\"dataviews-settings-section__content\"\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n}\n\nexport function DataviewsViewConfigDropdown() {\n\tconst { view } = useContext( DataViewsContext );\n\tconst popoverId = useInstanceId(\n\t\t_DataViewsViewConfig,\n\t\t'dataviews-view-config-dropdown'\n\t);\n\tconst activeLayout = VIEW_LAYOUTS.find(\n\t\t( layout ) => layout.type === view.type\n\t);\n\treturn (\n\t\t<Dropdown\n\t\t\texpandOnMobile\n\t\t\tpopoverProps={ {\n\t\t\t\t...DATAVIEWS_CONFIG_POPOVER_PROPS,\n\t\t\t\tid: popoverId,\n\t\t\t} }\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\ticon={ cog }\n\t\t\t\t\t\tlabel={ _x( 'View options', 'View is used as a noun' ) }\n\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\taria-expanded={ isOpen ? 'true' : 'false' }\n\t\t\t\t\t\taria-controls={ popoverId }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<DropdownContentWrapper\n\t\t\t\t\tpaddingSize=\"medium\"\n\t\t\t\t\tclassName=\"dataviews-config__popover-content-wrapper\"\n\t\t\t\t>\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\tclassName=\"dataviews-view-config\"\n\t\t\t\t\t\tgap=\"lg\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<SettingsSection title={ __( 'Appearance' ) }>\n\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\t\t\t\tclassName=\"is-divided-in-two\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<SortFieldControl />\n\t\t\t\t\t\t\t\t<SortDirectionControl />\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t{ !! activeLayout?.viewConfigOptions && (\n\t\t\t\t\t\t\t\t<activeLayout.viewConfigOptions />\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<InfiniteScrollToggle />\n\t\t\t\t\t\t\t<ItemsPerPageControl />\n\t\t\t\t\t\t\t<PropertiesSection />\n\t\t\t\t\t\t</SettingsSection>\n\t\t\t\t\t</Stack>\n\t\t\t\t</DropdownContentWrapper>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction _DataViewsViewConfig() {\n\treturn (\n\t\t<>\n\t\t\t<ViewTypeMenu />\n\t\t\t<DataviewsViewConfigDropdown />\n\t\t</>\n\t);\n}\n\nconst DataViewsViewConfig = memo( _DataViewsViewConfig );\n\nexport default DataViewsViewConfig;\n", "/**\n * WordPress dependencies\n */\nimport { ToggleControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport DataViewsContext from '../dataviews-context';\n\nexport default function InfiniteScrollToggle() {\n\tconst context = useContext( DataViewsContext );\n\tconst { view, onChangeView } = context;\n\tconst infiniteScrollEnabled = view.infiniteScrollEnabled ?? false;\n\n\t// Only render the toggle if an infinite scroll handler is available\n\tif ( ! context.hasInfiniteScrollHandler ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<ToggleControl\n\t\t\tlabel={ __( 'Enable infinite scroll' ) }\n\t\t\thelp={ __(\n\t\t\t\t'Automatically load more content as you scroll, instead of showing pagination links.'\n\t\t\t) }\n\t\t\tchecked={ infiniteScrollEnabled }\n\t\t\tonChange={ ( newValue ) => {\n\t\t\t\tonChangeView( {\n\t\t\t\t\t...view,\n\t\t\t\t\tinfiniteScrollEnabled: newValue,\n\t\t\t\t} );\n\t\t\t} }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { privateApis } from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport { unlock } from '../../lock-unlock';\nimport getCustomValidity from './utils/get-custom-validity';\n\nconst { ValidatedCheckboxControl } = unlock( privateApis );\n\nexport default function Checkbox< Item >( {\n\tfield,\n\tonChange,\n\tdata,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { getValue, setValue, label, description, isValid } = field;\n\n\tconst onChangeControl = useCallback( () => {\n\t\tonChange(\n\t\t\tsetValue( { item: data, value: ! getValue( { item: data } ) } )\n\t\t);\n\t}, [ data, getValue, onChange, setValue ] );\n\n\treturn (\n\t\t<ValidatedCheckboxControl\n\t\t\trequired={ !! field.isValid?.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\thidden={ hideLabelFromVision }\n\t\t\tlabel={ label }\n\t\t\thelp={ description }\n\t\t\tchecked={ getValue( { item: data } ) }\n\t\t\tonChange={ onChangeControl }\n\t\t/>\n\t);\n}\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedRules, FieldValidity } from '../../../types';\n\nexport default function getCustomValidity< Item >(\n\tisValid: NormalizedRules< Item >,\n\tvalidity: FieldValidity | undefined\n) {\n\tlet customValidity;\n\tif ( isValid?.required && validity?.required ) {\n\t\t// If the consumer provides a message for required,\n\t\t// use it instead of the native built-in message.\n\t\tcustomValidity = validity?.required?.message\n\t\t\t? validity.required\n\t\t\t: undefined;\n\t} else if ( isValid?.pattern && validity?.pattern ) {\n\t\tcustomValidity = validity.pattern;\n\t} else if ( isValid?.min && validity?.min ) {\n\t\tcustomValidity = validity.min;\n\t} else if ( isValid?.max && validity?.max ) {\n\t\tcustomValidity = validity.max;\n\t} else if ( isValid?.minLength && validity?.minLength ) {\n\t\tcustomValidity = validity.minLength;\n\t} else if ( isValid?.maxLength && validity?.maxLength ) {\n\t\tcustomValidity = validity.maxLength;\n\t} else if ( isValid?.elements && validity?.elements ) {\n\t\tcustomValidity = validity.elements;\n\t} else if ( validity?.custom ) {\n\t\tcustomValidity = validity.custom;\n\t}\n\n\treturn customValidity;\n}\n", "/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n *   return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n", "import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n *   return constructFrom(\n *     date, // Use constructor from the given date\n *     date.getTime() // Use the date value to create a new date\n *   );\n * }\n */\nexport function constructFrom(date, value) {\n  if (typeof date === \"function\") return date(value);\n\n  if (date && typeof date === \"object\" && constructFromSymbol in date)\n    return date[constructFromSymbol](value);\n\n  if (date instanceof Date) return new date.constructor(value);\n\n  return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n", "import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n  // [TODO] Get rid of `toDate` or `constructFrom`?\n  return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\n */\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n  const _date = toDate(date, options?.in);\n  if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n  // If 0 days, no-op to avoid changing times in the hour before end of DST\n  if (!amount) return _date;\n\n  _date.setDate(_date.getDate() + amount);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMonths} function options.\n */\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n * @param options - The options object\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount, options) {\n  const _date = toDate(date, options?.in);\n  if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n  if (!amount) {\n    // If 0 months, no-op to avoid changing times in the hour before end of DST\n    return _date;\n  }\n  const dayOfMonth = _date.getDate();\n\n  // The JS Date object supports date math by accepting out-of-bounds values for\n  // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n  // new Date(2020, 13, 1) returns 1 Feb 2021.  This is *almost* the behavior we\n  // want except that dates will wrap around the end of a month, meaning that\n  // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n  // we'll default to the end of the desired month by adding 1 to the desired\n  // month and using a date of 0 to back up one day to the end of the desired\n  // month.\n  const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());\n  endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n  const daysInMonth = endOfDesiredMonth.getDate();\n  if (dayOfMonth >= daysInMonth) {\n    // If we're already at the end of the month, then this is the correct date\n    // and we're done.\n    return endOfDesiredMonth;\n  } else {\n    // Otherwise, we now know that setting the original day-of-month value won't\n    // cause an overflow, so set the desired day-of-month. Note that we can't\n    // just set the date of `endOfDesiredMonth` because that object may have had\n    // its time changed in the unusual case where where a DST transition was on\n    // the last day of the month and its local time was in the hour skipped or\n    // repeated next to a DST transition.  So we use `date` instead which is\n    // guaranteed to still have the original time.\n    _date.setFullYear(\n      endOfDesiredMonth.getFullYear(),\n      endOfDesiredMonth.getMonth(),\n      dayOfMonth,\n    );\n    return _date;\n  }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n", "let defaultOptions = {};\n\nexport function getDefaultOptions() {\n  return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n  defaultOptions = newOptions;\n}\n", "import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const _date = toDate(date, options?.in);\n  const day = _date.getDay();\n  const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n  _date.setDate(_date.getDate() - diff);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n", "import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n  return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n\n  const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n  fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n  const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n  const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n  fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n  const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n  if (_date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (_date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n", "import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n  const _date = toDate(date);\n  const utcDate = new Date(\n    Date.UTC(\n      _date.getFullYear(),\n      _date.getMonth(),\n      _date.getDate(),\n      _date.getHours(),\n      _date.getMinutes(),\n      _date.getSeconds(),\n      _date.getMilliseconds(),\n    ),\n  );\n  utcDate.setUTCFullYear(_date.getFullYear());\n  return +date - +utcDate;\n}\n", "import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n  const normalize = constructFrom.bind(\n    null,\n    context || dates.find((date) => typeof date === \"object\"),\n  );\n  return dates.map(normalize);\n}\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n  const _date = toDate(date, options?.in);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n", "import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n *   new Date(2012, 6, 2, 0, 0),\n *   new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n *   new Date(2011, 6, 3, 0, 1),\n *   new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n  const [laterDate_, earlierDate_] = normalizeDates(\n    options?.in,\n    laterDate,\n    earlierDate,\n  );\n\n  const laterStartOfDay = startOfDay(laterDate_);\n  const earlierStartOfDay = startOfDay(earlierDate_);\n\n  const laterTimestamp =\n    +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n  const earlierTimestamp =\n    +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n  // Round the number of days to the nearest integer because the number of\n  // milliseconds in a day is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n", "import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n  const year = getISOWeekYear(date, options);\n  const fourthOfJanuary = constructFrom(options?.in || date, 0);\n  fourthOfJanuary.setFullYear(year, 0, 4);\n  fourthOfJanuary.setHours(0, 0, 0, 0);\n  return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n", "import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link addWeeks} function options.\n */\n\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of weeks to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be added.\n * @param options - An object with options\n *\n * @returns The new date with the weeks added\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport function addWeeks(date, amount, options) {\n  return addDays(date, amount * 7, options);\n}\n\n// Fallback for modularized imports:\nexport default addWeeks;\n", "import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addYears} function options.\n */\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be added.\n * @param options - The options\n *\n * @returns The new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport function addYears(date, amount, options) {\n  return addMonths(date, amount * 12, options);\n}\n\n// Fallback for modularized imports:\nexport default addYears;\n", "/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n  return (\n    value instanceof Date ||\n    (typeof value === \"object\" &&\n      Object.prototype.toString.call(value) === \"[object Date]\")\n  );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n", "import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n  return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfMonth} function options.\n */\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date. The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments.\n * Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed,\n * or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfMonth(date, options) {\n  const _date = toDate(date, options?.in);\n  _date.setDate(1);\n  _date.setHours(0, 0, 0, 0);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfMonth;\n", "import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n  const date_ = toDate(date, options?.in);\n  date_.setFullYear(date_.getFullYear(), 0, 1);\n  date_.setHours(0, 0, 0, 0);\n  return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n", "const formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: \"less than a second\",\n    other: \"less than {{count}} seconds\",\n  },\n\n  xSeconds: {\n    one: \"1 second\",\n    other: \"{{count}} seconds\",\n  },\n\n  halfAMinute: \"half a minute\",\n\n  lessThanXMinutes: {\n    one: \"less than a minute\",\n    other: \"less than {{count}} minutes\",\n  },\n\n  xMinutes: {\n    one: \"1 minute\",\n    other: \"{{count}} minutes\",\n  },\n\n  aboutXHours: {\n    one: \"about 1 hour\",\n    other: \"about {{count}} hours\",\n  },\n\n  xHours: {\n    one: \"1 hour\",\n    other: \"{{count}} hours\",\n  },\n\n  xDays: {\n    one: \"1 day\",\n    other: \"{{count}} days\",\n  },\n\n  aboutXWeeks: {\n    one: \"about 1 week\",\n    other: \"about {{count}} weeks\",\n  },\n\n  xWeeks: {\n    one: \"1 week\",\n    other: \"{{count}} weeks\",\n  },\n\n  aboutXMonths: {\n    one: \"about 1 month\",\n    other: \"about {{count}} months\",\n  },\n\n  xMonths: {\n    one: \"1 month\",\n    other: \"{{count}} months\",\n  },\n\n  aboutXYears: {\n    one: \"about 1 year\",\n    other: \"about {{count}} years\",\n  },\n\n  xYears: {\n    one: \"1 year\",\n    other: \"{{count}} years\",\n  },\n\n  overXYears: {\n    one: \"over 1 year\",\n    other: \"over {{count}} years\",\n  },\n\n  almostXYears: {\n    one: \"almost 1 year\",\n    other: \"almost {{count}} years\",\n  },\n};\n\nexport const formatDistance = (token, count, options) => {\n  let result;\n\n  const tokenValue = formatDistanceLocale[token];\n  if (typeof tokenValue === \"string\") {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace(\"{{count}}\", count.toString());\n  }\n\n  if (options?.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return \"in \" + result;\n    } else {\n      return result + \" ago\";\n    }\n  }\n\n  return result;\n};\n", "export function buildFormatLongFn(args) {\n  return (options = {}) => {\n    // TODO: Remove String()\n    const width = options.width ? String(options.width) : args.defaultWidth;\n    const format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}\n", "import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n  full: \"EEEE, MMMM do, y\",\n  long: \"MMMM do, y\",\n  medium: \"MMM d, y\",\n  short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n  full: \"h:mm:ss a zzzz\",\n  long: \"h:mm:ss a z\",\n  medium: \"h:mm:ss a\",\n  short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: \"{{date}}, {{time}}\",\n  short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: \"full\",\n  }),\n\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: \"full\",\n  }),\n\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: \"full\",\n  }),\n};\n", "const formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n  formatRelativeLocale[token];\n", "/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n  return (value, options) => {\n    const context = options?.context ? String(options.context) : \"standalone\";\n\n    let valuesArray;\n    if (context === \"formatting\" && args.formattingValues) {\n      const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      const width = options?.width ? String(options.width) : defaultWidth;\n\n      valuesArray =\n        args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      const defaultWidth = args.defaultWidth;\n      const width = options?.width ? String(options.width) : args.defaultWidth;\n\n      valuesArray = args.values[width] || args.values[defaultWidth];\n    }\n    const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n    // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n    return valuesArray[index];\n  };\n}\n", "import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n  narrow: [\"B\", \"A\"],\n  abbreviated: [\"BC\", \"AD\"],\n  wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n  narrow: [\"1\", \"2\", \"3\", \"4\"],\n  abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n  wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n  narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n  abbreviated: [\n    \"Jan\",\n    \"Feb\",\n    \"Mar\",\n    \"Apr\",\n    \"May\",\n    \"Jun\",\n    \"Jul\",\n    \"Aug\",\n    \"Sep\",\n    \"Oct\",\n    \"Nov\",\n    \"Dec\",\n  ],\n\n  wide: [\n    \"January\",\n    \"February\",\n    \"March\",\n    \"April\",\n    \"May\",\n    \"June\",\n    \"July\",\n    \"August\",\n    \"September\",\n    \"October\",\n    \"November\",\n    \"December\",\n  ],\n};\n\nconst dayValues = {\n  narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n  short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n  abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  wide: [\n    \"Sunday\",\n    \"Monday\",\n    \"Tuesday\",\n    \"Wednesday\",\n    \"Thursday\",\n    \"Friday\",\n    \"Saturday\",\n  ],\n};\n\nconst dayPeriodValues = {\n  narrow: {\n    am: \"a\",\n    pm: \"p\",\n    midnight: \"mi\",\n    noon: \"n\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n  abbreviated: {\n    am: \"AM\",\n    pm: \"PM\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n  wide: {\n    am: \"a.m.\",\n    pm: \"p.m.\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"morning\",\n    afternoon: \"afternoon\",\n    evening: \"evening\",\n    night: \"night\",\n  },\n};\n\nconst formattingDayPeriodValues = {\n  narrow: {\n    am: \"a\",\n    pm: \"p\",\n    midnight: \"mi\",\n    noon: \"n\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n  abbreviated: {\n    am: \"AM\",\n    pm: \"PM\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n  wide: {\n    am: \"a.m.\",\n    pm: \"p.m.\",\n    midnight: \"midnight\",\n    noon: \"noon\",\n    morning: \"in the morning\",\n    afternoon: \"in the afternoon\",\n    evening: \"in the evening\",\n    night: \"at night\",\n  },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n  const number = Number(dirtyNumber);\n\n  // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  const rem100 = number % 100;\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + \"st\";\n      case 2:\n        return number + \"nd\";\n      case 3:\n        return number + \"rd\";\n    }\n  }\n  return number + \"th\";\n};\n\nexport const localize = {\n  ordinalNumber,\n\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: \"wide\",\n  }),\n\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: \"wide\",\n    argumentCallback: (quarter) => quarter - 1,\n  }),\n\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: \"wide\",\n  }),\n\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: \"wide\",\n  }),\n\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: \"wide\",\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: \"wide\",\n  }),\n};\n", "export function buildMatchFn(args) {\n  return (string, options = {}) => {\n    const width = options.width;\n\n    const matchPattern =\n      (width && args.matchPatterns[width]) ||\n      args.matchPatterns[args.defaultMatchWidth];\n    const matchResult = string.match(matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n    const matchedString = matchResult[0];\n\n    const parsePatterns =\n      (width && args.parsePatterns[width]) ||\n      args.parsePatterns[args.defaultParseWidth];\n\n    const key = Array.isArray(parsePatterns)\n      ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n      : // [TODO] -- I challenge you to fix the type\n        findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n    let value;\n\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback\n      ? // [TODO] -- I challenge you to fix the type\n        options.valueCallback(value)\n      : value;\n\n    const rest = string.slice(matchedString.length);\n\n    return { value, rest };\n  };\n}\n\nfunction findKey(object, predicate) {\n  for (const key in object) {\n    if (\n      Object.prototype.hasOwnProperty.call(object, key) &&\n      predicate(object[key])\n    ) {\n      return key;\n    }\n  }\n  return undefined;\n}\n\nfunction findIndex(array, predicate) {\n  for (let key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n  return undefined;\n}\n", "export function buildMatchPatternFn(args) {\n  return (string, options = {}) => {\n    const matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    const matchedString = matchResult[0];\n\n    const parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    let value = args.valueCallback\n      ? args.valueCallback(parseResult[0])\n      : parseResult[0];\n\n    // [TODO] I challenge you to fix the type\n    value = options.valueCallback ? options.valueCallback(value) : value;\n\n    const rest = string.slice(matchedString.length);\n\n    return { value, rest };\n  };\n}\n", "import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n  narrow: [\n    /^j/i,\n    /^f/i,\n    /^m/i,\n    /^a/i,\n    /^m/i,\n    /^j/i,\n    /^j/i,\n    /^a/i,\n    /^s/i,\n    /^o/i,\n    /^n/i,\n    /^d/i,\n  ],\n\n  any: [\n    /^ja/i,\n    /^f/i,\n    /^mar/i,\n    /^ap/i,\n    /^may/i,\n    /^jun/i,\n    /^jul/i,\n    /^au/i,\n    /^s/i,\n    /^o/i,\n    /^n/i,\n    /^d/i,\n  ],\n};\n\nconst matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i,\n  },\n};\n\nexport const match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: (value) => parseInt(value, 10),\n  }),\n\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: \"any\",\n    valueCallback: (index) => index + 1,\n  }),\n\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: \"wide\",\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: \"any\",\n  }),\n\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: \"any\",\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: \"any\",\n  }),\n};\n", "import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n  code: \"en-US\",\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0 /* Sunday */,\n    firstWeekContainsDate: 1,\n  },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n", "import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = differenceInCalendarDays(_date, startOfYear(_date));\n  const dayOfYear = diff + 1;\n  return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n", "import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n  // Round the number of weeks to the nearest integer because the number of\n  // milliseconds in a week is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n", "import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n  const _date = toDate(date, options?.in);\n  const year = _date.getFullYear();\n\n  const defaultOptions = getDefaultOptions();\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n  firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setHours(0, 0, 0, 0);\n  const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n  const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n  firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setHours(0, 0, 0, 0);\n  const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n  if (+_date >= +startOfNextYear) {\n    return year + 1;\n  } else if (+_date >= +startOfThisYear) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n", "import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n  const defaultOptions = getDefaultOptions();\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const year = getWeekYear(date, options);\n  const firstWeek = constructFrom(options?.in || date, 0);\n  firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setHours(0, 0, 0, 0);\n  const _date = startOfWeek(firstWeek, options);\n  return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n", "import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n *   weekStartsOn: 1,\n *   firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n  const _date = toDate(date, options?.in);\n  const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n  // Round the number of weeks to the nearest integer because the number of\n  // milliseconds in a week is not constant (e.g. it's different in the week of\n  // the daylight saving time clock shift).\n  return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n", "export function addLeadingZeros(number, targetLength) {\n  const sign = number < 0 ? \"-\" : \"\";\n  const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n  return sign + output;\n}\n", "import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n  // Year\n  y(date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n    const signedYear = date.getFullYear();\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    const year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n  },\n\n  // Month\n  M(date, token) {\n    const month = date.getMonth();\n    return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n  },\n\n  // Day of the month\n  d(date, token) {\n    return addLeadingZeros(date.getDate(), token.length);\n  },\n\n  // AM or PM\n  a(date, token) {\n    const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n    switch (token) {\n      case \"a\":\n      case \"aa\":\n        return dayPeriodEnumValue.toUpperCase();\n      case \"aaa\":\n        return dayPeriodEnumValue;\n      case \"aaaaa\":\n        return dayPeriodEnumValue[0];\n      case \"aaaa\":\n      default:\n        return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n    }\n  },\n\n  // Hour [1-12]\n  h(date, token) {\n    return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n  },\n\n  // Hour [0-23]\n  H(date, token) {\n    return addLeadingZeros(date.getHours(), token.length);\n  },\n\n  // Minute\n  m(date, token) {\n    return addLeadingZeros(date.getMinutes(), token.length);\n  },\n\n  // Second\n  s(date, token) {\n    return addLeadingZeros(date.getSeconds(), token.length);\n  },\n\n  // Fraction of second\n  S(date, token) {\n    const numberOfDigits = token.length;\n    const milliseconds = date.getMilliseconds();\n    const fractionalSeconds = Math.trunc(\n      milliseconds * Math.pow(10, numberOfDigits - 3),\n    );\n    return addLeadingZeros(fractionalSeconds, token.length);\n  },\n};\n", "import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n  am: \"am\",\n  pm: \"pm\",\n  midnight: \"midnight\",\n  noon: \"noon\",\n  morning: \"morning\",\n  afternoon: \"afternoon\",\n  evening: \"evening\",\n  night: \"night\",\n};\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n * |  p! | Long localized time            |  P! | Long localized date            |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n  // Era\n  G: function (date, token, localize) {\n    const era = date.getFullYear() > 0 ? 1 : 0;\n    switch (token) {\n      // AD, BC\n      case \"G\":\n      case \"GG\":\n      case \"GGG\":\n        return localize.era(era, { width: \"abbreviated\" });\n      // A, B\n      case \"GGGGG\":\n        return localize.era(era, { width: \"narrow\" });\n      // Anno Domini, Before Christ\n      case \"GGGG\":\n      default:\n        return localize.era(era, { width: \"wide\" });\n    }\n  },\n\n  // Year\n  y: function (date, token, localize) {\n    // Ordinal number\n    if (token === \"yo\") {\n      const signedYear = date.getFullYear();\n      // Returns 1 for 1 BC (which is year 0 in JavaScript)\n      const year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, { unit: \"year\" });\n    }\n\n    return lightFormatters.y(date, token);\n  },\n\n  // Local week-numbering year\n  Y: function (date, token, localize, options) {\n    const signedWeekYear = getWeekYear(date, options);\n    // Returns 1 for 1 BC (which is year 0 in JavaScript)\n    const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n    // Two digit year\n    if (token === \"YY\") {\n      const twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2);\n    }\n\n    // Ordinal number\n    if (token === \"Yo\") {\n      return localize.ordinalNumber(weekYear, { unit: \"year\" });\n    }\n\n    // Padding\n    return addLeadingZeros(weekYear, token.length);\n  },\n\n  // ISO week-numbering year\n  R: function (date, token) {\n    const isoWeekYear = getISOWeekYear(date);\n\n    // Padding\n    return addLeadingZeros(isoWeekYear, token.length);\n  },\n\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function (date, token) {\n    const year = date.getFullYear();\n    return addLeadingZeros(year, token.length);\n  },\n\n  // Quarter\n  Q: function (date, token, localize) {\n    const quarter = Math.ceil((date.getMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"Q\":\n        return String(quarter);\n      // 01, 02, 03, 04\n      case \"QQ\":\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case \"Qo\":\n        return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"QQQ\":\n        return localize.quarter(quarter, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"QQQQQ\":\n        return localize.quarter(quarter, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"QQQQ\":\n      default:\n        return localize.quarter(quarter, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Stand-alone quarter\n  q: function (date, token, localize) {\n    const quarter = Math.ceil((date.getMonth() + 1) / 3);\n    switch (token) {\n      // 1, 2, 3, 4\n      case \"q\":\n        return String(quarter);\n      // 01, 02, 03, 04\n      case \"qq\":\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n      case \"qo\":\n        return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n      // Q1, Q2, Q3, Q4\n      case \"qqq\":\n        return localize.quarter(quarter, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n      case \"qqqqq\":\n        return localize.quarter(quarter, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // 1st quarter, 2nd quarter, ...\n      case \"qqqq\":\n      default:\n        return localize.quarter(quarter, {\n          width: \"wide\",\n          context: \"standalone\",\n        });\n    }\n  },\n\n  // Month\n  M: function (date, token, localize) {\n    const month = date.getMonth();\n    switch (token) {\n      case \"M\":\n      case \"MM\":\n        return lightFormatters.M(date, token);\n      // 1st, 2nd, ..., 12th\n      case \"Mo\":\n        return localize.ordinalNumber(month + 1, { unit: \"month\" });\n      // Jan, Feb, ..., Dec\n      case \"MMM\":\n        return localize.month(month, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // J, F, ..., D\n      case \"MMMMM\":\n        return localize.month(month, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // January, February, ..., December\n      case \"MMMM\":\n      default:\n        return localize.month(month, { width: \"wide\", context: \"formatting\" });\n    }\n  },\n\n  // Stand-alone month\n  L: function (date, token, localize) {\n    const month = date.getMonth();\n    switch (token) {\n      // 1, 2, ..., 12\n      case \"L\":\n        return String(month + 1);\n      // 01, 02, ..., 12\n      case \"LL\":\n        return addLeadingZeros(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n      case \"Lo\":\n        return localize.ordinalNumber(month + 1, { unit: \"month\" });\n      // Jan, Feb, ..., Dec\n      case \"LLL\":\n        return localize.month(month, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // J, F, ..., D\n      case \"LLLLL\":\n        return localize.month(month, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // January, February, ..., December\n      case \"LLLL\":\n      default:\n        return localize.month(month, { width: \"wide\", context: \"standalone\" });\n    }\n  },\n\n  // Local week of year\n  w: function (date, token, localize, options) {\n    const week = getWeek(date, options);\n\n    if (token === \"wo\") {\n      return localize.ordinalNumber(week, { unit: \"week\" });\n    }\n\n    return addLeadingZeros(week, token.length);\n  },\n\n  // ISO week of year\n  I: function (date, token, localize) {\n    const isoWeek = getISOWeek(date);\n\n    if (token === \"Io\") {\n      return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n    }\n\n    return addLeadingZeros(isoWeek, token.length);\n  },\n\n  // Day of the month\n  d: function (date, token, localize) {\n    if (token === \"do\") {\n      return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n    }\n\n    return lightFormatters.d(date, token);\n  },\n\n  // Day of year\n  D: function (date, token, localize) {\n    const dayOfYear = getDayOfYear(date);\n\n    if (token === \"Do\") {\n      return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n    }\n\n    return addLeadingZeros(dayOfYear, token.length);\n  },\n\n  // Day of week\n  E: function (date, token, localize) {\n    const dayOfWeek = date.getDay();\n    switch (token) {\n      // Tue\n      case \"E\":\n      case \"EE\":\n      case \"EEE\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"EEEEE\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"EEEEEE\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"EEEE\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Local day of week\n  e: function (date, token, localize, options) {\n    const dayOfWeek = date.getDay();\n    const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case \"e\":\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case \"ee\":\n        return addLeadingZeros(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n      case \"eo\":\n        return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n      case \"eee\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"eeeee\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"eeeeee\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"eeee\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Stand-alone local day of week\n  c: function (date, token, localize, options) {\n    const dayOfWeek = date.getDay();\n    const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case \"c\":\n        return String(localDayOfWeek);\n      // Padded numerical value\n      case \"cc\":\n        return addLeadingZeros(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n      case \"co\":\n        return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n      case \"ccc\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"standalone\",\n        });\n      // T\n      case \"ccccc\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"standalone\",\n        });\n      // Tu\n      case \"cccccc\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"standalone\",\n        });\n      // Tuesday\n      case \"cccc\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"standalone\",\n        });\n    }\n  },\n\n  // ISO day of week\n  i: function (date, token, localize) {\n    const dayOfWeek = date.getDay();\n    const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n    switch (token) {\n      // 2\n      case \"i\":\n        return String(isoDayOfWeek);\n      // 02\n      case \"ii\":\n        return addLeadingZeros(isoDayOfWeek, token.length);\n      // 2nd\n      case \"io\":\n        return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n      // Tue\n      case \"iii\":\n        return localize.day(dayOfWeek, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      // T\n      case \"iiiii\":\n        return localize.day(dayOfWeek, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      // Tu\n      case \"iiiiii\":\n        return localize.day(dayOfWeek, {\n          width: \"short\",\n          context: \"formatting\",\n        });\n      // Tuesday\n      case \"iiii\":\n      default:\n        return localize.day(dayOfWeek, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // AM or PM\n  a: function (date, token, localize) {\n    const hours = date.getHours();\n    const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n    switch (token) {\n      case \"a\":\n      case \"aa\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"aaa\":\n        return localize\n          .dayPeriod(dayPeriodEnumValue, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          })\n          .toLowerCase();\n      case \"aaaaa\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"aaaa\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // AM, PM, midnight, noon\n  b: function (date, token, localize) {\n    const hours = date.getHours();\n    let dayPeriodEnumValue;\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n    }\n\n    switch (token) {\n      case \"b\":\n      case \"bb\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"bbb\":\n        return localize\n          .dayPeriod(dayPeriodEnumValue, {\n            width: \"abbreviated\",\n            context: \"formatting\",\n          })\n          .toLowerCase();\n      case \"bbbbb\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"bbbb\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // in the morning, in the afternoon, in the evening, at night\n  B: function (date, token, localize) {\n    const hours = date.getHours();\n    let dayPeriodEnumValue;\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n\n    switch (token) {\n      case \"B\":\n      case \"BB\":\n      case \"BBB\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"abbreviated\",\n          context: \"formatting\",\n        });\n      case \"BBBBB\":\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"narrow\",\n          context: \"formatting\",\n        });\n      case \"BBBB\":\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: \"wide\",\n          context: \"formatting\",\n        });\n    }\n  },\n\n  // Hour [1-12]\n  h: function (date, token, localize) {\n    if (token === \"ho\") {\n      let hours = date.getHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return lightFormatters.h(date, token);\n  },\n\n  // Hour [0-23]\n  H: function (date, token, localize) {\n    if (token === \"Ho\") {\n      return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n    }\n\n    return lightFormatters.H(date, token);\n  },\n\n  // Hour [0-11]\n  K: function (date, token, localize) {\n    const hours = date.getHours() % 12;\n\n    if (token === \"Ko\") {\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n\n  // Hour [1-24]\n  k: function (date, token, localize) {\n    let hours = date.getHours();\n    if (hours === 0) hours = 24;\n\n    if (token === \"ko\") {\n      return localize.ordinalNumber(hours, { unit: \"hour\" });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n\n  // Minute\n  m: function (date, token, localize) {\n    if (token === \"mo\") {\n      return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n    }\n\n    return lightFormatters.m(date, token);\n  },\n\n  // Second\n  s: function (date, token, localize) {\n    if (token === \"so\") {\n      return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n    }\n\n    return lightFormatters.s(date, token);\n  },\n\n  // Fraction of second\n  S: function (date, token) {\n    return lightFormatters.S(date, token);\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    if (timezoneOffset === 0) {\n      return \"Z\";\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case \"X\":\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n      case \"XXXX\":\n      case \"XX\": // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n      case \"XXXXX\":\n      case \"XXX\": // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Hours and optional minutes\n      case \"x\":\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n      case \"xxxx\":\n      case \"xx\": // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n      case \"xxxxx\":\n      case \"xxx\": // Hours and minutes with `:` delimiter\n      default:\n        return formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (GMT)\n  O: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case \"O\":\n      case \"OO\":\n      case \"OOO\":\n        return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n      // Long\n      case \"OOOO\":\n      default:\n        return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Timezone (specific non-location)\n  z: function (date, token, _localize) {\n    const timezoneOffset = date.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case \"z\":\n      case \"zz\":\n      case \"zzz\":\n        return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n      // Long\n      case \"zzzz\":\n      default:\n        return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n    }\n  },\n\n  // Seconds timestamp\n  t: function (date, token, _localize) {\n    const timestamp = Math.trunc(+date / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n\n  // Milliseconds timestamp\n  T: function (date, token, _localize) {\n    return addLeadingZeros(+date, token.length);\n  },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n  const sign = offset > 0 ? \"-\" : \"+\";\n  const absOffset = Math.abs(offset);\n  const hours = Math.trunc(absOffset / 60);\n  const minutes = absOffset % 60;\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n  if (offset % 60 === 0) {\n    const sign = offset > 0 ? \"-\" : \"+\";\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n  }\n  return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n  const sign = offset > 0 ? \"-\" : \"+\";\n  const absOffset = Math.abs(offset);\n  const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n  const minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\n", "const dateLongFormatter = (pattern, formatLong) => {\n  switch (pattern) {\n    case \"P\":\n      return formatLong.date({ width: \"short\" });\n    case \"PP\":\n      return formatLong.date({ width: \"medium\" });\n    case \"PPP\":\n      return formatLong.date({ width: \"long\" });\n    case \"PPPP\":\n    default:\n      return formatLong.date({ width: \"full\" });\n  }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n  switch (pattern) {\n    case \"p\":\n      return formatLong.time({ width: \"short\" });\n    case \"pp\":\n      return formatLong.time({ width: \"medium\" });\n    case \"ppp\":\n      return formatLong.time({ width: \"long\" });\n    case \"pppp\":\n    default:\n      return formatLong.time({ width: \"full\" });\n  }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n  const matchResult = pattern.match(/(P+)(p+)?/) || [];\n  const datePattern = matchResult[1];\n  const timePattern = matchResult[2];\n\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n\n  let dateTimeFormat;\n\n  switch (datePattern) {\n    case \"P\":\n      dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n      break;\n    case \"PP\":\n      dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n      break;\n    case \"PPP\":\n      dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n      break;\n    case \"PPPP\":\n    default:\n      dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n      break;\n  }\n\n  return dateTimeFormat\n    .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n    .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter,\n};\n", "const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n  return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n  return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n  const _message = message(token, format, input);\n  console.warn(_message);\n  if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n  const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n  return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n", "import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n  isProtectedDayOfYearToken,\n  isProtectedWeekYearToken,\n  warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n  /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > \u26A0\uFE0F Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n *    and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n  const defaultOptions = getDefaultOptions();\n  const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n  const firstWeekContainsDate =\n    options?.firstWeekContainsDate ??\n    options?.locale?.options?.firstWeekContainsDate ??\n    defaultOptions.firstWeekContainsDate ??\n    defaultOptions.locale?.options?.firstWeekContainsDate ??\n    1;\n\n  const weekStartsOn =\n    options?.weekStartsOn ??\n    options?.locale?.options?.weekStartsOn ??\n    defaultOptions.weekStartsOn ??\n    defaultOptions.locale?.options?.weekStartsOn ??\n    0;\n\n  const originalDate = toDate(date, options?.in);\n\n  if (!isValid(originalDate)) {\n    throw new RangeError(\"Invalid time value\");\n  }\n\n  let parts = formatStr\n    .match(longFormattingTokensRegExp)\n    .map((substring) => {\n      const firstCharacter = substring[0];\n      if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n        const longFormatter = longFormatters[firstCharacter];\n        return longFormatter(substring, locale.formatLong);\n      }\n      return substring;\n    })\n    .join(\"\")\n    .match(formattingTokensRegExp)\n    .map((substring) => {\n      // Replace two single quote characters with one single quote character\n      if (substring === \"''\") {\n        return { isToken: false, value: \"'\" };\n      }\n\n      const firstCharacter = substring[0];\n      if (firstCharacter === \"'\") {\n        return { isToken: false, value: cleanEscapedString(substring) };\n      }\n\n      if (formatters[firstCharacter]) {\n        return { isToken: true, value: substring };\n      }\n\n      if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n        throw new RangeError(\n          \"Format string contains an unescaped latin alphabet character `\" +\n            firstCharacter +\n            \"`\",\n        );\n      }\n\n      return { isToken: false, value: substring };\n    });\n\n  // invoke localize preprocessor (only for french locales at the moment)\n  if (locale.localize.preprocessor) {\n    parts = locale.localize.preprocessor(originalDate, parts);\n  }\n\n  const formatterOptions = {\n    firstWeekContainsDate,\n    weekStartsOn,\n    locale,\n  };\n\n  return parts\n    .map((part) => {\n      if (!part.isToken) return part.value;\n\n      const token = part.value;\n\n      if (\n        (!options?.useAdditionalWeekYearTokens &&\n          isProtectedWeekYearToken(token)) ||\n        (!options?.useAdditionalDayOfYearTokens &&\n          isProtectedDayOfYearToken(token))\n      ) {\n        warnOrThrowProtectedError(token, formatStr, String(date));\n      }\n\n      const formatter = formatters[token[0]];\n      return formatter(originalDate, token, locale.localize, formatterOptions);\n    })\n    .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n  const matched = input.match(escapedStringRegExp);\n\n  if (!matched) {\n    return input;\n  }\n\n  return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n", "import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link subDays} function options.\n */\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport function subDays(date, amount, options) {\n  return addDays(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subDays;\n", "import { addMonths } from \"./addMonths.js\";\n\n/**\n * The subMonths function options.\n */\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function subMonths(date, amount, options) {\n  return addMonths(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMonths;\n", "import { addWeeks } from \"./addWeeks.js\";\n\n/**\n * The {@link subWeeks} function options.\n */\n\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the weeks subtracted\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport function subWeeks(date, amount, options) {\n  return addWeeks(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subWeeks;\n", "import { addYears } from \"./addYears.js\";\n\n/**\n * The {@link subYears} function options.\n */\n\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the years subtracted\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport function subYears(date, amount, options) {\n  return addYears(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subYears;\n", "/**\n * External dependencies\n */\nimport { format } from 'date-fns';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBaseControl,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useCallback, useEffect, useRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { getSettings } from '@wordpress/date';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps, FormatDatetime } from '../../types';\nimport { OPERATOR_IN_THE_PAST, OPERATOR_OVER } from '../../constants';\nimport RelativeDateControl from './utils/relative-date-control';\nimport getCustomValidity from './utils/get-custom-validity';\nimport parseDateTime from '../../field-types/utils/parse-date-time';\nimport { unlock } from '../../lock-unlock';\n\nconst { DateCalendar, ValidatedInputControl } = unlock( componentsPrivateApis );\n\nconst formatDateTime = ( date?: Date | string ): string => {\n\tif ( ! date ) {\n\t\treturn '';\n\t}\n\tif ( typeof date === 'string' ) {\n\t\treturn date;\n\t}\n\t// Format as datetime-local input expects: YYYY-MM-DDTHH:mm\n\treturn format( date, \"yyyy-MM-dd'T'HH:mm\" );\n};\n\nfunction CalendarDateTimeControl< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { id, label, description, setValue, getValue, isValid } = field;\n\tconst fieldValue = getValue( { item: data } );\n\tconst value = typeof fieldValue === 'string' ? fieldValue : undefined;\n\n\tconst [ calendarMonth, setCalendarMonth ] = useState< Date >( () => {\n\t\tconst parsedDate = parseDateTime( value );\n\t\treturn parsedDate || new Date(); // Default to current month\n\t} );\n\n\tconst inputControlRef = useRef< HTMLInputElement >( null );\n\tconst validationTimeoutRef = useRef< ReturnType< typeof setTimeout > >();\n\tconst previousFocusRef = useRef< Element | null >( null );\n\n\tconst onChangeCallback = useCallback(\n\t\t( newValue: string | undefined ) =>\n\t\t\tonChange( setValue( { item: data, value: newValue } ) ),\n\t\t[ data, onChange, setValue ]\n\t);\n\n\t// Cleanup timeout on unmount\n\tuseEffect( () => {\n\t\treturn () => {\n\t\t\tif ( validationTimeoutRef.current ) {\n\t\t\t\tclearTimeout( validationTimeoutRef.current );\n\t\t\t}\n\t\t};\n\t}, [] );\n\n\tconst onSelectDate = useCallback(\n\t\t( newDate: Date | undefined | null ) => {\n\t\t\tlet dateTimeValue: string | undefined;\n\t\t\tif ( newDate ) {\n\t\t\t\t// Preserve time if it exists in current value, otherwise use current time\n\t\t\t\tlet finalDateTime = newDate;\n\n\t\t\t\tif ( value ) {\n\t\t\t\t\tconst currentDateTime = parseDateTime( value );\n\t\t\t\t\tif ( currentDateTime ) {\n\t\t\t\t\t\t// Preserve the time part\n\t\t\t\t\t\tfinalDateTime = new Date( newDate );\n\t\t\t\t\t\tfinalDateTime.setHours( currentDateTime.getHours() );\n\t\t\t\t\t\tfinalDateTime.setMinutes(\n\t\t\t\t\t\t\tcurrentDateTime.getMinutes()\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdateTimeValue = finalDateTime.toISOString();\n\t\t\t\tonChangeCallback( dateTimeValue );\n\n\t\t\t\t// Clear any existing timeout\n\t\t\t\tif ( validationTimeoutRef.current ) {\n\t\t\t\t\tclearTimeout( validationTimeoutRef.current );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tonChangeCallback( undefined );\n\t\t\t}\n\t\t\t// Save the currently focused element\n\t\t\tpreviousFocusRef.current =\n\t\t\t\tinputControlRef.current &&\n\t\t\t\tinputControlRef.current.ownerDocument.activeElement;\n\n\t\t\t// Trigger validation display by simulating focus, blur, and changes.\n\t\t\t// Use a timeout to ensure it runs after the value update.\n\t\t\tvalidationTimeoutRef.current = setTimeout( () => {\n\t\t\t\tif ( inputControlRef.current ) {\n\t\t\t\t\tinputControlRef.current.focus();\n\t\t\t\t\tinputControlRef.current.blur();\n\t\t\t\t\tonChangeCallback( dateTimeValue );\n\n\t\t\t\t\t// Restore focus to the previously focused element\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousFocusRef.current &&\n\t\t\t\t\t\tpreviousFocusRef.current instanceof HTMLElement\n\t\t\t\t\t) {\n\t\t\t\t\t\tpreviousFocusRef.current.focus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, 0 );\n\t\t},\n\t\t[ onChangeCallback, value ]\n\t);\n\n\tconst handleManualDateTimeChange = useCallback(\n\t\t( newValue?: string ) => {\n\t\t\tif ( newValue ) {\n\t\t\t\t// Convert from datetime-local format to ISO string\n\t\t\t\tconst dateTime = new Date( newValue );\n\t\t\t\tonChangeCallback( dateTime.toISOString() );\n\n\t\t\t\t// Update calendar month to match\n\t\t\t\tconst parsedDate = parseDateTime( dateTime.toISOString() );\n\t\t\t\tif ( parsedDate ) {\n\t\t\t\t\tsetCalendarMonth( parsedDate );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tonChangeCallback( undefined );\n\t\t\t}\n\t\t},\n\t\t[ onChangeCallback ]\n\t);\n\n\tconst { format: fieldFormat } = field;\n\tconst weekStartsOn =\n\t\t( fieldFormat as FormatDatetime ).weekStartsOn ??\n\t\tgetSettings().l10n.startOfWeek;\n\tconst {\n\t\ttimezone: { string: timezoneString },\n\t} = getSettings();\n\n\tconst displayLabel =\n\t\tisValid?.required && ! hideLabelFromVision\n\t\t\t? `${ label } (${ __( 'Required' ) })`\n\t\t\t: label;\n\n\treturn (\n\t\t<BaseControl\n\t\t\tid={ id }\n\t\t\tlabel={ displayLabel }\n\t\t\thelp={ description }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t>\n\t\t\t<Stack direction=\"column\" gap=\"md\">\n\t\t\t\t{ /* Calendar widget */ }\n\t\t\t\t<DateCalendar\n\t\t\t\t\tstyle={ { width: '100%' } }\n\t\t\t\t\tselected={\n\t\t\t\t\t\tvalue ? parseDateTime( value ) || undefined : undefined\n\t\t\t\t\t}\n\t\t\t\t\tonSelect={ onSelectDate }\n\t\t\t\t\tmonth={ calendarMonth }\n\t\t\t\t\tonMonthChange={ setCalendarMonth }\n\t\t\t\t\ttimeZone={ timezoneString || undefined }\n\t\t\t\t\tweekStartsOn={ weekStartsOn }\n\t\t\t\t/>\n\t\t\t\t{ /* Manual datetime input */ }\n\t\t\t\t<ValidatedInputControl\n\t\t\t\t\tref={ inputControlRef }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\trequired={ !! isValid?.required }\n\t\t\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\t\t\ttype=\"datetime-local\"\n\t\t\t\t\tlabel={ __( 'Date time' ) }\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t\tvalue={\n\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t? formatDateTime(\n\t\t\t\t\t\t\t\t\tparseDateTime( value ) || undefined\n\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t\tonChange={ handleManualDateTimeChange }\n\t\t\t\t/>\n\t\t\t</Stack>\n\t\t</BaseControl>\n\t);\n}\n\nexport default function DateTime< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\toperator,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tif ( operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER ) {\n\t\treturn (\n\t\t\t<RelativeDateControl\n\t\t\t\tclassName=\"dataviews-controls__datetime\"\n\t\t\t\tdata={ data }\n\t\t\t\tfield={ field }\n\t\t\t\tonChange={ onChange }\n\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\toperator={ operator }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<CalendarDateTimeControl\n\t\t\tdata={ data }\n\t\t\tfield={ field }\n\t\t\tonChange={ onChange }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\tvalidity={ validity }\n\t\t/>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBaseControl,\n\tSelectControl,\n\t__experimentalNumberControl as NumberControl,\n} from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport { OPERATOR_IN_THE_PAST, OPERATOR_OVER } from '../../../constants';\nimport type { DataFormControlProps } from '../../../types';\n\ntype VALID_OPERATORS = 'inThePast' | 'over';\n\ninterface TimeUnitOption {\n\tvalue: string;\n\tlabel: string;\n}\n\nconst TIME_UNITS_OPTIONS: Record< VALID_OPERATORS, TimeUnitOption[] > = {\n\t[ OPERATOR_IN_THE_PAST ]: [\n\t\t{ value: 'days', label: __( 'Days' ) },\n\t\t{ value: 'weeks', label: __( 'Weeks' ) },\n\t\t{ value: 'months', label: __( 'Months' ) },\n\t\t{ value: 'years', label: __( 'Years' ) },\n\t],\n\t[ OPERATOR_OVER ]: [\n\t\t{ value: 'days', label: __( 'Days ago' ) },\n\t\t{ value: 'weeks', label: __( 'Weeks ago' ) },\n\t\t{ value: 'months', label: __( 'Months ago' ) },\n\t\t{ value: 'years', label: __( 'Years ago' ) },\n\t],\n};\n\nexport default function RelativeDateControl< Item >( {\n\tclassName,\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\toperator,\n}: DataFormControlProps< Item > & {\n\tclassName: string;\n} ) {\n\tconst options: TimeUnitOption[] =\n\t\tTIME_UNITS_OPTIONS[\n\t\t\toperator === OPERATOR_IN_THE_PAST ? 'inThePast' : 'over'\n\t\t];\n\n\tconst { id, label, getValue, setValue } = field;\n\tconst fieldValue = getValue( { item: data } );\n\tconst { value: relValue = '', unit = options[ 0 ].value } =\n\t\tfieldValue && typeof fieldValue === 'object' ? fieldValue : {};\n\n\tconst onChangeValue = useCallback(\n\t\t( newValue: string | undefined ) =>\n\t\t\tonChange(\n\t\t\t\tsetValue( {\n\t\t\t\t\titem: data,\n\t\t\t\t\tvalue: { value: Number( newValue ), unit },\n\t\t\t\t} )\n\t\t\t),\n\t\t[ onChange, setValue, data, unit ]\n\t);\n\n\tconst onChangeUnit = useCallback(\n\t\t( newUnit: string | undefined ) =>\n\t\t\tonChange(\n\t\t\t\tsetValue( {\n\t\t\t\t\titem: data,\n\t\t\t\t\tvalue: { value: relValue, unit: newUnit },\n\t\t\t\t} )\n\t\t\t),\n\t\t[ onChange, setValue, data, relValue ]\n\t);\n\n\treturn (\n\t\t<BaseControl\n\t\t\tid={ id }\n\t\t\tclassName={ clsx( className, 'dataviews-controls__relative-date' ) }\n\t\t\tlabel={ label }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t>\n\t\t\t<Stack direction=\"row\" gap=\"xs\">\n\t\t\t\t<NumberControl\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tclassName=\"dataviews-controls__relative-date-number\"\n\t\t\t\t\tspinControls=\"none\"\n\t\t\t\t\tmin={ 1 }\n\t\t\t\t\tstep={ 1 }\n\t\t\t\t\tvalue={ relValue }\n\t\t\t\t\tonChange={ onChangeValue }\n\t\t\t\t/>\n\t\t\t\t<SelectControl\n\t\t\t\t\tclassName=\"dataviews-controls__relative-date-unit\"\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tlabel={ __( 'Unit' ) }\n\t\t\t\t\tvalue={ unit }\n\t\t\t\t\toptions={ options }\n\t\t\t\t\tonChange={ onChangeUnit }\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t/>\n\t\t\t</Stack>\n\t\t</BaseControl>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport { isValid as isValidDate } from 'date-fns';\n\n/**\n * WordPress dependencies\n */\nimport { getDate } from '@wordpress/date';\n\nexport default function parseDateTime( dateTimeString?: string ): Date | null {\n\tif ( ! dateTimeString ) {\n\t\treturn null;\n\t}\n\tconst parsed = getDate( dateTimeString );\n\treturn parsed && isValidDate( parsed ) ? parsed : null;\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport {\n\tformat,\n\tisValid as isValidDate,\n\tsubMonths,\n\tsubDays,\n\tsubYears,\n\tstartOfMonth,\n\tstartOfYear,\n} from 'date-fns';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBaseControl,\n\tButton,\n\tIcon,\n\tprivateApis as componentsPrivateApis,\n\t__experimentalInputControl as InputControl,\n} from '@wordpress/components';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { getDate, getSettings } from '@wordpress/date';\nimport { error as errorIcon } from '@wordpress/icons';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport RelativeDateControl from './utils/relative-date-control';\nimport {\n\tOPERATOR_IN_THE_PAST,\n\tOPERATOR_OVER,\n\tOPERATOR_BETWEEN,\n} from '../../constants';\nimport { unlock } from '../../lock-unlock';\nimport type {\n\tDataFormControlProps,\n\tFieldValidity,\n\tFormatDate,\n\tNormalizedField,\n} from '../../types';\nimport getCustomValidity from './utils/get-custom-validity';\n\nconst { DateCalendar, DateRangeCalendar } = unlock( componentsPrivateApis );\n\ntype DateRange = [ string, string ] | undefined;\n\nconst DATE_PRESETS: {\n\tid: string;\n\tlabel: string;\n\tgetValue: () => Date;\n}[] = [\n\t{\n\t\tid: 'today',\n\t\tlabel: __( 'Today' ),\n\t\tgetValue: () => getDate( null ),\n\t},\n\t{\n\t\tid: 'yesterday',\n\t\tlabel: __( 'Yesterday' ),\n\t\tgetValue: () => {\n\t\t\tconst today = getDate( null );\n\t\t\treturn subDays( today, 1 );\n\t\t},\n\t},\n\t{\n\t\tid: 'past-week',\n\t\tlabel: __( 'Past week' ),\n\t\tgetValue: () => {\n\t\t\tconst today = getDate( null );\n\t\t\treturn subDays( today, 7 );\n\t\t},\n\t},\n\t{\n\t\tid: 'past-month',\n\t\tlabel: __( 'Past month' ),\n\t\tgetValue: () => {\n\t\t\tconst today = getDate( null );\n\t\t\treturn subMonths( today, 1 );\n\t\t},\n\t},\n];\n\nconst DATE_RANGE_PRESETS = [\n\t{\n\t\tid: 'last-7-days',\n\t\tlabel: __( 'Last 7 days' ),\n\t\tgetValue: () => {\n\t\t\tconst today = getDate( null );\n\t\t\treturn [ subDays( today, 7 ), today ];\n\t\t},\n\t},\n\t{\n\t\tid: 'last-30-days',\n\t\tlabel: __( 'Last 30 days' ),\n\t\tgetValue: () => {\n\t\t\tconst today = getDate( null );\n\t\t\treturn [ subDays( today, 30 ), today ];\n\t\t},\n\t},\n\t{\n\t\tid: 'month-to-date',\n\t\tlabel: __( 'Month to date' ),\n\t\tgetValue: () => {\n\t\t\tconst today = getDate( null );\n\t\t\treturn [ startOfMonth( today ), today ];\n\t\t},\n\t},\n\t{\n\t\tid: 'last-year',\n\t\tlabel: __( 'Last year' ),\n\t\tgetValue: () => {\n\t\t\tconst today = getDate( null );\n\t\t\treturn [ subYears( today, 1 ), today ];\n\t\t},\n\t},\n\t{\n\t\tid: 'year-to-date',\n\t\tlabel: __( 'Year to date' ),\n\t\tgetValue: () => {\n\t\t\tconst today = getDate( null );\n\t\t\treturn [ startOfYear( today ), today ];\n\t\t},\n\t},\n];\n\nconst parseDate = ( dateString?: string ): Date | null => {\n\tif ( ! dateString ) {\n\t\treturn null;\n\t}\n\tconst parsed = getDate( dateString );\n\treturn parsed && isValidDate( parsed ) ? parsed : null;\n};\n\nconst formatDate = ( date?: Date | string ): string => {\n\tif ( ! date ) {\n\t\treturn '';\n\t}\n\treturn typeof date === 'string' ? date : format( date, 'yyyy-MM-dd' );\n};\n\nfunction ValidatedDateControl< Item >( {\n\tfield,\n\tvalidity,\n\tinputRefs,\n\tisTouched,\n\tsetIsTouched,\n\tchildren,\n}: {\n\tfield: NormalizedField< Item >;\n\tvalidity?: FieldValidity;\n\tinputRefs:\n\t\t| React.RefObject< HTMLInputElement >\n\t\t| React.RefObject< HTMLInputElement >[];\n\tisTouched: boolean;\n\tsetIsTouched: ( touched: boolean ) => void;\n\tchildren: React.ReactNode;\n} ) {\n\tconst { isValid } = field;\n\tconst [ customValidity, setCustomValidity ] = useState<\n\t\t| { type: 'valid' | 'validating' | 'invalid'; message?: string }\n\t\t| undefined\n\t>( undefined );\n\n\tconst validateRefs = useCallback( () => {\n\t\t// Check HTML5 validity on all refs\n\t\tconst refs = Array.isArray( inputRefs ) ? inputRefs : [ inputRefs ];\n\t\tfor ( const ref of refs ) {\n\t\t\tconst input = ref.current;\n\t\t\tif ( input && ! input.validity.valid ) {\n\t\t\t\tsetCustomValidity( {\n\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\tmessage: input.validationMessage,\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// No errors\n\t\tsetCustomValidity( undefined );\n\t}, [ inputRefs ] );\n\n\tuseEffect( () => {\n\t\tif ( isTouched ) {\n\t\t\tconst timeoutId = setTimeout( () => {\n\t\t\t\tif ( validity ) {\n\t\t\t\t\tsetCustomValidity( getCustomValidity( isValid, validity ) );\n\t\t\t\t} else {\n\t\t\t\t\tvalidateRefs();\n\t\t\t\t}\n\t\t\t}, 0 );\n\t\t\treturn () => clearTimeout( timeoutId );\n\t\t}\n\t\treturn undefined;\n\t}, [ isTouched, isValid, validity, validateRefs ] );\n\n\tconst onBlur = ( event: React.FocusEvent< HTMLDivElement > ) => {\n\t\tif ( isTouched ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Only consider \"blurred from the component\" if focus has fully left the wrapping div.\n\t\t// This prevents unnecessary blurs from components with multiple focusable elements.\n\t\tif (\n\t\t\t! event.relatedTarget ||\n\t\t\t! event.currentTarget.contains( event.relatedTarget )\n\t\t) {\n\t\t\tsetIsTouched( true );\n\t\t}\n\t};\n\n\treturn (\n\t\t<div onBlur={ onBlur }>\n\t\t\t{ children }\n\t\t\t<div aria-live=\"polite\">\n\t\t\t\t{ customValidity && (\n\t\t\t\t\t<p\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'components-validated-control__indicator',\n\t\t\t\t\t\t\tcustomValidity.type === 'invalid'\n\t\t\t\t\t\t\t\t? 'is-invalid'\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\tcustomValidity.type === 'valid'\n\t\t\t\t\t\t\t\t? 'is-valid'\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\tclassName=\"components-validated-control__indicator-icon\"\n\t\t\t\t\t\t\ticon={ errorIcon }\n\t\t\t\t\t\t\tsize={ 16 }\n\t\t\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ customValidity.message }\n\t\t\t\t\t</p>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nfunction CalendarDateControl< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst {\n\t\tid,\n\t\tlabel,\n\t\tsetValue,\n\t\tgetValue,\n\t\tisValid,\n\t\tformat: fieldFormat,\n\t} = field;\n\tconst [ selectedPresetId, setSelectedPresetId ] = useState< string | null >(\n\t\tnull\n\t);\n\n\tconst weekStartsOn =\n\t\t( fieldFormat as FormatDate ).weekStartsOn ??\n\t\tgetSettings().l10n.startOfWeek;\n\n\tconst fieldValue = getValue( { item: data } );\n\tconst value = typeof fieldValue === 'string' ? fieldValue : undefined;\n\tconst [ calendarMonth, setCalendarMonth ] = useState< Date >( () => {\n\t\tconst parsedDate = parseDate( value );\n\t\treturn parsedDate || new Date(); // Default to current month\n\t} );\n\n\tconst [ isTouched, setIsTouched ] = useState( false );\n\tconst validityTargetRef = useRef< HTMLInputElement >( null );\n\n\tconst onChangeCallback = useCallback(\n\t\t( newValue: string | undefined ) =>\n\t\t\tonChange( setValue( { item: data, value: newValue } ) ),\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tconst onSelectDate = useCallback(\n\t\t( newDate: Date | undefined | null ) => {\n\t\t\tconst dateValue = newDate\n\t\t\t\t? format( newDate, 'yyyy-MM-dd' )\n\t\t\t\t: undefined;\n\t\t\tonChangeCallback( dateValue );\n\t\t\tsetSelectedPresetId( null );\n\t\t\tsetIsTouched( true );\n\t\t},\n\t\t[ onChangeCallback ]\n\t);\n\n\tconst handlePresetClick = useCallback(\n\t\t( preset: ( typeof DATE_PRESETS )[ 0 ] ) => {\n\t\t\tconst presetDate = preset.getValue();\n\t\t\tconst dateValue = formatDate( presetDate );\n\n\t\t\tsetCalendarMonth( presetDate );\n\t\t\tonChangeCallback( dateValue );\n\t\t\tsetSelectedPresetId( preset.id );\n\t\t\tsetIsTouched( true );\n\t\t},\n\t\t[ onChangeCallback ]\n\t);\n\n\tconst handleManualDateChange = useCallback(\n\t\t( newValue?: string ) => {\n\t\t\tonChangeCallback( newValue );\n\t\t\tif ( newValue ) {\n\t\t\t\tconst parsedDate = parseDate( newValue );\n\t\t\t\tif ( parsedDate ) {\n\t\t\t\t\tsetCalendarMonth( parsedDate );\n\t\t\t\t}\n\t\t\t}\n\t\t\tsetSelectedPresetId( null );\n\t\t\tsetIsTouched( true );\n\t\t},\n\t\t[ onChangeCallback ]\n\t);\n\n\tconst {\n\t\ttimezone: { string: timezoneString },\n\t} = getSettings();\n\n\tconst displayLabel = isValid?.required\n\t\t? `${ label } (${ __( 'Required' ) })`\n\t\t: label;\n\n\treturn (\n\t\t<ValidatedDateControl\n\t\t\tfield={ field }\n\t\t\tvalidity={ validity }\n\t\t\tinputRefs={ validityTargetRef }\n\t\t\tisTouched={ isTouched }\n\t\t\tsetIsTouched={ setIsTouched }\n\t\t>\n\t\t\t<BaseControl\n\t\t\t\tid={ id }\n\t\t\t\tclassName=\"dataviews-controls__date\"\n\t\t\t\tlabel={ displayLabel }\n\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t>\n\t\t\t\t<Stack direction=\"column\" gap=\"md\">\n\t\t\t\t\t{ /* Preset buttons */ }\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\t\twrap=\"wrap\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ DATE_PRESETS.map( ( preset ) => {\n\t\t\t\t\t\t\tconst isSelected = selectedPresetId === preset.id;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-controls__date-preset\"\n\t\t\t\t\t\t\t\t\tkey={ preset.id }\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\tisPressed={ isSelected }\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\thandlePresetClick( preset )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ preset.label }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"dataviews-controls__date-preset\"\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tisPressed={ ! selectedPresetId }\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tdisabled={ !! selectedPresetId }\n\t\t\t\t\t\t\taccessibleWhenDisabled={ false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Custom' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Stack>\n\n\t\t\t\t\t{ /* Manual date input */ }\n\t\t\t\t\t<InputControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tref={ validityTargetRef }\n\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\tlabel={ __( 'Date' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ handleManualDateChange }\n\t\t\t\t\t\trequired={ !! field.isValid?.required }\n\t\t\t\t\t/>\n\n\t\t\t\t\t{ /* Calendar widget */ }\n\t\t\t\t\t<DateCalendar\n\t\t\t\t\t\tstyle={ { width: '100%' } }\n\t\t\t\t\t\tselected={\n\t\t\t\t\t\t\tvalue ? parseDate( value ) || undefined : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonSelect={ onSelectDate }\n\t\t\t\t\t\tmonth={ calendarMonth }\n\t\t\t\t\t\tonMonthChange={ setCalendarMonth }\n\t\t\t\t\t\ttimeZone={ timezoneString || undefined }\n\t\t\t\t\t\tweekStartsOn={ weekStartsOn }\n\t\t\t\t\t/>\n\t\t\t\t</Stack>\n\t\t\t</BaseControl>\n\t\t</ValidatedDateControl>\n\t);\n}\n\nfunction CalendarDateRangeControl< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { id, label, getValue, setValue, format: fieldFormat } = field;\n\tlet value: DateRange;\n\tconst fieldValue = getValue( { item: data } );\n\tif (\n\t\tArray.isArray( fieldValue ) &&\n\t\tfieldValue.length === 2 &&\n\t\tfieldValue.every( ( date ) => typeof date === 'string' )\n\t) {\n\t\tvalue = fieldValue as DateRange;\n\t}\n\n\tconst weekStartsOn =\n\t\t( fieldFormat as FormatDate ).weekStartsOn ??\n\t\tgetSettings().l10n.startOfWeek;\n\n\tconst onChangeCallback = useCallback(\n\t\t( newValue: DateRange ) => {\n\t\t\tonChange(\n\t\t\t\tsetValue( {\n\t\t\t\t\titem: data,\n\t\t\t\t\tvalue: newValue,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tconst [ selectedPresetId, setSelectedPresetId ] = useState< string | null >(\n\t\tnull\n\t);\n\n\tconst selectedRange = useMemo( () => {\n\t\tif ( ! value ) {\n\t\t\treturn { from: undefined, to: undefined };\n\t\t}\n\n\t\tconst [ from, to ] = value;\n\t\treturn {\n\t\t\tfrom: parseDate( from ) || undefined,\n\t\t\tto: parseDate( to ) || undefined,\n\t\t};\n\t}, [ value ] );\n\n\tconst [ calendarMonth, setCalendarMonth ] = useState< Date >( () => {\n\t\treturn selectedRange.from || new Date();\n\t} );\n\n\tconst [ isTouched, setIsTouched ] = useState( false );\n\tconst fromInputRef = useRef< HTMLInputElement >( null );\n\tconst toInputRef = useRef< HTMLInputElement >( null );\n\n\tconst updateDateRange = useCallback(\n\t\t( fromDate?: Date | string, toDate?: Date | string ) => {\n\t\t\tif ( fromDate && toDate ) {\n\t\t\t\tonChangeCallback( [\n\t\t\t\t\tformatDate( fromDate ),\n\t\t\t\t\tformatDate( toDate ),\n\t\t\t\t] );\n\t\t\t} else if ( ! fromDate && ! toDate ) {\n\t\t\t\tonChangeCallback( undefined );\n\t\t\t}\n\t\t\t// Do nothing if only one date is set - wait for both\n\t\t},\n\t\t[ onChangeCallback ]\n\t);\n\n\tconst onSelectCalendarRange = useCallback(\n\t\t(\n\t\t\tnewRange:\n\t\t\t\t| { from: Date | undefined; to?: Date | undefined }\n\t\t\t\t| undefined\n\t\t) => {\n\t\t\tupdateDateRange( newRange?.from, newRange?.to );\n\t\t\tsetSelectedPresetId( null );\n\t\t\tsetIsTouched( true );\n\t\t},\n\t\t[ updateDateRange ]\n\t);\n\n\tconst handlePresetClick = useCallback(\n\t\t( preset: ( typeof DATE_RANGE_PRESETS )[ 0 ] ) => {\n\t\t\tconst [ startDate, endDate ] = preset.getValue();\n\t\t\tsetCalendarMonth( startDate );\n\t\t\tupdateDateRange( startDate, endDate );\n\t\t\tsetSelectedPresetId( preset.id );\n\t\t\tsetIsTouched( true );\n\t\t},\n\t\t[ updateDateRange ]\n\t);\n\n\tconst handleManualDateChange = useCallback(\n\t\t( fromOrTo: 'from' | 'to', newValue?: string ) => {\n\t\t\tconst [ currentFrom, currentTo ] = value || [\n\t\t\t\tundefined,\n\t\t\t\tundefined,\n\t\t\t];\n\t\t\tconst updatedFrom = fromOrTo === 'from' ? newValue : currentFrom;\n\t\t\tconst updatedTo = fromOrTo === 'to' ? newValue : currentTo;\n\n\t\t\tupdateDateRange( updatedFrom, updatedTo );\n\n\t\t\tif ( newValue ) {\n\t\t\t\tconst parsedDate = parseDate( newValue );\n\t\t\t\tif ( parsedDate ) {\n\t\t\t\t\tsetCalendarMonth( parsedDate );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsetSelectedPresetId( null );\n\t\t\tsetIsTouched( true );\n\t\t},\n\t\t[ value, updateDateRange ]\n\t);\n\n\tconst { timezone } = getSettings();\n\n\tconst displayLabel = field.isValid?.required\n\t\t? `${ label } (${ __( 'Required' ) })`\n\t\t: label;\n\n\treturn (\n\t\t<ValidatedDateControl\n\t\t\tfield={ field }\n\t\t\tvalidity={ validity }\n\t\t\tinputRefs={ [ fromInputRef, toInputRef ] }\n\t\t\tisTouched={ isTouched }\n\t\t\tsetIsTouched={ setIsTouched }\n\t\t>\n\t\t\t<BaseControl\n\t\t\t\tid={ id }\n\t\t\t\tclassName=\"dataviews-controls__date\"\n\t\t\t\tlabel={ displayLabel }\n\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t>\n\t\t\t\t<Stack direction=\"column\" gap=\"md\">\n\t\t\t\t\t{ /* Preset buttons */ }\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\t\twrap=\"wrap\"\n\t\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ DATE_RANGE_PRESETS.map( ( preset ) => {\n\t\t\t\t\t\t\tconst isSelected = selectedPresetId === preset.id;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"dataviews-controls__date-preset\"\n\t\t\t\t\t\t\t\t\tkey={ preset.id }\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\tisPressed={ isSelected }\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\thandlePresetClick( preset )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ preset.label }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"dataviews-controls__date-preset\"\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tisPressed={ ! selectedPresetId }\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\taccessibleWhenDisabled={ false }\n\t\t\t\t\t\t\tdisabled={ !! selectedPresetId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Custom' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Stack>\n\n\t\t\t\t\t{ /* Manual date range inputs */ }\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\tgap=\"xs\"\n\t\t\t\t\t\tjustify=\"space-between\"\n\t\t\t\t\t\tclassName=\"dataviews-controls__date-range-inputs\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tref={ fromInputRef }\n\t\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t\tlabel={ __( 'From' ) }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\tvalue={ value?.[ 0 ] }\n\t\t\t\t\t\t\tonChange={ ( newValue ) =>\n\t\t\t\t\t\t\t\thandleManualDateChange( 'from', newValue )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trequired={ !! field.isValid?.required }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tref={ toInputRef }\n\t\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t\tlabel={ __( 'To' ) }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\tvalue={ value?.[ 1 ] }\n\t\t\t\t\t\t\tonChange={ ( newValue ) =>\n\t\t\t\t\t\t\t\thandleManualDateChange( 'to', newValue )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trequired={ !! field.isValid?.required }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Stack>\n\n\t\t\t\t\t<DateRangeCalendar\n\t\t\t\t\t\tstyle={ { width: '100%' } }\n\t\t\t\t\t\tselected={ selectedRange }\n\t\t\t\t\t\tonSelect={ onSelectCalendarRange }\n\t\t\t\t\t\tmonth={ calendarMonth }\n\t\t\t\t\t\tonMonthChange={ setCalendarMonth }\n\t\t\t\t\t\ttimeZone={ timezone.string || undefined }\n\t\t\t\t\t\tweekStartsOn={ weekStartsOn }\n\t\t\t\t\t/>\n\t\t\t\t</Stack>\n\t\t\t</BaseControl>\n\t\t</ValidatedDateControl>\n\t);\n}\n\nexport default function DateControl< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\toperator,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tif ( operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER ) {\n\t\treturn (\n\t\t\t<RelativeDateControl\n\t\t\t\tclassName=\"dataviews-controls__date\"\n\t\t\t\tdata={ data }\n\t\t\t\tfield={ field }\n\t\t\t\tonChange={ onChange }\n\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\toperator={ operator }\n\t\t\t/>\n\t\t);\n\t}\n\n\tif ( operator === OPERATOR_BETWEEN ) {\n\t\treturn (\n\t\t\t<CalendarDateRangeControl\n\t\t\t\tdata={ data }\n\t\t\t\tfield={ field }\n\t\t\t\tonChange={ onChange }\n\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\tvalidity={ validity }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<CalendarDateControl\n\t\t\tdata={ data }\n\t\t\tfield={ field }\n\t\t\tonChange={ onChange }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\tvalidity={ validity }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport { envelope } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport ValidatedText from './utils/validated-input';\n\nexport default function Email< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\treturn (\n\t\t<ValidatedText\n\t\t\t{ ...{\n\t\t\t\tdata,\n\t\t\t\tfield,\n\t\t\t\tonChange,\n\t\t\t\thideLabelFromVision,\n\t\t\t\tvalidity,\n\t\t\t\ttype: 'email',\n\t\t\t\tprefix: (\n\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t<Icon icon={ envelope } />\n\t\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t\t),\n\t\t\t} }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { privateApis } from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../../types';\nimport { unlock } from '../../../lock-unlock';\nimport getCustomValidity from './get-custom-validity';\n\nconst { ValidatedInputControl } = unlock( privateApis );\n\nexport type DataFormValidatedTextControlProps< Item > =\n\tDataFormControlProps< Item > & {\n\t\t/**\n\t\t * The input type of the control.\n\t\t */\n\t\ttype?: 'text' | 'email' | 'tel' | 'url' | 'password';\n\t\t/**\n\t\t * Optional prefix element to display before the input.\n\t\t */\n\t\tprefix?: React.ReactElement;\n\t\t/**\n\t\t * Optional suffix element to display after the input.\n\t\t */\n\t\tsuffix?: React.ReactElement;\n\t};\n\nexport default function ValidatedText< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\ttype,\n\tprefix,\n\tsuffix,\n\tvalidity,\n}: DataFormValidatedTextControlProps< Item > ) {\n\tconst { label, placeholder, description, getValue, setValue, isValid } =\n\t\tfield;\n\tconst value = getValue( { item: data } );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string ) =>\n\t\t\tonChange(\n\t\t\t\tsetValue( {\n\t\t\t\t\titem: data,\n\t\t\t\t\tvalue: newValue,\n\t\t\t\t} )\n\t\t\t),\n\t\t[ data, setValue, onChange ]\n\t);\n\n\treturn (\n\t\t<ValidatedInputControl\n\t\t\trequired={ !! isValid.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\tlabel={ label }\n\t\t\tplaceholder={ placeholder }\n\t\t\tvalue={ value ?? '' }\n\t\t\thelp={ description }\n\t\t\tonChange={ onChangeControl }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\ttype={ type }\n\t\t\tprefix={ prefix }\n\t\t\tsuffix={ suffix }\n\t\t\tpattern={ isValid.pattern ? isValid.pattern.constraint : undefined }\n\t\t\tminLength={\n\t\t\t\tisValid.minLength ? isValid.minLength.constraint : undefined\n\t\t\t}\n\t\t\tmaxLength={\n\t\t\t\tisValid.maxLength ? isValid.maxLength.constraint : undefined\n\t\t\t}\n\t\t\t__next40pxDefaultSize\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport { mobile } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport ValidatedText from './utils/validated-input';\n\nexport default function Telephone< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\treturn (\n\t\t<ValidatedText\n\t\t\t{ ...{\n\t\t\t\tdata,\n\t\t\t\tfield,\n\t\t\t\tonChange,\n\t\t\t\thideLabelFromVision,\n\t\t\t\tvalidity,\n\t\t\t\ttype: 'tel',\n\t\t\t\tprefix: (\n\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t<Icon icon={ mobile } />\n\t\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t\t),\n\t\t\t} }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport { link } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport ValidatedText from './utils/validated-input';\n\nexport default function Url< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\treturn (\n\t\t<ValidatedText\n\t\t\t{ ...{\n\t\t\t\tdata,\n\t\t\t\tfield,\n\t\t\t\tonChange,\n\t\t\t\thideLabelFromVision,\n\t\t\t\tvalidity,\n\t\t\t\ttype: 'url',\n\t\t\t\tprefix: (\n\t\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t\t<Icon icon={ link } />\n\t\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t\t),\n\t\t\t} }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\tFlex,\n\tBaseControl,\n\t__experimentalNumberControl as NumberControl,\n\tprivateApis,\n} from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { OPERATOR_BETWEEN } from '../../../constants';\nimport type { DataFormControlProps, FormatNumber } from '../../../types';\nimport { unlock } from '../../../lock-unlock';\nimport getCustomValidity from './get-custom-validity';\n\nconst { ValidatedNumberControl } = unlock( privateApis );\n\ntype NumberBetween = [ number | string, number | string ];\n\nfunction toNumberOrEmpty( value?: string ) {\n\tif ( value === '' || value === undefined ) {\n\t\treturn '';\n\t}\n\tconst number = Number( value );\n\treturn Number.isFinite( number ) ? number : '';\n}\n\nfunction BetweenControls( {\n\tvalue,\n\tonChange,\n\thideLabelFromVision,\n\tstep,\n}: {\n\tvalue: NumberBetween;\n\tonChange: ( [ min, max ]: NumberBetween ) => void;\n\thideLabelFromVision?: boolean;\n\tstep: number;\n} ) {\n\tconst [ min = '', max = '' ] = value;\n\n\tconst onChangeMin = useCallback(\n\t\t( newValue: string | undefined ) =>\n\t\t\tonChange( [ toNumberOrEmpty( newValue ), max ] ),\n\t\t[ onChange, max ]\n\t);\n\n\tconst onChangeMax = useCallback(\n\t\t( newValue: string | undefined ) =>\n\t\t\tonChange( [ min, toNumberOrEmpty( newValue ) ] ),\n\t\t[ onChange, min ]\n\t);\n\n\treturn (\n\t\t<BaseControl\n\t\t\thelp={ __( 'The max. value must be greater than the min. value.' ) }\n\t\t>\n\t\t\t<Flex direction=\"row\" gap={ 4 }>\n\t\t\t\t<NumberControl\n\t\t\t\t\tlabel={ __( 'Min.' ) }\n\t\t\t\t\tvalue={ min }\n\t\t\t\t\tmax={ max ? Number( max ) - step : undefined }\n\t\t\t\t\tonChange={ onChangeMin }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\t\tstep={ step }\n\t\t\t\t/>\n\t\t\t\t<NumberControl\n\t\t\t\t\tlabel={ __( 'Max.' ) }\n\t\t\t\t\tvalue={ max }\n\t\t\t\t\tmin={ min ? Number( min ) + step : undefined }\n\t\t\t\t\tonChange={ onChangeMax }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\t\tstep={ step }\n\t\t\t\t/>\n\t\t\t</Flex>\n\t\t</BaseControl>\n\t);\n}\n\nexport default function ValidatedNumber< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\toperator,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst decimals = ( field.format as FormatNumber )?.decimals ?? 0;\n\tconst step = Math.pow( 10, Math.abs( decimals ) * -1 );\n\tconst { label, description, getValue, setValue, isValid } = field;\n\tconst value = getValue( { item: data } ) ?? '';\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string | undefined ) => {\n\t\t\tonChange(\n\t\t\t\tsetValue( {\n\t\t\t\t\titem: data,\n\t\t\t\t\t// Do not convert an empty string or undefined to a number,\n\t\t\t\t\t// otherwise there's a mismatch between the UI control (empty)\n\t\t\t\t\t// and the data relied by onChange (0).\n\t\t\t\t\tvalue: [ '', undefined ].includes( newValue )\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: Number( newValue ),\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tconst onChangeBetweenControls = useCallback(\n\t\t( newValue: NumberBetween ) => {\n\t\t\tonChange(\n\t\t\t\tsetValue( {\n\t\t\t\t\titem: data,\n\t\t\t\t\tvalue: newValue,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tif ( operator === OPERATOR_BETWEEN ) {\n\t\tlet valueBetween: NumberBetween = [ '', '' ];\n\t\tif (\n\t\t\tArray.isArray( value ) &&\n\t\t\tvalue.length === 2 &&\n\t\t\tvalue.every(\n\t\t\t\t( element ) => typeof element === 'number' || element === ''\n\t\t\t)\n\t\t) {\n\t\t\tvalueBetween = value as NumberBetween;\n\t\t}\n\t\treturn (\n\t\t\t<BetweenControls\n\t\t\t\tvalue={ valueBetween }\n\t\t\t\tonChange={ onChangeBetweenControls }\n\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\tstep={ step }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ValidatedNumberControl\n\t\t\trequired={ !! isValid.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\tlabel={ label }\n\t\t\thelp={ description }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChangeControl }\n\t\t\t__next40pxDefaultSize\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\tstep={ step }\n\t\t\tmin={ isValid.min ? isValid.min.constraint : undefined }\n\t\t\tmax={ isValid.max ? isValid.max.constraint : undefined }\n\t\t/>\n\t);\n}\n", "/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport ValidatedNumber from './utils/validated-number';\n\nexport default function Integer< Item >( props: DataFormControlProps< Item > ) {\n\treturn <ValidatedNumber { ...props } />;\n}\n", "/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport ValidatedNumber from './utils/validated-number';\n\nexport default function Number< Item >( props: DataFormControlProps< Item > ) {\n\treturn <ValidatedNumber { ...props } />;\n}\n", "/**\n * WordPress dependencies\n */\nimport { privateApis, Spinner } from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport { unlock } from '../../lock-unlock';\nimport getCustomValidity from './utils/get-custom-validity';\nimport useElements from '../../hooks/use-elements';\n\nconst { ValidatedRadioControl } = unlock( privateApis );\n\nexport default function Radio< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { label, description, getValue, setValue, isValid } = field;\n\tconst { elements, isLoading } = useElements( {\n\t\telements: field.elements,\n\t\tgetElements: field.getElements,\n\t} );\n\tconst value = getValue( { item: data } );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string ) =>\n\t\t\tonChange( setValue( { item: data, value: newValue } ) ),\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tif ( isLoading ) {\n\t\treturn <Spinner />;\n\t}\n\n\treturn (\n\t\t<ValidatedRadioControl\n\t\t\trequired={ !! field.isValid?.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\tlabel={ label }\n\t\t\thelp={ description }\n\t\t\tonChange={ onChangeControl }\n\t\t\toptions={ elements }\n\t\t\tselected={ value }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { privateApis, Spinner } from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport useElements from '../../hooks/use-elements';\nimport { unlock } from '../../lock-unlock';\nimport getCustomValidity from './utils/get-custom-validity';\n\nconst { ValidatedSelectControl } = unlock( privateApis );\n\nexport default function Select< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { type, label, description, getValue, setValue, isValid } = field;\n\n\tconst isMultiple = type === 'array';\n\tconst value = getValue( { item: data } ) ?? ( isMultiple ? [] : '' );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: any ) =>\n\t\t\tonChange( setValue( { item: data, value: newValue } ) ),\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tconst { elements, isLoading } = useElements( {\n\t\telements: field.elements,\n\t\tgetElements: field.getElements,\n\t} );\n\n\tif ( isLoading ) {\n\t\treturn <Spinner />;\n\t}\n\n\treturn (\n\t\t<ValidatedSelectControl\n\t\t\trequired={ !! field.isValid?.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\tlabel={ label }\n\t\t\tvalue={ value }\n\t\t\thelp={ description }\n\t\t\toptions={ elements }\n\t\t\tonChange={ onChangeControl }\n\t\t\t__next40pxDefaultSize\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\tmultiple={ isMultiple }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { createElement } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport ValidatedText from './utils/validated-input';\n\nexport default function Text< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tconfig,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { prefix, suffix } = config || {};\n\n\treturn (\n\t\t<ValidatedText\n\t\t\t{ ...{\n\t\t\t\tdata,\n\t\t\t\tfield,\n\t\t\t\tonChange,\n\t\t\t\thideLabelFromVision,\n\t\t\t\tvalidity,\n\t\t\t\tprefix: prefix ? createElement( prefix ) : undefined,\n\t\t\t\tsuffix: suffix ? createElement( suffix ) : undefined,\n\t\t\t} }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { privateApis } from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport { unlock } from '../../lock-unlock';\nimport getCustomValidity from './utils/get-custom-validity';\n\nconst { ValidatedToggleControl } = unlock( privateApis );\n\nexport default function Toggle< Item >( {\n\tfield,\n\tonChange,\n\tdata,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { label, description, getValue, setValue, isValid } = field;\n\n\tconst onChangeControl = useCallback( () => {\n\t\tonChange(\n\t\t\tsetValue( { item: data, value: ! getValue( { item: data } ) } )\n\t\t);\n\t}, [ onChange, setValue, data, getValue ] );\n\n\treturn (\n\t\t<ValidatedToggleControl\n\t\t\trequired={ !! isValid.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\thidden={ hideLabelFromVision }\n\t\t\tlabel={ label }\n\t\t\thelp={ description }\n\t\t\tchecked={ getValue( { item: data } ) }\n\t\t\tonChange={ onChangeControl }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { privateApis } from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport { unlock } from '../../lock-unlock';\nimport getCustomValidity from './utils/get-custom-validity';\n\nconst { ValidatedTextareaControl } = unlock( privateApis );\n\nexport default function Textarea< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tconfig,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { rows = 4 } = config || {};\n\tconst { label, placeholder, description, setValue, isValid } = field;\n\tconst value = field.getValue( { item: data } );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string ) =>\n\t\t\tonChange( setValue( { item: data, value: newValue } ) ),\n\t\t[ data, onChange, setValue ]\n\t);\n\n\treturn (\n\t\t<ValidatedTextareaControl\n\t\t\trequired={ !! isValid.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\tlabel={ label }\n\t\t\tplaceholder={ placeholder }\n\t\t\tvalue={ value ?? '' }\n\t\t\thelp={ description }\n\t\t\tonChange={ onChangeControl }\n\t\t\trows={ rows }\n\t\t\tminLength={\n\t\t\t\tisValid.minLength ? isValid.minLength.constraint : undefined\n\t\t\t}\n\t\t\tmaxLength={\n\t\t\t\tisValid.maxLength ? isValid.maxLength.constraint : undefined\n\t\t\t}\n\t\t\t__next40pxDefaultSize\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\tSpinner,\n} from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport { unlock } from '../../lock-unlock';\nimport getCustomValidity from './utils/get-custom-validity';\nimport useElements from '../../hooks/use-elements';\n\nconst { ValidatedToggleGroupControl } = unlock( privateApis );\n\nexport default function ToggleGroup< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { getValue, setValue, isValid } = field;\n\tconst value = getValue( { item: data } );\n\n\tconst onChangeControl = useCallback(\n\t\t( newValue: string | number | undefined ) =>\n\t\t\tonChange( setValue( { item: data, value: newValue } ) ),\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tconst { elements, isLoading } = useElements( {\n\t\telements: field.elements,\n\t\tgetElements: field.getElements,\n\t} );\n\n\tif ( isLoading ) {\n\t\treturn <Spinner />;\n\t}\n\n\tif ( elements.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst selectedOption = elements.find( ( el ) => el.value === value );\n\treturn (\n\t\t<ValidatedToggleGroupControl\n\t\t\trequired={ !! field.isValid?.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\t__next40pxDefaultSize\n\t\t\tisBlock\n\t\t\tlabel={ field.label }\n\t\t\thelp={ selectedOption?.description || field.description }\n\t\t\tonChange={ onChangeControl }\n\t\t\tvalue={ value }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t>\n\t\t\t{ elements.map( ( el ) => (\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey={ el.value }\n\t\t\t\t\tlabel={ el.label }\n\t\t\t\t\tvalue={ el.value }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</ValidatedToggleGroupControl>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { privateApis, Spinner } from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport { unlock } from '../../lock-unlock';\nimport getCustomValidity from './utils/get-custom-validity';\nimport useElements from '../../hooks/use-elements';\n\nconst { ValidatedFormTokenField } = unlock( privateApis );\n\nexport default function ArrayControl< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { label, placeholder, getValue, setValue, isValid } = field;\n\tconst value = getValue( { item: data } );\n\n\tconst { elements, isLoading } = useElements( {\n\t\telements: field.elements,\n\t\tgetElements: field.getElements,\n\t} );\n\n\t// Convert stored values to element objects for the token field\n\tconst arrayValueAsElements = useMemo(\n\t\t() =>\n\t\t\tArray.isArray( value )\n\t\t\t\t? value.map( ( token ) => {\n\t\t\t\t\t\tconst element = elements?.find(\n\t\t\t\t\t\t\t( suggestion ) => suggestion.value === token\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn element || { value: token, label: token };\n\t\t\t\t  } )\n\t\t\t\t: [],\n\t\t[ value, elements ]\n\t);\n\n\tconst onChangeControl = useCallback(\n\t\t( tokens: ( string | { value: string; label?: string } )[] ) => {\n\t\t\tconst valueTokens = tokens.map( ( token ) => {\n\t\t\t\tif ( typeof token === 'object' && 'value' in token ) {\n\t\t\t\t\treturn token.value;\n\t\t\t\t}\n\t\t\t\t// If it's a string, it's either a new suggestion value or user input\n\t\t\t\treturn token;\n\t\t\t} );\n\n\t\t\tonChange( setValue( { item: data, value: valueTokens } ) );\n\t\t},\n\t\t[ onChange, setValue, data ]\n\t);\n\n\tif ( isLoading ) {\n\t\treturn <Spinner />;\n\t}\n\n\treturn (\n\t\t<ValidatedFormTokenField\n\t\t\trequired={ !! isValid?.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\tlabel={ hideLabelFromVision ? undefined : label }\n\t\t\tvalue={ arrayValueAsElements }\n\t\t\tonChange={ onChangeControl }\n\t\t\tplaceholder={ placeholder }\n\t\t\tsuggestions={ elements?.map( ( element ) => element.value ) }\n\t\t\t__experimentalValidateInput={ ( token: string ) => {\n\t\t\t\t// If elements validation is required, check if token is valid\n\t\t\t\tif ( field.isValid?.elements && elements ) {\n\t\t\t\t\treturn elements.some(\n\t\t\t\t\t\t( element ) =>\n\t\t\t\t\t\t\telement.value === token || element.label === token\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// For non-elements validation, allow all tokens\n\t\t\t\treturn true;\n\t\t\t} }\n\t\t\t__experimentalExpandOnFocus={ elements && elements.length > 0 }\n\t\t\t__experimentalShowHowTo={ ! field.isValid?.elements }\n\t\t\tdisplayTransform={ ( token: any ) => {\n\t\t\t\t// For existing tokens (element objects), display their label\n\t\t\t\tif ( typeof token === 'object' && 'label' in token ) {\n\t\t\t\t\treturn token.label;\n\t\t\t\t}\n\t\t\t\t// For suggestions (value strings), find the corresponding element and show its label\n\t\t\t\tif ( typeof token === 'string' && elements ) {\n\t\t\t\t\tconst element = elements.find(\n\t\t\t\t\t\t( el ) => el.value === token\n\t\t\t\t\t);\n\t\t\t\t\treturn element?.label || token;\n\t\t\t\t}\n\t\t\t\treturn token;\n\t\t\t} }\n\t\t\t__experimentalRenderItem={ ( { item }: { item: any } ) => {\n\t\t\t\t// Custom rendering for suggestion items (item is a value string)\n\t\t\t\tif ( typeof item === 'string' && elements ) {\n\t\t\t\t\tconst element = elements.find(\n\t\t\t\t\t\t( el ) => el.value === item\n\t\t\t\t\t);\n\t\t\t\t\treturn <span>{ element?.label || item }</span>;\n\t\t\t\t}\n\t\t\t\treturn <span>{ item }</span>;\n\t\t\t} }\n\t\t/>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport { colord } from 'colord';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tDropdown,\n\tprivateApis,\n\t__experimentalInputControlPrefixWrapper as InputControlPrefixWrapper,\n} from '@wordpress/components';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps } from '../../types';\nimport { unlock } from '../../lock-unlock';\nimport getCustomValidity from './utils/get-custom-validity';\n\nconst { ValidatedInputControl, Picker } = unlock( privateApis );\n\nconst ColorPicker = ( {\n\tcolor,\n\tonColorChange,\n}: {\n\tcolor: string;\n\tonColorChange: ( colorObject: any ) => void;\n} ) => {\n\tconst validColor = color && colord( color ).isValid() ? color : '#ffffff';\n\n\treturn (\n\t\t<Dropdown\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => (\n\t\t\t\t<InputControlPrefixWrapper variant=\"icon\">\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\twidth: '24px',\n\t\t\t\t\t\t\theight: '24px',\n\t\t\t\t\t\t\tborderRadius: '50%',\n\t\t\t\t\t\t\tbackgroundColor: validColor,\n\t\t\t\t\t\t\tborder: '1px solid #ddd',\n\t\t\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t\t\toutline: isOpen ? '2px solid #007cba' : 'none',\n\t\t\t\t\t\t\toutlineOffset: '2px',\n\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t\t\tmargin: 0,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\taria-label=\"Open color picker\"\n\t\t\t\t\t/>\n\t\t\t\t</InputControlPrefixWrapper>\n\t\t\t) }\n\t\t\trenderContent={ () => (\n\t\t\t\t<div style={ { padding: '16px' } }>\n\t\t\t\t\t<Picker\n\t\t\t\t\t\tcolor={ colord( validColor ) }\n\t\t\t\t\t\tonChange={ onColorChange }\n\t\t\t\t\t\tenableAlpha\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t/>\n\t);\n};\n\nexport default function Color< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst { label, placeholder, description, setValue, isValid } = field;\n\tconst value = field.getValue( { item: data } ) || '';\n\n\tconst handleColorChange = useCallback(\n\t\t( colorObject: any ) => {\n\t\t\tonChange( setValue( { item: data, value: colorObject.toHex() } ) );\n\t\t},\n\t\t[ data, onChange, setValue ]\n\t);\n\n\tconst handleInputChange = useCallback(\n\t\t( newValue: string | undefined ) => {\n\t\t\tonChange( setValue( { item: data, value: newValue || '' } ) );\n\t\t},\n\t\t[ data, onChange, setValue ]\n\t);\n\n\treturn (\n\t\t<ValidatedInputControl\n\t\t\trequired={ !! field.isValid?.required }\n\t\t\tcustomValidity={ getCustomValidity( isValid, validity ) }\n\t\t\tlabel={ label }\n\t\t\tplaceholder={ placeholder }\n\t\t\tvalue={ value }\n\t\t\thelp={ description }\n\t\t\tonChange={ handleInputChange }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\ttype=\"text\"\n\t\t\tprefix={\n\t\t\t\t<ColorPicker\n\t\t\t\t\tcolor={ value }\n\t\t\t\t\tonColorChange={ handleColorChange }\n\t\t\t\t/>\n\t\t\t}\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,\n\tButton,\n} from '@wordpress/components';\nimport { useCallback, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { seen, unseen } from '@wordpress/icons';\n/**\n * Internal dependencies\n */\nimport ValidatedText from './utils/validated-input';\nimport type { DataFormControlProps } from '../../types';\n\nexport default function Password< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: DataFormControlProps< Item > ) {\n\tconst [ isVisible, setIsVisible ] = useState( false );\n\n\tconst toggleVisibility = useCallback( () => {\n\t\tsetIsVisible( ( prev ) => ! prev );\n\t}, [] );\n\n\treturn (\n\t\t<ValidatedText\n\t\t\t{ ...{\n\t\t\t\tdata,\n\t\t\t\tfield,\n\t\t\t\tonChange,\n\t\t\t\thideLabelFromVision,\n\t\t\t\tvalidity,\n\t\t\t\ttype: isVisible ? 'text' : 'password',\n\t\t\t\tsuffix: (\n\t\t\t\t\t<InputControlSuffixWrapper variant=\"control\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ticon={ isVisible ? unseen : seen }\n\t\t\t\t\t\t\tonClick={ toggleVisibility }\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\tisVisible\n\t\t\t\t\t\t\t\t\t? __( 'Hide password' )\n\t\t\t\t\t\t\t\t\t: __( 'Show password' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</InputControlSuffixWrapper>\n\t\t\t\t),\n\t\t\t} }\n\t\t/>\n\t);\n}\n", "/**\n * Internal dependencies\n */\nimport type { Field } from '../../types/field-api';\n\nexport default function hasElements< Item >( field: Field< Item > ): boolean {\n\treturn (\n\t\t( Array.isArray( field.elements ) && field.elements.length > 0 ) ||\n\t\ttypeof field.getElements === 'function'\n\t);\n}\n", "/**\n * External dependencies\n */\nimport type { ComponentType } from 'react';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormControlProps, Field, EditConfig } from '../../types';\nimport checkbox from './checkbox';\nimport datetime from './datetime';\nimport date from './date';\nimport email from './email';\nimport telephone from './telephone';\nimport url from './url';\nimport integer from './integer';\nimport number from './number';\nimport radio from './radio';\nimport select from './select';\nimport text from './text';\nimport toggle from './toggle';\nimport textarea from './textarea';\nimport toggleGroup from './toggle-group';\nimport array from './array';\nimport color from './color';\nimport password from './password';\nimport hasElements from '../../field-types/utils/has-elements';\n\ninterface FormControls {\n\t[ key: string ]: ComponentType< DataFormControlProps< any > >;\n}\n\nconst FORM_CONTROLS: FormControls = {\n\tarray,\n\tcheckbox,\n\tcolor,\n\tdatetime,\n\tdate,\n\temail,\n\ttelephone,\n\turl,\n\tinteger,\n\tnumber,\n\tpassword,\n\tradio,\n\tselect,\n\ttext,\n\ttoggle,\n\ttextarea,\n\ttoggleGroup,\n};\n\nfunction isEditConfig( value: any ): value is EditConfig {\n\treturn (\n\t\tvalue && typeof value === 'object' && typeof value.control === 'string'\n\t);\n}\n\nfunction createConfiguredControl( config: EditConfig ) {\n\tconst { control, ...controlConfig } = config;\n\tconst BaseControlType = getControlByType( control );\n\tif ( BaseControlType === null ) {\n\t\treturn null;\n\t}\n\n\treturn function ConfiguredControl< Item >(\n\t\tprops: DataFormControlProps< Item >\n\t) {\n\t\treturn <BaseControlType { ...props } config={ controlConfig } />;\n\t};\n}\n\nexport function getControl< Item >(\n\tfield: Field< Item >,\n\tfallback: string | null\n): ComponentType< DataFormControlProps< Item > > | null {\n\tif ( typeof field.Edit === 'function' ) {\n\t\treturn field.Edit;\n\t}\n\n\tif ( typeof field.Edit === 'string' ) {\n\t\treturn getControlByType( field.Edit );\n\t}\n\n\tif ( isEditConfig( field.Edit ) ) {\n\t\treturn createConfiguredControl( field.Edit );\n\t}\n\n\tif ( hasElements( field ) && field.type !== 'array' ) {\n\t\treturn getControlByType( 'select' );\n\t}\n\n\tif ( fallback === null ) {\n\t\treturn null;\n\t}\n\n\treturn getControlByType( fallback );\n}\n\nexport function getControlByType( type: string ) {\n\tif ( Object.keys( FORM_CONTROLS ).includes( type ) ) {\n\t\treturn FORM_CONTROLS[ type ];\n\t}\n\n\treturn null;\n}\n", "/**\n * Internal dependencies\n */\nimport type { Field, FilterByConfig, Operator } from '../../types';\n\nfunction getFilterBy< Item >(\n\tfield: Field< Item >,\n\tdefaultOperators: Operator[],\n\tvalidOperators: Operator[]\n): Required< FilterByConfig > | false {\n\tif ( field.filterBy === false ) {\n\t\treturn false;\n\t}\n\n\tconst operators =\n\t\tfield.filterBy?.operators?.filter( ( op ) =>\n\t\t\tvalidOperators.includes( op )\n\t\t) ?? defaultOperators;\n\n\t// If no operators are left at this point,\n\t// the filters should be disabled.\n\tif ( operators.length === 0 ) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tisPrimary: !! field.filterBy?.isPrimary,\n\t\toperators,\n\t};\n}\n\nexport default getFilterBy;\n", "const getValueFromId =\n\t( id: string ) =>\n\t( { item }: { item: any } ) => {\n\t\tconst path = id.split( '.' );\n\t\tlet value = item;\n\t\tfor ( const segment of path ) {\n\t\t\tif ( value.hasOwnProperty( segment ) ) {\n\t\t\t\tvalue = value[ segment ];\n\t\t\t} else {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t};\n\nexport default getValueFromId;\n", "const setValueFromId =\n\t( id: string ) =>\n\t( { value }: { value: any } ) => {\n\t\tconst path = id.split( '.' );\n\t\tconst result: any = {};\n\t\tlet current = result;\n\n\t\tfor ( const segment of path.slice( 0, -1 ) ) {\n\t\t\tcurrent[ segment ] = {};\n\t\t\tcurrent = current[ segment ];\n\t\t}\n\n\t\tcurrent[ path.at( -1 )! ] = value;\n\t\treturn result;\n\t};\n\nexport default setValueFromId;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../types';\nimport type { FieldType } from '../types/private';\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_CONTAINS,\n\tOPERATOR_NOT_CONTAINS,\n\tOPERATOR_STARTS_WITH,\n} from '../constants';\nimport render from './utils/render-default';\nimport sort from './utils/sort-text';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidMinLength from './utils/is-valid-min-length';\nimport isValidMaxLength from './utils/is-valid-max-length';\nimport isValidPattern from './utils/is-valid-pattern';\nimport isValidElements from './utils/is-valid-elements';\nimport getValueFormatted from './utils/get-value-formatted-default';\n\n// Email validation regex based on HTML5 spec\n// https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address\nconst emailRegex =\n\t/^[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])?)*$/;\n\nfunction isValidCustom< Item >( item: Item, field: NormalizedField< Item > ) {\n\tconst value = field.getValue( { item } );\n\n\tif (\n\t\t! [ undefined, '', null ].includes( value ) &&\n\t\t! emailRegex.test( value )\n\t) {\n\t\treturn __( 'Value must be a valid email address.' );\n\t}\n\n\treturn null;\n}\n\nexport default {\n\ttype: 'email',\n\trender,\n\tEdit: 'email',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\tvalidOperators: [\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_CONTAINS,\n\t\tOPERATOR_NOT_CONTAINS,\n\t\tOPERATOR_STARTS_WITH,\n\t\t// Multiple selection\n\t\tOPERATOR_IS_ANY,\n\t\tOPERATOR_IS_NONE,\n\t\tOPERATOR_IS_ALL,\n\t\tOPERATOR_IS_NOT_ALL,\n\t],\n\tformat: {},\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\tpattern: isValidPattern,\n\t\tminLength: isValidMinLength,\n\t\tmaxLength: isValidMaxLength,\n\t\telements: isValidElements,\n\t\tcustom: isValidCustom,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * Internal dependencies\n */\nimport type { DataViewRenderFieldProps } from '../../types';\nimport useElements from '../../hooks/use-elements';\n\nexport default function RenderFromElements< Item >( {\n\titem,\n\tfield,\n}: DataViewRenderFieldProps< Item > ) {\n\tconst { elements, isLoading } = useElements( {\n\t\telements: field.elements,\n\t\tgetElements: field.getElements,\n\t} );\n\n\tconst value = field.getValue( { item } );\n\tif ( isLoading ) {\n\t\treturn value;\n\t}\n\n\tif ( elements.length === 0 ) {\n\t\treturn value;\n\t}\n\n\treturn (\n\t\telements?.find( ( element ) => element.value === value )?.label ||\n\t\tfield.getValue( { item } )\n\t);\n}\n", "/**\n * Internal dependencies\n */\nimport type { DataViewRenderFieldProps } from '../../types';\nimport RenderFromElements from './render-from-elements';\n\nexport default function render( {\n\titem,\n\tfield,\n}: DataViewRenderFieldProps< any > ) {\n\tif ( field.hasElements ) {\n\t\treturn <RenderFromElements item={ item } field={ field } />;\n\t}\n\n\treturn field.getValueFormatted( { item, field } );\n}\n", "/**\n * Internal dependencies\n */\nimport type { SortDirection } from '../../types';\n\nexport default ( a: any, b: any, direction: SortDirection ) => {\n\treturn direction === 'asc' ? a.localeCompare( b ) : b.localeCompare( a );\n};\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\nexport default function isValidRequired< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n) {\n\tconst value = field.getValue( { item } );\n\n\treturn ! [ undefined, '', null ].includes( value );\n}\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\nexport default function isValidMinLength< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n): boolean {\n\tif ( typeof field.isValid.minLength?.constraint !== 'number' ) {\n\t\treturn false;\n\t}\n\n\tconst value = field.getValue( { item } );\n\n\t// Empty values are considered valid for minLength validation\n\t// (use required validation to enforce non-empty values)\n\tif ( [ undefined, '', null ].includes( value ) ) {\n\t\treturn true;\n\t}\n\n\treturn String( value ).length >= field.isValid.minLength.constraint;\n}\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\nexport default function isValidMaxLength< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n): boolean {\n\tif ( typeof field.isValid.maxLength?.constraint !== 'number' ) {\n\t\treturn false;\n\t}\n\n\tconst value = field.getValue( { item } );\n\n\t// Empty values are considered valid for maxLength validation\n\t// (use required validation to enforce non-empty values)\n\tif ( [ undefined, '', null ].includes( value ) ) {\n\t\treturn true;\n\t}\n\n\treturn String( value ).length <= field.isValid.maxLength.constraint;\n}\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\nexport default function isValidPattern< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n): boolean {\n\tif ( field.isValid.pattern?.constraint === undefined ) {\n\t\treturn true;\n\t}\n\n\ttry {\n\t\tconst regexp = new RegExp( field.isValid.pattern.constraint );\n\n\t\tconst value = field.getValue( { item } );\n\n\t\t// Empty values are considered valid for pattern validation\n\t\t// (use required validation to enforce non-empty values)\n\t\tif ( [ undefined, '', null ].includes( value ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn regexp.test( String( value ) );\n\t} catch {\n\t\treturn false;\n\t}\n}\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\nexport default function isValidElements< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n): boolean {\n\tconst elements = field.elements ?? [];\n\tconst validValues = elements.map( ( el ) => el.value );\n\tif ( validValues.length === 0 ) {\n\t\treturn true;\n\t}\n\n\tconst value = field.getValue( { item } );\n\n\t// Covers both array and non-array values.\n\treturn [].concat( value ).every( ( v ) => validValues.includes( v ) );\n}\n", "import type { NormalizedField } from '../../types';\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\treturn field.getValue( { item } );\n}\n\nexport default getValueFormatted;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { FormatInteger, NormalizedField } from '../types';\nimport type { FieldType } from '../types/private';\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_LESS_THAN,\n\tOPERATOR_GREATER_THAN,\n\tOPERATOR_LESS_THAN_OR_EQUAL,\n\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_BETWEEN,\n} from '../constants';\nimport sort from './utils/sort-number';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidMin from './utils/is-valid-min';\nimport isValidMax from './utils/is-valid-max';\nimport isValidElements from './utils/is-valid-elements';\nimport render from './utils/render-default';\n\nconst format = {\n\tseparatorThousand: ',',\n};\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\tlet value = field.getValue( { item } );\n\tif ( value === null || value === undefined ) {\n\t\treturn '';\n\t}\n\n\tvalue = Number( value );\n\tif ( ! Number.isFinite( value ) ) {\n\t\treturn String( value );\n\t}\n\n\tlet formatInteger: Required< FormatInteger >;\n\tif ( field.type !== 'integer' ) {\n\t\tformatInteger = format;\n\t} else {\n\t\tformatInteger = field.format as Required< FormatInteger >;\n\t}\n\n\tconst { separatorThousand } = formatInteger;\n\tconst integerValue = Math.trunc( value );\n\tif ( ! separatorThousand ) {\n\t\treturn String( integerValue );\n\t}\n\n\treturn String( integerValue ).replace(\n\t\t/\\B(?=(\\d{3})+(?!\\d))/g,\n\t\tseparatorThousand\n\t);\n}\n\nfunction isValidCustom< Item >( item: Item, field: NormalizedField< Item > ) {\n\tconst value = field.getValue( { item } );\n\tif (\n\t\t! [ undefined, '', null ].includes( value ) &&\n\t\t! Number.isInteger( value )\n\t) {\n\t\treturn __( 'Value must be an integer.' );\n\t}\n\treturn null;\n}\n\nexport default {\n\ttype: 'integer',\n\trender,\n\tEdit: 'integer',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_LESS_THAN,\n\t\tOPERATOR_GREATER_THAN,\n\t\tOPERATOR_LESS_THAN_OR_EQUAL,\n\t\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\t\tOPERATOR_BETWEEN,\n\t],\n\tvalidOperators: [\n\t\t// Single-selection\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_LESS_THAN,\n\t\tOPERATOR_GREATER_THAN,\n\t\tOPERATOR_LESS_THAN_OR_EQUAL,\n\t\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\t\tOPERATOR_BETWEEN,\n\t\t// Multiple-selection\n\t\tOPERATOR_IS_ANY,\n\t\tOPERATOR_IS_NONE,\n\t\tOPERATOR_IS_ALL,\n\t\tOPERATOR_IS_NOT_ALL,\n\t],\n\tformat,\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\tmin: isValidMin,\n\t\tmax: isValidMax,\n\t\telements: isValidElements,\n\t\tcustom: isValidCustom,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * Internal dependencies\n */\nimport type { SortDirection } from '../../types';\n\nexport default ( a: any, b: any, direction: SortDirection ) => {\n\treturn direction === 'asc' ? a - b : b - a;\n};\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\nexport default function isValidMin< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n): boolean {\n\tif ( typeof field.isValid.min?.constraint !== 'number' ) {\n\t\treturn false;\n\t}\n\n\tconst value = field.getValue( { item } );\n\n\t// Empty values are considered valid for min validation\n\t// (use required validation to enforce non-empty values)\n\tif ( [ undefined, '', null ].includes( value ) ) {\n\t\treturn true;\n\t}\n\n\treturn Number( value ) >= field.isValid.min.constraint;\n}\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\nexport default function isValidMax< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n): boolean {\n\tif ( typeof field.isValid.max?.constraint !== 'number' ) {\n\t\treturn false;\n\t}\n\n\tconst value = field.getValue( { item } );\n\n\t// Empty values are considered valid for max validation\n\t// (use required validation to enforce non-empty values)\n\tif ( [ undefined, '', null ].includes( value ) ) {\n\t\treturn true;\n\t}\n\n\treturn Number( value ) <= field.isValid.max.constraint;\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { FormatNumber, NormalizedField } from '../types';\nimport type { FieldType } from '../types/private';\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_LESS_THAN,\n\tOPERATOR_GREATER_THAN,\n\tOPERATOR_LESS_THAN_OR_EQUAL,\n\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_BETWEEN,\n} from '../constants';\nimport sort from './utils/sort-number';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidMin from './utils/is-valid-min';\nimport isValidMax from './utils/is-valid-max';\nimport isValidElements from './utils/is-valid-elements';\nimport render from './utils/render-default';\n\nconst format = {\n\tseparatorThousand: ',',\n\tseparatorDecimal: '.',\n\tdecimals: 2,\n};\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\tlet value = field.getValue( { item } );\n\tif ( value === null || value === undefined ) {\n\t\treturn '';\n\t}\n\n\tvalue = Number( value );\n\tif ( ! Number.isFinite( value ) ) {\n\t\treturn String( value );\n\t}\n\n\tlet formatNumber: Required< FormatNumber >;\n\tif ( field.type !== 'number' ) {\n\t\tformatNumber = format;\n\t} else {\n\t\tformatNumber = field.format as Required< FormatNumber >;\n\t}\n\n\tconst { separatorThousand, separatorDecimal, decimals } = formatNumber;\n\tconst fixedValue = value.toFixed( decimals );\n\tconst [ integerPart, decimalPart ] = fixedValue.split( '.' );\n\tconst formattedInteger = separatorThousand\n\t\t? integerPart.replace( /\\B(?=(\\d{3})+(?!\\d))/g, separatorThousand )\n\t\t: integerPart;\n\treturn decimals === 0\n\t\t? formattedInteger\n\t\t: formattedInteger + separatorDecimal + decimalPart;\n}\n\nfunction isEmpty( value: unknown ): value is '' | undefined | null {\n\treturn value === '' || value === undefined || value === null;\n}\n\nfunction isValidCustom< Item >( item: Item, field: NormalizedField< Item > ) {\n\tconst value = field.getValue( { item } );\n\n\tif ( ! isEmpty( value ) && ! Number.isFinite( value ) ) {\n\t\treturn __( 'Value must be a number.' );\n\t}\n\n\treturn null;\n}\n\nexport default {\n\ttype: 'number',\n\trender,\n\tEdit: 'number',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_LESS_THAN,\n\t\tOPERATOR_GREATER_THAN,\n\t\tOPERATOR_LESS_THAN_OR_EQUAL,\n\t\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\t\tOPERATOR_BETWEEN,\n\t],\n\tvalidOperators: [\n\t\t// Single-selection\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_LESS_THAN,\n\t\tOPERATOR_GREATER_THAN,\n\t\tOPERATOR_LESS_THAN_OR_EQUAL,\n\t\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\t\tOPERATOR_BETWEEN,\n\t\t// Multiple-selection\n\t\tOPERATOR_IS_ANY,\n\t\tOPERATOR_IS_NONE,\n\t\tOPERATOR_IS_ALL,\n\t\tOPERATOR_IS_NOT_ALL,\n\t],\n\tformat,\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\tmin: isValidMin,\n\t\tmax: isValidMax,\n\t\telements: isValidElements,\n\t\tcustom: isValidCustom,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * Internal dependencies\n */\nimport type { FieldType } from '../types/private';\nimport {\n\tOPERATOR_CONTAINS,\n\tOPERATOR_IS,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_NOT_CONTAINS,\n\tOPERATOR_STARTS_WITH,\n} from '../constants';\nimport render from './utils/render-default';\nimport sort from './utils/sort-text';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidMinLength from './utils/is-valid-min-length';\nimport isValidMaxLength from './utils/is-valid-max-length';\nimport isValidPattern from './utils/is-valid-pattern';\nimport isValidElements from './utils/is-valid-elements';\nimport getValueFormatted from './utils/get-value-formatted-default';\n\nexport default {\n\ttype: 'text',\n\trender,\n\tEdit: 'text',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\tvalidOperators: [\n\t\t// Single selection\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_CONTAINS,\n\t\tOPERATOR_NOT_CONTAINS,\n\t\tOPERATOR_STARTS_WITH,\n\t\t// Multiple selection\n\t\tOPERATOR_IS_ANY,\n\t\tOPERATOR_IS_NONE,\n\t\tOPERATOR_IS_ALL,\n\t\tOPERATOR_IS_NOT_ALL,\n\t],\n\tformat: {},\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\tpattern: isValidPattern,\n\t\tminLength: isValidMinLength,\n\t\tmaxLength: isValidMaxLength,\n\t\telements: isValidElements,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * WordPress dependencies\n */\nimport { dateI18n, getDate, getSettings } from '@wordpress/date';\n\n/**\n * Internal dependencies\n */\nimport type { FormatDatetime, NormalizedField, SortDirection } from '../types';\nimport type { FieldType } from '../types/private';\nimport isValidElements from './utils/is-valid-elements';\nimport {\n\tOPERATOR_ON,\n\tOPERATOR_NOT_ON,\n\tOPERATOR_BEFORE,\n\tOPERATOR_AFTER,\n\tOPERATOR_BEFORE_INC,\n\tOPERATOR_AFTER_INC,\n\tOPERATOR_IN_THE_PAST,\n\tOPERATOR_OVER,\n} from '../constants';\nimport isValidRequired from './utils/is-valid-required';\nimport render from './utils/render-default';\n\nconst format = {\n\tdatetime: getSettings().formats.datetime,\n\tweekStartsOn: getSettings().l10n.startOfWeek,\n};\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\tconst value = field.getValue( { item } );\n\tif ( [ '', undefined, null ].includes( value ) ) {\n\t\treturn '';\n\t}\n\n\tlet formatDatetime: Required< FormatDatetime >;\n\tif ( field.type !== 'datetime' ) {\n\t\tformatDatetime = format;\n\t} else {\n\t\tformatDatetime = field.format as Required< FormatDatetime >;\n\t}\n\n\treturn dateI18n( formatDatetime.datetime, getDate( value ) );\n}\n\nconst sort = ( a: any, b: any, direction: SortDirection ) => {\n\tconst timeA = new Date( a ).getTime();\n\tconst timeB = new Date( b ).getTime();\n\n\treturn direction === 'asc' ? timeA - timeB : timeB - timeA;\n};\n\nexport default {\n\ttype: 'datetime',\n\trender,\n\tEdit: 'datetime',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [\n\t\tOPERATOR_ON,\n\t\tOPERATOR_NOT_ON,\n\t\tOPERATOR_BEFORE,\n\t\tOPERATOR_AFTER,\n\t\tOPERATOR_BEFORE_INC,\n\t\tOPERATOR_AFTER_INC,\n\t\tOPERATOR_IN_THE_PAST,\n\t\tOPERATOR_OVER,\n\t],\n\tvalidOperators: [\n\t\tOPERATOR_ON,\n\t\tOPERATOR_NOT_ON,\n\t\tOPERATOR_BEFORE,\n\t\tOPERATOR_AFTER,\n\t\tOPERATOR_BEFORE_INC,\n\t\tOPERATOR_AFTER_INC,\n\t\tOPERATOR_IN_THE_PAST,\n\t\tOPERATOR_OVER,\n\t],\n\tformat,\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\telements: isValidElements,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * WordPress dependencies\n */\nimport { dateI18n, getDate, getSettings } from '@wordpress/date';\n\n/**\n * Internal dependencies\n */\nimport type { FormatDate, NormalizedField, SortDirection } from '../types';\nimport type { FieldType } from '../types/private';\nimport isValidElements from './utils/is-valid-elements';\nimport {\n\tOPERATOR_ON,\n\tOPERATOR_NOT_ON,\n\tOPERATOR_BEFORE,\n\tOPERATOR_AFTER,\n\tOPERATOR_BEFORE_INC,\n\tOPERATOR_AFTER_INC,\n\tOPERATOR_IN_THE_PAST,\n\tOPERATOR_OVER,\n\tOPERATOR_BETWEEN,\n} from '../constants';\nimport isValidRequired from './utils/is-valid-required';\nimport render from './utils/render-default';\n\nconst format = {\n\tdate: getSettings().formats.date,\n\tweekStartsOn: getSettings().l10n.startOfWeek,\n};\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\tconst value = field.getValue( { item } );\n\tif ( [ '', undefined, null ].includes( value ) ) {\n\t\treturn '';\n\t}\n\n\tlet formatDate: Required< FormatDate >;\n\tif ( field.type !== 'date' ) {\n\t\tformatDate = format;\n\t} else {\n\t\tformatDate = field.format as Required< FormatDate >;\n\t}\n\n\treturn dateI18n( formatDate.date, getDate( value ) );\n}\n\nconst sort = ( a: any, b: any, direction: SortDirection ) => {\n\tconst timeA = new Date( a ).getTime();\n\tconst timeB = new Date( b ).getTime();\n\n\treturn direction === 'asc' ? timeA - timeB : timeB - timeA;\n};\n\nexport default {\n\ttype: 'date',\n\trender,\n\tEdit: 'date',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [\n\t\tOPERATOR_ON,\n\t\tOPERATOR_NOT_ON,\n\t\tOPERATOR_BEFORE,\n\t\tOPERATOR_AFTER,\n\t\tOPERATOR_BEFORE_INC,\n\t\tOPERATOR_AFTER_INC,\n\t\tOPERATOR_IN_THE_PAST,\n\t\tOPERATOR_OVER,\n\t\tOPERATOR_BETWEEN,\n\t],\n\tvalidOperators: [\n\t\tOPERATOR_ON,\n\t\tOPERATOR_NOT_ON,\n\t\tOPERATOR_BEFORE,\n\t\tOPERATOR_AFTER,\n\t\tOPERATOR_BEFORE_INC,\n\t\tOPERATOR_AFTER_INC,\n\t\tOPERATOR_IN_THE_PAST,\n\t\tOPERATOR_OVER,\n\t\tOPERATOR_BETWEEN,\n\t],\n\tformat,\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\telements: isValidElements,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedField, SortDirection } from '../types';\nimport type { FieldType } from '../types/private';\nimport { OPERATOR_IS, OPERATOR_IS_NOT } from '../constants';\nimport isValidElements from './utils/is-valid-elements';\nimport isValidRequiredForBool from './utils/is-valid-required-for-bool';\nimport render from './utils/render-default';\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\tconst value = field.getValue( { item } );\n\n\tif ( value === true ) {\n\t\treturn __( 'True' );\n\t}\n\n\tif ( value === false ) {\n\t\treturn __( 'False' );\n\t}\n\n\treturn '';\n}\n\nfunction isValidCustom< Item >( item: Item, field: NormalizedField< Item > ) {\n\tconst value = field.getValue( { item } );\n\n\tif (\n\t\t! [ undefined, '', null ].includes( value ) &&\n\t\t! [ true, false ].includes( value )\n\t) {\n\t\treturn __( 'Value must be true, false, or undefined' );\n\t}\n\n\treturn null;\n}\n\nconst sort = ( a: any, b: any, direction: SortDirection ) => {\n\tconst boolA = Boolean( a );\n\tconst boolB = Boolean( b );\n\n\tif ( boolA === boolB ) {\n\t\treturn 0;\n\t}\n\n\t// In ascending order, false comes before true\n\tif ( direction === 'asc' ) {\n\t\treturn boolA ? 1 : -1;\n\t}\n\n\t// In descending order, true comes before false\n\treturn boolA ? -1 : 1;\n};\n\nexport default {\n\ttype: 'boolean',\n\trender,\n\tEdit: 'checkbox',\n\tsort,\n\tvalidate: {\n\t\trequired: isValidRequiredForBool,\n\t\telements: isValidElements,\n\t\tcustom: isValidCustom,\n\t},\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [ OPERATOR_IS, OPERATOR_IS_NOT ],\n\tvalidOperators: [ OPERATOR_IS, OPERATOR_IS_NOT ],\n\tformat: {},\n\tgetValueFormatted,\n} satisfies FieldType< any >;\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\nexport default function isValidRequiredForBool< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n) {\n\tconst value = field.getValue( { item } );\n\n\treturn value === true;\n}\n", "/**\n * Internal dependencies\n */\nimport type { FieldType } from '../types/private';\nimport getValueFormatted from './utils/get-value-formatted-default';\n\nexport default {\n\ttype: 'media',\n\trender: () => null,\n\tEdit: null,\n\tsort: () => 0,\n\tenableSorting: false,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [],\n\tvalidOperators: [],\n\tformat: {},\n\tgetValueFormatted,\n\t// cannot validate any constraint, so\n\t// the only available validation for the field author\n\t// would be providing a custom validator.\n\tvalidate: {},\n} satisfies FieldType< any >;\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tNormalizedField,\n\tSortDirection,\n} from '../types';\nimport type { FieldType } from '../types/private';\nimport {\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT_ALL,\n} from '../constants';\nimport isValidRequiredForArray from './utils/is-valid-required-for-array';\nimport isValidElements from './utils/is-valid-elements';\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\tconst value = field.getValue( { item } );\n\tconst arr = Array.isArray( value ) ? value : [];\n\treturn arr.join( ', ' );\n}\n\nfunction render( { item, field }: DataViewRenderFieldProps< any > ) {\n\treturn getValueFormatted( { item, field } );\n}\n\nfunction isValidCustom< Item >( item: Item, field: NormalizedField< Item > ) {\n\tconst value = field.getValue( { item } );\n\n\tif (\n\t\t! [ undefined, '', null ].includes( value ) &&\n\t\t! Array.isArray( value )\n\t) {\n\t\treturn __( 'Value must be an array.' );\n\t}\n\n\t// Only allow strings for now. Can be extended to other types in the future.\n\tif ( ! value.every( ( v: any ) => typeof v === 'string' ) ) {\n\t\treturn __( 'Every value must be a string.' );\n\t}\n\n\treturn null;\n}\n\nconst sort = ( a: any, b: any, direction: SortDirection ) => {\n\t// Sort arrays by length, then alphabetically by joined string\n\tconst arrA = Array.isArray( a ) ? a : [];\n\tconst arrB = Array.isArray( b ) ? b : [];\n\tif ( arrA.length !== arrB.length ) {\n\t\treturn direction === 'asc'\n\t\t\t? arrA.length - arrB.length\n\t\t\t: arrB.length - arrA.length;\n\t}\n\n\tconst joinedA = arrA.join( ',' );\n\tconst joinedB = arrB.join( ',' );\n\treturn direction === 'asc'\n\t\t? joinedA.localeCompare( joinedB )\n\t\t: joinedB.localeCompare( joinedA );\n};\n\nexport default {\n\ttype: 'array',\n\trender,\n\tEdit: 'array',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\tvalidOperators: [\n\t\tOPERATOR_IS_ANY,\n\t\tOPERATOR_IS_NONE,\n\t\tOPERATOR_IS_ALL,\n\t\tOPERATOR_IS_NOT_ALL,\n\t],\n\tformat: {},\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequiredForArray,\n\t\telements: isValidElements,\n\t\tcustom: isValidCustom,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\nexport default function isValidRequiredForArray< Item >(\n\titem: Item,\n\tfield: NormalizedField< Item >\n) {\n\tconst value = field.getValue( { item } );\n\treturn (\n\t\tArray.isArray( value ) &&\n\t\tvalue.length > 0 &&\n\t\tvalue.every(\n\t\t\t( element: any ) => ! [ undefined, '', null ].includes( element )\n\t\t)\n\t);\n}\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../types';\nimport type { FieldType } from '../types/private';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidMinLength from './utils/is-valid-min-length';\nimport isValidMaxLength from './utils/is-valid-max-length';\nimport isValidPattern from './utils/is-valid-pattern';\nimport isValidElements from './utils/is-valid-elements';\nimport render from './utils/render-default';\n\nfunction getValueFormatted< Item >( {\n\titem,\n\tfield,\n}: {\n\titem: Item;\n\tfield: NormalizedField< Item >;\n} ): string {\n\treturn field.getValue( { item } ) ? '\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022' : '';\n}\n\nexport default {\n\ttype: 'password',\n\trender,\n\tEdit: 'password',\n\tsort: () => 0, // Passwords should not be sortable for security reasons\n\tenableSorting: false,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [],\n\tvalidOperators: [],\n\tformat: {},\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\tpattern: isValidPattern,\n\t\tminLength: isValidMinLength,\n\t\tmaxLength: isValidMaxLength,\n\t\telements: isValidElements,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * Internal dependencies\n */\nimport type { FieldType } from '../types/private';\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_CONTAINS,\n\tOPERATOR_NOT_CONTAINS,\n\tOPERATOR_STARTS_WITH,\n} from '../constants';\nimport render from './utils/render-default';\nimport sort from './utils/sort-text';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidMinLength from './utils/is-valid-min-length';\nimport isValidMaxLength from './utils/is-valid-max-length';\nimport isValidPattern from './utils/is-valid-pattern';\nimport isValidElements from './utils/is-valid-elements';\nimport getValueFormatted from './utils/get-value-formatted-default';\n\nexport default {\n\ttype: 'telephone',\n\trender,\n\tEdit: 'telephone',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\tvalidOperators: [\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_CONTAINS,\n\t\tOPERATOR_NOT_CONTAINS,\n\t\tOPERATOR_STARTS_WITH,\n\t\t// Multiple selection\n\t\tOPERATOR_IS_ANY,\n\t\tOPERATOR_IS_NONE,\n\t\tOPERATOR_IS_ALL,\n\t\tOPERATOR_IS_NOT_ALL,\n\t],\n\tformat: {},\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\tpattern: isValidPattern,\n\t\tminLength: isValidMinLength,\n\t\tmaxLength: isValidMaxLength,\n\t\telements: isValidElements,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * External dependencies\n */\nimport { colord } from 'colord';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tDataViewRenderFieldProps,\n\tNormalizedField,\n\tSortDirection,\n} from '../types';\nimport type { FieldType } from '../types/private';\nimport RenderFromElements from './utils/render-from-elements';\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT,\n} from '../constants';\nimport isValidElements from './utils/is-valid-elements';\nimport isValidRequired from './utils/is-valid-required';\nimport getValueFormatted from './utils/get-value-formatted-default';\n\nfunction render( { item, field }: DataViewRenderFieldProps< any > ) {\n\tif ( field.hasElements ) {\n\t\treturn <RenderFromElements item={ item } field={ field } />;\n\t}\n\n\tconst value = getValueFormatted( { item, field } );\n\tif ( ! value || ! colord( value ).isValid() ) {\n\t\treturn value;\n\t}\n\n\t// Render color with visual preview\n\treturn (\n\t\t<div style={ { display: 'flex', alignItems: 'center', gap: '8px' } }>\n\t\t\t<div\n\t\t\t\tstyle={ {\n\t\t\t\t\twidth: '16px',\n\t\t\t\t\theight: '16px',\n\t\t\t\t\tborderRadius: '50%',\n\t\t\t\t\tbackgroundColor: value,\n\t\t\t\t\tborder: '1px solid #ddd',\n\t\t\t\t\tflexShrink: 0,\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<span>{ value }</span>\n\t\t</div>\n\t);\n}\n\nfunction isValidCustom< Item >( item: Item, field: NormalizedField< Item > ) {\n\tconst value = field.getValue( { item } );\n\n\tif (\n\t\t! [ undefined, '', null ].includes( value ) &&\n\t\t! colord( value ).isValid()\n\t) {\n\t\treturn __( 'Value must be a valid color.' );\n\t}\n\n\treturn null;\n}\n\nconst sort = ( a: any, b: any, direction: SortDirection ) => {\n\t// Convert colors to HSL for better sorting\n\tconst colorA = colord( a );\n\tconst colorB = colord( b );\n\n\tif ( ! colorA.isValid() && ! colorB.isValid() ) {\n\t\treturn 0;\n\t}\n\tif ( ! colorA.isValid() ) {\n\t\treturn direction === 'asc' ? 1 : -1;\n\t}\n\tif ( ! colorB.isValid() ) {\n\t\treturn direction === 'asc' ? -1 : 1;\n\t}\n\n\t// Sort by hue, then saturation, then lightness\n\tconst hslA = colorA.toHsl();\n\tconst hslB = colorB.toHsl();\n\n\tif ( hslA.h !== hslB.h ) {\n\t\treturn direction === 'asc' ? hslA.h - hslB.h : hslB.h - hslA.h;\n\t}\n\tif ( hslA.s !== hslB.s ) {\n\t\treturn direction === 'asc' ? hslA.s - hslB.s : hslB.s - hslA.s;\n\t}\n\treturn direction === 'asc' ? hslA.l - hslB.l : hslB.l - hslA.l;\n};\n\nexport default {\n\ttype: 'color',\n\trender,\n\tEdit: 'color',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\tvalidOperators: [\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_IS_ANY,\n\t\tOPERATOR_IS_NONE,\n\t],\n\tformat: {},\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\telements: isValidElements,\n\t\tcustom: isValidCustom,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * Internal dependencies\n */\nimport type { FieldType } from '../types/private';\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_CONTAINS,\n\tOPERATOR_NOT_CONTAINS,\n\tOPERATOR_STARTS_WITH,\n} from '../constants';\nimport render from './utils/render-default';\nimport sort from './utils/sort-text';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidMinLength from './utils/is-valid-min-length';\nimport isValidMaxLength from './utils/is-valid-max-length';\nimport isValidPattern from './utils/is-valid-pattern';\nimport isValidElements from './utils/is-valid-elements';\nimport getValueFormatted from './utils/get-value-formatted-default';\n\nexport default {\n\ttype: 'url',\n\trender,\n\tEdit: 'url',\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [ OPERATOR_IS_ANY, OPERATOR_IS_NONE ],\n\tvalidOperators: [\n\t\tOPERATOR_IS,\n\t\tOPERATOR_IS_NOT,\n\t\tOPERATOR_CONTAINS,\n\t\tOPERATOR_NOT_CONTAINS,\n\t\tOPERATOR_STARTS_WITH,\n\t\t// Multiple selection\n\t\tOPERATOR_IS_ANY,\n\t\tOPERATOR_IS_NONE,\n\t\tOPERATOR_IS_ALL,\n\t\tOPERATOR_IS_NOT_ALL,\n\t],\n\tformat: {},\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\tpattern: isValidPattern,\n\t\tminLength: isValidMinLength,\n\t\tmaxLength: isValidMaxLength,\n\t\telements: isValidElements,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * Internal dependencies\n */\nimport type { SortDirection } from '../types';\nimport type { FieldType } from '../types/private';\nimport { OPERATOR_IS, OPERATOR_IS_NOT } from '../constants';\nimport { getAllOperatorNames } from '../utils/operators';\nimport render from './utils/render-default';\nimport sortText from './utils/sort-text';\nimport sortNumber from './utils/sort-number';\nimport isValidRequired from './utils/is-valid-required';\nimport isValidElements from './utils/is-valid-elements';\nimport getValueFormatted from './utils/get-value-formatted-default';\n\nconst sort = ( a: any, b: any, direction: SortDirection ) => {\n\tif ( typeof a === 'number' && typeof b === 'number' ) {\n\t\treturn sortNumber( a, b, direction );\n\t}\n\n\treturn sortText( a, b, direction );\n};\n\nexport default {\n\t// type: no type for this one\n\trender,\n\tEdit: null,\n\tsort,\n\tenableSorting: true,\n\tenableGlobalSearch: false,\n\tdefaultOperators: [ OPERATOR_IS, OPERATOR_IS_NOT ],\n\tvalidOperators: getAllOperatorNames(),\n\tformat: {},\n\tgetValueFormatted,\n\tvalidate: {\n\t\trequired: isValidRequired,\n\t\telements: isValidElements,\n\t},\n} satisfies FieldType< any >;\n", "/**\n * Internal dependencies\n */\nimport type { Field, NormalizedRules } from '../../types';\nimport type { FieldType } from '../../types/private';\n\nexport default function getIsValid< Item >(\n\tfield: Field< Item >,\n\tfieldType: FieldType< Item >\n): NormalizedRules< Item > {\n\tlet required;\n\tif (\n\t\tfield.isValid?.required === true &&\n\t\tfieldType.validate.required !== undefined\n\t) {\n\t\trequired = {\n\t\t\tconstraint: true,\n\t\t\tvalidate: fieldType.validate.required,\n\t\t};\n\t}\n\n\tlet elements;\n\tif (\n\t\t( field.isValid?.elements === true ||\n\t\t\t// elements is enabled unless the field opts-out\n\t\t\t( field.isValid?.elements === undefined &&\n\t\t\t\t( !! field.elements || !! field.getElements ) ) ) &&\n\t\tfieldType.validate.elements !== undefined\n\t) {\n\t\telements = {\n\t\t\tconstraint: true,\n\t\t\tvalidate: fieldType.validate.elements,\n\t\t};\n\t}\n\n\tlet min;\n\tif (\n\t\ttypeof field.isValid?.min === 'number' &&\n\t\tfieldType.validate.min !== undefined\n\t) {\n\t\tmin = {\n\t\t\tconstraint: field.isValid.min,\n\t\t\tvalidate: fieldType.validate.min,\n\t\t};\n\t}\n\n\tlet max;\n\tif (\n\t\ttypeof field.isValid?.max === 'number' &&\n\t\tfieldType.validate.max !== undefined\n\t) {\n\t\tmax = {\n\t\t\tconstraint: field.isValid.max,\n\t\t\tvalidate: fieldType.validate.max,\n\t\t};\n\t}\n\n\tlet minLength;\n\tif (\n\t\ttypeof field.isValid?.minLength === 'number' &&\n\t\tfieldType.validate.minLength !== undefined\n\t) {\n\t\tminLength = {\n\t\t\tconstraint: field.isValid.minLength,\n\t\t\tvalidate: fieldType.validate.minLength,\n\t\t};\n\t}\n\n\tlet maxLength;\n\tif (\n\t\ttypeof field.isValid?.maxLength === 'number' &&\n\t\tfieldType.validate.maxLength !== undefined\n\t) {\n\t\tmaxLength = {\n\t\t\tconstraint: field.isValid.maxLength,\n\t\t\tvalidate: fieldType.validate.maxLength,\n\t\t};\n\t}\n\n\tlet pattern;\n\tif (\n\t\tfield.isValid?.pattern !== undefined &&\n\t\tfieldType.validate.pattern !== undefined\n\t) {\n\t\tpattern = {\n\t\t\tconstraint: field.isValid?.pattern,\n\t\t\tvalidate: fieldType.validate.pattern,\n\t\t};\n\t}\n\n\tconst custom = field.isValid?.custom ?? fieldType.validate.custom;\n\n\treturn {\n\t\trequired,\n\t\telements,\n\t\tmin,\n\t\tmax,\n\t\tminLength,\n\t\tmaxLength,\n\t\tpattern,\n\t\tcustom,\n\t};\n}\n", "import type { Field } from '../../types';\nimport type { FieldType } from '../../types/private';\n\nfunction getFormat< Item >(\n\tfield: Field< Item >,\n\tfieldType: FieldType< Item >\n) {\n\treturn {\n\t\t...fieldType.format,\n\t\t...field.format,\n\t};\n}\n\nexport default getFormat;\n", "/**\n * Internal dependencies\n */\nimport type {\n\tField,\n\tFieldTypeName,\n\tNormalizedField,\n\tSortDirection,\n} from '../types';\nimport type { FieldType } from '../types/private';\nimport { getControl } from '../components/dataform-controls';\nimport getFilterBy from './utils/get-filter-by';\nimport getValueFromId from './utils/get-value-from-id';\nimport hasElements from './utils/has-elements';\nimport setValueFromId from './utils/set-value-from-id';\nimport { default as email } from './email';\nimport { default as integer } from './integer';\nimport { default as number } from './number';\nimport { default as text } from './text';\nimport { default as datetime } from './datetime';\nimport { default as date } from './date';\nimport { default as boolean } from './boolean';\nimport { default as media } from './media';\nimport { default as array } from './array';\nimport { default as password } from './password';\nimport { default as telephone } from './telephone';\nimport { default as color } from './color';\nimport { default as url } from './url';\nimport { default as noType } from './no-type';\nimport getIsValid from './utils/get-is-valid';\nimport getFormat from './utils/get-format';\n\n/**\n *\n * @param {FieldTypeName} type The field type definition to get.\n *\n * @return A field type definition.\n */\nfunction getFieldTypeByName< Item >( type?: FieldTypeName ): FieldType< Item > {\n\tconst found = [\n\t\temail,\n\t\tinteger,\n\t\tnumber,\n\t\ttext,\n\t\tdatetime,\n\t\tdate,\n\t\tboolean,\n\t\tmedia,\n\t\tarray,\n\t\tpassword,\n\t\ttelephone,\n\t\tcolor,\n\t\turl,\n\t].find( ( fieldType ) => fieldType?.type === type );\n\n\tif ( !! found ) {\n\t\treturn found;\n\t}\n\n\t// This is a fallback for fields that don't provide a type.\n\t// It can be removed when/if the field.type becomes mandatory.\n\treturn noType;\n}\n\n/**\n * Apply default values and normalize the fields config.\n *\n * @param fields Fields config.\n * @return Normalized fields config.\n */\nexport default function normalizeFields< Item >(\n\tfields: Field< Item >[]\n): NormalizedField< Item >[] {\n\treturn fields.map( ( field ) => {\n\t\tconst fieldType = getFieldTypeByName< Item >( field.type );\n\n\t\tconst getValue = field.getValue || getValueFromId( field.id );\n\t\tconst sort = function ( a: any, b: any, direction: SortDirection ) {\n\t\t\tconst aValue = getValue( { item: a } );\n\t\t\tconst bValue = getValue( { item: b } );\n\t\t\treturn field.sort\n\t\t\t\t? field.sort( aValue, bValue, direction )\n\t\t\t\t: fieldType.sort( aValue, bValue, direction );\n\t\t};\n\n\t\treturn {\n\t\t\tid: field.id,\n\t\t\tlabel: field.label || field.id,\n\t\t\theader: field.header || field.label || field.id,\n\t\t\tdescription: field.description,\n\t\t\tplaceholder: field.placeholder,\n\t\t\tgetValue,\n\t\t\tsetValue: field.setValue || setValueFromId( field.id ),\n\t\t\telements: field.elements,\n\t\t\tgetElements: field.getElements,\n\t\t\thasElements: hasElements( field ),\n\t\t\tisVisible: field.isVisible,\n\t\t\tenableHiding: field.enableHiding ?? true,\n\t\t\treadOnly: field.readOnly ?? false,\n\t\t\t// The type provides defaults for the following props\n\t\t\ttype: fieldType.type,\n\t\t\trender: field.render ?? fieldType.render,\n\t\t\tEdit: getControl( field, fieldType.Edit ),\n\t\t\tsort,\n\t\t\tenableSorting: field.enableSorting ?? fieldType.enableSorting,\n\t\t\tenableGlobalSearch:\n\t\t\t\tfield.enableGlobalSearch ?? fieldType.enableGlobalSearch,\n\t\t\tisValid: getIsValid( field, fieldType ),\n\t\t\tfilterBy: getFilterBy(\n\t\t\t\tfield,\n\t\t\t\tfieldType.defaultOperators,\n\t\t\t\tfieldType.validOperators\n\t\t\t),\n\t\t\tformat: getFormat( field, fieldType ),\n\t\t\tgetValueFormatted:\n\t\t\t\tfield.getValueFormatted ?? fieldType.getValueFormatted,\n\t\t};\n\t} );\n}\n", "/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { DataFormProps } from '../types';\nimport normalizeFields from '../field-types';\nimport { DataFormProvider } from '../components/dataform-context';\nimport { DataFormLayout } from '../components/dataform-layouts/data-form-layout';\nimport normalizeForm from '../components/dataform-layouts/normalize-form';\n\nexport default function DataForm< Item >( {\n\tdata,\n\tform,\n\tfields,\n\tonChange,\n\tvalidity,\n}: DataFormProps< Item > ) {\n\tconst normalizedForm = useMemo( () => normalizeForm( form ), [ form ] );\n\tconst normalizedFields = useMemo(\n\t\t() => normalizeFields( fields ),\n\t\t[ fields ]\n\t);\n\n\tif ( ! form.fields ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DataFormProvider fields={ normalizedFields }>\n\t\t\t<DataFormLayout\n\t\t\t\tdata={ data }\n\t\t\t\tform={ normalizedForm }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tvalidity={ validity }\n\t\t\t/>\n\t\t</DataFormProvider>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { createContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../types';\n\ntype DataFormContextType< Item > = {\n\tfields: NormalizedField< Item >[];\n};\n\nconst DataFormContext = createContext< DataFormContextType< any > >( {\n\tfields: [],\n} );\nDataFormContext.displayName = 'DataFormContext';\n\nexport function DataFormProvider< Item >( {\n\tfields,\n\tchildren,\n}: React.PropsWithChildren< {\n\tfields: NormalizedField< Item >[];\n} > ) {\n\treturn (\n\t\t<DataFormContext.Provider value={ { fields } }>\n\t\t\t{ children }\n\t\t</DataFormContext.Provider>\n\t);\n}\n\nexport default DataFormContext;\n", "/**\n * WordPress dependencies\n */\nimport { useContext } from '@wordpress/element';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tFieldValidity,\n\tFormValidity,\n\tNormalizedForm,\n\tNormalizedFormField,\n} from '../../types';\nimport { getFormFieldLayout } from './index';\nimport DataFormContext from '../dataform-context';\n\nconst DEFAULT_WRAPPER = ( { children }: { children: React.ReactNode } ) => (\n\t<Stack direction=\"column\" className=\"dataforms-layouts__wrapper\" gap=\"md\">\n\t\t{ children }\n\t</Stack>\n);\n\nexport function DataFormLayout< Item >( {\n\tdata,\n\tform,\n\tonChange,\n\tvalidity,\n\tchildren,\n\tas,\n}: {\n\tdata: Item;\n\tform: NormalizedForm;\n\tonChange: ( value: any ) => void;\n\tvalidity?: FormValidity;\n\tchildren?: (\n\t\tFieldLayout: ( props: {\n\t\t\tdata: Item;\n\t\t\tfield: NormalizedFormField;\n\t\t\tonChange: ( value: any ) => void;\n\t\t\thideLabelFromVision?: boolean;\n\t\t\tvalidity?: FieldValidity;\n\t\t} ) => React.JSX.Element | null,\n\t\tchildField: NormalizedFormField,\n\t\tchildFieldValidity?: FieldValidity\n\t) => React.JSX.Element;\n\tas?: React.ComponentType< { children: React.ReactNode } >;\n} ) {\n\tconst { fields: fieldDefinitions } = useContext( DataFormContext );\n\n\tfunction getFieldDefinition( field: NormalizedFormField ) {\n\t\treturn fieldDefinitions.find(\n\t\t\t( fieldDefinition ) => fieldDefinition.id === field.id\n\t\t);\n\t}\n\n\tconst Wrapper =\n\t\tas ??\n\t\tgetFormFieldLayout( form.layout.type )?.wrapper ??\n\t\tDEFAULT_WRAPPER;\n\n\treturn (\n\t\t<Wrapper layout={ form.layout }>\n\t\t\t{ form.fields.map( ( formField ) => {\n\t\t\t\tconst FieldLayout = getFormFieldLayout( formField.layout.type )\n\t\t\t\t\t?.component;\n\n\t\t\t\tif ( ! FieldLayout ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst fieldDefinition = ! formField.children\n\t\t\t\t\t? getFieldDefinition( formField )\n\t\t\t\t\t: undefined;\n\n\t\t\t\tif (\n\t\t\t\t\tfieldDefinition &&\n\t\t\t\t\tfieldDefinition.isVisible &&\n\t\t\t\t\t! fieldDefinition.isVisible( data )\n\t\t\t\t) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tif ( children ) {\n\t\t\t\t\treturn children(\n\t\t\t\t\t\tFieldLayout,\n\t\t\t\t\t\tformField,\n\t\t\t\t\t\tvalidity?.[ formField.id ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<FieldLayout\n\t\t\t\t\t\tkey={ formField.id }\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tfield={ formField }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tvalidity={ validity?.[ formField.id ] }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Wrapper>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useContext, useMemo } from '@wordpress/element';\nimport {\n\t__experimentalHeading as Heading,\n\tBaseControl,\n} from '@wordpress/components';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tFieldLayoutProps,\n\tNormalizedForm,\n\tNormalizedRegularLayout,\n} from '../../../types';\nimport DataFormContext from '../../dataform-context';\nimport { DataFormLayout } from '../data-form-layout';\nimport { DEFAULT_LAYOUT } from '../normalize-form';\n\nfunction Header( { title }: { title: string } ) {\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"column\"\n\t\t\tclassName=\"dataforms-layouts-regular__header\"\n\t\t\tgap=\"md\"\n\t\t>\n\t\t\t<Stack direction=\"row\" align=\"center\">\n\t\t\t\t<Heading level={ 2 } size={ 13 }>\n\t\t\t\t\t{ title }\n\t\t\t\t</Heading>\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n}\n\nexport default function FormRegularField< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: FieldLayoutProps< Item > ) {\n\tconst { fields } = useContext( DataFormContext );\n\tconst layout = field.layout as NormalizedRegularLayout;\n\n\tconst form: NormalizedForm = useMemo(\n\t\t() => ( {\n\t\t\tlayout: DEFAULT_LAYOUT,\n\t\t\tfields: !! field.children ? field.children : [],\n\t\t} ),\n\t\t[ field ]\n\t);\n\n\tif ( !! field.children ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ ! hideLabelFromVision && field.label && (\n\t\t\t\t\t<Header title={ field.label } />\n\t\t\t\t) }\n\t\t\t\t<DataFormLayout\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tform={ form }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tvalidity={ validity?.children }\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t}\n\n\tconst labelPosition = layout.labelPosition;\n\tconst fieldDefinition = fields.find(\n\t\t( fieldDef ) => fieldDef.id === field.id\n\t);\n\n\tif ( ! fieldDefinition || ! fieldDefinition.Edit ) {\n\t\treturn null;\n\t}\n\n\tif ( labelPosition === 'side' ) {\n\t\treturn (\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tclassName=\"dataforms-layouts-regular__field\"\n\t\t\t\tgap=\"xs\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'dataforms-layouts-regular__field-label',\n\t\t\t\t\t\t`dataforms-layouts-regular__field-label--label-position-${ labelPosition }`\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t{ fieldDefinition.label }\n\t\t\t\t</div>\n\t\t\t\t<div className=\"dataforms-layouts-regular__field-control\">\n\t\t\t\t\t{ fieldDefinition.readOnly === true ? (\n\t\t\t\t\t\t<fieldDefinition.render\n\t\t\t\t\t\t\titem={ data }\n\t\t\t\t\t\t\tfield={ fieldDefinition }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<fieldDefinition.Edit\n\t\t\t\t\t\t\tkey={ fieldDefinition.id }\n\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\tfield={ fieldDefinition }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\tvalidity={ validity }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</Stack>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"dataforms-layouts-regular__field\">\n\t\t\t{ fieldDefinition.readOnly === true ? (\n\t\t\t\t<>\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ ! hideLabelFromVision && labelPosition !== 'none' && (\n\t\t\t\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t\t\t\t{ fieldDefinition.label }\n\t\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<fieldDefinition.render\n\t\t\t\t\t\t\titem={ data }\n\t\t\t\t\t\t\tfield={ fieldDefinition }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<fieldDefinition.Edit\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tfield={ fieldDefinition }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\thideLabelFromVision={\n\t\t\t\t\t\tlabelPosition === 'none' ? true : hideLabelFromVision\n\t\t\t\t\t}\n\t\t\t\t\tvalidity={ validity }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n", "/**\n * Internal dependencies\n */\nimport type {\n\tForm,\n\tLayout,\n\tNormalizedForm,\n\tNormalizedFormField,\n\tNormalizedLayout,\n\tNormalizedRegularLayout,\n\tNormalizedPanelLayout,\n\tNormalizedCardLayout,\n\tNormalizedRowLayout,\n\tNormalizedDetailsLayout,\n\tNormalizedCardSummaryField,\n\tCardSummaryField,\n} from '../../types';\n\nexport const DEFAULT_LAYOUT: NormalizedLayout = {\n\ttype: 'regular',\n\tlabelPosition: 'top',\n} as NormalizedRegularLayout;\n\nconst normalizeCardSummaryField = (\n\tsum: CardSummaryField\n): NormalizedCardSummaryField => {\n\tif ( typeof sum === 'string' ) {\n\t\treturn [ { id: sum, visibility: 'when-collapsed' } ];\n\t}\n\treturn sum.map( ( item ) => {\n\t\tif ( typeof item === 'string' ) {\n\t\t\treturn { id: item, visibility: 'when-collapsed' };\n\t\t}\n\t\treturn { id: item.id, visibility: item.visibility };\n\t} );\n};\n\n/**\n * Normalizes a layout configuration based on its type.\n *\n * @param layout The layout object to normalize.\n * @return The normalized layout object.\n */\nfunction normalizeLayout( layout?: Layout ): NormalizedLayout {\n\tlet normalizedLayout = DEFAULT_LAYOUT;\n\n\tif ( layout?.type === 'regular' ) {\n\t\tnormalizedLayout = {\n\t\t\ttype: 'regular',\n\t\t\tlabelPosition: layout?.labelPosition ?? 'top',\n\t\t} satisfies NormalizedRegularLayout;\n\t} else if ( layout?.type === 'panel' ) {\n\t\tconst summary = layout.summary ?? [];\n\t\tconst normalizedSummary = Array.isArray( summary )\n\t\t\t? summary\n\t\t\t: [ summary ];\n\n\t\tnormalizedLayout = {\n\t\t\ttype: 'panel',\n\t\t\tlabelPosition: layout?.labelPosition ?? 'side',\n\t\t\topenAs: layout?.openAs ?? 'dropdown',\n\t\t\tsummary: normalizedSummary,\n\t\t} satisfies NormalizedPanelLayout;\n\t} else if ( layout?.type === 'card' ) {\n\t\tif ( layout.withHeader === false ) {\n\t\t\t// Don't let isOpened be false if withHeader is false.\n\t\t\t// Otherwise, the card will not be visible.\n\t\t\tnormalizedLayout = {\n\t\t\t\ttype: 'card',\n\t\t\t\twithHeader: false,\n\t\t\t\tisOpened: true,\n\t\t\t\tsummary: [],\n\t\t\t\tisCollapsible: false,\n\t\t\t} satisfies NormalizedCardLayout;\n\t\t} else {\n\t\t\tconst summary = layout.summary ?? [];\n\n\t\t\tnormalizedLayout = {\n\t\t\t\ttype: 'card',\n\t\t\t\twithHeader: true,\n\t\t\t\tisOpened:\n\t\t\t\t\ttypeof layout.isOpened === 'boolean'\n\t\t\t\t\t\t? layout.isOpened\n\t\t\t\t\t\t: true,\n\t\t\t\tsummary: normalizeCardSummaryField( summary ),\n\t\t\t\tisCollapsible:\n\t\t\t\t\tlayout.isCollapsible === undefined\n\t\t\t\t\t\t? true\n\t\t\t\t\t\t: layout.isCollapsible,\n\t\t\t} satisfies NormalizedCardLayout;\n\t\t}\n\t} else if ( layout?.type === 'row' ) {\n\t\tnormalizedLayout = {\n\t\t\ttype: 'row',\n\t\t\talignment: layout?.alignment ?? 'center',\n\t\t\tstyles: layout?.styles ?? {},\n\t\t} satisfies NormalizedRowLayout;\n\t} else if ( layout?.type === 'details' ) {\n\t\tnormalizedLayout = {\n\t\t\ttype: 'details',\n\t\t\tsummary: layout?.summary ?? '',\n\t\t} satisfies NormalizedDetailsLayout;\n\t}\n\n\treturn normalizedLayout;\n}\n\nfunction normalizeForm( form: Form ): NormalizedForm {\n\tconst normalizedFormLayout = normalizeLayout( form?.layout );\n\n\tconst normalizedFields: NormalizedFormField[] = ( form.fields ?? [] ).map(\n\t\t( field ) => {\n\t\t\tif ( typeof field === 'string' ) {\n\t\t\t\treturn {\n\t\t\t\t\tid: field,\n\t\t\t\t\tlayout: normalizedFormLayout,\n\t\t\t\t} satisfies NormalizedFormField;\n\t\t\t}\n\n\t\t\tconst fieldLayout = field.layout\n\t\t\t\t? normalizeLayout( field.layout )\n\t\t\t\t: normalizedFormLayout;\n\n\t\t\treturn {\n\t\t\t\tid: field.id,\n\t\t\t\tlayout: fieldLayout,\n\t\t\t\t...( !! field.label && { label: field.label } ),\n\t\t\t\t...( !! field.description && {\n\t\t\t\t\tdescription: field.description,\n\t\t\t\t} ),\n\t\t\t\t...( 'children' in field &&\n\t\t\t\t\tArray.isArray( field.children ) && {\n\t\t\t\t\t\tchildren: normalizeForm( {\n\t\t\t\t\t\t\tfields: field.children,\n\t\t\t\t\t\t\tlayout: DEFAULT_LAYOUT,\n\t\t\t\t\t\t} ).fields,\n\t\t\t\t\t} ),\n\t\t\t} satisfies NormalizedFormField;\n\t\t}\n\t);\n\n\treturn {\n\t\tlayout: normalizedFormLayout,\n\t\tfields: normalizedFields,\n\t};\n}\n\nexport default normalizeForm;\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { Icon, Tooltip } from '@wordpress/components';\nimport { useState, useContext } from '@wordpress/element';\nimport { error as errorIcon } from '@wordpress/icons';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tFieldLayoutProps,\n\tFieldValidity,\n\tNormalizedField,\n\tNormalizedFormField,\n\tNormalizedPanelLayout,\n} from '../../../types';\nimport DataFormContext from '../../dataform-context';\nimport PanelDropdown from './dropdown';\nimport PanelModal from './modal';\nimport { getSummaryFields } from '../get-summary-fields';\n\nfunction getFirstValidationError(\n\tvalidity: FieldValidity | undefined\n): string | undefined {\n\tif ( ! validity ) {\n\t\treturn undefined;\n\t}\n\n\tconst validityRules = Object.keys( validity ).filter(\n\t\t( key ) => key !== 'children'\n\t);\n\n\tfor ( const key of validityRules ) {\n\t\tconst rule = validity[ key as keyof Omit< FieldValidity, 'children' > ];\n\t\tif ( rule === undefined ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( rule.type === 'invalid' ) {\n\t\t\tif ( rule.message ) {\n\t\t\t\treturn rule.message;\n\t\t\t}\n\n\t\t\t// Provide default message for required validation (message is optional)\n\t\t\tif ( key === 'required' ) {\n\t\t\t\treturn 'A required field is empty';\n\t\t\t}\n\n\t\t\treturn 'Unidentified validation error';\n\t\t}\n\t}\n\n\t// Check children recursively\n\tif ( validity.children ) {\n\t\tfor ( const childValidity of Object.values( validity.children ) ) {\n\t\t\tconst childError = getFirstValidationError( childValidity );\n\t\t\tif ( childError ) {\n\t\t\t\treturn childError;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nconst getFieldDefinition = < Item, >(\n\tfield: NormalizedFormField,\n\tfields: NormalizedField< Item >[]\n) => {\n\tconst fieldDefinition = fields.find( ( _field ) => _field.id === field.id );\n\n\tif ( ! fieldDefinition ) {\n\t\treturn fields.find( ( _field ) => {\n\t\t\tif ( !! field.children ) {\n\t\t\t\tconst simpleChildren = field.children.filter(\n\t\t\t\t\t( child ) => ! child.children\n\t\t\t\t);\n\n\t\t\t\tif ( simpleChildren.length === 0 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn _field.id === simpleChildren[ 0 ].id;\n\t\t\t}\n\n\t\t\treturn _field.id === field.id;\n\t\t} );\n\t}\n\n\treturn fieldDefinition;\n};\n\n/**\n * Determines the field definition and summary fields for a panel layout.\n *\n * Summary fields are determined with the following priority:\n * 1. Use layout.summary fields if they exist\n * 2. Fall back to the field definition that matches the form field's id\n * 3. If the form field id doesn't exist, pick the first child field\n * 4. If no field definition is found, return empty summary fields\n *\n * @param layout - The normalized panel layout configuration\n * @param field  - The form field to get definition for\n * @param fields - Array of normalized field definitions\n * @return Object containing fieldDefinition and summaryFields\n */\nconst getFieldDefinitionAndSummaryFields = < Item, >(\n\tlayout: NormalizedPanelLayout,\n\tfield: NormalizedFormField,\n\tfields: NormalizedField< Item >[]\n) => {\n\tconst summaryFields = getSummaryFields( layout.summary, fields );\n\tconst fieldDefinition = getFieldDefinition( field, fields );\n\n\tif ( summaryFields.length === 0 ) {\n\t\treturn {\n\t\t\tsummaryFields: fieldDefinition ? [ fieldDefinition ] : [],\n\t\t\tfieldDefinition,\n\t\t};\n\t}\n\n\treturn {\n\t\tsummaryFields,\n\t\tfieldDefinition,\n\t};\n};\n\nexport default function FormPanelField< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\tvalidity,\n}: FieldLayoutProps< Item > ) {\n\tconst { fields } = useContext( DataFormContext );\n\tconst layout = field.layout as NormalizedPanelLayout;\n\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState< HTMLElement | null >(\n\t\tnull\n\t);\n\n\t// Track if the panel has been opened (touched) to only show errors after interaction.\n\tconst [ touched, setTouched ] = useState( false );\n\tconst handleOpen = () => setTouched( true );\n\n\tconst { fieldDefinition, summaryFields } =\n\t\tgetFieldDefinitionAndSummaryFields( layout, field, fields );\n\n\tif ( ! fieldDefinition ) {\n\t\treturn null;\n\t}\n\n\tconst labelPosition = layout.labelPosition;\n\tconst errorMessage = getFirstValidationError( validity );\n\tconst showError = touched && !! errorMessage;\n\tconst labelClassName = clsx(\n\t\t'dataforms-layouts-panel__field-label',\n\t\t`dataforms-layouts-panel__field-label--label-position-${ labelPosition }`,\n\t\t{ 'has-error': showError }\n\t);\n\tconst fieldLabel = !! field.children ? field.label : fieldDefinition?.label;\n\n\tconst labelContent = showError ? (\n\t\t<Tooltip text={ errorMessage } placement=\"top\">\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tgap=\"xs\"\n\t\t\t\tclassName=\"dataforms-layouts-panel__field-label-error-content\"\n\t\t\t\tjustify=\"flex-start\"\n\t\t\t>\n\t\t\t\t<Icon icon={ errorIcon } size={ 16 } />\n\t\t\t\t<>{ fieldLabel }</>\n\t\t\t</Stack>\n\t\t</Tooltip>\n\t) : (\n\t\tfieldLabel\n\t);\n\n\tconst renderedControl =\n\t\tlayout.openAs === 'modal' ? (\n\t\t\t<PanelModal\n\t\t\t\tdata={ data }\n\t\t\t\tfield={ field }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tlabelPosition={ labelPosition }\n\t\t\t\tsummaryFields={ summaryFields }\n\t\t\t\tfieldDefinition={ fieldDefinition }\n\t\t\t\tonOpen={ handleOpen }\n\t\t\t/>\n\t\t) : (\n\t\t\t<PanelDropdown\n\t\t\t\tdata={ data }\n\t\t\t\tfield={ field }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tvalidity={ validity }\n\t\t\t\tlabelPosition={ labelPosition }\n\t\t\t\tsummaryFields={ summaryFields }\n\t\t\t\tfieldDefinition={ fieldDefinition }\n\t\t\t\tpopoverAnchor={ popoverAnchor }\n\t\t\t\tonOpen={ handleOpen }\n\t\t\t/>\n\t\t);\n\n\tif ( labelPosition === 'top' ) {\n\t\treturn (\n\t\t\t<Stack\n\t\t\t\tdirection=\"column\"\n\t\t\t\tclassName=\"dataforms-layouts-panel__field\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName={ labelClassName }\n\t\t\t\t\tstyle={ { paddingBottom: 0 } }\n\t\t\t\t>\n\t\t\t\t\t{ labelContent }\n\t\t\t\t</div>\n\t\t\t\t<div className=\"dataforms-layouts-panel__field-control\">\n\t\t\t\t\t{ renderedControl }\n\t\t\t\t</div>\n\t\t\t</Stack>\n\t\t);\n\t}\n\n\tif ( labelPosition === 'none' ) {\n\t\treturn (\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tgap=\"xs\"\n\t\t\t\tclassName=\"dataforms-layouts-panel__field dataforms-layouts-panel__field--label-position-none\"\n\t\t\t>\n\t\t\t\t{ showError && (\n\t\t\t\t\t<Tooltip text={ errorMessage } placement=\"top\">\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\tclassName=\"dataforms-layouts-panel__field-label-error-content\"\n\t\t\t\t\t\t\ticon={ errorIcon }\n\t\t\t\t\t\t\tsize={ 16 }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t) }\n\t\t\t\t<div className=\"dataforms-layouts-panel__field-control\">\n\t\t\t\t\t{ renderedControl }\n\t\t\t\t</div>\n\t\t\t</Stack>\n\t\t);\n\t}\n\n\t// Defaults to label position side.\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"row\"\n\t\t\tgap=\"xs\"\n\t\t\tref={ setPopoverAnchor }\n\t\t\tclassName=\"dataforms-layouts-panel__field\"\n\t\t>\n\t\t\t<div className={ labelClassName }>{ labelContent }</div>\n\t\t\t<div className=\"dataforms-layouts-panel__field-control\">\n\t\t\t\t{ renderedControl }\n\t\t\t</div>\n\t\t</Stack>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHeading as Heading,\n\t__experimentalSpacer as Spacer,\n\tDropdown,\n\tButton,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useMemo } from '@wordpress/element';\nimport { closeSmall } from '@wordpress/icons';\nimport { useFocusOnMount } from '@wordpress/compose';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tFieldValidity,\n\tNormalizedForm,\n\tNormalizedFormField,\n\tFormValidity,\n\tNormalizedField,\n} from '../../../types';\nimport { DataFormLayout } from '../data-form-layout';\nimport { DEFAULT_LAYOUT } from '../normalize-form';\nimport SummaryButton from './summary-button';\n\nfunction DropdownHeader( {\n\ttitle,\n\tonClose,\n}: {\n\ttitle?: string;\n\tonClose: () => void;\n} ) {\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"column\"\n\t\t\tclassName=\"dataforms-layouts-panel__dropdown-header\"\n\t\t\tgap=\"md\"\n\t\t>\n\t\t\t<Stack direction=\"row\" gap=\"xs\" align=\"center\">\n\t\t\t\t{ title && (\n\t\t\t\t\t<Heading level={ 2 } size={ 13 }>\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</Heading>\n\t\t\t\t) }\n\t\t\t\t<Spacer style={ { flex: 1 } } />\n\t\t\t\t{ onClose && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tlabel={ __( 'Close' ) }\n\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n}\n\nfunction PanelDropdown< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\tvalidity,\n\tlabelPosition = 'side',\n\tsummaryFields,\n\tfieldDefinition,\n\tpopoverAnchor,\n\tonOpen,\n}: {\n\tdata: Item;\n\tfield: NormalizedFormField;\n\tonChange: ( value: any ) => void;\n\tvalidity?: FieldValidity;\n\tlabelPosition: 'side' | 'top' | 'none';\n\tsummaryFields: NormalizedField< Item >[];\n\tfieldDefinition: NormalizedField< Item >;\n\tpopoverAnchor: HTMLElement | null;\n\tonOpen?: () => void;\n} ) {\n\tconst fieldLabel = !! field.children ? field.label : fieldDefinition?.label;\n\n\tconst form: NormalizedForm = useMemo(\n\t\t() => ( {\n\t\t\tlayout: DEFAULT_LAYOUT,\n\t\t\tfields: !! field.children\n\t\t\t\t? field.children\n\t\t\t\t: // If not explicit children return the field id itself.\n\t\t\t\t  [ { id: field.id, layout: DEFAULT_LAYOUT } ],\n\t\t} ),\n\t\t[ field ]\n\t);\n\tconst formValidity = useMemo( (): FormValidity => {\n\t\tif ( validity === undefined ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( !! field.children ) {\n\t\t\treturn validity?.children;\n\t\t}\n\n\t\treturn { [ field.id ]: validity };\n\t}, [ validity, field ] );\n\n\t// Memoize popoverProps to avoid returning a new object every time.\n\tconst popoverProps = useMemo(\n\t\t() => ( {\n\t\t\t// Anchor the popover to the middle of the entire row so that it doesn't\n\t\t\t// move around when the label changes.\n\t\t\tanchor: popoverAnchor,\n\t\t\tplacement: 'left-start',\n\t\t\toffset: 36,\n\t\t\tshift: true,\n\t\t} ),\n\t\t[ popoverAnchor ]\n\t);\n\n\tconst focusOnMountRef = useFocusOnMount( 'firstInputElement' );\n\n\treturn (\n\t\t<Dropdown\n\t\t\tcontentClassName=\"dataforms-layouts-panel__field-dropdown\"\n\t\t\tpopoverProps={ popoverProps }\n\t\t\tfocusOnMount={ false }\n\t\t\ttoggleProps={ {\n\t\t\t\tsize: 'compact',\n\t\t\t\tvariant: 'tertiary',\n\t\t\t\ttooltipPosition: 'middle left',\n\t\t\t} }\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<SummaryButton\n\t\t\t\t\tsummaryFields={ summaryFields }\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tlabelPosition={ labelPosition }\n\t\t\t\t\tfieldLabel={ fieldLabel }\n\t\t\t\t\tdisabled={ fieldDefinition.readOnly === true }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tif ( ! isOpen && onOpen ) {\n\t\t\t\t\t\t\tonOpen();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonToggle();\n\t\t\t\t\t} }\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<DropdownHeader title={ fieldLabel } onClose={ onClose } />\n\t\t\t\t\t<div ref={ focusOnMountRef }>\n\t\t\t\t\t\t<DataFormLayout\n\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\tform={ form }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tvalidity={ formValidity }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ (\n\t\t\t\t\t\t\t\tFieldLayout,\n\t\t\t\t\t\t\t\tchildField,\n\t\t\t\t\t\t\t\tchildFieldValidity\n\t\t\t\t\t\t\t) => (\n\t\t\t\t\t\t\t\t<FieldLayout\n\t\t\t\t\t\t\t\t\tkey={ childField.id }\n\t\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\t\tfield={ childField }\n\t\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\t\thideLabelFromVision={\n\t\t\t\t\t\t\t\t\t\t( form?.fields ?? [] ).length < 2\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvalidity={ childFieldValidity }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</DataFormLayout>\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nexport default PanelDropdown;\n", "/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { sprintf, _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedField } from '../../../types';\n\nfunction SummaryButton< Item >( {\n\tsummaryFields,\n\tdata,\n\tlabelPosition,\n\tfieldLabel,\n\tdisabled,\n\tonClick,\n\t'aria-expanded': ariaExpanded,\n}: {\n\tsummaryFields: NormalizedField< Item >[];\n\tdata: Item;\n\tlabelPosition: 'side' | 'top' | 'none';\n\tfieldLabel?: string;\n\tdisabled?: boolean;\n\tonClick: () => void;\n\t'aria-expanded'?: boolean;\n} ) {\n\treturn (\n\t\t<Button\n\t\t\tclassName=\"dataforms-layouts-panel__summary-button\"\n\t\t\tsize=\"compact\"\n\t\t\tvariant={\n\t\t\t\t[ 'none', 'top' ].includes( labelPosition )\n\t\t\t\t\t? 'link'\n\t\t\t\t\t: 'tertiary'\n\t\t\t}\n\t\t\taria-expanded={ ariaExpanded }\n\t\t\taria-label={ sprintf(\n\t\t\t\t// translators: %s: Field name.\n\t\t\t\t_x( 'Edit %s', 'field' ),\n\t\t\t\tfieldLabel || ''\n\t\t\t) }\n\t\t\tonClick={ onClick }\n\t\t\tdisabled={ disabled }\n\t\t\taccessibleWhenDisabled\n\t\t\tstyle={\n\t\t\t\tsummaryFields.length > 1\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tminHeight: 'auto',\n\t\t\t\t\t\t\theight: 'auto',\n\t\t\t\t\t\t\talignItems: 'flex-start',\n\t\t\t\t\t  }\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t>\n\t\t\t{ summaryFields.length > 1 ? (\n\t\t\t\t<div\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\t\talignItems: 'flex-start',\n\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\tgap: '2px',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ summaryFields.map( ( summaryField ) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={ summaryField.id }\n\t\t\t\t\t\t\tstyle={ { width: '100%' } }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<summaryField.render\n\t\t\t\t\t\t\t\titem={ data }\n\t\t\t\t\t\t\t\tfield={ summaryField }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) ) }\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\tsummaryFields.map( ( summaryField ) => (\n\t\t\t\t\t<summaryField.render\n\t\t\t\t\t\tkey={ summaryField.id }\n\t\t\t\t\t\titem={ data }\n\t\t\t\t\t\tfield={ summaryField }\n\t\t\t\t\t/>\n\t\t\t\t) )\n\t\t\t) }\n\t\t</Button>\n\t);\n}\n\nexport default SummaryButton;\n", "/**\n * External dependencies\n */\nimport deepMerge from 'deepmerge';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalSpacer as Spacer,\n\tButton,\n\tModal,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useContext, useState, useMemo } from '@wordpress/element';\nimport { useFocusOnMount } from '@wordpress/compose';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tField,\n\tNormalizedForm,\n\tNormalizedFormField,\n\tNormalizedField,\n} from '../../../types';\nimport { DataFormLayout } from '../data-form-layout';\nimport { DEFAULT_LAYOUT } from '../normalize-form';\nimport SummaryButton from './summary-button';\nimport useFormValidity from '../../../hooks/use-form-validity';\nimport DataFormContext from '../../dataform-context';\n\nfunction ModalContent< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\tfieldLabel,\n\tonClose,\n}: {\n\tdata: Item;\n\tfield: NormalizedFormField;\n\tonChange: ( data: Partial< Item > ) => void;\n\tonClose: () => void;\n\tfieldLabel: string;\n} ) {\n\tconst { fields } = useContext( DataFormContext );\n\tconst [ changes, setChanges ] = useState< Partial< Item > >( {} );\n\tconst modalData = useMemo( () => {\n\t\treturn deepMerge( data, changes, {\n\t\t\tarrayMerge: ( target, source ) => source,\n\t\t} );\n\t}, [ data, changes ] );\n\n\tconst form: NormalizedForm = useMemo(\n\t\t() => ( {\n\t\t\tlayout: DEFAULT_LAYOUT,\n\t\t\tfields: !! field.children\n\t\t\t\t? field.children\n\t\t\t\t: // If not explicit children return the field id itself.\n\t\t\t\t  [ { id: field.id, layout: DEFAULT_LAYOUT } ],\n\t\t} ),\n\t\t[ field ]\n\t);\n\n\tconst fieldsAsFieldType: Field< Item >[] = fields.map( ( f ) => ( {\n\t\t...f,\n\t\tEdit: f.Edit === null ? undefined : f.Edit,\n\t\tisValid: {\n\t\t\trequired: f.isValid.required?.constraint,\n\t\t\telements: f.isValid.elements?.constraint,\n\t\t\tmin: f.isValid.min?.constraint,\n\t\t\tmax: f.isValid.max?.constraint,\n\t\t\tpattern: f.isValid.pattern?.constraint,\n\t\t\tminLength: f.isValid.minLength?.constraint,\n\t\t\tmaxLength: f.isValid.maxLength?.constraint,\n\t\t},\n\t} ) );\n\tconst { validity } = useFormValidity( modalData, fieldsAsFieldType, form );\n\n\tconst onApply = () => {\n\t\tonChange( changes );\n\t\tonClose();\n\t};\n\n\tconst handleOnChange = ( newValue: Partial< Item > ) => {\n\t\tsetChanges( ( prev ) =>\n\t\t\tdeepMerge( prev, newValue, {\n\t\t\t\tarrayMerge: ( target, source ) => source,\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst focusOnMountRef = useFocusOnMount( 'firstInputElement' );\n\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"dataforms-layouts-panel__modal\"\n\t\t\tonRequestClose={ onClose }\n\t\t\tisFullScreen={ false }\n\t\t\ttitle={ fieldLabel }\n\t\t\tsize=\"medium\"\n\t\t>\n\t\t\t<div ref={ focusOnMountRef }>\n\t\t\t\t<DataFormLayout\n\t\t\t\t\tdata={ modalData }\n\t\t\t\t\tform={ form }\n\t\t\t\t\tonChange={ handleOnChange }\n\t\t\t\t\tvalidity={ validity }\n\t\t\t\t>\n\t\t\t\t\t{ ( FieldLayout, childField, childFieldValidity ) => (\n\t\t\t\t\t\t<FieldLayout\n\t\t\t\t\t\t\tkey={ childField.id }\n\t\t\t\t\t\t\tdata={ modalData }\n\t\t\t\t\t\t\tfield={ childField }\n\t\t\t\t\t\t\tonChange={ handleOnChange }\n\t\t\t\t\t\t\thideLabelFromVision={ form.fields.length < 2 }\n\t\t\t\t\t\t\tvalidity={ childFieldValidity }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</DataFormLayout>\n\t\t\t</div>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tclassName=\"dataforms-layouts-panel__modal-footer\"\n\t\t\t\tgap=\"sm\"\n\t\t\t>\n\t\t\t\t<Spacer style={ { flex: 1 } } />\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t</Button>\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tonClick={ onApply }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Apply' ) }\n\t\t\t\t</Button>\n\t\t\t</Stack>\n\t\t</Modal>\n\t);\n}\n\nfunction PanelModal< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\tlabelPosition,\n\tsummaryFields,\n\tfieldDefinition,\n\tonOpen,\n}: {\n\tdata: Item;\n\tfield: NormalizedFormField;\n\tonChange: ( value: any ) => void;\n\tlabelPosition: 'side' | 'top' | 'none';\n\tsummaryFields: NormalizedField< Item >[];\n\tfieldDefinition: NormalizedField< Item >;\n\tonOpen?: () => void;\n} ) {\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\n\tconst fieldLabel = !! field.children ? field.label : fieldDefinition?.label;\n\n\treturn (\n\t\t<>\n\t\t\t<SummaryButton\n\t\t\t\tsummaryFields={ summaryFields }\n\t\t\t\tdata={ data }\n\t\t\t\tlabelPosition={ labelPosition }\n\t\t\t\tfieldLabel={ fieldLabel }\n\t\t\t\tdisabled={ fieldDefinition.readOnly === true }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tif ( onOpen ) {\n\t\t\t\t\t\tonOpen();\n\t\t\t\t\t}\n\t\t\t\t\tsetIsOpen( true );\n\t\t\t\t} }\n\t\t\t\taria-expanded={ isOpen }\n\t\t\t/>\n\t\t\t{ isOpen && (\n\t\t\t\t<ModalContent\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tfield={ field }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tfieldLabel={ fieldLabel ?? '' }\n\t\t\t\t\tonClose={ () => setIsOpen( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default PanelModal;\n", "/**\n * External dependencies\n */\nimport deepMerge from 'deepmerge';\nimport fastDeepEqual from 'fast-deep-equal/es6/index.js';\n\n/**\n * WordPress dependencies\n */\nimport { useCallback, useEffect, useRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport normalizeFields from '../field-types';\nimport normalizeForm from '../components/dataform-layouts/normalize-form';\nimport type {\n\tField,\n\tFieldValidity,\n\tForm,\n\tFormValidity,\n\tNormalizedField,\n\tNormalizedFormField,\n} from '../types';\n\nfunction isFormValid( formValidity: FormValidity | undefined ): boolean {\n\tif ( ! formValidity ) {\n\t\treturn true;\n\t}\n\n\treturn Object.values( formValidity ).every( ( fieldValidation ) => {\n\t\treturn Object.entries( fieldValidation ).every(\n\t\t\t( [ key, validation ] ) => {\n\t\t\t\tif (\n\t\t\t\t\tkey === 'children' &&\n\t\t\t\t\tvalidation &&\n\t\t\t\t\ttypeof validation === 'object'\n\t\t\t\t) {\n\t\t\t\t\t// Recursively check children validations\n\t\t\t\t\treturn isFormValid( validation as FormValidity );\n\t\t\t\t}\n\t\t\t\treturn validation.type === 'valid';\n\t\t\t}\n\t\t);\n\t} );\n}\n\ntype FormFieldToValidate< Item > = {\n\tid: string;\n\tchildren: FormFieldToValidate< Item >[];\n\tfield?: NormalizedField< Item >;\n};\n\nfunction getFormFieldsToValidate< Item >(\n\tform: Form,\n\tfields: Field< Item >[]\n): FormFieldToValidate< Item >[] {\n\tconst normalizedForm = normalizeForm( form );\n\tif ( normalizedForm.fields.length === 0 ) {\n\t\treturn [];\n\t}\n\n\t// Create a map of field IDs to Field definitions for fast lookup\n\tconst fieldsMap = new Map< string, Field< Item > >();\n\tfields.forEach( ( field ) => {\n\t\tfieldsMap.set( field.id, field );\n\t} );\n\n\t// Recursive function to process form fields and their children\n\tfunction processFormField(\n\t\tformField: NormalizedFormField\n\t): FormFieldToValidate< Item > | null {\n\t\t// Handle combined fields (fields with children)\n\t\tif ( 'children' in formField && Array.isArray( formField.children ) ) {\n\t\t\tconst processedChildren = formField.children\n\t\t\t\t.map( processFormField )\n\t\t\t\t.filter( ( child ) => child !== null );\n\n\t\t\tif ( processedChildren.length === 0 ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst fieldDef = fieldsMap.get( formField.id );\n\t\t\tif ( fieldDef ) {\n\t\t\t\tconst [ normalizedField ] = normalizeFields< Item >( [\n\t\t\t\t\tfieldDef,\n\t\t\t\t] );\n\n\t\t\t\treturn {\n\t\t\t\t\tid: formField.id,\n\t\t\t\t\tchildren: processedChildren,\n\t\t\t\t\tfield: normalizedField,\n\t\t\t\t} satisfies FormFieldToValidate< Item >;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: formField.id,\n\t\t\t\tchildren: processedChildren,\n\t\t\t} satisfies FormFieldToValidate< Item >;\n\t\t}\n\n\t\t// Handle leaf fields (fields without children)\n\t\tconst fieldDef = fieldsMap.get( formField.id );\n\t\tif ( ! fieldDef ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst [ normalizedField ] = normalizeFields< Item >( [ fieldDef ] );\n\t\treturn {\n\t\t\tid: formField.id,\n\t\t\tchildren: [],\n\t\t\tfield: normalizedField,\n\t\t} as FormFieldToValidate< Item >;\n\t}\n\n\tconst toValidate = normalizedForm.fields\n\t\t.map( processFormField )\n\t\t.filter( ( field ) => field !== null );\n\n\treturn toValidate;\n}\n\nfunction setValidityAtPath(\n\tformValidity: FormValidity | undefined,\n\tfieldValidity: FieldValidity,\n\tpath: string[]\n): FormValidity {\n\t// Handle empty validity or empty path\n\tif ( ! formValidity ) {\n\t\tformValidity = {};\n\t}\n\n\tif ( path.length === 0 ) {\n\t\treturn formValidity;\n\t}\n\n\t// Clone the root to avoid mutations\n\tconst result = { ...formValidity };\n\n\t// Navigate through the result tree,\n\t// setting up empty paths if they don't exist.\n\tlet current: any = result;\n\tfor ( let i = 0; i < path.length - 1; i++ ) {\n\t\tconst segment = path[ i ];\n\t\tif ( ! current[ segment ] ) {\n\t\t\tcurrent[ segment ] = {};\n\t\t}\n\n\t\tcurrent = current[ segment ];\n\t}\n\n\t// At the final destination, merge the new validity with the existing.\n\tconst finalKey = path[ path.length - 1 ];\n\tcurrent[ finalKey ] = {\n\t\t...( current[ finalKey ] || {} ),\n\t\t...fieldValidity,\n\t};\n\n\treturn result;\n}\n\nfunction handleElementsValidationAsync< Item >(\n\tpromise: Promise< any >,\n\tformField: FormFieldToValidate< Item >,\n\tpromiseHandler: PromiseHandler< Item >\n) {\n\tconst { elementsCounterRef, setFormValidity, path, item } = promiseHandler;\n\tconst currentToken =\n\t\t( elementsCounterRef.current[ formField.id ] || 0 ) + 1;\n\telementsCounterRef.current[ formField.id ] = currentToken;\n\n\tpromise\n\t\t.then( ( result ) => {\n\t\t\tif ( currentToken !== elementsCounterRef.current[ formField.id ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( ! Array.isArray( result ) ) {\n\t\t\t\tsetFormValidity( ( prev ) => {\n\t\t\t\t\tconst newFormValidity = setValidityAtPath(\n\t\t\t\t\t\tprev,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\telements: {\n\t\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\t\tmessage: __( 'Could not validate elements.' ),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[ ...path, formField.id ]\n\t\t\t\t\t);\n\t\t\t\t\treturn newFormValidity;\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tformField.field?.isValid.elements &&\n\t\t\t\t! formField.field.isValid.elements.validate( item, {\n\t\t\t\t\t...formField.field,\n\t\t\t\t\telements: result,\n\t\t\t\t} )\n\t\t\t) {\n\t\t\t\tsetFormValidity( ( prev ) => {\n\t\t\t\t\tconst newFormValidity = setValidityAtPath(\n\t\t\t\t\t\tprev,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\telements: {\n\t\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\t\tmessage: __(\n\t\t\t\t\t\t\t\t\t'Value must be one of the elements.'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[ ...path, formField.id ]\n\t\t\t\t\t);\n\t\t\t\t\treturn newFormValidity;\n\t\t\t\t} );\n\t\t\t}\n\t\t} )\n\t\t.catch( ( error ) => {\n\t\t\tif ( currentToken !== elementsCounterRef.current[ formField.id ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet errorMessage;\n\t\t\tif ( error instanceof Error ) {\n\t\t\t\terrorMessage = error.message;\n\t\t\t} else {\n\t\t\t\terrorMessage =\n\t\t\t\t\tString( error ) ||\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Unknown error when running elements validation asynchronously.'\n\t\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetFormValidity( ( prev ) => {\n\t\t\t\tconst newFormValidity = setValidityAtPath(\n\t\t\t\t\tprev,\n\t\t\t\t\t{\n\t\t\t\t\t\telements: {\n\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\tmessage: errorMessage,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t[ ...path, formField.id ]\n\t\t\t\t);\n\t\t\t\treturn newFormValidity;\n\t\t\t} );\n\t\t} );\n}\n\nfunction handleCustomValidationAsync< Item >(\n\tpromise: Promise< any >,\n\tformField: FormFieldToValidate< Item >,\n\tpromiseHandler: PromiseHandler< Item >\n) {\n\tconst { customCounterRef, setFormValidity, path } = promiseHandler;\n\tconst currentToken = ( customCounterRef.current[ formField.id ] || 0 ) + 1;\n\tcustomCounterRef.current[ formField.id ] = currentToken;\n\n\tpromise\n\t\t.then( ( result ) => {\n\t\t\tif ( currentToken !== customCounterRef.current[ formField.id ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( result === null ) {\n\t\t\t\tsetFormValidity( ( prev ) => {\n\t\t\t\t\tconst newFormValidity = setValidityAtPath(\n\t\t\t\t\t\tprev,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcustom: {\n\t\t\t\t\t\t\t\ttype: 'valid',\n\t\t\t\t\t\t\t\tmessage: __( 'Valid' ),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[ ...path, formField.id ]\n\t\t\t\t\t);\n\t\t\t\t\treturn newFormValidity;\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( typeof result === 'string' ) {\n\t\t\t\tsetFormValidity( ( prev ) => {\n\t\t\t\t\tconst newFormValidity = setValidityAtPath(\n\t\t\t\t\t\tprev,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcustom: {\n\t\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\t\tmessage: result,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[ ...path, formField.id ]\n\t\t\t\t\t);\n\t\t\t\t\treturn newFormValidity;\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetFormValidity( ( prev ) => {\n\t\t\t\tconst newFormValidity = setValidityAtPath(\n\t\t\t\t\tprev,\n\t\t\t\t\t{\n\t\t\t\t\t\tcustom: {\n\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\tmessage: __( 'Validation could not be processed.' ),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t[ ...path, formField.id ]\n\t\t\t\t);\n\t\t\t\treturn newFormValidity;\n\t\t\t} );\n\t\t} )\n\t\t.catch( ( error ) => {\n\t\t\tif ( currentToken !== customCounterRef.current[ formField.id ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet errorMessage;\n\t\t\tif ( error instanceof Error ) {\n\t\t\t\terrorMessage = error.message;\n\t\t\t} else {\n\t\t\t\terrorMessage =\n\t\t\t\t\tString( error ) ||\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Unknown error when running custom validation asynchronously.'\n\t\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetFormValidity( ( prev ) => {\n\t\t\t\tconst newFormValidity = setValidityAtPath(\n\t\t\t\t\tprev,\n\t\t\t\t\t{\n\t\t\t\t\t\tcustom: {\n\t\t\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\t\t\tmessage: errorMessage,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t[ ...path, formField.id ]\n\t\t\t\t);\n\t\t\t\treturn newFormValidity;\n\t\t\t} );\n\t\t} );\n}\n\ntype PromiseHandler< Item > = {\n\tcustomCounterRef: React.MutableRefObject< Record< string, number > >;\n\telementsCounterRef: React.MutableRefObject< Record< string, number > >;\n\tsetFormValidity: React.Dispatch< React.SetStateAction< FormValidity > >;\n\tpath: string[];\n\titem: Item;\n};\n\nfunction validateFormField< Item >(\n\titem: Item,\n\tformField: FormFieldToValidate< Item >,\n\tpromiseHandler: PromiseHandler< Item >\n): FieldValidity | undefined {\n\t// Validate the field: isValid.required\n\tif (\n\t\tformField.field?.isValid.required &&\n\t\t! formField.field.isValid.required.validate( item, formField.field )\n\t) {\n\t\treturn {\n\t\t\trequired: { type: 'invalid' },\n\t\t};\n\t}\n\n\t// Validate the field: isValid.pattern\n\tif (\n\t\tformField.field?.isValid.pattern &&\n\t\t! formField.field.isValid.pattern.validate( item, formField.field )\n\t) {\n\t\treturn {\n\t\t\tpattern: {\n\t\t\t\ttype: 'invalid',\n\t\t\t\tmessage: __( 'Value does not match the required pattern.' ),\n\t\t\t},\n\t\t};\n\t}\n\n\t// Validate the field: isValid.min\n\tif (\n\t\tformField.field?.isValid.min &&\n\t\t! formField.field.isValid.min.validate( item, formField.field )\n\t) {\n\t\treturn {\n\t\t\tmin: {\n\t\t\t\ttype: 'invalid',\n\t\t\t\tmessage: __( 'Value is below the minimum.' ),\n\t\t\t},\n\t\t};\n\t}\n\n\t// Validate the field: isValid.max\n\tif (\n\t\tformField.field?.isValid.max &&\n\t\t! formField.field.isValid.max.validate( item, formField.field )\n\t) {\n\t\treturn {\n\t\t\tmax: {\n\t\t\t\ttype: 'invalid',\n\t\t\t\tmessage: __( 'Value is above the maximum.' ),\n\t\t\t},\n\t\t};\n\t}\n\n\t// Validate the field: isValid.minLength\n\tif (\n\t\tformField.field?.isValid.minLength &&\n\t\t! formField.field.isValid.minLength.validate( item, formField.field )\n\t) {\n\t\treturn {\n\t\t\tminLength: {\n\t\t\t\ttype: 'invalid',\n\t\t\t\tmessage: __( 'Value is too short.' ),\n\t\t\t},\n\t\t};\n\t}\n\n\t// Validate the field: isValid.maxLength\n\tif (\n\t\tformField.field?.isValid.maxLength &&\n\t\t! formField.field.isValid.maxLength.validate( item, formField.field )\n\t) {\n\t\treturn {\n\t\t\tmaxLength: {\n\t\t\t\ttype: 'invalid',\n\t\t\t\tmessage: __( 'Value is too long.' ),\n\t\t\t},\n\t\t};\n\t}\n\n\t// Validate the field: isValid.elements (static)\n\tif (\n\t\tformField.field?.isValid.elements &&\n\t\tformField.field.hasElements &&\n\t\t! formField.field.getElements &&\n\t\tArray.isArray( formField.field.elements ) &&\n\t\t! formField.field.isValid.elements.validate( item, formField.field )\n\t) {\n\t\treturn {\n\t\t\telements: {\n\t\t\t\ttype: 'invalid',\n\t\t\t\tmessage: __( 'Value must be one of the elements.' ),\n\t\t\t},\n\t\t};\n\t}\n\n\t// Validate the field: isValid.elements (async)\n\tif (\n\t\t!! formField.field &&\n\t\tformField.field.isValid.elements &&\n\t\tformField.field.hasElements &&\n\t\ttypeof formField.field.getElements === 'function'\n\t) {\n\t\thandleElementsValidationAsync(\n\t\t\tformField.field.getElements(),\n\t\t\tformField,\n\t\t\tpromiseHandler\n\t\t);\n\n\t\treturn {\n\t\t\telements: {\n\t\t\t\ttype: 'validating',\n\t\t\t\tmessage: __( 'Validating\u2026' ),\n\t\t\t},\n\t\t};\n\t}\n\n\t// Validate the field: isValid.custom (sync)\n\tlet customError;\n\tif ( !! formField.field && formField.field.isValid.custom ) {\n\t\ttry {\n\t\t\tconst value = formField.field.getValue( { item } );\n\t\t\tcustomError = formField.field.isValid.custom(\n\t\t\t\tdeepMerge(\n\t\t\t\t\titem,\n\t\t\t\t\tformField.field.setValue( {\n\t\t\t\t\t\titem,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t} ) as Partial< Item >\n\t\t\t\t),\n\t\t\t\tformField.field\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\tlet errorMessage;\n\t\t\tif ( error instanceof Error ) {\n\t\t\t\terrorMessage = error.message;\n\t\t\t} else {\n\t\t\t\terrorMessage =\n\t\t\t\t\tString( error ) ||\n\t\t\t\t\t__( 'Unknown error when running custom validation.' );\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcustom: {\n\t\t\t\t\ttype: 'invalid',\n\t\t\t\t\tmessage: errorMessage,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\n\tif ( typeof customError === 'string' ) {\n\t\treturn {\n\t\t\tcustom: {\n\t\t\t\ttype: 'invalid',\n\t\t\t\tmessage: customError,\n\t\t\t},\n\t\t};\n\t}\n\n\t// Validate the field: isValid.custom (async)\n\tif ( customError instanceof Promise ) {\n\t\thandleCustomValidationAsync( customError, formField, promiseHandler );\n\n\t\treturn {\n\t\t\tcustom: {\n\t\t\t\ttype: 'validating',\n\t\t\t\tmessage: __( 'Validating\u2026' ),\n\t\t\t},\n\t\t};\n\t}\n\n\t// Validate its children.\n\tif ( formField.children.length > 0 ) {\n\t\tconst result: Record< string, FieldValidity | undefined > = {};\n\t\tformField.children.forEach( ( child ) => {\n\t\t\tresult[ child.id ] = validateFormField( item, child, {\n\t\t\t\t...promiseHandler,\n\t\t\t\tpath: [ ...promiseHandler.path, formField.id, 'children' ],\n\t\t\t} );\n\t\t} );\n\n\t\tconst filteredResult: Record< string, FieldValidity > = {};\n\t\tObject.entries( result ).forEach( ( [ key, value ] ) => {\n\t\t\tif ( value !== undefined ) {\n\t\t\t\tfilteredResult[ key ] = value;\n\t\t\t}\n\t\t} );\n\n\t\tif ( Object.keys( filteredResult ).length === 0 ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tchildren: filteredResult,\n\t\t};\n\t}\n\n\t// No errors for this field or its children.\n\treturn undefined;\n}\n\nfunction getFormFieldValue< Item >(\n\tformField: FormFieldToValidate< Item >,\n\titem: Item\n): any {\n\tconst fieldValue = formField?.field?.getValue( { item } );\n\tif ( formField.children.length === 0 ) {\n\t\treturn fieldValue;\n\t}\n\n\tconst childrenValues = formField.children.map( ( child ) =>\n\t\tgetFormFieldValue( child, item )\n\t);\n\tif ( ! childrenValues ) {\n\t\treturn fieldValue;\n\t}\n\n\treturn {\n\t\tvalue: fieldValue,\n\t\tchildren: childrenValues,\n\t};\n}\n\n/**\n * Hook that validates a form item and returns an object with error messages for each field.\n *\n * @param item   The item to validate.\n * @param fields Fields config.\n * @param form   Form config.\n *\n * @return Record of field IDs to error messages (undefined means no error).\n */\nexport function useFormValidity< Item >(\n\titem: Item,\n\tfields: Field< Item >[],\n\tform: Form\n): { validity: FormValidity; isValid: boolean } {\n\tconst [ formValidity, setFormValidity ] = useState< FormValidity >();\n\tconst customCounterRef = useRef< Record< string, number > >( {} );\n\tconst elementsCounterRef = useRef< Record< string, number > >( {} );\n\tconst previousValuesRef = useRef< Record< string, any > >( {} );\n\n\tconst validate = useCallback( () => {\n\t\tconst promiseHandler = {\n\t\t\tcustomCounterRef,\n\t\t\telementsCounterRef,\n\t\t\tsetFormValidity,\n\t\t\tpath: [],\n\t\t\titem,\n\t\t};\n\n\t\tconst formFieldsToValidate = getFormFieldsToValidate( form, fields );\n\t\tif ( formFieldsToValidate.length === 0 ) {\n\t\t\tsetFormValidity( undefined );\n\t\t\treturn;\n\t\t}\n\n\t\tconst newFormValidity: FormValidity = {};\n\t\tconst untouchedFields: string[] = [];\n\t\tformFieldsToValidate.forEach( ( formField ) => {\n\t\t\t// Skip fields that did not change.\n\t\t\tconst value = getFormFieldValue< Item >( formField, item );\n\t\t\tif (\n\t\t\t\tpreviousValuesRef.current.hasOwnProperty( formField.id ) &&\n\t\t\t\tfastDeepEqual(\n\t\t\t\t\tpreviousValuesRef.current[ formField.id ],\n\t\t\t\t\tvalue\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tuntouchedFields.push( formField.id );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpreviousValuesRef.current[ formField.id ] = value;\n\n\t\t\t// Calculate validity for those fields that changed.\n\t\t\tconst fieldValidity = validateFormField(\n\t\t\t\titem,\n\t\t\t\tformField,\n\t\t\t\tpromiseHandler\n\t\t\t);\n\t\t\tif ( fieldValidity !== undefined ) {\n\t\t\t\tnewFormValidity[ formField.id ] = fieldValidity;\n\t\t\t}\n\t\t} );\n\n\t\tsetFormValidity( ( existingFormValidity ) => {\n\t\t\tlet validity: FormValidity = {\n\t\t\t\t...existingFormValidity,\n\t\t\t\t...newFormValidity,\n\t\t\t};\n\n\t\t\tconst fieldsToKeep = [\n\t\t\t\t...untouchedFields,\n\t\t\t\t...Object.keys( newFormValidity ),\n\t\t\t];\n\t\t\tObject.keys( validity ).forEach( ( key ) => {\n\t\t\t\tif ( validity && ! fieldsToKeep.includes( key ) ) {\n\t\t\t\t\tdelete validity[ key ];\n\t\t\t\t}\n\t\t\t} );\n\t\t\tif ( Object.keys( validity ).length === 0 ) {\n\t\t\t\tvalidity = undefined;\n\t\t\t}\n\n\t\t\tconst areEqual = fastDeepEqual( existingFormValidity, validity );\n\t\t\tif ( areEqual ) {\n\t\t\t\treturn existingFormValidity;\n\t\t\t}\n\n\t\t\treturn validity;\n\t\t} );\n\t}, [ item, fields, form ] );\n\n\tuseEffect( () => {\n\t\tvalidate();\n\t}, [ validate ] );\n\n\treturn {\n\t\tvalidity: formValidity,\n\t\tisValid: isFormValid( formValidity ),\n\t};\n}\n\nexport default useFormValidity;\n", "/**\n * Internal dependencies\n */\nimport type { NormalizedField, NormalizedSummaryField } from '../../types';\n\n/**\n * Extracts field IDs from various summary field formats.\n *\n * @param summary The summary field configuration.\n * @return Array of field IDs.\n */\nfunction extractSummaryIds( summary: NormalizedSummaryField ): string[] {\n\tif ( Array.isArray( summary ) ) {\n\t\treturn summary.map( ( item ) =>\n\t\t\ttypeof item === 'string' ? item : item.id\n\t\t);\n\t}\n\n\treturn [];\n}\n\n/**\n * Returns the summary fields for a given field.\n * @param summaryField - The summary field configuration.\n * @param fields       - The fields to get the summary fields from.\n * @return The summary fields.\n */\nexport const getSummaryFields = < Item >(\n\tsummaryField: NormalizedSummaryField,\n\tfields: NormalizedField< Item >[]\n): NormalizedField< Item >[] => {\n\tif ( Array.isArray( summaryField ) && summaryField.length > 0 ) {\n\t\tconst summaryIds = extractSummaryIds( summaryField );\n\t\treturn summaryIds\n\t\t\t.map( ( summaryId ) =>\n\t\t\t\tfields.find( ( _field ) => _field.id === summaryId )\n\t\t\t)\n\t\t\t.filter( ( _field ) => _field !== undefined );\n\t}\n\n\treturn [];\n};\n", "/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tCard,\n\tCardBody,\n\tCardHeader as OriginalCardHeader,\n} from '@wordpress/components';\nimport {\n\tuseCallback,\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n\tuseState,\n} from '@wordpress/element';\nimport { chevronDown, chevronUp } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { getFormFieldLayout } from '..';\nimport DataFormContext from '../../dataform-context';\nimport type {\n\tFieldLayoutProps,\n\tNormalizedCardLayout,\n\tNormalizedField,\n\tNormalizedForm,\n\tNormalizedLayout,\n} from '../../../types';\nimport { DataFormLayout } from '../data-form-layout';\nimport { DEFAULT_LAYOUT } from '../normalize-form';\nimport { getSummaryFields } from '../get-summary-fields';\n\nconst NonCollapsibleCardHeader = ( {\n\tchildren,\n\t...props\n}: {\n\tchildren: React.ReactNode;\n} ) => (\n\t<OriginalCardHeader isBorderless { ...props }>\n\t\t<div\n\t\t\tstyle={ {\n\t\t\t\theight: '40px', // This is to match the chevron's __next40pxDefaultSize\n\t\t\t\twidth: '100%',\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\talignItems: 'center',\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</div>\n\t</OriginalCardHeader>\n);\n\nexport function useCardHeader( layout: NormalizedCardLayout ) {\n\tconst { isOpened, isCollapsible } = layout;\n\tconst [ isOpen, setIsOpen ] = useState( isOpened );\n\n\t// Sync internal state when the isOpened prop changes.\n\t// This is unlikely to happen in production, but it helps with storybook controls.\n\tuseEffect( () => {\n\t\tsetIsOpen( isOpened );\n\t}, [ isOpened ] );\n\n\tconst toggle = useCallback( () => {\n\t\tsetIsOpen( ( prev ) => ! prev );\n\t}, [] );\n\n\tconst CollapsibleCardHeader = useCallback(\n\t\t( {\n\t\t\tchildren,\n\t\t\t...props\n\t\t}: {\n\t\t\tchildren: React.ReactNode;\n\t\t\t[ key: string ]: any;\n\t\t} ) => (\n\t\t\t<OriginalCardHeader\n\t\t\t\t{ ...props }\n\t\t\t\tonClick={ toggle }\n\t\t\t\tstyle={ {\n\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t...props.style,\n\t\t\t\t} }\n\t\t\t\tisBorderless\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</div>\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\ticon={ isOpen ? chevronUp : chevronDown }\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\taria-label={ isOpen ? 'Collapse' : 'Expand' }\n\t\t\t\t/>\n\t\t\t</OriginalCardHeader>\n\t\t),\n\t\t[ toggle, isOpen ]\n\t);\n\n\tconst effectiveIsOpen = isCollapsible ? isOpen : true;\n\tconst CardHeaderComponent = isCollapsible\n\t\t? CollapsibleCardHeader\n\t\t: NonCollapsibleCardHeader;\n\n\treturn { isOpen: effectiveIsOpen, CardHeader: CardHeaderComponent };\n}\n\nfunction isSummaryFieldVisible< Item >(\n\tsummaryField: NormalizedField< Item >,\n\tsummaryConfig: NormalizedCardLayout[ 'summary' ],\n\tisOpen: boolean\n) {\n\t// If no summary config, dont't show any fields\n\tif (\n\t\t! summaryConfig ||\n\t\t( Array.isArray( summaryConfig ) && summaryConfig.length === 0 )\n\t) {\n\t\treturn false;\n\t}\n\n\t// Convert to array for consistent handling\n\tconst summaryConfigArray = Array.isArray( summaryConfig )\n\t\t? summaryConfig\n\t\t: [ summaryConfig ];\n\n\t// Find the config for this specific field\n\tconst fieldConfig = summaryConfigArray.find( ( config ) => {\n\t\tif ( typeof config === 'string' ) {\n\t\t\treturn config === summaryField.id;\n\t\t}\n\t\tif ( typeof config === 'object' && 'id' in config ) {\n\t\t\treturn config.id === summaryField.id;\n\t\t}\n\t\treturn false;\n\t} );\n\n\t// If field is not in summary config, don't show it\n\tif ( ! fieldConfig ) {\n\t\treturn false;\n\t}\n\n\t// If it's a string, always show it\n\tif ( typeof fieldConfig === 'string' ) {\n\t\treturn true;\n\t}\n\n\t// If it has visibility rules, respect them\n\tif ( typeof fieldConfig === 'object' && 'visibility' in fieldConfig ) {\n\t\treturn (\n\t\t\tfieldConfig.visibility === 'always' ||\n\t\t\t( fieldConfig.visibility === 'when-collapsed' && ! isOpen )\n\t\t);\n\t}\n\n\t// Default to always show\n\treturn true;\n}\n\nexport default function FormCardField< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: FieldLayoutProps< Item > ) {\n\tconst { fields } = useContext( DataFormContext );\n\tconst layout = field.layout as NormalizedCardLayout;\n\n\tconst form: NormalizedForm = useMemo(\n\t\t() => ( {\n\t\t\tlayout: DEFAULT_LAYOUT as NormalizedLayout,\n\t\t\tfields: field.children ?? [],\n\t\t} ),\n\t\t[ field ]\n\t);\n\n\tconst { isOpen, CardHeader } = useCardHeader( layout );\n\n\tconst summaryFields = getSummaryFields< Item >( layout.summary, fields );\n\n\tconst visibleSummaryFields = summaryFields.filter( ( summaryField ) =>\n\t\tisSummaryFieldVisible( summaryField, layout.summary, isOpen )\n\t);\n\n\tconst sizeCard = {\n\t\tblockStart: 'medium' as const,\n\t\tblockEnd: 'medium' as const,\n\t\tinlineStart: 'medium' as const,\n\t\tinlineEnd: 'medium' as const,\n\t};\n\n\tif ( !! field.children ) {\n\t\tconst withHeader = !! field.label && layout.withHeader;\n\n\t\tconst sizeCardBody = {\n\t\t\tblockStart: withHeader\n\t\t\t\t? ( 'none' as const )\n\t\t\t\t: ( 'medium' as const ),\n\t\t\tblockEnd: 'medium' as const,\n\t\t\tinlineStart: 'medium' as const,\n\t\t\tinlineEnd: 'medium' as const,\n\t\t};\n\n\t\treturn (\n\t\t\t<Card className=\"dataforms-layouts-card__field\" size={ sizeCard }>\n\t\t\t\t{ withHeader && (\n\t\t\t\t\t<CardHeader className=\"dataforms-layouts-card__field-header\">\n\t\t\t\t\t\t<span className=\"dataforms-layouts-card__field-header-label\">\n\t\t\t\t\t\t\t{ field.label }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t{ visibleSummaryFields.length > 0 &&\n\t\t\t\t\t\t\tlayout.withHeader && (\n\t\t\t\t\t\t\t\t<div className=\"dataforms-layouts-card__field-summary\">\n\t\t\t\t\t\t\t\t\t{ visibleSummaryFields.map(\n\t\t\t\t\t\t\t\t\t\t( summaryField ) => (\n\t\t\t\t\t\t\t\t\t\t\t<summaryField.render\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ summaryField.id }\n\t\t\t\t\t\t\t\t\t\t\t\titem={ data }\n\t\t\t\t\t\t\t\t\t\t\t\tfield={ summaryField }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t</CardHeader>\n\t\t\t\t) }\n\t\t\t\t{ ( isOpen || ! withHeader ) && (\n\t\t\t\t\t// If it doesn't have a header, keep it open.\n\t\t\t\t\t// Otherwise, the card will not be visible.\n\t\t\t\t\t<CardBody\n\t\t\t\t\t\tsize={ sizeCardBody }\n\t\t\t\t\t\tclassName=\"dataforms-layouts-card__field-control\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ field.description && (\n\t\t\t\t\t\t\t<div className=\"dataforms-layouts-card__field-description\">\n\t\t\t\t\t\t\t\t{ field.description }\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<DataFormLayout\n\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\tform={ form }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tvalidity={ validity?.children }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</CardBody>\n\t\t\t\t) }\n\t\t\t</Card>\n\t\t);\n\t}\n\n\tconst fieldDefinition = fields.find(\n\t\t( fieldDef ) => fieldDef.id === field.id\n\t);\n\n\tif ( ! fieldDefinition || ! fieldDefinition.Edit ) {\n\t\treturn null;\n\t}\n\n\tconst RegularLayout = getFormFieldLayout( 'regular' )?.component;\n\tif ( ! RegularLayout ) {\n\t\treturn null;\n\t}\n\tconst withHeader = !! fieldDefinition.label && layout.withHeader;\n\n\tconst sizeCardBody = {\n\t\tblockStart: withHeader ? ( 'none' as const ) : ( 'medium' as const ),\n\t\tblockEnd: 'medium' as const,\n\t\tinlineStart: 'medium' as const,\n\t\tinlineEnd: 'medium' as const,\n\t};\n\n\treturn (\n\t\t<Card className=\"dataforms-layouts-card__field\" size={ sizeCard }>\n\t\t\t{ withHeader && (\n\t\t\t\t<CardHeader className=\"dataforms-layouts-card__field-header\">\n\t\t\t\t\t<span className=\"dataforms-layouts-card__field-header-label\">\n\t\t\t\t\t\t{ fieldDefinition.label }\n\t\t\t\t\t</span>\n\t\t\t\t\t{ visibleSummaryFields.length > 0 && layout.withHeader && (\n\t\t\t\t\t\t<div className=\"dataforms-layouts-card__field-summary\">\n\t\t\t\t\t\t\t{ visibleSummaryFields.map( ( summaryField ) => (\n\t\t\t\t\t\t\t\t<summaryField.render\n\t\t\t\t\t\t\t\t\tkey={ summaryField.id }\n\t\t\t\t\t\t\t\t\titem={ data }\n\t\t\t\t\t\t\t\t\tfield={ summaryField }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</CardHeader>\n\t\t\t) }\n\t\t\t{ ( isOpen || ! withHeader ) && (\n\t\t\t\t// If it doesn't have a header, keep it open.\n\t\t\t\t// Otherwise, the card will not be visible.\n\t\t\t\t<CardBody\n\t\t\t\t\tsize={ sizeCardBody }\n\t\t\t\t\tclassName=\"dataforms-layouts-card__field-control\"\n\t\t\t\t>\n\t\t\t\t\t<RegularLayout\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\thideLabelFromVision={\n\t\t\t\t\t\t\thideLabelFromVision || withHeader\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalidity={ validity }\n\t\t\t\t\t/>\n\t\t\t\t</CardBody>\n\t\t\t) }\n\t\t</Card>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __experimentalHeading as Heading } from '@wordpress/components';\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tFieldLayoutProps,\n\tNormalizedForm,\n\tNormalizedLayout,\n\tNormalizedRowLayout,\n} from '../../../types';\nimport { DataFormLayout } from '../data-form-layout';\nimport { DEFAULT_LAYOUT } from '../normalize-form';\nimport { getFormFieldLayout } from '..';\n\nfunction Header( { title }: { title: string } ) {\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"column\"\n\t\t\tclassName=\"dataforms-layouts-row__header\"\n\t\t\tgap=\"md\"\n\t\t>\n\t\t\t<Stack direction=\"row\" align=\"center\">\n\t\t\t\t<Heading level={ 2 } size={ 13 }>\n\t\t\t\t\t{ title }\n\t\t\t\t</Heading>\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n}\n\nconst EMPTY_WRAPPER = ( { children }: { children: React.ReactNode } ) => (\n\t<>{ children }</>\n);\n\nexport default function FormRowField< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n\thideLabelFromVision,\n\tvalidity,\n}: FieldLayoutProps< Item > ) {\n\tconst layout = field.layout as NormalizedRowLayout;\n\n\tif ( !! field.children ) {\n\t\tconst form: NormalizedForm = {\n\t\t\tlayout: DEFAULT_LAYOUT as NormalizedLayout,\n\t\t\tfields: field.children,\n\t\t};\n\n\t\treturn (\n\t\t\t<div className=\"dataforms-layouts-row__field\">\n\t\t\t\t{ ! hideLabelFromVision && field.label && (\n\t\t\t\t\t<Header title={ field.label } />\n\t\t\t\t) }\n\t\t\t\t<Stack direction=\"row\" align={ layout.alignment } gap=\"md\">\n\t\t\t\t\t<DataFormLayout\n\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\tform={ form }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tvalidity={ validity?.children }\n\t\t\t\t\t\tas={ EMPTY_WRAPPER }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( FieldLayout, childField, childFieldValidity ) => (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={ childField.id }\n\t\t\t\t\t\t\t\tclassName=\"dataforms-layouts-row__field-control\"\n\t\t\t\t\t\t\t\tstyle={ layout.styles[ childField.id ] }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<FieldLayout\n\t\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\t\tfield={ childField }\n\t\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\t\t\t\t\t\t\tvalidity={ childFieldValidity }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DataFormLayout>\n\t\t\t\t</Stack>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst RegularLayout = getFormFieldLayout( 'regular' )?.component;\n\tif ( ! RegularLayout ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<div className=\"dataforms-layouts-row__field-control\">\n\t\t\t\t<RegularLayout\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tfield={ field }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tvalidity={ validity }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { useContext, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type {\n\tNormalizedForm,\n\tNormalizedDetailsLayout,\n\tFieldLayoutProps,\n} from '../../../types';\nimport DataFormContext from '../../dataform-context';\nimport { DataFormLayout } from '../data-form-layout';\nimport { DEFAULT_LAYOUT } from '../normalize-form';\n\nexport default function FormDetailsField< Item >( {\n\tdata,\n\tfield,\n\tonChange,\n}: FieldLayoutProps< Item > ) {\n\tconst { fields } = useContext( DataFormContext );\n\n\tconst form: NormalizedForm = useMemo(\n\t\t() => ( {\n\t\t\tlayout: DEFAULT_LAYOUT,\n\t\t\tfields: field.children ?? [],\n\t\t} ),\n\t\t[ field ]\n\t);\n\n\tif ( ! field.children ) {\n\t\treturn null;\n\t}\n\n\t// Find the summary field definition if specified\n\tconst summaryFieldId =\n\t\t( field.layout as NormalizedDetailsLayout ).summary ?? '';\n\tconst summaryField = summaryFieldId\n\t\t? fields.find( ( fieldDef ) => fieldDef.id === summaryFieldId )\n\t\t: undefined;\n\n\t// Render the summary content\n\tlet summaryContent;\n\tif ( summaryField && summaryField.render ) {\n\t\t// Use the field's render function to display the current value\n\t\tsummaryContent = (\n\t\t\t<summaryField.render item={ data } field={ summaryField } />\n\t\t);\n\t} else {\n\t\t// Fall back to the label\n\t\tsummaryContent = field.label || __( 'More details' );\n\t}\n\n\treturn (\n\t\t<details className=\"dataforms-layouts-details__details\">\n\t\t\t<summary className=\"dataforms-layouts-details__summary\">\n\t\t\t\t{ summaryContent }\n\t\t\t</summary>\n\t\t\t<div className=\"dataforms-layouts-details__content\">\n\t\t\t\t<DataFormLayout\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tform={ form }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</details>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport type { NormalizedLayout, NormalizedRowLayout } from '../../types';\nimport FormRegularField from './regular';\nimport FormPanelField from './panel';\nimport FormCardField from './card';\nimport FormRowField from './row';\nimport FormDetailsField from './details';\n\nconst FORM_FIELD_LAYOUTS = [\n\t{\n\t\ttype: 'regular',\n\t\tcomponent: FormRegularField,\n\t\twrapper: ( { children }: { children: React.ReactNode } ) => (\n\t\t\t<Stack\n\t\t\t\tdirection=\"column\"\n\t\t\t\tclassName=\"dataforms-layouts__wrapper\"\n\t\t\t\tgap=\"md\"\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</Stack>\n\t\t),\n\t},\n\t{\n\t\ttype: 'panel',\n\t\tcomponent: FormPanelField,\n\t\twrapper: ( { children }: { children: React.ReactNode } ) => (\n\t\t\t<Stack\n\t\t\t\tdirection=\"column\"\n\t\t\t\tclassName=\"dataforms-layouts__wrapper\"\n\t\t\t\tgap=\"xs\"\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</Stack>\n\t\t),\n\t},\n\t{\n\t\ttype: 'card',\n\t\tcomponent: FormCardField,\n\t\twrapper: ( { children }: { children: React.ReactNode } ) => (\n\t\t\t<Stack\n\t\t\t\tdirection=\"column\"\n\t\t\t\tclassName=\"dataforms-layouts__wrapper\"\n\t\t\t\tgap=\"lg\"\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</Stack>\n\t\t),\n\t},\n\t{\n\t\ttype: 'row',\n\t\tcomponent: FormRowField,\n\t\twrapper: ( {\n\t\t\tchildren,\n\t\t\tlayout,\n\t\t}: {\n\t\t\tchildren: React.ReactNode;\n\t\t\tlayout: NormalizedLayout;\n\t\t} ) => (\n\t\t\t<Stack\n\t\t\t\tdirection=\"column\"\n\t\t\t\tclassName=\"dataforms-layouts__wrapper\"\n\t\t\t\tgap=\"md\"\n\t\t\t>\n\t\t\t\t<div className=\"dataforms-layouts-row__field\">\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\tgap=\"md\"\n\t\t\t\t\t\talign={ ( layout as NormalizedRowLayout ).alignment }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</Stack>\n\t\t\t\t</div>\n\t\t\t</Stack>\n\t\t),\n\t},\n\t{\n\t\ttype: 'details',\n\t\tcomponent: FormDetailsField,\n\t},\n];\n\nexport function getFormFieldLayout( type: string ) {\n\treturn FORM_FIELD_LAYOUTS.find( ( layout ) => layout.type === type );\n}\n", "/**\n * External dependencies\n */\nimport removeAccents from 'remove-accents';\nimport { subDays, subWeeks, subMonths, subYears } from 'date-fns';\n\n/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\nimport { getDate } from '@wordpress/date';\n\n/**\n * Internal dependencies\n */\nimport {\n\tOPERATOR_IS,\n\tOPERATOR_IS_NOT,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_ALL,\n\tOPERATOR_IS_NOT_ALL,\n\tOPERATOR_LESS_THAN,\n\tOPERATOR_GREATER_THAN,\n\tOPERATOR_LESS_THAN_OR_EQUAL,\n\tOPERATOR_GREATER_THAN_OR_EQUAL,\n\tOPERATOR_BEFORE,\n\tOPERATOR_AFTER,\n\tOPERATOR_BEFORE_INC,\n\tOPERATOR_AFTER_INC,\n\tOPERATOR_CONTAINS,\n\tOPERATOR_NOT_CONTAINS,\n\tOPERATOR_STARTS_WITH,\n\tOPERATOR_BETWEEN,\n\tOPERATOR_ON,\n\tOPERATOR_NOT_ON,\n\tOPERATOR_IN_THE_PAST,\n\tOPERATOR_OVER,\n} from '../constants';\nimport normalizeFields from '../field-types';\nimport type { Field, View } from '../types';\n\nfunction normalizeSearchInput( input = '' ) {\n\treturn removeAccents( input.trim().toLowerCase() );\n}\n\nconst EMPTY_ARRAY: [] = [];\n\n/**\n * Calculates a date offset from now.\n *\n * @param value Number of units to offset.\n * @param unit  Unit of time to offset.\n * @return      Date offset from now.\n */\nfunction getRelativeDate( value: number, unit: string ): Date {\n\tswitch ( unit ) {\n\t\tcase 'days':\n\t\t\treturn subDays( new Date(), value );\n\t\tcase 'weeks':\n\t\t\treturn subWeeks( new Date(), value );\n\t\tcase 'months':\n\t\t\treturn subMonths( new Date(), value );\n\t\tcase 'years':\n\t\t\treturn subYears( new Date(), value );\n\t\tdefault:\n\t\t\treturn new Date();\n\t}\n}\n\n/**\n * Applies the filtering, sorting and pagination to the raw data based on the view configuration.\n *\n * @param data   Raw data.\n * @param view   View config.\n * @param fields Fields config.\n *\n * @return Filtered, sorted and paginated data.\n */\nexport default function filterSortAndPaginate< Item >(\n\tdata: Item[],\n\tview: View,\n\tfields: Field< Item >[]\n): {\n\tdata: Item[];\n\tpaginationInfo: { totalItems: number; totalPages: number };\n} {\n\tif ( ! data ) {\n\t\treturn {\n\t\t\tdata: EMPTY_ARRAY,\n\t\t\tpaginationInfo: { totalItems: 0, totalPages: 0 },\n\t\t};\n\t}\n\tconst _fields = normalizeFields( fields );\n\tlet filteredData = [ ...data ];\n\t// Handle global search.\n\tif ( view.search ) {\n\t\tconst normalizedSearch = normalizeSearchInput( view.search );\n\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\treturn _fields\n\t\t\t\t.filter( ( field ) => field.enableGlobalSearch )\n\t\t\t\t.some( ( field ) => {\n\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\tconst values = Array.isArray( fieldValue )\n\t\t\t\t\t\t? fieldValue\n\t\t\t\t\t\t: [ fieldValue ];\n\t\t\t\t\treturn values.some( ( value ) =>\n\t\t\t\t\t\tnormalizeSearchInput( String( value ) ).includes(\n\t\t\t\t\t\t\tnormalizedSearch\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t} );\n\t}\n\n\tif ( view.filters && view.filters?.length > 0 ) {\n\t\tview.filters.forEach( ( filter ) => {\n\t\t\tconst field = _fields.find(\n\t\t\t\t( _field ) => _field.id === filter.field\n\t\t\t);\n\t\t\tif ( field ) {\n\t\t\t\tif (\n\t\t\t\t\tfilter.operator === OPERATOR_IS_ANY &&\n\t\t\t\t\tfilter?.value?.length > 0\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\tif ( Array.isArray( fieldValue ) ) {\n\t\t\t\t\t\t\treturn filter.value.some( ( filterValue: any ) =>\n\t\t\t\t\t\t\t\tfieldValue.includes( filterValue )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if ( typeof fieldValue === 'string' ) {\n\t\t\t\t\t\t\treturn filter.value.includes( fieldValue );\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_IS_NONE &&\n\t\t\t\t\tfilter?.value?.length > 0\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\tif ( Array.isArray( fieldValue ) ) {\n\t\t\t\t\t\t\treturn ! filter.value.some( ( filterValue: any ) =>\n\t\t\t\t\t\t\t\tfieldValue.includes( filterValue )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if ( typeof fieldValue === 'string' ) {\n\t\t\t\t\t\t\treturn ! filter.value.includes( fieldValue );\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_IS_ALL &&\n\t\t\t\t\tfilter?.value?.length > 0\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\treturn filter.value.every( ( value: any ) => {\n\t\t\t\t\t\t\treturn field\n\t\t\t\t\t\t\t\t.getValue( { item } )\n\t\t\t\t\t\t\t\t?.includes( value );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_IS_NOT_ALL &&\n\t\t\t\t\tfilter?.value?.length > 0\n\t\t\t\t) {\n\t\t\t\t\tdeprecated( \"The 'isNotAll' filter operator\", {\n\t\t\t\t\t\tsince: '7.0',\n\t\t\t\t\t\talternative: \"'isNone'\",\n\t\t\t\t\t} );\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\treturn filter.value.every( ( value: any ) => {\n\t\t\t\t\t\t\treturn ! field\n\t\t\t\t\t\t\t\t.getValue( { item } )\n\t\t\t\t\t\t\t\t?.includes( value );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t} else if ( filter.operator === OPERATOR_IS ) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tfilter.value === field.getValue( { item } ) ||\n\t\t\t\t\t\t\tfilter.value === undefined\n\t\t\t\t\t\t);\n\t\t\t\t\t} );\n\t\t\t\t} else if ( filter.operator === OPERATOR_IS_NOT ) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\treturn filter.value !== field.getValue( { item } );\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_ON &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tconst filterDate = getDate( filter.value );\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldDate = getDate( field.getValue( { item } ) );\n\t\t\t\t\t\treturn filterDate.getTime() === fieldDate.getTime();\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_NOT_ON &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tconst filterDate = getDate( filter.value );\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldDate = getDate( field.getValue( { item } ) );\n\t\t\t\t\t\treturn filterDate.getTime() !== fieldDate.getTime();\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_LESS_THAN &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\treturn fieldValue < filter.value;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_GREATER_THAN &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\treturn fieldValue > filter.value;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_LESS_THAN_OR_EQUAL &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\treturn fieldValue <= filter.value;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_GREATER_THAN_OR_EQUAL &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\treturn fieldValue >= filter.value;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_CONTAINS &&\n\t\t\t\t\tfilter?.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\ttypeof fieldValue === 'string' &&\n\t\t\t\t\t\t\tfilter.value &&\n\t\t\t\t\t\t\tfieldValue\n\t\t\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t\t\t.includes(\n\t\t\t\t\t\t\t\t\tString( filter.value ).toLowerCase()\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_NOT_CONTAINS &&\n\t\t\t\t\tfilter?.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\ttypeof fieldValue === 'string' &&\n\t\t\t\t\t\t\tfilter.value &&\n\t\t\t\t\t\t\t! fieldValue\n\t\t\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t\t\t.includes(\n\t\t\t\t\t\t\t\t\tString( filter.value ).toLowerCase()\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_STARTS_WITH &&\n\t\t\t\t\tfilter?.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\ttypeof fieldValue === 'string' &&\n\t\t\t\t\t\t\tfilter.value &&\n\t\t\t\t\t\t\tfieldValue\n\t\t\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t\t\t.startsWith(\n\t\t\t\t\t\t\t\t\tString( filter.value ).toLowerCase()\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_BEFORE &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tconst filterValue = getDate( filter.value );\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = getDate(\n\t\t\t\t\t\t\tfield.getValue( { item } )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn fieldValue < filterValue;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_AFTER &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tconst filterValue = getDate( filter.value );\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = getDate(\n\t\t\t\t\t\t\tfield.getValue( { item } )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn fieldValue > filterValue;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_BEFORE_INC &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tconst filterValue = getDate( filter.value );\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = getDate(\n\t\t\t\t\t\t\tfield.getValue( { item } )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn fieldValue <= filterValue;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_AFTER_INC &&\n\t\t\t\t\tfilter.value !== undefined\n\t\t\t\t) {\n\t\t\t\t\tconst filterValue = getDate( filter.value );\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = getDate(\n\t\t\t\t\t\t\tfield.getValue( { item } )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn fieldValue >= filterValue;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_BETWEEN &&\n\t\t\t\t\tArray.isArray( filter.value ) &&\n\t\t\t\t\tfilter.value.length === 2 &&\n\t\t\t\t\tfilter.value[ 0 ] !== undefined &&\n\t\t\t\t\tfilter.value[ 1 ] !== undefined\n\t\t\t\t) {\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = field.getValue( { item } );\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof fieldValue === 'number' ||\n\t\t\t\t\t\t\tfieldValue instanceof Date ||\n\t\t\t\t\t\t\ttypeof fieldValue === 'string'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\tfieldValue >= filter.value[ 0 ] &&\n\t\t\t\t\t\t\t\tfieldValue <= filter.value[ 1 ]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_IN_THE_PAST &&\n\t\t\t\t\tfilter.value?.value !== undefined &&\n\t\t\t\t\tfilter.value?.unit !== undefined\n\t\t\t\t) {\n\t\t\t\t\tconst targetDate = getRelativeDate(\n\t\t\t\t\t\tfilter.value.value,\n\t\t\t\t\t\tfilter.value.unit\n\t\t\t\t\t);\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = getDate(\n\t\t\t\t\t\t\tfield.getValue( { item } )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tfieldValue >= targetDate && fieldValue <= new Date()\n\t\t\t\t\t\t);\n\t\t\t\t\t} );\n\t\t\t\t} else if (\n\t\t\t\t\tfilter.operator === OPERATOR_OVER &&\n\t\t\t\t\tfilter.value?.value !== undefined &&\n\t\t\t\t\tfilter.value?.unit !== undefined\n\t\t\t\t) {\n\t\t\t\t\tconst targetDate = getRelativeDate(\n\t\t\t\t\t\tfilter.value.value,\n\t\t\t\t\t\tfilter.value.unit\n\t\t\t\t\t);\n\t\t\t\t\tfilteredData = filteredData.filter( ( item ) => {\n\t\t\t\t\t\tconst fieldValue = getDate(\n\t\t\t\t\t\t\tfield.getValue( { item } )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn fieldValue < targetDate;\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t// Handle sorting.\n\tconst sortByField = view.sort?.field\n\t\t? _fields.find( ( field ) => {\n\t\t\t\treturn (\n\t\t\t\t\tfield.enableSorting !== false &&\n\t\t\t\t\tfield.id === view.sort?.field\n\t\t\t\t);\n\t\t  } )\n\t\t: null;\n\tconst groupByField = view.groupBy?.field\n\t\t? _fields.find( ( field ) => {\n\t\t\t\treturn (\n\t\t\t\t\tfield.enableSorting !== false &&\n\t\t\t\t\tfield.id === view.groupBy?.field\n\t\t\t\t);\n\t\t  } )\n\t\t: null;\n\tif ( sortByField || groupByField ) {\n\t\tfilteredData.sort( ( a, b ) => {\n\t\t\tif ( groupByField ) {\n\t\t\t\tconst groupCompare = groupByField.sort(\n\t\t\t\t\ta,\n\t\t\t\t\tb,\n\t\t\t\t\tview.groupBy?.direction ?? 'asc'\n\t\t\t\t);\n\n\t\t\t\t// If items are in different groups, return the group comparison result.\n\t\t\t\t// Otherwise, fall back to sorting by the sort field.\n\t\t\t\tif ( groupCompare !== 0 ) {\n\t\t\t\t\treturn groupCompare;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( sortByField ) {\n\t\t\t\treturn sortByField.sort( a, b, view.sort?.direction ?? 'desc' );\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t} );\n\t}\n\n\t// Handle pagination.\n\tlet totalItems = filteredData.length;\n\tlet totalPages = 1;\n\tif ( view.page !== undefined && view.perPage !== undefined ) {\n\t\tconst start = ( view.page - 1 ) * view.perPage;\n\t\ttotalItems = filteredData?.length || 0;\n\t\ttotalPages = Math.ceil( totalItems / view.perPage );\n\t\tfilteredData = filteredData?.slice( start, start + view.perPage );\n\t}\n\n\treturn {\n\t\tdata: filteredData,\n\t\tpaginationInfo: {\n\t\t\ttotalItems,\n\t\t\ttotalPages,\n\t\t},\n\t};\n}\n", "var has = Object.prototype.hasOwnProperty;\n\nfunction find(iter, tar, key) {\n\tfor (key of iter.keys()) {\n\t\tif (dequal(key, tar)) return key;\n\t}\n}\n\nexport function dequal(foo, bar) {\n\tvar ctor, len, tmp;\n\tif (foo === bar) return true;\n\n\tif (foo && bar && (ctor=foo.constructor) === bar.constructor) {\n\t\tif (ctor === Date) return foo.getTime() === bar.getTime();\n\t\tif (ctor === RegExp) return foo.toString() === bar.toString();\n\n\t\tif (ctor === Array) {\n\t\t\tif ((len=foo.length) === bar.length) {\n\t\t\t\twhile (len-- && dequal(foo[len], bar[len]));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (ctor === Set) {\n\t\t\tif (foo.size !== bar.size) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (len of foo) {\n\t\t\t\ttmp = len;\n\t\t\t\tif (tmp && typeof tmp === 'object') {\n\t\t\t\t\ttmp = find(bar, tmp);\n\t\t\t\t\tif (!tmp) return false;\n\t\t\t\t}\n\t\t\t\tif (!bar.has(tmp)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (ctor === Map) {\n\t\t\tif (foo.size !== bar.size) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (len of foo) {\n\t\t\t\ttmp = len[0];\n\t\t\t\tif (tmp && typeof tmp === 'object') {\n\t\t\t\t\ttmp = find(bar, tmp);\n\t\t\t\t\tif (!tmp) return false;\n\t\t\t\t}\n\t\t\t\tif (!dequal(len[1], bar.get(tmp))) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (ctor === ArrayBuffer) {\n\t\t\tfoo = new Uint8Array(foo);\n\t\t\tbar = new Uint8Array(bar);\n\t\t} else if (ctor === DataView) {\n\t\t\tif ((len=foo.byteLength) === bar.byteLength) {\n\t\t\t\twhile (len-- && foo.getInt8(len) === bar.getInt8(len));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (ArrayBuffer.isView(foo)) {\n\t\t\tif ((len=foo.byteLength) === bar.byteLength) {\n\t\t\t\twhile (len-- && foo[len] === bar[len]);\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (!ctor || typeof foo === 'object') {\n\t\t\tlen = 0;\n\t\t\tfor (ctor in foo) {\n\t\t\t\tif (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n\t\t\t\tif (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;\n\t\t\t}\n\t\t\treturn Object.keys(bar).length === len;\n\t\t}\n\t}\n\n\treturn foo !== foo && bar !== bar;\n}\n", "/**\n * Generates a unique preference key for a DataViews view.\n *\n * @param kind The entity kind (e.g., 'postType', 'root')\n * @param name The specific entity name (e.g., 'post', 'user', 'site')\n * @param slug The specific entity slug (e.g., 'category', 'post', 'all')\n * @return The preference key string\n */\nexport function generatePreferenceKey(\n\tkind: string,\n\tname: string,\n\tslug: string\n): string {\n\treturn `dataviews-${ kind }-${ name }-${ slug }`;\n}\n", "/**\n * External dependencies\n */\nimport { dequal } from 'dequal';\n\n/**\n * Internal dependencies\n */\nimport { generatePreferenceKey } from './preference-keys';\nimport type { ViewConfig } from './types';\n\n/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport type { View } from '@wordpress/dataviews';\n// @ts-ignore - Preferences package is not typed\nimport { store as preferencesStore } from '@wordpress/preferences';\n\ninterface UseViewReturn {\n\tview: View;\n\tisModified: boolean;\n\tupdateView: ( newView: View ) => void;\n\tresetToDefault: () => void;\n}\n\nfunction omit< T extends object, K extends keyof T >(\n\tobj: T,\n\tkeys: K[]\n): Omit< T, K > {\n\tconst result = { ...obj };\n\tfor ( const key of keys ) {\n\t\tdelete result[ key ];\n\t}\n\treturn result;\n}\n\n/**\n * Hook for managing DataViews view state with local persistence.\n *\n * @param config                     Configuration object for loading the view.\n * @param config.kind                Entity kind (e.g., 'postType', 'taxonomy', 'root').\n * @param config.name                Specific entity name.\n * @param config.slug                View identifier.\n * @param config.defaultView         Default view configuration.\n * @param config.queryParams         Object with `page` and/or `search` from URL.\n * @param config.onChangeQueryParams Optional callback to update URL parameters.\n *\n * @return Object with current view, modification state, and update functions.\n */\nexport function useView( config: ViewConfig ): UseViewReturn {\n\tconst { kind, name, slug, defaultView, queryParams, onChangeQueryParams } =\n\t\tconfig;\n\n\tconst preferenceKey = generatePreferenceKey( kind, name, slug );\n\tconst persistedView: View | undefined = useSelect(\n\t\t( select ) => {\n\t\t\treturn select( preferencesStore ).get(\n\t\t\t\t'core/views',\n\t\t\t\tpreferenceKey\n\t\t\t) as View | undefined;\n\t\t},\n\t\t[ preferenceKey ]\n\t);\n\tconst { set } = useDispatch( preferencesStore );\n\n\tconst baseView: View = persistedView ?? defaultView;\n\tconst page = Number( queryParams?.page ?? baseView.page ?? 1 );\n\tconst search = queryParams?.search ?? baseView.search ?? '';\n\n\t// Merge URL query parameters (page, search) into the view\n\tconst view: View = useMemo( () => {\n\t\treturn {\n\t\t\t...baseView,\n\t\t\tpage,\n\t\t\tsearch,\n\t\t};\n\t}, [ baseView, page, search ] );\n\n\tconst isModified = !! persistedView;\n\n\tconst updateView = useCallback(\n\t\t( newView: View ) => {\n\t\t\t// Extract URL params (page, search) from the new view\n\t\t\tconst urlParams: { page?: number; search?: string } = {\n\t\t\t\tpage: newView?.page,\n\t\t\t\tsearch: newView?.search,\n\t\t\t};\n\t\t\tconst preferenceView = omit( newView, [ 'page', 'search' ] );\n\n\t\t\t// If we have URL handling enabled, separate URL state from preference state\n\t\t\tif (\n\t\t\t\tonChangeQueryParams &&\n\t\t\t\t! dequal( urlParams, { page, search } )\n\t\t\t) {\n\t\t\t\tonChangeQueryParams( urlParams );\n\t\t\t}\n\n\t\t\t// Only persist non-URL preferences if different from baseView\n\t\t\tif ( ! dequal( baseView, preferenceView ) ) {\n\t\t\t\tif ( dequal( preferenceView, defaultView ) ) {\n\t\t\t\t\tset( 'core/views', preferenceKey, undefined );\n\t\t\t\t} else {\n\t\t\t\t\tset( 'core/views', preferenceKey, preferenceView );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tonChangeQueryParams,\n\t\t\tpage,\n\t\t\tsearch,\n\t\t\tbaseView,\n\t\t\tdefaultView,\n\t\t\tset,\n\t\t\tpreferenceKey,\n\t\t]\n\t);\n\n\tconst resetToDefault = useCallback( () => {\n\t\tset( 'core/views', preferenceKey, undefined );\n\t}, [ preferenceKey, set ] );\n\n\treturn {\n\t\tview,\n\t\tisModified,\n\t\tupdateView,\n\t\tresetToDefault,\n\t};\n}\n", "/**\n * WordPress dependencies\n */\nimport { select } from '@wordpress/data';\n// @ts-ignore - Preferences package is not typed\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport type { View } from '@wordpress/dataviews';\n\n/**\n * Internal dependencies\n */\nimport { generatePreferenceKey } from './preference-keys';\nimport type { ViewConfig } from './types';\n\n/**\n * Async function for loading view state in route loaders with optional URL parameters.\n *\n * @example\n *\n * ```typescript\n * // In route loader\n * const view = await loadView( {\n * \tkind: 'taxonomy',\n * \tname: 'category',\n * \tslug: 'all',\n * \tdefaultView,\n * \tqueryParams: { page: search.page, search: search.search },\n * } );\n * ```\n *\n * @param config             Configuration object for loading the view.\n * @param config.kind        Entity kind (e.g., 'postType', 'taxonomy', 'root').\n * @param config.name        Specific entity name.\n * @param config.slug        View identifier.\n * @param config.defaultView Default view configuration.\n * @param config.queryParams Object with `page` and/or `search` from URL.\n *\n * @return Promise resolving to the loaded view object.\n */\nexport async function loadView( config: ViewConfig ) {\n\tconst { kind, name, slug, defaultView, queryParams } = config;\n\tconst preferenceKey = generatePreferenceKey( kind, name, slug );\n\tconst persistedView: View | undefined = select( preferencesStore ).get(\n\t\t'core/views',\n\t\tpreferenceKey\n\t) as View | undefined;\n\n\tconst baseView = persistedView ?? defaultView;\n\tconst page = queryParams?.page ?? 1;\n\tconst search = queryParams?.search ?? '';\n\n\treturn {\n\t\t...baseView,\n\t\tpage,\n\t\tsearch,\n\t};\n}\n", "/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\nimport { generateGlobalStyles } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as editSiteStore } from '../../store';\nimport { filterOutDuplicatesByName } from './utils';\n\nconst { useGlobalStyles } = unlock( editorPrivateApis );\n\nexport default function usePatternSettings() {\n\t/*\n\t * Generate global styles directly because block previews use a separate\n\t * ExperimentalBlockEditorProvider and can't access GlobalStylesRenderer's output.\n\t * Reading config from useGlobalStyles and generating CSS directly keeps us in sync.\n\t * See: https://github.com/WordPress/gutenberg/issues/73350\n\t */\n\tconst { merged: mergedConfig } = useGlobalStyles();\n\n\tconst storedSettings = useSelect( ( select ) => {\n\t\tconst { getSettings } = unlock( select( editSiteStore ) );\n\t\treturn getSettings();\n\t}, [] );\n\n\tconst settingsBlockPatterns =\n\t\tstoredSettings.__experimentalAdditionalBlockPatterns ?? // WP 6.0\n\t\tstoredSettings.__experimentalBlockPatterns; // WP 5.9\n\n\tconst restBlockPatterns = useSelect(\n\t\t( select ) => select( coreStore ).getBlockPatterns(),\n\t\t[]\n\t);\n\n\tconst blockPatterns = useMemo(\n\t\t() =>\n\t\t\t[\n\t\t\t\t...( settingsBlockPatterns || [] ),\n\t\t\t\t...( restBlockPatterns || [] ),\n\t\t\t].filter( filterOutDuplicatesByName ),\n\t\t[ settingsBlockPatterns, restBlockPatterns ]\n\t);\n\n\tconst [ globalStyles, globalSettings ] = useMemo( () => {\n\t\treturn generateGlobalStyles( mergedConfig, [], {\n\t\t\tdisableRootPadding: false,\n\t\t} );\n\t}, [ mergedConfig ] );\n\n\tconst settings = useMemo( () => {\n\t\tconst {\n\t\t\t__experimentalAdditionalBlockPatterns,\n\t\t\tstyles,\n\t\t\t__experimentalFeatures,\n\t\t\t...restStoredSettings\n\t\t} = storedSettings;\n\n\t\treturn {\n\t\t\t...restStoredSettings,\n\t\t\tstyles: globalStyles,\n\t\t\t__experimentalFeatures: globalSettings,\n\t\t\t__experimentalBlockPatterns: blockPatterns,\n\t\t\tisPreviewMode: true,\n\t\t};\n\t}, [ storedSettings, blockPatterns, globalStyles, globalSettings ] );\n\n\treturn settings;\n}\n", "/**\n * WordPress dependencies\n */\nimport { DropdownMenu, MenuGroup } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport AddNewPattern from '../add-new-pattern';\nimport RenameCategoryMenuItem from './rename-category-menu-item';\nimport DeleteCategoryMenuItem from './delete-category-menu-item';\nimport usePatternCategories from '../sidebar-navigation-screen-patterns/use-pattern-categories';\nimport { PATTERN_TYPES } from '../../utils/constants';\n\nexport default function PatternsActions( { categoryId, type } ) {\n\tconst { patternCategories } = usePatternCategories();\n\tlet patternCategory;\n\tif ( type === PATTERN_TYPES.user && !! categoryId ) {\n\t\tpatternCategory = patternCategories.find(\n\t\t\t( category ) => category.name === categoryId\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<AddNewPattern />\n\t\t\t{ !! patternCategory?.id && (\n\t\t\t\t<DropdownMenu\n\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\tlabel={ __( 'Actions' ) }\n\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\tclassName: 'edit-site-patterns__button',\n\t\t\t\t\t\tsize: 'compact',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t<RenameCategoryMenuItem\n\t\t\t\t\t\t\t\tcategory={ patternCategory }\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<DeleteCategoryMenuItem\n\t\t\t\t\t\t\t\tcategory={ patternCategory }\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t</DropdownMenu>\n\t\t\t) }\n\t\t</>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { DropdownMenu } from '@wordpress/components';\nimport { useState, useRef } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { symbol, symbolFilled, upload } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport {\n\tprivateApis as editPatternsPrivateApis,\n\tstore as patternsStore,\n} from '@wordpress/patterns';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport {\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tTEMPLATE_PART_POST_TYPE,\n} from '../../utils/constants';\n\nconst { useHistory, useLocation } = unlock( routerPrivateApis );\nconst { CreatePatternModal, useAddPatternCategory } = unlock(\n\teditPatternsPrivateApis\n);\nconst { CreateTemplatePartModal } = unlock( editorPrivateApis );\n\nexport default function AddNewPattern() {\n\tconst history = useHistory();\n\tconst location = useLocation();\n\tconst [ showPatternModal, setShowPatternModal ] = useState( false );\n\tconst [ showTemplatePartModal, setShowTemplatePartModal ] =\n\t\tuseState( false );\n\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\tconst { createPatternFromFile } = unlock( useDispatch( patternsStore ) );\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst patternUploadInputRef = useRef();\n\tconst {\n\t\tisBlockBasedTheme,\n\t\taddNewPatternLabel,\n\t\taddNewTemplatePartLabel,\n\t\tcanCreatePattern,\n\t\tcanCreateTemplatePart,\n\t} = useSelect( ( select ) => {\n\t\tconst { getCurrentTheme, getPostType, canUser } = select( coreStore );\n\t\treturn {\n\t\t\tisBlockBasedTheme: getCurrentTheme()?.is_block_theme,\n\t\t\taddNewPatternLabel: getPostType( PATTERN_TYPES.user )?.labels\n\t\t\t\t?.add_new_item,\n\t\t\taddNewTemplatePartLabel: getPostType( TEMPLATE_PART_POST_TYPE )\n\t\t\t\t?.labels?.add_new_item,\n\t\t\t// Blocks refers to the wp_block post type, this checks the ability to create a post of that type.\n\t\t\tcanCreatePattern: canUser( 'create', {\n\t\t\t\tkind: 'postType',\n\t\t\t\tname: PATTERN_TYPES.user,\n\t\t\t} ),\n\t\t\tcanCreateTemplatePart: canUser( 'create', {\n\t\t\t\tkind: 'postType',\n\t\t\t\tname: TEMPLATE_PART_POST_TYPE,\n\t\t\t} ),\n\t\t};\n\t}, [] );\n\n\tfunction handleCreatePattern( { pattern } ) {\n\t\tsetShowPatternModal( false );\n\t\thistory.navigate(\n\t\t\t`/${ PATTERN_TYPES.user }/${ pattern.id }?canvas=edit`\n\t\t);\n\t}\n\n\tfunction handleCreateTemplatePart( templatePart ) {\n\t\tsetShowTemplatePartModal( false );\n\t\thistory.navigate(\n\t\t\t`/${ TEMPLATE_PART_POST_TYPE }/${ templatePart.id }?canvas=edit`\n\t\t);\n\t}\n\n\tfunction handleError() {\n\t\tsetShowPatternModal( false );\n\t\tsetShowTemplatePartModal( false );\n\t}\n\n\tconst controls = [];\n\tif ( canCreatePattern ) {\n\t\tcontrols.push( {\n\t\t\ticon: symbol,\n\t\t\tonClick: () => setShowPatternModal( true ),\n\t\t\ttitle: addNewPatternLabel,\n\t\t} );\n\t}\n\n\tif ( isBlockBasedTheme && canCreateTemplatePart ) {\n\t\tcontrols.push( {\n\t\t\ticon: symbolFilled,\n\t\t\tonClick: () => setShowTemplatePartModal( true ),\n\t\t\ttitle: addNewTemplatePartLabel,\n\t\t} );\n\t}\n\n\tif ( canCreatePattern ) {\n\t\tcontrols.push( {\n\t\t\ticon: upload,\n\t\t\tonClick: () => {\n\t\t\t\tpatternUploadInputRef.current.click();\n\t\t\t},\n\t\t\ttitle: __( 'Import pattern from JSON' ),\n\t\t} );\n\t}\n\n\tconst { categoryMap, findOrCreateTerm } = useAddPatternCategory();\n\tif ( controls.length === 0 ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<>\n\t\t\t{ addNewPatternLabel && (\n\t\t\t\t<DropdownMenu\n\t\t\t\t\tcontrols={ controls }\n\t\t\t\t\ticon={ null }\n\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\t\tshowTooltip: false,\n\t\t\t\t\t\t__next40pxDefaultSize: true,\n\t\t\t\t\t} }\n\t\t\t\t\ttext={ addNewPatternLabel }\n\t\t\t\t\tlabel={ addNewPatternLabel }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showPatternModal && (\n\t\t\t\t<CreatePatternModal\n\t\t\t\t\tonClose={ () => setShowPatternModal( false ) }\n\t\t\t\t\tonSuccess={ handleCreatePattern }\n\t\t\t\t\tonError={ handleError }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showTemplatePartModal && (\n\t\t\t\t<CreateTemplatePartModal\n\t\t\t\t\tcloseModal={ () => setShowTemplatePartModal( false ) }\n\t\t\t\t\tblocks={ [] }\n\t\t\t\t\tonCreate={ handleCreateTemplatePart }\n\t\t\t\t\tonError={ handleError }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\taccept=\".json\"\n\t\t\t\thidden\n\t\t\t\tref={ patternUploadInputRef }\n\t\t\t\tonChange={ async ( event ) => {\n\t\t\t\t\tconst file = event.target.files?.[ 0 ];\n\t\t\t\t\tif ( ! file ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet currentCategoryId;\n\t\t\t\t\t\t// When we're not handling template parts, we should\n\t\t\t\t\t\t// add or create the proper pattern category.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tlocation.query.postType !== TEMPLATE_PART_POST_TYPE\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * categoryMap.values() returns an iterator.\n\t\t\t\t\t\t\t * Iterator.prototype.find() is not yet widely supported.\n\t\t\t\t\t\t\t * Convert to array to use the Array.prototype.find method.\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\tconst currentCategory = Array.from(\n\t\t\t\t\t\t\t\tcategoryMap.values()\n\t\t\t\t\t\t\t).find(\n\t\t\t\t\t\t\t\t( term ) =>\n\t\t\t\t\t\t\t\t\tterm.name === location.query.categoryId\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif ( currentCategory ) {\n\t\t\t\t\t\t\t\tcurrentCategoryId =\n\t\t\t\t\t\t\t\t\tcurrentCategory.id ||\n\t\t\t\t\t\t\t\t\t( await findOrCreateTerm(\n\t\t\t\t\t\t\t\t\t\tcurrentCategory.label\n\t\t\t\t\t\t\t\t\t) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst pattern = await createPatternFromFile(\n\t\t\t\t\t\t\tfile,\n\t\t\t\t\t\t\tcurrentCategoryId\n\t\t\t\t\t\t\t\t? [ currentCategoryId ]\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// Navigate to the All patterns category for the newly created pattern\n\t\t\t\t\t\t// if we're not on that page already and if we're not in the `my-patterns`\n\t\t\t\t\t\t// category.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! currentCategoryId &&\n\t\t\t\t\t\t\tlocation.query.categoryId !== 'my-patterns'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\thistory.navigate(\n\t\t\t\t\t\t\t\t`/pattern?categoryId=${ PATTERN_DEFAULT_CATEGORY }`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// translators: %s: The imported pattern's title.\n\t\t\t\t\t\t\t\t__( 'Imported \"%s\" from JSON.' ),\n\t\t\t\t\t\t\t\tpattern.title.raw\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\t\tid: 'import-pattern-success',\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch ( err ) {\n\t\t\t\t\t\tcreateErrorNotice( err.message, {\n\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\tid: 'import-pattern-error',\n\t\t\t\t\t\t} );\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tevent.target.value = '';\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t/>\n\t\t</>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\n/**\n * Internal dependencies\n */\nimport usePatternCategories from '../sidebar-navigation-screen-patterns/use-pattern-categories';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst { RenamePatternCategoryModal } = unlock( patternsPrivateApis );\n\nexport default function RenameCategoryMenuItem( { category, onClose } ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem onClick={ () => setIsModalOpen( true ) }>\n\t\t\t\t{ __( 'Rename' ) }\n\t\t\t</MenuItem>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<RenameModal\n\t\t\t\t\tcategory={ category }\n\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction RenameModal( { category, onClose } ) {\n\t// User created pattern categories have their properties updated when\n\t// retrieved via `getUserPatternCategories`. The rename modal expects an\n\t// object that will match the pattern category entity.\n\tconst normalizedCategory = {\n\t\tid: category.id,\n\t\tslug: category.slug,\n\t\tname: category.label,\n\t};\n\n\t// Optimization - only use pattern categories when the modal is open.\n\tconst existingCategories = usePatternCategories();\n\n\treturn (\n\t\t<RenamePatternCategoryModal\n\t\t\tcategory={ normalizedCategory }\n\t\t\texistingCategories={ existingCategories }\n\t\t\tonClose={ onClose }\n\t\t\toverlayClassName=\"edit-site-list__rename-modal\"\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"small\"\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\tMenuItem,\n\t__experimentalConfirmDialog as ConfirmDialog,\n} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { PATTERN_TYPES, PATTERN_DEFAULT_CATEGORY } from '../../utils/constants';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nexport default function DeleteCategoryMenuItem( { category, onClose } ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst history = useHistory();\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst { deleteEntityRecord, invalidateResolution } =\n\t\tuseDispatch( coreStore );\n\n\tconst onDelete = async () => {\n\t\ttry {\n\t\t\tawait deleteEntityRecord(\n\t\t\t\t'taxonomy',\n\t\t\t\t'wp_pattern_category',\n\t\t\t\tcategory.id,\n\t\t\t\t{ force: true },\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\t// Prevent the need to refresh the page to get up-to-date categories\n\t\t\t// and pattern categorization.\n\t\t\tinvalidateResolution( 'getUserPatternCategories' );\n\t\t\tinvalidateResolution( 'getEntityRecords', [\n\t\t\t\t'postType',\n\t\t\t\tPATTERN_TYPES.user,\n\t\t\t\t{ per_page: -1 },\n\t\t\t] );\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: The pattern category's name */\n\t\t\t\t\t_x( '\"%s\" deleted.', 'pattern category' ),\n\t\t\t\t\tcategory.label\n\t\t\t\t),\n\t\t\t\t{ type: 'snackbar', id: 'pattern-category-delete' }\n\t\t\t);\n\n\t\t\tonClose?.();\n\t\t\thistory.navigate(\n\t\t\t\t`/pattern?categoryId=${ PATTERN_DEFAULT_CATEGORY }`\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __(\n\t\t\t\t\t\t\t'An error occurred while deleting the pattern category.'\n\t\t\t\t\t  );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-category-delete',\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem isDestructive onClick={ () => setIsModalOpen( true ) }>\n\t\t\t\t{ __( 'Delete' ) }\n\t\t\t</MenuItem>\n\t\t\t<ConfirmDialog\n\t\t\t\tisOpen={ isModalOpen }\n\t\t\t\tonConfirm={ onDelete }\n\t\t\t\tonCancel={ () => setIsModalOpen( false ) }\n\t\t\t\tconfirmButtonText={ __( 'Delete' ) }\n\t\t\t\tclassName=\"edit-site-patterns__delete-modal\"\n\t\t\t\ttitle={ sprintf(\n\t\t\t\t\t// translators: %s: The pattern category's name.\n\t\t\t\t\t_x( 'Delete \"%s\"?', 'pattern category' ),\n\t\t\t\t\tdecodeEntities( category.label )\n\t\t\t\t) }\n\t\t\t\tsize=\"medium\"\n\t\t\t\t__experimentalHideHeader={ false }\n\t\t\t>\n\t\t\t\t{ sprintf(\n\t\t\t\t\t// translators: %s: The pattern category's name.\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Are you sure you want to delete the category \"%s\"? The patterns will not be deleted.'\n\t\t\t\t\t),\n\t\t\t\t\tdecodeEntities( category.label )\n\t\t\t\t) }\n\t\t\t</ConfirmDialog>\n\t\t</>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { pencil } from '@wordpress/icons';\nimport { useMemo } from '@wordpress/element';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { PATTERN_TYPES } from '../../utils/constants';\nimport { unlock } from '../../lock-unlock';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nexport const useSetActiveTemplateAction = () => {\n\tconst activeTheme = useSelect( ( select ) =>\n\t\tselect( coreStore ).getCurrentTheme()\n\t);\n\tconst { getEntityRecord } = useSelect( coreStore );\n\tconst { editEntityRecord, saveEditedEntityRecord } =\n\t\tuseDispatch( coreStore );\n\treturn useMemo(\n\t\t() => ( {\n\t\t\tid: 'set-active-template',\n\t\t\tlabel( items ) {\n\t\t\t\treturn items.some( ( item ) => item._isActive )\n\t\t\t\t\t? __( 'Deactivate' )\n\t\t\t\t\t: __( 'Activate' );\n\t\t\t},\n\t\t\tisPrimary: true,\n\t\t\ticon: pencil,\n\t\t\tisEligible( item ) {\n\t\t\t\tif ( item.theme !== activeTheme.stylesheet ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// If it's not a created template but a registered template,\n\t\t\t\t// only allow activating (so when it's inactive).\n\t\t\t\tif ( typeof item.id !== 'number' ) {\n\t\t\t\t\treturn item._isActive === false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tasync callback( items ) {\n\t\t\t\tconst deactivate = items.some( ( item ) => item._isActive );\n\t\t\t\t// current active templates\n\t\t\t\tconst activeTemplates = {\n\t\t\t\t\t...( ( await getEntityRecord( 'root', 'site' )\n\t\t\t\t\t\t.active_templates ) ?? {} ),\n\t\t\t\t};\n\t\t\t\tfor ( const item of items ) {\n\t\t\t\t\tif ( deactivate ) {\n\t\t\t\t\t\tdelete activeTemplates[ item.slug ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tactiveTemplates[ item.slug ] = item.id;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tawait editEntityRecord( 'root', 'site', undefined, {\n\t\t\t\t\tactive_templates: activeTemplates,\n\t\t\t\t} );\n\t\t\t\tawait saveEditedEntityRecord( 'root', 'site' );\n\t\t\t},\n\t\t} ),\n\t\t[\n\t\t\teditEntityRecord,\n\t\t\tsaveEditedEntityRecord,\n\t\t\tgetEntityRecord,\n\t\t\tactiveTheme,\n\t\t]\n\t);\n};\n\nexport const useEditPostAction = () => {\n\tconst history = useHistory();\n\treturn useMemo(\n\t\t() => ( {\n\t\t\tid: 'edit-post',\n\t\t\tlabel: __( 'Edit' ),\n\t\t\tisPrimary: true,\n\t\t\ticon: pencil,\n\t\t\tisEligible( post ) {\n\t\t\t\tif ( post.status === 'trash' ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// It's eligible for all post types except theme patterns.\n\t\t\t\treturn post.type !== PATTERN_TYPES.theme;\n\t\t\t},\n\t\t\tcallback( items ) {\n\t\t\t\tconst post = items[ 0 ];\n\t\t\t\thistory.navigate( `/${ post.type }/${ post.id }?canvas=edit` );\n\t\t\t},\n\t\t} ),\n\t\t[ history ]\n\t);\n};\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __experimentalHStack as HStack } from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useState, useMemo, useId } from '@wordpress/element';\nimport { BlockPreview } from '@wordpress/block-editor';\nimport { Icon } from '@wordpress/icons';\nimport { parse } from '@wordpress/blocks';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport {\n\tTEMPLATE_PART_POST_TYPE,\n\tPATTERN_SYNC_TYPES,\n\tOPERATOR_IS,\n} from '../../utils/constants';\nimport { useAddedBy } from '../page-templates/hooks';\nimport { unlock } from '../../lock-unlock';\n\nconst { useStyle } = unlock( editorPrivateApis );\n\nfunction PreviewField( { item } ) {\n\tconst descriptionId = useId();\n\tconst description = item.description || item?.excerpt?.raw;\n\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\tconst backgroundColor = useStyle( 'color.background' );\n\tconst blocks = useMemo( () => {\n\t\treturn (\n\t\t\titem.blocks ??\n\t\t\tparse( item.content.raw, {\n\t\t\t\t__unstableSkipMigrationLogs: true,\n\t\t\t} )\n\t\t);\n\t}, [ item?.content?.raw, item.blocks ] );\n\tconst isEmpty = ! blocks?.length;\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"page-patterns-preview-field\"\n\t\t\tstyle={ { backgroundColor } }\n\t\t\taria-describedby={ !! description ? descriptionId : undefined }\n\t\t>\n\t\t\t{ isEmpty && isTemplatePart && __( 'Empty template part' ) }\n\t\t\t{ isEmpty && ! isTemplatePart && __( 'Empty pattern' ) }\n\t\t\t{ ! isEmpty && (\n\t\t\t\t<BlockPreview.Async>\n\t\t\t\t\t<BlockPreview\n\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\tviewportWidth={ item.viewportWidth }\n\t\t\t\t\t/>\n\t\t\t\t</BlockPreview.Async>\n\t\t\t) }\n\t\t\t{ !! description && (\n\t\t\t\t<div hidden id={ descriptionId }>\n\t\t\t\t\t{ description }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport const previewField = {\n\tlabel: __( 'Preview' ),\n\tid: 'preview',\n\trender: PreviewField,\n\tenableSorting: false,\n};\n\nconst SYNC_FILTERS = [\n\t{\n\t\tvalue: PATTERN_SYNC_TYPES.full,\n\t\tlabel: _x( 'Synced', 'pattern (singular)' ),\n\t\tdescription: __( 'Patterns that are kept in sync across the site.' ),\n\t},\n\t{\n\t\tvalue: PATTERN_SYNC_TYPES.unsynced,\n\t\tlabel: _x( 'Not synced', 'pattern (singular)' ),\n\t\tdescription: __(\n\t\t\t'Patterns that can be changed freely without affecting the site.'\n\t\t),\n\t},\n];\n\nexport const patternStatusField = {\n\tlabel: __( 'Sync status' ),\n\tid: 'sync-status',\n\trender: ( { item } ) => {\n\t\tconst syncStatus =\n\t\t\t'wp_pattern_sync_status' in item\n\t\t\t\t? item.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full\n\t\t\t\t: PATTERN_SYNC_TYPES.unsynced;\n\t\t// User patterns can have their sync statuses checked directly.\n\t\t// Non-user patterns are all unsynced for the time being.\n\t\treturn (\n\t\t\t<span\n\t\t\t\tclassName={ `edit-site-patterns__field-sync-status-${ syncStatus }` }\n\t\t\t>\n\t\t\t\t{\n\t\t\t\t\tSYNC_FILTERS.find( ( { value } ) => value === syncStatus )\n\t\t\t\t\t\t.label\n\t\t\t\t}\n\t\t\t</span>\n\t\t);\n\t},\n\telements: SYNC_FILTERS,\n\tfilterBy: {\n\t\toperators: [ OPERATOR_IS ],\n\t\tisPrimary: true,\n\t},\n\tenableSorting: false,\n};\n\nfunction AuthorField( { item } ) {\n\tconst [ isImageLoaded, setIsImageLoaded ] = useState( false );\n\tconst { text, icon, imageUrl } = useAddedBy( item.type, item.id );\n\n\treturn (\n\t\t<HStack alignment=\"left\" spacing={ 0 }>\n\t\t\t{ imageUrl && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx( 'page-templates-author-field__avatar', {\n\t\t\t\t\t\t'is-loaded': isImageLoaded,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tonLoad={ () => setIsImageLoaded( true ) }\n\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\tsrc={ imageUrl }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ ! imageUrl && (\n\t\t\t\t<div className=\"page-templates-author-field__icon\">\n\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<span className=\"page-templates-author-field__name\">{ text }</span>\n\t\t</HStack>\n\t);\n}\n\nexport const templatePartAuthorField = {\n\tlabel: __( 'Author' ),\n\tid: 'author',\n\tgetValue: ( { item } ) => item.author_text,\n\trender: AuthorField,\n\tfilterBy: {\n\t\tisPrimary: true,\n\t},\n};\n", "/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tcommentAuthorAvatar as authorIcon,\n\tlayout as themeIcon,\n\tplugins as pluginIcon,\n\tglobe as globeIcon,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { TEMPLATE_ORIGINS } from '../../utils/constants';\n\n/** @typedef {'wp_template'|'wp_template_part'} TemplateType */\n\n/**\n * @typedef {'theme'|'plugin'|'site'|'user'} AddedByType\n *\n * @typedef AddedByData\n * @type {Object}\n * @property {AddedByType}  type         The type of the data.\n * @property {JSX.Element}  icon         The icon to display.\n * @property {string}       [imageUrl]   The optional image URL to display.\n * @property {string}       [text]       The text to display.\n * @property {boolean}      isCustomized Whether the template has been customized.\n *\n * @param    {TemplateType} postType     The template post type.\n * @param    {number}       postId       The template post id.\n * @return {AddedByData} The added by object or null.\n */\nexport function useAddedBy( postType, postId ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecord, getUser, getEditedEntityRecord } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst template = getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId\n\t\t\t);\n\t\t\tconst originalSource = template?.original_source;\n\t\t\tconst authorText = template?.author_text;\n\n\t\t\tswitch ( originalSource ) {\n\t\t\t\tcase 'theme': {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: originalSource,\n\t\t\t\t\t\ticon: themeIcon,\n\t\t\t\t\t\ttext: authorText,\n\t\t\t\t\t\tisCustomized:\n\t\t\t\t\t\t\ttemplate.source === TEMPLATE_ORIGINS.custom,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase 'plugin': {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: originalSource,\n\t\t\t\t\t\ticon: pluginIcon,\n\t\t\t\t\t\ttext: authorText,\n\t\t\t\t\t\tisCustomized:\n\t\t\t\t\t\t\ttemplate.source === TEMPLATE_ORIGINS.custom,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase 'site': {\n\t\t\t\t\tconst siteData = getEntityRecord(\n\t\t\t\t\t\t'root',\n\t\t\t\t\t\t'__unstableBase'\n\t\t\t\t\t);\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: originalSource,\n\t\t\t\t\t\ticon: globeIcon,\n\t\t\t\t\t\timageUrl: siteData?.site_logo\n\t\t\t\t\t\t\t? getEntityRecord(\n\t\t\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\t\t\t'attachment',\n\t\t\t\t\t\t\t\t\tsiteData.site_logo\n\t\t\t\t\t\t\t  )?.source_url\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\ttext: authorText,\n\t\t\t\t\t\tisCustomized: false,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst user = getUser( template.author );\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'user',\n\t\t\t\t\t\ticon: authorIcon,\n\t\t\t\t\t\timageUrl: user?.avatar_urls?.[ 48 ],\n\t\t\t\t\t\ttext: authorText ?? user?.name,\n\t\t\t\t\t\tisCustomized: false,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[ postType, postId ]\n\t);\n}\n", "/**\n * Internal dependencies\n */\nimport SidebarNavigationScreenPatterns from '../sidebar-navigation-screen-patterns';\nimport PagePatterns from '../page-patterns';\nimport { isClassicThemeWithStyleBookSupport } from './utils';\n\nexport const patternsRoute = {\n\tname: 'patterns',\n\tpath: '/pattern',\n\tareas: {\n\t\tsidebar( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\tconst backPath =\n\t\t\t\tisBlockTheme || isClassicThemeWithStyleBookSupport( siteData )\n\t\t\t\t\t? '/'\n\t\t\t\t\t: undefined;\n\t\t\treturn <SidebarNavigationScreenPatterns backPath={ backPath } />;\n\t\t},\n\t\tcontent: <PagePatterns />,\n\t\tmobile( { siteData, query } ) {\n\t\t\tconst { categoryId } = query;\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\tconst backPath =\n\t\t\t\tisBlockTheme || isClassicThemeWithStyleBookSupport( siteData )\n\t\t\t\t\t? '/'\n\t\t\t\t\t: undefined;\n\t\t\treturn !! categoryId ? (\n\t\t\t\t<PagePatterns />\n\t\t\t) : (\n\t\t\t\t<SidebarNavigationScreenPatterns backPath={ backPath } />\n\t\t\t);\n\t\t},\n\t},\n};\n", "/**\n * Internal dependencies\n */\nimport Editor from '../editor';\nimport SidebarNavigationScreenPatterns from '../sidebar-navigation-screen-patterns';\nimport { isClassicThemeWithStyleBookSupport } from './utils';\n\nexport const patternItemRoute = {\n\tname: 'pattern-item',\n\tpath: '/wp_block/:postId',\n\tareas: {\n\t\tsidebar( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\tconst backPath =\n\t\t\t\tisBlockTheme || isClassicThemeWithStyleBookSupport( siteData )\n\t\t\t\t\t? '/'\n\t\t\t\t\t: undefined;\n\t\t\treturn <SidebarNavigationScreenPatterns backPath={ backPath } />;\n\t\t},\n\t\tmobile: <Editor />,\n\t\tpreview: <Editor />,\n\t},\n};\n", "/**\n * Internal dependencies\n */\nimport Editor from '../editor';\nimport SidebarNavigationScreenPatterns from '../sidebar-navigation-screen-patterns';\n\nexport const templatePartItemRoute = {\n\tname: 'template-part-item',\n\tpath: '/wp_template_part/*postId',\n\tareas: {\n\t\tsidebar: <SidebarNavigationScreenPatterns backPath=\"/\" />,\n\t\tmobile: <Editor />,\n\t\tpreview: <Editor />,\n\t},\n};\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport SidebarNavigationScreen from '../sidebar-navigation-screen';\nimport DataviewsTemplatesSidebarContent from './content';\nimport DataviewsTemplatesSidebarContentLegacy from './content-legacy';\n\nexport default function SidebarNavigationScreenTemplatesBrowse( { backPath } ) {\n\treturn (\n\t\t<SidebarNavigationScreen\n\t\t\ttitle={ __( 'Templates' ) }\n\t\t\tdescription={ __(\n\t\t\t\t'Create new templates, or reset any customizations made to the templates supplied by your theme.'\n\t\t\t) }\n\t\t\tbackPath={ backPath }\n\t\t\tcontent={\n\t\t\t\twindow?.__experimentalTemplateActivate ? (\n\t\t\t\t\t<DataviewsTemplatesSidebarContent />\n\t\t\t\t) : (\n\t\t\t\t\t<DataviewsTemplatesSidebarContentLegacy />\n\t\t\t\t)\n\t\t\t}\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { useMemo } from '@wordpress/element';\nimport { __experimentalItemGroup as ItemGroup } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport SidebarNavigationItem from '../sidebar-navigation-item';\nimport { useAddedBy } from '../page-templates/hooks';\nimport { commentAuthorAvatar, published } from '@wordpress/icons';\nimport { unlock } from '../../lock-unlock';\n\nconst { useLocation } = unlock( routerPrivateApis );\n\nconst EMPTY_ARRAY = [];\n\nfunction TemplateDataviewItem( { template, isActive } ) {\n\tconst { text, icon } = useAddedBy( template.type, template.id );\n\n\treturn (\n\t\t<SidebarNavigationItem\n\t\t\tto={ addQueryArgs( '/template', { activeView: text } ) }\n\t\t\ticon={ icon }\n\t\t\taria-current={ isActive }\n\t\t>\n\t\t\t{ text }\n\t\t</SidebarNavigationItem>\n\t);\n}\n\nexport default function DataviewsTemplatesSidebarContent() {\n\tconst {\n\t\tquery: { activeView = 'active' },\n\t} = useLocation();\n\tconst { records } = useEntityRecords( 'root', 'registeredTemplate', {\n\t\t// This should not be needed, the endpoint returns all registered\n\t\t// templates, but it's not possible right now to turn off pagination for\n\t\t// entity configs.\n\t\tper_page: -1,\n\t} );\n\tconst firstItemPerAuthorText = useMemo( () => {\n\t\tconst firstItemPerAuthor = records?.reduce( ( acc, template ) => {\n\t\t\tconst author = template.author_text;\n\t\t\tif ( author && ! acc[ author ] ) {\n\t\t\t\tacc[ author ] = template;\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, {} );\n\t\treturn (\n\t\t\t( firstItemPerAuthor && Object.values( firstItemPerAuthor ) ) ??\n\t\t\tEMPTY_ARRAY\n\t\t);\n\t}, [ records ] );\n\n\treturn (\n\t\t<ItemGroup className=\"edit-site-sidebar-navigation-screen-templates-browse\">\n\t\t\t<SidebarNavigationItem\n\t\t\t\tto=\"/template\"\n\t\t\t\ticon={ published }\n\t\t\t\taria-current={ activeView === 'active' }\n\t\t\t>\n\t\t\t\t{ __( 'Active templates' ) }\n\t\t\t</SidebarNavigationItem>\n\t\t\t<SidebarNavigationItem\n\t\t\t\tto={ addQueryArgs( '/template', { activeView: 'user' } ) }\n\t\t\t\ticon={ commentAuthorAvatar }\n\t\t\t\taria-current={ activeView === 'user' }\n\t\t\t>\n\t\t\t\t{\n\t\t\t\t\t// Let's avoid calling them \"custom templates\" to avoid\n\t\t\t\t\t// confusion. \"Created\" is closest to meaning database\n\t\t\t\t\t// templates, created by users.\n\t\t\t\t\t// https://developer.wordpress.org/themes/classic-themes/templates/page-template-files/#creating-custom-page-templates-for-global-use\n\t\t\t\t\t__( 'Created templates' )\n\t\t\t\t}\n\t\t\t</SidebarNavigationItem>\n\t\t\t{ firstItemPerAuthorText.map( ( template ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<TemplateDataviewItem\n\t\t\t\t\t\tkey={ template.author_text }\n\t\t\t\t\t\ttemplate={ template }\n\t\t\t\t\t\tisActive={ activeView === template.author_text }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ItemGroup>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { useMemo } from '@wordpress/element';\nimport { __experimentalItemGroup as ItemGroup } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport SidebarNavigationItem from '../sidebar-navigation-item';\nimport { useAddedBy } from '../page-templates/hooks';\nimport { layout } from '@wordpress/icons';\nimport { TEMPLATE_POST_TYPE } from '../../utils/constants';\nimport { unlock } from '../../lock-unlock';\n\nconst { useLocation } = unlock( routerPrivateApis );\n\nconst EMPTY_ARRAY = [];\n\nfunction TemplateDataviewItem( { template, isActive } ) {\n\tconst { text, icon } = useAddedBy( template.type, template.id );\n\n\treturn (\n\t\t<SidebarNavigationItem\n\t\t\tto={ addQueryArgs( '/template', { activeView: text } ) }\n\t\t\ticon={ icon }\n\t\t\taria-current={ isActive }\n\t\t>\n\t\t\t{ text }\n\t\t</SidebarNavigationItem>\n\t);\n}\n\nexport default function DataviewsTemplatesSidebarContent() {\n\tconst {\n\t\tquery: { activeView = 'all' },\n\t} = useLocation();\n\tconst { records } = useEntityRecords( 'postType', TEMPLATE_POST_TYPE, {\n\t\tper_page: -1,\n\t} );\n\tconst firstItemPerAuthorText = useMemo( () => {\n\t\tconst firstItemPerAuthor = records?.reduce( ( acc, template ) => {\n\t\t\tconst author = template.author_text;\n\t\t\tif ( author && ! acc[ author ] ) {\n\t\t\t\tacc[ author ] = template;\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, {} );\n\t\treturn (\n\t\t\t( firstItemPerAuthor && Object.values( firstItemPerAuthor ) ) ??\n\t\t\tEMPTY_ARRAY\n\t\t);\n\t}, [ records ] );\n\n\treturn (\n\t\t<ItemGroup className=\"edit-site-sidebar-navigation-screen-templates-browse\">\n\t\t\t<SidebarNavigationItem\n\t\t\t\tto=\"/template\"\n\t\t\t\ticon={ layout }\n\t\t\t\taria-current={ activeView === 'all' }\n\t\t\t>\n\t\t\t\t{ __( 'All templates' ) }\n\t\t\t</SidebarNavigationItem>\n\t\t\t{ firstItemPerAuthorText.map( ( template ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<TemplateDataviewItem\n\t\t\t\t\t\tkey={ template.author_text }\n\t\t\t\t\t\ttemplate={ template }\n\t\t\t\t\t\tisActive={ activeView === template.author_text }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ItemGroup>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { Page } from '@wordpress/admin-ui';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useState, useMemo, useCallback } from '@wordpress/element';\nimport {\n\tprivateApis as corePrivateApis,\n\tstore as coreStore,\n} from '@wordpress/core-data';\nimport { DataViews, filterSortAndPaginate } from '@wordpress/dataviews';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\nimport { addQueryArgs } from '@wordpress/url';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useEvent } from '@wordpress/compose';\nimport { useView } from '@wordpress/views';\nimport { Button, Modal } from '@wordpress/components';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport AddNewTemplate from '../add-new-template';\nimport { TEMPLATE_POST_TYPE } from '../../utils/constants';\nimport { unlock } from '../../lock-unlock';\nimport {\n\tuseEditPostAction,\n\tuseSetActiveTemplateAction,\n} from '../dataviews-actions';\nimport {\n\tauthorField,\n\tdescriptionField,\n\tpreviewField,\n\tactiveField,\n\tslugField,\n\tuseThemeField,\n} from './fields';\nimport { defaultLayouts, getDefaultView } from './view-utils';\n\nconst { usePostActions, usePostFields, templateTitleField } =\n\tunlock( editorPrivateApis );\nconst { useHistory, useLocation } = unlock( routerPrivateApis );\nconst { useEntityRecordsWithPermissions } = unlock( corePrivateApis );\n\nexport default function PageTemplates() {\n\tconst { path, query } = useLocation();\n\tconst { activeView = 'active', postId } = query;\n\tconst [ selection, setSelection ] = useState( [ postId ] );\n\tconst [ selectedRegisteredTemplate, setSelectedRegisteredTemplate ] =\n\t\tuseState( false );\n\tconst defaultView = useMemo( () => {\n\t\treturn getDefaultView( activeView );\n\t}, [ activeView ] );\n\tconst { view, updateView, isModified, resetToDefault } = useView( {\n\t\tkind: 'postType',\n\t\tname: TEMPLATE_POST_TYPE,\n\t\tslug: activeView,\n\t\tdefaultView,\n\t\tqueryParams: {\n\t\t\tpage: query.pageNumber,\n\t\t\tsearch: query.search,\n\t\t},\n\t\tonChangeQueryParams: ( newQueryParams ) => {\n\t\t\thistory.navigate(\n\t\t\t\taddQueryArgs( path, {\n\t\t\t\t\t...query,\n\t\t\t\t\tpageNumber: newQueryParams.page,\n\t\t\t\t\tsearch: newQueryParams.search || undefined,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t} );\n\n\tconst { activeTemplatesOption, activeTheme, defaultTemplateTypes } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst { getEntityRecord, getCurrentTheme } = select( coreStore );\n\t\t\treturn {\n\t\t\t\tactiveTemplatesOption: getEntityRecord( 'root', 'site' )\n\t\t\t\t\t?.active_templates,\n\t\t\t\tactiveTheme: getCurrentTheme(),\n\t\t\t\tdefaultTemplateTypes:\n\t\t\t\t\tselect( coreStore ).getCurrentTheme()\n\t\t\t\t\t\t?.default_template_types,\n\t\t\t};\n\t\t} );\n\t// Todo: this will have to be better so that we're not fetching all the\n\t// records all the time. Active templates query will need to move server\n\t// side.\n\tconst { records: userRecords, isResolving: isLoadingUserRecords } =\n\t\tuseEntityRecordsWithPermissions( 'postType', TEMPLATE_POST_TYPE, {\n\t\t\tper_page: -1,\n\t\t\tcombinedTemplates: false,\n\t\t} );\n\tconst { records: staticRecords, isResolving: isLoadingStaticData } =\n\t\tuseEntityRecordsWithPermissions( 'root', 'registeredTemplate', {\n\t\t\t// This should not be needed, the endpoint returns all registered\n\t\t\t// templates, but it's not possible right now to turn off pagination\n\t\t\t// for entity configs.\n\t\t\tper_page: -1,\n\t\t} );\n\n\tconst activeTemplates = useMemo( () => {\n\t\tconst _active = [ ...staticRecords ];\n\t\tif ( activeTemplatesOption ) {\n\t\t\tfor ( const activeSlug in activeTemplatesOption ) {\n\t\t\t\tconst activeId = activeTemplatesOption[ activeSlug ];\n\t\t\t\t// Replace the template in the array.\n\t\t\t\tconst template = userRecords.find(\n\t\t\t\t\t( userRecord ) =>\n\t\t\t\t\t\tuserRecord.id === activeId &&\n\t\t\t\t\t\tuserRecord.theme === activeTheme.stylesheet\n\t\t\t\t);\n\t\t\t\tif ( template ) {\n\t\t\t\t\tconst index = _active.findIndex(\n\t\t\t\t\t\t( { slug } ) => slug === template.slug\n\t\t\t\t\t);\n\t\t\t\t\tif ( index !== -1 ) {\n\t\t\t\t\t\t_active[ index ] = template;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_active.push( template );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn _active;\n\t}, [ userRecords, staticRecords, activeTemplatesOption, activeTheme ] );\n\n\tlet isLoadingData;\n\tif ( activeView === 'active' ) {\n\t\tisLoadingData = isLoadingUserRecords || isLoadingStaticData;\n\t} else if ( activeView === 'user' ) {\n\t\tisLoadingData = isLoadingUserRecords;\n\t} else {\n\t\tisLoadingData = isLoadingStaticData;\n\t}\n\n\tconst records = useMemo( () => {\n\t\tfunction isCustom( record ) {\n\t\t\t// For registered templates, the is_custom field is defined.\n\t\t\treturn (\n\t\t\t\trecord.is_custom ??\n\t\t\t\t// For user templates it's custom if the is_wp_suggestion meta\n\t\t\t\t// field is not set and the slug is not found in the default\n\t\t\t\t// template types.\n\t\t\t\t( ! record.meta?.is_wp_suggestion &&\n\t\t\t\t\t! defaultTemplateTypes.some(\n\t\t\t\t\t\t( type ) => type.slug === record.slug\n\t\t\t\t\t) )\n\t\t\t);\n\t\t}\n\n\t\tlet _records;\n\t\tif ( activeView === 'active' ) {\n\t\t\t// Don't show active custom templates in the active view.\n\t\t\t_records = activeTemplates.filter(\n\t\t\t\t( record ) => ! isCustom( record )\n\t\t\t);\n\t\t} else if ( activeView === 'user' ) {\n\t\t\t_records = userRecords;\n\t\t} else {\n\t\t\t_records = staticRecords;\n\t\t}\n\t\treturn _records.map( ( record ) => ( {\n\t\t\t...record,\n\t\t\t_isActive: activeTemplates.some(\n\t\t\t\t( template ) => template.id === record.id\n\t\t\t),\n\t\t\t_isCustom: isCustom( record ),\n\t\t} ) );\n\t}, [\n\t\tactiveTemplates,\n\t\tdefaultTemplateTypes,\n\t\tuserRecords,\n\t\tstaticRecords,\n\t\tactiveView,\n\t] );\n\n\tconst users = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getUser } = select( coreStore );\n\t\t\treturn records.reduce( ( acc, record ) => {\n\t\t\t\tif ( record.author_text ) {\n\t\t\t\t\tif ( ! acc[ record.author_text ] ) {\n\t\t\t\t\t\tacc[ record.author_text ] = record.author_text;\n\t\t\t\t\t}\n\t\t\t\t} else if ( record.author ) {\n\t\t\t\t\tif ( ! acc[ record.author ] ) {\n\t\t\t\t\t\tacc[ record.author ] = getUser( record.author );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn acc;\n\t\t\t}, {} );\n\t\t},\n\t\t[ records ]\n\t);\n\n\tconst history = useHistory();\n\tconst onChangeSelection = useCallback(\n\t\t( items ) => {\n\t\t\tsetSelection( items );\n\t\t\tif ( view?.type === 'list' ) {\n\t\t\t\thistory.navigate(\n\t\t\t\t\taddQueryArgs( path, {\n\t\t\t\t\t\tpostId: items.length === 1 ? items[ 0 ] : undefined,\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ history, path, view?.type ]\n\t);\n\n\tconst postTypeFields = usePostFields( {\n\t\tpostType: TEMPLATE_POST_TYPE,\n\t} );\n\tconst dateField = postTypeFields.find( ( field ) => field.id === 'date' );\n\tconst themeField = useThemeField();\n\tconst fields = useMemo( () => {\n\t\tconst _fields = [\n\t\t\tpreviewField,\n\t\t\ttemplateTitleField,\n\t\t\tdescriptionField,\n\t\t\tactiveField,\n\t\t\tslugField,\n\t\t];\n\t\tif ( activeView === 'user' ) {\n\t\t\t_fields.push( themeField );\n\t\t\tif ( dateField ) {\n\t\t\t\t_fields.push( dateField );\n\t\t\t}\n\t\t}\n\t\tconst elements = [];\n\t\tfor ( const author in users ) {\n\t\t\telements.push( {\n\t\t\t\tvalue: users[ author ]?.id ?? author,\n\t\t\t\tlabel: users[ author ]?.name ?? author,\n\t\t\t} );\n\t\t}\n\t\t_fields.push( {\n\t\t\t...authorField,\n\t\t\telements,\n\t\t} );\n\t\treturn _fields;\n\t}, [ users, activeView, themeField, dateField ] );\n\n\tconst { data, paginationInfo } = useMemo( () => {\n\t\treturn filterSortAndPaginate( records, view, fields );\n\t}, [ records, view, fields ] );\n\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst onActionPerformed = useCallback(\n\t\t( actionId, items ) => {\n\t\t\tswitch ( actionId ) {\n\t\t\t\tcase 'duplicate-post':\n\t\t\t\t\t{\n\t\t\t\t\t\tconst newItem = items[ 0 ];\n\t\t\t\t\t\tconst _title =\n\t\t\t\t\t\t\ttypeof newItem.title === 'string'\n\t\t\t\t\t\t\t\t? newItem.title\n\t\t\t\t\t\t\t\t: newItem.title?.rendered;\n\t\t\t\t\t\thistory.navigate( `/template?activeView=user` );\n\t\t\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Title of the created post or template, e.g: \"Hello world\".\n\t\t\t\t\t\t\t\t__( '\"%s\" successfully created.' ),\n\t\t\t\t\t\t\t\tdecodeEntities( _title ) || __( '(no title)' )\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t\t\t\tid: 'duplicate-post-action',\n\t\t\t\t\t\t\t\tactions: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tlabel: __( 'Edit' ),\n\t\t\t\t\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\t\t\t\t\thistory.navigate(\n\t\t\t\t\t\t\t\t\t\t\t\t`/${ newItem.type }/${ newItem.id }?canvas=edit`\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\t[ history, createSuccessNotice ]\n\t);\n\tconst postTypeActions = usePostActions( {\n\t\tpostType: TEMPLATE_POST_TYPE,\n\t\tcontext: 'list',\n\t\tonActionPerformed,\n\t} );\n\tconst editAction = useEditPostAction();\n\tconst setActiveTemplateAction = useSetActiveTemplateAction();\n\tconst actions = useMemo(\n\t\t() =>\n\t\t\tactiveView === 'user'\n\t\t\t\t? [ setActiveTemplateAction, editAction, ...postTypeActions ]\n\t\t\t\t: [ setActiveTemplateAction, ...postTypeActions ],\n\t\t[ postTypeActions, setActiveTemplateAction, editAction, activeView ]\n\t);\n\n\tconst onChangeView = useEvent( ( newView ) => {\n\t\tif ( newView.type !== view.type ) {\n\t\t\t// Retrigger the routing areas resolution.\n\t\t\thistory.invalidate();\n\t\t}\n\t\tupdateView( newView );\n\t} );\n\n\tconst duplicateAction = actions.find(\n\t\t( action ) => action.id === 'duplicate-post'\n\t);\n\n\treturn (\n\t\t<Page\n\t\t\tclassName=\"edit-site-page-templates\"\n\t\t\ttitle={ __( 'Templates' ) }\n\t\t\tactions={\n\t\t\t\t<>\n\t\t\t\t\t{ isModified && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tresetToDefault();\n\t\t\t\t\t\t\t\thistory.invalidate();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset view' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t\t\t<AddNewTemplate />\n\t\t\t\t</>\n\t\t\t}\n\t\t>\n\t\t\t<DataViews\n\t\t\t\tkey={ activeView }\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\tfields={ fields }\n\t\t\t\tactions={ actions }\n\t\t\t\tdata={ data }\n\t\t\t\tisLoading={ isLoadingData }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\tisItemClickable={ () => true }\n\t\t\t\tonClickItem={ ( item ) => {\n\t\t\t\t\tif ( typeof item.id === 'string' ) {\n\t\t\t\t\t\tsetSelectedRegisteredTemplate( item );\n\t\t\t\t\t} else {\n\t\t\t\t\t\thistory.navigate(\n\t\t\t\t\t\t\t`/${ item.type }/${ item.id }?canvas=edit`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t\tselection={ selection }\n\t\t\t\tdefaultLayouts={ defaultLayouts }\n\t\t\t/>\n\t\t\t{ selectedRegisteredTemplate && duplicateAction && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ __( 'Duplicate' ) }\n\t\t\t\t\tonRequestClose={ () => setSelectedRegisteredTemplate() }\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t>\n\t\t\t\t\t<duplicateAction.RenderModal\n\t\t\t\t\t\titems={ [ selectedRegisteredTemplate ] }\n\t\t\t\t\t\tcloseModal={ () => setSelectedRegisteredTemplate() }\n\t\t\t\t\t/>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</Page>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tModal,\n\t__experimentalGrid as Grid,\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n\tFlex,\n\tIcon,\n} from '@wordpress/components';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useState, memo, useRef, useEffect } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tarchive,\n\tblockMeta,\n\tcalendar,\n\tcategory,\n\tcommentAuthorAvatar,\n\tpencil,\n\thome,\n\tlayout,\n\tlist,\n\tmedia,\n\tnotFound,\n\tpage,\n\tpin,\n\tverse,\n\tsearch,\n\ttag,\n} from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { focus } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { TEMPLATE_POST_TYPE } from '../../utils/constants';\n\n/**\n * Internal dependencies\n */\nimport AddCustomTemplateModalContent from './add-custom-template-modal-content';\nimport {\n\tuseDefaultTemplateTypes,\n\tuseTaxonomiesMenuItems,\n\tusePostTypeMenuItems,\n\tuseAuthorMenuItem,\n\tusePostTypeArchiveMenuItems,\n} from './utils';\nimport AddCustomGenericTemplateModalContent from './add-custom-generic-template-modal-content';\nimport { unlock } from '../../lock-unlock';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nconst DEFAULT_TEMPLATE_SLUGS = [\n\t'front-page',\n\t'home',\n\t'single',\n\t'page',\n\t'index',\n\t'archive',\n\t'author',\n\t'category',\n\t'date',\n\t'tag',\n\t'search',\n\t'404',\n];\n\nconst TEMPLATE_ICONS = {\n\t'front-page': home,\n\thome: verse,\n\tsingle: pin,\n\tpage,\n\tarchive,\n\tsearch,\n\t404: notFound,\n\tindex: list,\n\tcategory,\n\tauthor: commentAuthorAvatar,\n\ttaxonomy: blockMeta,\n\tdate: calendar,\n\ttag,\n\tattachment: media,\n};\n\nfunction TemplateListItem( {\n\ttitle,\n\tdirection,\n\tclassName,\n\tdescription,\n\ticon,\n\tonClick,\n\tchildren,\n} ) {\n\treturn (\n\t\t<Button\n\t\t\t__next40pxDefaultSize\n\t\t\tclassName={ className }\n\t\t\tonClick={ onClick }\n\t\t\tlabel={ description }\n\t\t\tshowTooltip={ !! description }\n\t\t>\n\t\t\t<Flex\n\t\t\t\tas=\"span\"\n\t\t\t\tspacing={ 2 }\n\t\t\t\talign=\"center\"\n\t\t\t\tjustify=\"center\"\n\t\t\t\tstyle={ { width: '100%' } }\n\t\t\t\tdirection={ direction }\n\t\t\t>\n\t\t\t\t<div className=\"edit-site-add-new-template__template-icon\">\n\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t</div>\n\t\t\t\t<VStack\n\t\t\t\t\tclassName=\"edit-site-add-new-template__template-name\"\n\t\t\t\t\talignment=\"center\"\n\t\t\t\t\tspacing={ 0 }\n\t\t\t\t>\n\t\t\t\t\t<Text\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tweight={ 500 }\n\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t>\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</Text>\n\t\t\t\t\t{ children }\n\t\t\t\t</VStack>\n\t\t\t</Flex>\n\t\t</Button>\n\t);\n}\n\nconst modalContentMap = {\n\ttemplatesList: 1,\n\tcustomTemplate: 2,\n\tcustomGenericTemplate: 3,\n};\n\nfunction NewTemplateModal( { onClose } ) {\n\tconst [ modalContent, setModalContent ] = useState(\n\t\tmodalContentMap.templatesList\n\t);\n\tconst [ entityForSuggestions, setEntityForSuggestions ] = useState( {} );\n\tconst [ isSubmitting, setIsSubmitting ] = useState( false );\n\tconst missingTemplates = useMissingTemplates( setEntityForSuggestions, () =>\n\t\tsetModalContent( modalContentMap.customTemplate )\n\t);\n\tconst history = useHistory();\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst containerRef = useRef( null );\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\tconst homeUrl = useSelect( ( select ) => {\n\t\t// Site index.\n\t\treturn select( coreStore ).getEntityRecord( 'root', '__unstableBase' )\n\t\t\t?.home;\n\t}, [] );\n\n\tconst TEMPLATE_SHORT_DESCRIPTIONS = {\n\t\t'front-page': homeUrl,\n\t\tdate: sprintf(\n\t\t\t// translators: %s: The homepage url.\n\t\t\t__( 'E.g. %s' ),\n\t\t\thomeUrl + '/' + new Date().getFullYear()\n\t\t),\n\t};\n\n\tuseEffect( () => {\n\t\t// Focus the first focusable element when component mounts or UI changes\n\t\t// We don't want to focus on the other modals because they have their own focus management.\n\t\tif (\n\t\t\tcontainerRef.current &&\n\t\t\tmodalContent === modalContentMap.templatesList\n\t\t) {\n\t\t\tconst [ firstFocusable ] = focus.focusable.find(\n\t\t\t\tcontainerRef.current\n\t\t\t);\n\t\t\tfirstFocusable?.focus();\n\t\t}\n\t}, [ modalContent ] );\n\n\tasync function createTemplate( template, isWPSuggestion = true ) {\n\t\tif ( isSubmitting ) {\n\t\t\treturn;\n\t\t}\n\t\tsetIsSubmitting( true );\n\t\ttry {\n\t\t\tconst { title, description, slug } = template;\n\t\t\tconst newTemplate = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t{\n\t\t\t\t\tdescription,\n\t\t\t\t\t// Slugs need to be strings, so this is for template `404`\n\t\t\t\t\tslug: slug.toString(),\n\t\t\t\t\tstatus: 'publish',\n\t\t\t\t\ttitle,\n\t\t\t\t\t// This adds a post meta field in template that is part of `is_custom` value calculation.\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tis_wp_suggestion: isWPSuggestion,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\t// Navigate to the created template editor.\n\t\t\thistory.navigate(\n\t\t\t\t`/${ TEMPLATE_POST_TYPE }/${ newTemplate.id }?canvas=edit`\n\t\t\t);\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: Title of the created post or template, e.g: \"Hello world\".\n\t\t\t\t\t__( '\"%s\" successfully created.' ),\n\t\t\t\t\tdecodeEntities( newTemplate.title?.rendered || title ) ||\n\t\t\t\t\t\t__( '(no title)' )\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while creating the template.' );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t} finally {\n\t\t\tsetIsSubmitting( false );\n\t\t}\n\t}\n\tconst onModalClose = () => {\n\t\tonClose();\n\t\tsetModalContent( modalContentMap.templatesList );\n\t};\n\n\tlet modalTitle = __( 'Add template' );\n\tif ( modalContent === modalContentMap.customTemplate ) {\n\t\tmodalTitle = sprintf(\n\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t__( 'Add template: %s' ),\n\t\t\tentityForSuggestions.labels.singular_name\n\t\t);\n\t} else if ( modalContent === modalContentMap.customGenericTemplate ) {\n\t\tmodalTitle = __( 'Create custom template' );\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ modalTitle }\n\t\t\tclassName={ clsx( 'edit-site-add-new-template__modal', {\n\t\t\t\t'edit-site-add-new-template__modal_template_list':\n\t\t\t\t\tmodalContent === modalContentMap.templatesList,\n\t\t\t\t'edit-site-custom-template-modal':\n\t\t\t\t\tmodalContent === modalContentMap.customTemplate,\n\t\t\t} ) }\n\t\t\tonRequestClose={ onModalClose }\n\t\t\toverlayClassName={\n\t\t\t\tmodalContent === modalContentMap.customGenericTemplate\n\t\t\t\t\t? 'edit-site-custom-generic-template__modal'\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tref={ containerRef }\n\t\t>\n\t\t\t{ modalContent === modalContentMap.templatesList && (\n\t\t\t\t<Grid\n\t\t\t\t\tcolumns={ isMobile ? 2 : 3 }\n\t\t\t\t\tgap={ 4 }\n\t\t\t\t\talign=\"flex-start\"\n\t\t\t\t\tjustify=\"center\"\n\t\t\t\t\tclassName=\"edit-site-add-new-template__template-list__contents\"\n\t\t\t\t>\n\t\t\t\t\t<Flex className=\"edit-site-add-new-template__template-list__prompt\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Select what the new template should apply to:'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Flex>\n\t\t\t\t\t{ missingTemplates.map( ( template ) => {\n\t\t\t\t\t\tconst { title, slug, onClick } = template;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<TemplateListItem\n\t\t\t\t\t\t\t\tkey={ slug }\n\t\t\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\t\t\tclassName=\"edit-site-add-new-template__template-button\"\n\t\t\t\t\t\t\t\tdescription={\n\t\t\t\t\t\t\t\t\tTEMPLATE_SHORT_DESCRIPTIONS[ slug ]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ticon={ TEMPLATE_ICONS[ slug ] || layout }\n\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\tonClick\n\t\t\t\t\t\t\t\t\t\t? onClick( template )\n\t\t\t\t\t\t\t\t\t\t: createTemplate( template )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t\t<TemplateListItem\n\t\t\t\t\t\ttitle={ __( 'Custom template' ) }\n\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\tclassName=\"edit-site-add-new-template__custom-template-button\"\n\t\t\t\t\t\ticon={ pencil }\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tsetModalContent(\n\t\t\t\t\t\t\t\tmodalContentMap.customGenericTemplate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'A custom template can be manually applied to any post or page.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</TemplateListItem>\n\t\t\t\t</Grid>\n\t\t\t) }\n\t\t\t{ modalContent === modalContentMap.customTemplate && (\n\t\t\t\t<AddCustomTemplateModalContent\n\t\t\t\t\tonSelect={ createTemplate }\n\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t\tonBack={ () =>\n\t\t\t\t\t\tsetModalContent( modalContentMap.templatesList )\n\t\t\t\t\t}\n\t\t\t\t\tcontainerRef={ containerRef }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ modalContent === modalContentMap.customGenericTemplate && (\n\t\t\t\t<AddCustomGenericTemplateModalContent\n\t\t\t\t\tcreateTemplate={ createTemplate }\n\t\t\t\t\tonBack={ () =>\n\t\t\t\t\t\tsetModalContent( modalContentMap.templatesList )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Modal>\n\t);\n}\n\nfunction NewTemplate() {\n\tconst [ showModal, setShowModal ] = useState( false );\n\n\tconst { postType } = useSelect( ( select ) => {\n\t\tconst { getPostType } = select( coreStore );\n\n\t\treturn {\n\t\t\tpostType: getPostType( TEMPLATE_POST_TYPE ),\n\t\t};\n\t}, [] );\n\n\tif ( ! postType ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Button\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tonClick={ () => setShowModal( true ) }\n\t\t\t\tlabel={ postType.labels.add_new_item }\n\t\t\t\t__next40pxDefaultSize\n\t\t\t>\n\t\t\t\t{ postType.labels.add_new_item }\n\t\t\t</Button>\n\t\t\t{ showModal && (\n\t\t\t\t<NewTemplateModal onClose={ () => setShowModal( false ) } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction useMissingTemplates( setEntityForSuggestions, onClick ) {\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst missingDefaultTemplates = ( defaultTemplateTypes || [] ).filter(\n\t\t( template ) => DEFAULT_TEMPLATE_SLUGS.includes( template.slug )\n\t);\n\tconst onClickMenuItem = ( _entityForSuggestions ) => {\n\t\tonClick?.();\n\t\tsetEntityForSuggestions( _entityForSuggestions );\n\t};\n\t// We need to replace existing default template types with\n\t// the create specific template functionality. The original\n\t// info (title, description, etc.) is preserved in the\n\t// used hooks.\n\tconst enhancedMissingDefaultTemplateTypes = [ ...missingDefaultTemplates ];\n\tconst { defaultTaxonomiesMenuItems, taxonomiesMenuItems } =\n\t\tuseTaxonomiesMenuItems( onClickMenuItem );\n\tconst { defaultPostTypesMenuItems, postTypesMenuItems } =\n\t\tusePostTypeMenuItems( onClickMenuItem );\n\n\tconst authorMenuItem = useAuthorMenuItem( onClickMenuItem );\n\t[\n\t\t...defaultTaxonomiesMenuItems,\n\t\t...defaultPostTypesMenuItems,\n\t\tauthorMenuItem,\n\t].forEach( ( menuItem ) => {\n\t\tif ( ! menuItem ) {\n\t\t\treturn;\n\t\t}\n\t\tconst matchIndex = enhancedMissingDefaultTemplateTypes.findIndex(\n\t\t\t( template ) => template.slug === menuItem.slug\n\t\t);\n\t\t// Some default template types might have been filtered above from\n\t\t// `missingDefaultTemplates` because they only check for the general\n\t\t// template. So here we either replace or append the item, augmented\n\t\t// with the check if it has available specific item to create a\n\t\t// template for.\n\t\tif ( matchIndex > -1 ) {\n\t\t\tenhancedMissingDefaultTemplateTypes[ matchIndex ] = menuItem;\n\t\t} else {\n\t\t\tenhancedMissingDefaultTemplateTypes.push( menuItem );\n\t\t}\n\t} );\n\t// Update the sort order to match the DEFAULT_TEMPLATE_SLUGS order.\n\tenhancedMissingDefaultTemplateTypes?.sort( ( template1, template2 ) => {\n\t\treturn (\n\t\t\tDEFAULT_TEMPLATE_SLUGS.indexOf( template1.slug ) -\n\t\t\tDEFAULT_TEMPLATE_SLUGS.indexOf( template2.slug )\n\t\t);\n\t} );\n\tconst missingTemplates = [\n\t\t...enhancedMissingDefaultTemplateTypes,\n\t\t...usePostTypeArchiveMenuItems(),\n\t\t...postTypesMenuItems,\n\t\t...taxonomiesMenuItems,\n\t];\n\treturn missingTemplates;\n}\n\nexport default memo( NewTemplate );\n", "/**\n * WordPress dependencies\n */\nimport { useState, useMemo, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tButton,\n\tFlex,\n\tFlexItem,\n\tSearchControl,\n\tTextHighlight,\n\tComposite,\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useDebouncedInput } from '@wordpress/compose';\nimport { focus } from '@wordpress/dom';\nimport { safeDecodeURI } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { mapToIHasNameAndId } from './utils';\n\nconst EMPTY_ARRAY = [];\n\nfunction SuggestionListItem( {\n\tsuggestion,\n\tsearch,\n\tonSelect,\n\tentityForSuggestions,\n} ) {\n\tconst baseCssClass =\n\t\t'edit-site-custom-template-modal__suggestions_list__list-item';\n\treturn (\n\t\t<Composite.Item\n\t\t\trender={\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\trole=\"option\"\n\t\t\t\t\tclassName={ baseCssClass }\n\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\tonSelect(\n\t\t\t\t\t\t\tentityForSuggestions.config.getSpecificTemplate(\n\t\t\t\t\t\t\t\tsuggestion\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<Text\n\t\t\t\tsize=\"body\"\n\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\tweight={ 500 }\n\t\t\t\tclassName={ `${ baseCssClass }__title` }\n\t\t\t>\n\t\t\t\t<TextHighlight\n\t\t\t\t\ttext={ decodeEntities( suggestion.name ) }\n\t\t\t\t\thighlight={ search }\n\t\t\t\t/>\n\t\t\t</Text>\n\t\t\t{ suggestion.link && (\n\t\t\t\t<Text\n\t\t\t\t\tsize=\"body\"\n\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\tclassName={ `${ baseCssClass }__info` }\n\t\t\t\t>\n\t\t\t\t\t{ safeDecodeURI( suggestion.link ) }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</Composite.Item>\n\t);\n}\n\nfunction useSearchSuggestions( entityForSuggestions, search ) {\n\tconst { config } = entityForSuggestions;\n\tconst query = useMemo(\n\t\t() => ( {\n\t\t\torder: 'asc',\n\t\t\tcontext: 'view',\n\t\t\tsearch,\n\t\t\tper_page: search ? 20 : 10,\n\t\t\t...config.queryArgs( search ),\n\t\t} ),\n\t\t[ search, config ]\n\t);\n\tconst { records: searchResults, hasResolved: searchHasResolved } =\n\t\tuseEntityRecords(\n\t\t\tentityForSuggestions.type,\n\t\t\tentityForSuggestions.slug,\n\t\t\tquery\n\t\t);\n\tconst [ suggestions, setSuggestions ] = useState( EMPTY_ARRAY );\n\tuseEffect( () => {\n\t\tif ( ! searchHasResolved ) {\n\t\t\treturn;\n\t\t}\n\t\tlet newSuggestions = EMPTY_ARRAY;\n\t\tif ( searchResults?.length ) {\n\t\t\tnewSuggestions = searchResults;\n\t\t\tif ( config.recordNamePath ) {\n\t\t\t\tnewSuggestions = mapToIHasNameAndId(\n\t\t\t\t\tnewSuggestions,\n\t\t\t\t\tconfig.recordNamePath\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\t// Update suggestions only when the query has resolved, so as to keep\n\t\t// the previous results in the UI.\n\t\tsetSuggestions( newSuggestions );\n\t}, [ searchResults, searchHasResolved ] );\n\treturn suggestions;\n}\n\nfunction SuggestionList( { entityForSuggestions, onSelect } ) {\n\tconst [ search, setSearch, debouncedSearch ] = useDebouncedInput();\n\tconst suggestions = useSearchSuggestions(\n\t\tentityForSuggestions,\n\t\tdebouncedSearch\n\t);\n\tconst { labels } = entityForSuggestions;\n\tconst [ showSearchControl, setShowSearchControl ] = useState( false );\n\tif ( ! showSearchControl && suggestions?.length > 9 ) {\n\t\tsetShowSearchControl( true );\n\t}\n\treturn (\n\t\t<>\n\t\t\t{ showSearchControl && (\n\t\t\t\t<SearchControl\n\t\t\t\t\tonChange={ setSearch }\n\t\t\t\t\tvalue={ search }\n\t\t\t\t\tlabel={ labels.search_items }\n\t\t\t\t\tplaceholder={ labels.search_items }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ !! suggestions?.length && (\n\t\t\t\t<Composite\n\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\tclassName=\"edit-site-custom-template-modal__suggestions_list\"\n\t\t\t\t\taria-label={ __( 'Suggestions list' ) }\n\t\t\t\t>\n\t\t\t\t\t{ suggestions.map( ( suggestion ) => (\n\t\t\t\t\t\t<SuggestionListItem\n\t\t\t\t\t\t\tkey={ suggestion.slug }\n\t\t\t\t\t\t\tsuggestion={ suggestion }\n\t\t\t\t\t\t\tsearch={ debouncedSearch }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</Composite>\n\t\t\t) }\n\t\t\t{ debouncedSearch && ! suggestions?.length && (\n\t\t\t\t<Text\n\t\t\t\t\tas=\"p\"\n\t\t\t\t\tclassName=\"edit-site-custom-template-modal__no-results\"\n\t\t\t\t>\n\t\t\t\t\t{ labels.not_found }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction AddCustomTemplateModalContent( {\n\tonSelect,\n\tentityForSuggestions,\n\tonBack,\n\tcontainerRef,\n} ) {\n\tconst [ showSearchEntities, setShowSearchEntities ] = useState();\n\n\t// Focus on the first focusable element when the modal opens.\n\t// We handle focus management in the parent modal, just need to focus on the first focusable element.\n\tuseEffect( () => {\n\t\tif ( containerRef.current ) {\n\t\t\tconst [ firstFocusable ] = focus.focusable.find(\n\t\t\t\tcontainerRef.current\n\t\t\t);\n\t\t\tfirstFocusable?.focus();\n\t\t}\n\t}, [ showSearchEntities ] );\n\n\treturn (\n\t\t<VStack\n\t\t\tspacing={ 4 }\n\t\t\tclassName=\"edit-site-custom-template-modal__contents-wrapper\"\n\t\t\talignment=\"left\"\n\t\t>\n\t\t\t{ ! showSearchEntities && (\n\t\t\t\t<>\n\t\t\t\t\t<Text as=\"p\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Select whether to create a single template for all items or a specific one.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t\t<Flex\n\t\t\t\t\t\tclassName=\"edit-site-custom-template-modal__contents\"\n\t\t\t\t\t\tgap=\"4\"\n\t\t\t\t\t\talign=\"initial\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\t\tslug,\n\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\tdescription,\n\t\t\t\t\t\t\t\t\ttemplatePrefix,\n\t\t\t\t\t\t\t\t} = entityForSuggestions.template;\n\t\t\t\t\t\t\t\tonSelect( {\n\t\t\t\t\t\t\t\t\tslug,\n\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\tdescription,\n\t\t\t\t\t\t\t\t\ttemplatePrefix,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tweight={ 500 }\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ entityForSuggestions.labels.all_items }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// 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.\n\t\t\t\t\t\t\t\t\t__( 'For all items' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetShowSearchEntities( true );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tweight={ 500 }\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ entityForSuggestions.labels.singular_name }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// 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.\n\t\t\t\t\t\t\t\t\t__( 'For a specific item' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t</Flex>\n\t\t\t\t\t<Flex justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onBack }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Flex>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ showSearchEntities && (\n\t\t\t\t<>\n\t\t\t\t\t<Text as=\"p\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'This template will be used only for the specific item chosen.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t\t<SuggestionList\n\t\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t/>\n\t\t\t\t\t<Flex justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t// If general template exists, go directly back to main screen\n\t\t\t\t\t\t\t\t// instead of showing the choice screen\n\t\t\t\t\t\t\t\tif ( entityForSuggestions.hasGeneralTemplate ) {\n\t\t\t\t\t\t\t\t\tonBack();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsetShowSearchEntities( false );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Flex>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\nexport default AddCustomTemplateModalContent;\n", "/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useMemo, useCallback } from '@wordpress/element';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { blockMeta, post, archive } from '@wordpress/icons';\nimport { safeDecodeURI } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { TEMPLATE_POST_TYPE } from '../../utils/constants';\n\nconst EMPTY_OBJECT = {};\n\n/**\n * @typedef IHasNameAndId\n * @property {string|number} id   The entity's id.\n * @property {string}        name The entity's name.\n */\n\nconst getValueFromObjectPath = ( object, path ) => {\n\tlet value = object;\n\tpath.split( '.' ).forEach( ( fieldName ) => {\n\t\tvalue = value?.[ fieldName ];\n\t} );\n\treturn value;\n};\n\n/**\n * Helper that adds a prefix to a post slug. The slug needs to be URL-decoded first,\n * so that we have raw Unicode characters there. The server will truncate the slug to\n * 200 characters, respecing Unicode char boundary. On the other hand, the server\n * doesn't detect urlencoded octet boundary and can possibly construct slugs that\n * are not valid urlencoded strings.\n * @param {string} prefix The prefix to add to the slug.\n * @param {string} slug   The slug to add the prefix to.\n * @return {string} The slug with the prefix.\n */\nfunction prefixSlug( prefix, slug ) {\n\treturn `${ prefix }-${ safeDecodeURI( slug ) }`;\n}\n\n/**\n * Helper util to map records to add a `name` prop from a\n * provided path, in order to handle all entities in the same\n * fashion(implementing`IHasNameAndId` interface).\n *\n * @param {Object[]} entities The array of entities.\n * @param {string}   path     The path to map a `name` property from the entity.\n * @return {IHasNameAndId[]} An array of entities that now implement the `IHasNameAndId` interface.\n */\nexport const mapToIHasNameAndId = ( entities, path ) => {\n\treturn ( entities || [] ).map( ( entity ) => ( {\n\t\t...entity,\n\t\tname: decodeEntities( getValueFromObjectPath( entity, path ) ),\n\t} ) );\n};\n\n/**\n * @typedef {Object} EntitiesInfo\n * @property {boolean}  hasEntities         If an entity has available records(posts, terms, etc..).\n * @property {number[]} existingEntitiesIds An array of the existing entities ids.\n */\n\nexport const useExistingTemplates = () => {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t{\n\t\t\t\t\tper_page: -1,\n\t\t\t\t}\n\t\t\t),\n\t\t[]\n\t);\n};\n\nexport const useDefaultTemplateTypes = () => {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getCurrentTheme()?.default_template_types || [],\n\t\t[]\n\t);\n};\n\nconst usePublicPostTypes = () => {\n\tconst postTypes = useSelect(\n\t\t( select ) => select( coreStore ).getPostTypes( { per_page: -1 } ),\n\t\t[]\n\t);\n\treturn useMemo( () => {\n\t\tconst excludedPostTypes = [ 'attachment' ];\n\t\treturn postTypes\n\t\t\t?.filter(\n\t\t\t\t( { viewable, slug } ) =>\n\t\t\t\t\tviewable && ! excludedPostTypes.includes( slug )\n\t\t\t)\n\t\t\t.sort( ( a, b ) => {\n\t\t\t\t// Sort post types alphabetically by name,\n\t\t\t\t// but exclude the built-in 'post' type from sorting.\n\t\t\t\tif ( a.slug === 'post' || b.slug === 'post' ) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn a.name.localeCompare( b.name );\n\t\t\t} );\n\t}, [ postTypes ] );\n};\n\nconst usePublicTaxonomies = () => {\n\tconst taxonomies = useSelect(\n\t\t( select ) => select( coreStore ).getTaxonomies( { per_page: -1 } ),\n\t\t[]\n\t);\n\treturn useMemo( () => {\n\t\treturn taxonomies?.filter(\n\t\t\t( { visibility } ) => visibility?.publicly_queryable\n\t\t);\n\t}, [ taxonomies ] );\n};\n\nexport function usePostTypeArchiveMenuItems() {\n\tconst publicPostTypes = usePublicPostTypes();\n\tconst postTypesWithArchives = useMemo(\n\t\t() => publicPostTypes?.filter( ( postType ) => postType.has_archive ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst existingTemplates = useExistingTemplates();\n\t// We need to keep track of naming conflicts. If a conflict\n\t// occurs, we need to add slug.\n\tconst postTypeLabels = useMemo(\n\t\t() =>\n\t\t\tpublicPostTypes?.reduce( ( accumulator, { labels } ) => {\n\t\t\t\tconst singularName = labels.singular_name.toLowerCase();\n\t\t\t\taccumulator[ singularName ] =\n\t\t\t\t\t( accumulator[ singularName ] || 0 ) + 1;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst needsUniqueIdentifier = useCallback(\n\t\t( { labels, slug } ) => {\n\t\t\tconst singularName = labels.singular_name.toLowerCase();\n\t\t\treturn postTypeLabels[ singularName ] > 1 && singularName !== slug;\n\t\t},\n\t\t[ postTypeLabels ]\n\t);\n\treturn useMemo(\n\t\t() =>\n\t\t\tpostTypesWithArchives\n\t\t\t\t?.filter(\n\t\t\t\t\t( postType ) =>\n\t\t\t\t\t\t! ( existingTemplates || [] ).some(\n\t\t\t\t\t\t\t( existingTemplate ) =>\n\t\t\t\t\t\t\t\texistingTemplate.slug ===\n\t\t\t\t\t\t\t\t'archive-' + postType.slug\n\t\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.map( ( postType ) => {\n\t\t\t\t\tlet title;\n\t\t\t\t\tif ( needsUniqueIdentifier( postType ) ) {\n\t\t\t\t\t\ttitle = sprintf(\n\t\t\t\t\t\t\t// translators: %1s: Name of the post type e.g: \"Post\"; %2s: Slug of the post type e.g: \"book\".\n\t\t\t\t\t\t\t__( 'Archive: %1$s (%2$s)' ),\n\t\t\t\t\t\t\tpostType.labels.singular_name,\n\t\t\t\t\t\t\tpostType.slug\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttitle = sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t\t\t__( 'Archive: %s' ),\n\t\t\t\t\t\t\tpostType.labels.singular_name\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tslug: 'archive-' + postType.slug,\n\t\t\t\t\t\tdescription: sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t'Displays an archive with the latest posts of type: %s.'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tpostType.labels.singular_name\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t// `icon` is the `menu_icon` property of a post type. We\n\t\t\t\t\t\t// only handle `dashicons` for now, even if the `menu_icon`\n\t\t\t\t\t\t// also supports urls and svg as values.\n\t\t\t\t\t\ticon:\n\t\t\t\t\t\t\ttypeof postType.icon === 'string' &&\n\t\t\t\t\t\t\tpostType.icon.startsWith( 'dashicons-' )\n\t\t\t\t\t\t\t\t? postType.icon.slice( 10 )\n\t\t\t\t\t\t\t\t: archive,\n\t\t\t\t\t\ttemplatePrefix: 'archive',\n\t\t\t\t\t};\n\t\t\t\t} ) || [],\n\t\t[ postTypesWithArchives, existingTemplates, needsUniqueIdentifier ]\n\t);\n}\n\nexport const usePostTypeMenuItems = ( onClickMenuItem ) => {\n\tconst publicPostTypes = usePublicPostTypes();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\t// We need to keep track of naming conflicts. If a conflict\n\t// occurs, we need to add slug.\n\tconst templateLabels = useMemo(\n\t\t() =>\n\t\t\tpublicPostTypes?.reduce( ( accumulator, { labels } ) => {\n\t\t\t\tconst templateName = (\n\t\t\t\t\tlabels.template_name || labels.singular_name\n\t\t\t\t).toLowerCase();\n\t\t\t\taccumulator[ templateName ] =\n\t\t\t\t\t( accumulator[ templateName ] || 0 ) + 1;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst needsUniqueIdentifier = useCallback(\n\t\t( { labels, slug } ) => {\n\t\t\tconst templateName = (\n\t\t\t\tlabels.template_name || labels.singular_name\n\t\t\t).toLowerCase();\n\t\t\treturn templateLabels[ templateName ] > 1 && templateName !== slug;\n\t\t},\n\t\t[ templateLabels ]\n\t);\n\n\t// `page`is a special case in template hierarchy.\n\tconst templatePrefixes = useMemo(\n\t\t() =>\n\t\t\tpublicPostTypes?.reduce( ( accumulator, { slug } ) => {\n\t\t\t\tlet suffix = slug;\n\t\t\t\tif ( slug !== 'page' ) {\n\t\t\t\t\tsuffix = `single-${ suffix }`;\n\t\t\t\t}\n\t\t\t\taccumulator[ slug ] = suffix;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst postTypesInfo = useEntitiesInfo( 'postType', templatePrefixes );\n\tconst menuItems = ( publicPostTypes || [] ).reduce(\n\t\t( accumulator, postType ) => {\n\t\t\tconst { slug, labels, icon } = postType;\n\t\t\t// We need to check if the general template is part of the\n\t\t\t// defaultTemplateTypes. If it is, just use that info and\n\t\t\t// augment it with the specific template functionality.\n\t\t\tconst generalTemplateSlug = templatePrefixes[ slug ];\n\t\t\tconst defaultTemplateType = defaultTemplateTypes?.find(\n\t\t\t\t( { slug: _slug } ) => _slug === generalTemplateSlug\n\t\t\t);\n\t\t\tconst _needsUniqueIdentifier = needsUniqueIdentifier( postType );\n\t\t\tlet menuItemTitle =\n\t\t\t\tlabels.template_name ||\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t__( 'Single item: %s' ),\n\t\t\t\t\tlabels.singular_name\n\t\t\t\t);\n\t\t\tif ( _needsUniqueIdentifier ) {\n\t\t\t\tmenuItemTitle = labels.template_name\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// translators: 1: Name of the template e.g: \"Single Item: Post\". 2: Slug of the post type e.g: \"book\".\n\t\t\t\t\t\t\t_x( '%1$s (%2$s)', 'post type menu label' ),\n\t\t\t\t\t\t\tlabels.template_name,\n\t\t\t\t\t\t\tslug\n\t\t\t\t\t  )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t// translators: 1: Name of the post type e.g: \"Post\". 2: Slug of the post type e.g: \"book\".\n\t\t\t\t\t\t\t_x(\n\t\t\t\t\t\t\t\t'Single item: %1$s (%2$s)',\n\t\t\t\t\t\t\t\t'post type menu label'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tlabels.singular_name,\n\t\t\t\t\t\t\tslug\n\t\t\t\t\t  );\n\t\t\t}\n\t\t\tconst menuItem = defaultTemplateType\n\t\t\t\t? {\n\t\t\t\t\t\t...defaultTemplateType,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t  }\n\t\t\t\t: {\n\t\t\t\t\t\tslug: generalTemplateSlug,\n\t\t\t\t\t\ttitle: menuItemTitle,\n\t\t\t\t\t\tdescription: sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t\t\t__( 'Displays a single item: %s.' ),\n\t\t\t\t\t\t\tlabels.singular_name\n\t\t\t\t\t\t),\n\t\t\t\t\t\t// `icon` is the `menu_icon` property of a post type. We\n\t\t\t\t\t\t// only handle `dashicons` for now, even if the `menu_icon`\n\t\t\t\t\t\t// also supports urls and svg as values.\n\t\t\t\t\t\ticon:\n\t\t\t\t\t\t\ttypeof icon === 'string' &&\n\t\t\t\t\t\t\ticon.startsWith( 'dashicons-' )\n\t\t\t\t\t\t\t\t? icon.slice( 10 )\n\t\t\t\t\t\t\t\t: post,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t  };\n\t\t\tconst hasEntities = postTypesInfo?.[ slug ]?.hasEntities;\n\t\t\t// We have a different template creation flow only if they have entities.\n\t\t\tif ( hasEntities ) {\n\t\t\t\tmenuItem.onClick = ( template ) => {\n\t\t\t\t\tonClickMenuItem( {\n\t\t\t\t\t\ttype: 'postType',\n\t\t\t\t\t\tslug,\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\trecordNamePath: 'title.rendered',\n\t\t\t\t\t\t\tqueryArgs: ( { search } ) => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t_fields: 'id,title,slug,link',\n\t\t\t\t\t\t\t\t\torderBy: search ? 'relevance' : 'modified',\n\t\t\t\t\t\t\t\t\texclude:\n\t\t\t\t\t\t\t\t\t\tpostTypesInfo[ slug ]\n\t\t\t\t\t\t\t\t\t\t\t.existingEntitiesIds,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetSpecificTemplate: ( suggestion ) => {\n\t\t\t\t\t\t\t\tconst templateSlug = prefixSlug(\n\t\t\t\t\t\t\t\t\ttemplatePrefixes[ slug ],\n\t\t\t\t\t\t\t\t\tsuggestion.slug\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttitle: templateSlug,\n\t\t\t\t\t\t\t\t\tslug: templateSlug,\n\t\t\t\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlabels,\n\t\t\t\t\t\ttemplate,\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t}\n\t\t\t// We don't need to add the menu item if there are no entities.\n\t\t\tif ( hasEntities ) {\n\t\t\t\taccumulator.push( menuItem );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t},\n\t\t[]\n\t);\n\t// Split menu items into two groups: one for the default post types\n\t// and one for the rest.\n\tconst postTypesMenuItems = useMemo(\n\t\t() =>\n\t\t\tmenuItems.reduce(\n\t\t\t\t( accumulator, postType ) => {\n\t\t\t\t\tconst { slug } = postType;\n\t\t\t\t\tlet key = 'postTypesMenuItems';\n\t\t\t\t\tif ( slug === 'page' ) {\n\t\t\t\t\t\tkey = 'defaultPostTypesMenuItems';\n\t\t\t\t\t}\n\t\t\t\t\taccumulator[ key ].push( postType );\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{ defaultPostTypesMenuItems: [], postTypesMenuItems: [] }\n\t\t\t),\n\t\t[ menuItems ]\n\t);\n\treturn postTypesMenuItems;\n};\n\nexport const useTaxonomiesMenuItems = ( onClickMenuItem ) => {\n\tconst publicTaxonomies = usePublicTaxonomies();\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\t// `category` and `post_tag` are special cases in template hierarchy.\n\tconst templatePrefixes = useMemo(\n\t\t() =>\n\t\t\tpublicTaxonomies?.reduce( ( accumulator, { slug } ) => {\n\t\t\t\tlet suffix = slug;\n\t\t\t\tif ( ! [ 'category', 'post_tag' ].includes( slug ) ) {\n\t\t\t\t\tsuffix = `taxonomy-${ suffix }`;\n\t\t\t\t}\n\t\t\t\tif ( slug === 'post_tag' ) {\n\t\t\t\t\tsuffix = `tag`;\n\t\t\t\t}\n\t\t\t\taccumulator[ slug ] = suffix;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicTaxonomies ]\n\t);\n\t// We need to keep track of naming conflicts. If a conflict\n\t// occurs, we need to add slug.\n\tconst taxonomyLabels = publicTaxonomies?.reduce(\n\t\t( accumulator, { labels } ) => {\n\t\t\tconst templateName = (\n\t\t\t\tlabels.template_name || labels.singular_name\n\t\t\t).toLowerCase();\n\t\t\taccumulator[ templateName ] =\n\t\t\t\t( accumulator[ templateName ] || 0 ) + 1;\n\t\t\treturn accumulator;\n\t\t},\n\t\t{}\n\t);\n\tconst needsUniqueIdentifier = ( labels, slug ) => {\n\t\tif ( [ 'category', 'post_tag' ].includes( slug ) ) {\n\t\t\treturn false;\n\t\t}\n\t\tconst templateName = (\n\t\t\tlabels.template_name || labels.singular_name\n\t\t).toLowerCase();\n\t\treturn taxonomyLabels[ templateName ] > 1 && templateName !== slug;\n\t};\n\tconst taxonomiesInfo = useEntitiesInfo( 'taxonomy', templatePrefixes );\n\tconst existingTemplateSlugs = ( existingTemplates || [] ).map(\n\t\t( { slug } ) => slug\n\t);\n\tconst menuItems = ( publicTaxonomies || [] ).reduce(\n\t\t( accumulator, taxonomy ) => {\n\t\t\tconst { slug, labels } = taxonomy;\n\t\t\t// We need to check if the general template is part of the\n\t\t\t// defaultTemplateTypes. If it is, just use that info and\n\t\t\t// augment it with the specific template functionality.\n\t\t\tconst generalTemplateSlug = templatePrefixes[ slug ];\n\t\t\tconst defaultTemplateType = defaultTemplateTypes?.find(\n\t\t\t\t( { slug: _slug } ) => _slug === generalTemplateSlug\n\t\t\t);\n\t\t\tconst hasGeneralTemplate =\n\t\t\t\texistingTemplateSlugs?.includes( generalTemplateSlug );\n\t\t\tconst _needsUniqueIdentifier = needsUniqueIdentifier(\n\t\t\t\tlabels,\n\t\t\t\tslug\n\t\t\t);\n\t\t\tlet menuItemTitle = labels.template_name || labels.singular_name;\n\t\t\tif ( _needsUniqueIdentifier ) {\n\t\t\t\tmenuItemTitle = labels.template_name\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// translators: 1: Name of the template e.g: \"Products by Category\". 2: Slug of the taxonomy e.g: \"product_cat\".\n\t\t\t\t\t\t\t_x( '%1$s (%2$s)', 'taxonomy template menu label' ),\n\t\t\t\t\t\t\tlabels.template_name,\n\t\t\t\t\t\t\tslug\n\t\t\t\t\t  )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t// translators: 1: Name of the taxonomy e.g: \"Category\". 2: Slug of the taxonomy e.g: \"product_cat\".\n\t\t\t\t\t\t\t_x( '%1$s (%2$s)', 'taxonomy menu label' ),\n\t\t\t\t\t\t\tlabels.singular_name,\n\t\t\t\t\t\t\tslug\n\t\t\t\t\t  );\n\t\t\t}\n\t\t\tconst menuItem = defaultTemplateType\n\t\t\t\t? {\n\t\t\t\t\t\t...defaultTemplateType,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t  }\n\t\t\t\t: {\n\t\t\t\t\t\tslug: generalTemplateSlug,\n\t\t\t\t\t\ttitle: menuItemTitle,\n\t\t\t\t\t\tdescription: sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the taxonomy e.g: \"Product Categories\".\n\t\t\t\t\t\t\t__( 'Displays taxonomy: %s.' ),\n\t\t\t\t\t\t\tlabels.singular_name\n\t\t\t\t\t\t),\n\t\t\t\t\t\ticon: blockMeta,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t  };\n\t\t\tconst hasEntities = taxonomiesInfo?.[ slug ]?.hasEntities;\n\t\t\t// We have a different template creation flow only if they have entities.\n\t\t\tif ( hasEntities ) {\n\t\t\t\tmenuItem.onClick = ( template ) => {\n\t\t\t\t\tonClickMenuItem( {\n\t\t\t\t\t\ttype: 'taxonomy',\n\t\t\t\t\t\tslug,\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\tqueryArgs: ( { search } ) => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t_fields: 'id,name,slug,link',\n\t\t\t\t\t\t\t\t\torderBy: search ? 'name' : 'count',\n\t\t\t\t\t\t\t\t\texclude:\n\t\t\t\t\t\t\t\t\t\ttaxonomiesInfo[ slug ]\n\t\t\t\t\t\t\t\t\t\t\t.existingEntitiesIds,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetSpecificTemplate: ( suggestion ) => {\n\t\t\t\t\t\t\t\tconst templateSlug = prefixSlug(\n\t\t\t\t\t\t\t\t\ttemplatePrefixes[ slug ],\n\t\t\t\t\t\t\t\t\tsuggestion.slug\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttitle: templateSlug,\n\t\t\t\t\t\t\t\t\tslug: templateSlug,\n\t\t\t\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlabels,\n\t\t\t\t\t\thasGeneralTemplate,\n\t\t\t\t\t\ttemplate,\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t}\n\t\t\t// We don't need to add the menu item if there are no\n\t\t\t// entities and the general template exists.\n\t\t\tif ( ! hasGeneralTemplate || hasEntities ) {\n\t\t\t\taccumulator.push( menuItem );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t},\n\t\t[]\n\t);\n\t// Split menu items into two groups: one for the default taxonomies\n\t// and one for the rest.\n\tconst taxonomiesMenuItems = useMemo(\n\t\t() =>\n\t\t\tmenuItems.reduce(\n\t\t\t\t( accumulator, taxonomy ) => {\n\t\t\t\t\tconst { slug } = taxonomy;\n\t\t\t\t\tlet key = 'taxonomiesMenuItems';\n\t\t\t\t\tif ( [ 'category', 'tag' ].includes( slug ) ) {\n\t\t\t\t\t\tkey = 'defaultTaxonomiesMenuItems';\n\t\t\t\t\t}\n\t\t\t\t\taccumulator[ key ].push( taxonomy );\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{ defaultTaxonomiesMenuItems: [], taxonomiesMenuItems: [] }\n\t\t\t),\n\t\t[ menuItems ]\n\t);\n\treturn taxonomiesMenuItems;\n};\n\nconst USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX = { user: 'author' };\nconst USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS = { user: { who: 'authors' } };\nexport function useAuthorMenuItem( onClickMenuItem ) {\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst authorInfo = useEntitiesInfo(\n\t\t'root',\n\t\tUSE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX,\n\t\tUSE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS\n\t);\n\tlet authorMenuItem = defaultTemplateTypes?.find(\n\t\t( { slug } ) => slug === 'author'\n\t);\n\tif ( ! authorMenuItem ) {\n\t\tauthorMenuItem = {\n\t\t\tdescription: __(\n\t\t\t\t'Displays latest posts written by a single author.'\n\t\t\t),\n\t\t\tslug: 'author',\n\t\t\ttitle: 'Author',\n\t\t};\n\t}\n\tconst hasGeneralTemplate = !! existingTemplates?.find(\n\t\t( { slug } ) => slug === 'author'\n\t);\n\tif ( authorInfo.user?.hasEntities ) {\n\t\tauthorMenuItem = { ...authorMenuItem, templatePrefix: 'author' };\n\t\tauthorMenuItem.onClick = ( template ) => {\n\t\t\tonClickMenuItem( {\n\t\t\t\ttype: 'root',\n\t\t\t\tslug: 'user',\n\t\t\t\tconfig: {\n\t\t\t\t\tqueryArgs: ( { search } ) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t_fields: 'id,name,slug,link',\n\t\t\t\t\t\t\torderBy: search ? 'name' : 'registered_date',\n\t\t\t\t\t\t\texclude: authorInfo.user.existingEntitiesIds,\n\t\t\t\t\t\t\twho: 'authors',\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t\tgetSpecificTemplate: ( suggestion ) => {\n\t\t\t\t\t\tconst templateSlug = prefixSlug(\n\t\t\t\t\t\t\t'author',\n\t\t\t\t\t\t\tsuggestion.slug\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Name of the author e.g: \"Admin\".\n\t\t\t\t\t\t\t\t__( 'Author: %s' ),\n\t\t\t\t\t\t\t\tsuggestion.name\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tslug: templateSlug,\n\t\t\t\t\t\t\ttemplatePrefix: 'author',\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tlabels: {\n\t\t\t\t\tsingular_name: __( 'Author' ),\n\t\t\t\t\tsearch_items: __( 'Search Authors' ),\n\t\t\t\t\tnot_found: __( 'No authors found.' ),\n\t\t\t\t\tall_items: __( 'All Authors' ),\n\t\t\t\t},\n\t\t\t\thasGeneralTemplate,\n\t\t\t\ttemplate,\n\t\t\t} );\n\t\t};\n\t}\n\tif ( ! hasGeneralTemplate || authorInfo.user?.hasEntities ) {\n\t\treturn authorMenuItem;\n\t}\n}\n\n/**\n * Helper hook that returns information about an entity having\n * records that we can create a specific template for.\n *\n * For example we can search for `terms` in `taxonomy` entity or\n * `posts` in `postType` entity.\n *\n * First we need to find the existing records with an associated template,\n * to query afterwards for any remaining record, by excluding them.\n *\n * @param {string}                entityName                The entity's name.\n * @param {Record<string,string>} templatePrefixes          An object with the entity's slug as key and the template prefix as value.\n * @param {Record<string,Object>} additionalQueryParameters An object with the entity's slug as key and additional query parameters as value.\n * @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the EntitiesInfo as value.\n */\nconst useEntitiesInfo = (\n\tentityName,\n\ttemplatePrefixes,\n\tadditionalQueryParameters = EMPTY_OBJECT\n) => {\n\tconst entitiesHasRecords = useSelect(\n\t\t( select ) => {\n\t\t\treturn Object.keys( templatePrefixes || {} ).reduce(\n\t\t\t\t( accumulator, slug ) => {\n\t\t\t\t\taccumulator[ slug ] = !! select(\n\t\t\t\t\t\tcoreStore\n\t\t\t\t\t).getEntityRecords( entityName, slug, {\n\t\t\t\t\t\tper_page: 1,\n\t\t\t\t\t\t_fields: 'id',\n\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\t...additionalQueryParameters[ slug ],\n\t\t\t\t\t} )?.length;\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\t\t},\n\t\t[ templatePrefixes, entityName, additionalQueryParameters ]\n\t);\n\tconst entitiesInfo = useMemo( () => {\n\t\treturn Object.keys( templatePrefixes || {} ).reduce(\n\t\t\t( accumulator, slug ) => {\n\t\t\t\taccumulator[ slug ] = {\n\t\t\t\t\thasEntities: entitiesHasRecords[ slug ],\n\t\t\t\t};\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\t}, [ templatePrefixes, entitiesHasRecords ] );\n\treturn entitiesInfo;\n};\n", "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n", "/**\n * Locale character mapping rules.\n */\ninterface Locale {\n  regexp: RegExp;\n  map: Record<string, string>;\n}\n\n/**\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n */\nconst SUPPORTED_LOCALE: Record<string, Locale> = {\n  tr: {\n    regexp: /\\u0130|\\u0049|\\u0049\\u0307/g,\n    map: {\n      İ: \"\\u0069\",\n      I: \"\\u0131\",\n      İ: \"\\u0069\",\n    },\n  },\n  az: {\n    regexp: /\\u0130/g,\n    map: {\n      İ: \"\\u0069\",\n      I: \"\\u0131\",\n      İ: \"\\u0069\",\n    },\n  },\n  lt: {\n    regexp: /\\u0049|\\u004A|\\u012E|\\u00CC|\\u00CD|\\u0128/g,\n    map: {\n      I: \"\\u0069\\u0307\",\n      J: \"\\u006A\\u0307\",\n      Į: \"\\u012F\\u0307\",\n      Ì: \"\\u0069\\u0307\\u0300\",\n      Í: \"\\u0069\\u0307\\u0301\",\n      Ĩ: \"\\u0069\\u0307\\u0303\",\n    },\n  },\n};\n\n/**\n * Localized lower case.\n */\nexport function localeLowerCase(str: string, locale: string) {\n  const lang = SUPPORTED_LOCALE[locale.toLowerCase()];\n  if (lang) return lowerCase(str.replace(lang.regexp, (m) => lang.map[m]));\n  return lowerCase(str);\n}\n\n/**\n * Lower case as a function.\n */\nexport function lowerCase(str: string) {\n  return str.toLowerCase();\n}\n", "import { lowerCase } from \"lower-case\";\n\nexport interface Options {\n  splitRegexp?: RegExp | RegExp[];\n  stripRegexp?: RegExp | RegExp[];\n  delimiter?: string;\n  transform?: (part: string, index: number, parts: string[]) => string;\n}\n\n// Support camel case (\"camelCase\" -> \"camel Case\" and \"CAMELCase\" -> \"CAMEL Case\").\nconst DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];\n\n// Remove all non-word characters.\nconst DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;\n\n/**\n * Normalize the string into something other libraries can manipulate easier.\n */\nexport function noCase(input: string, options: Options = {}) {\n  const {\n    splitRegexp = DEFAULT_SPLIT_REGEXP,\n    stripRegexp = DEFAULT_STRIP_REGEXP,\n    transform = lowerCase,\n    delimiter = \" \",\n  } = options;\n\n  let result = replace(\n    replace(input, splitRegexp, \"$1\\0$2\"),\n    stripRegexp,\n    \"\\0\"\n  );\n  let start = 0;\n  let end = result.length;\n\n  // Trim the delimiter from around the output string.\n  while (result.charAt(start) === \"\\0\") start++;\n  while (result.charAt(end - 1) === \"\\0\") end--;\n\n  // Transform each token independently.\n  return result.slice(start, end).split(\"\\0\").map(transform).join(delimiter);\n}\n\n/**\n * Replace `re` in the input string with the replacement value.\n */\nfunction replace(input: string, re: RegExp | RegExp[], value: string) {\n  if (re instanceof RegExp) return input.replace(re, value);\n  return re.reduce((input, re) => input.replace(re, value), input);\n}\n", "import { noCase, Options } from \"no-case\";\n\nexport { Options };\n\nexport function dotCase(input: string, options: Options = {}) {\n  return noCase(input, {\n    delimiter: \".\",\n    ...options,\n  });\n}\n", "import { dotCase, Options } from \"dot-case\";\n\nexport { Options };\n\nexport function paramCase(input: string, options: Options = {}) {\n  return dotCase(input, {\n    delimiter: \"-\",\n    ...options,\n  });\n}\n", "/**\n * External dependencies\n */\nimport { paramCase as kebabCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tButton,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\n\nfunction AddCustomGenericTemplateModalContent( { createTemplate, onBack } ) {\n\tconst [ title, setTitle ] = useState( '' );\n\tconst defaultTitle = __( 'Custom Template' );\n\tconst [ isBusy, setIsBusy ] = useState( false );\n\tconst inputRef = useRef();\n\n\t// Set focus to the name input when the component mounts\n\tuseEffect( () => {\n\t\tif ( inputRef.current ) {\n\t\t\tinputRef.current.focus();\n\t\t}\n\t}, [] );\n\n\tasync function onCreateTemplate( event ) {\n\t\tevent.preventDefault();\n\t\tif ( isBusy ) {\n\t\t\treturn;\n\t\t}\n\t\tsetIsBusy( true );\n\t\ttry {\n\t\t\tawait createTemplate(\n\t\t\t\t{\n\t\t\t\t\tslug:\n\t\t\t\t\t\tkebabCase( title || defaultTitle ) ||\n\t\t\t\t\t\t'wp-custom-template',\n\t\t\t\t\ttitle: title || defaultTitle,\n\t\t\t\t},\n\t\t\t\tfalse\n\t\t\t);\n\t\t} finally {\n\t\t\tsetIsBusy( false );\n\t\t}\n\t}\n\treturn (\n\t\t<form onSubmit={ onCreateTemplate }>\n\t\t\t<VStack spacing={ 6 }>\n\t\t\t\t<TextControl\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\tvalue={ title }\n\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\tplaceholder={ defaultTitle }\n\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\tref={ inputRef }\n\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax -- 'sidebar' is a common web design term for layouts\n\t\t\t\t\t\t'Describe the template, e.g. \"Post with sidebar\". A custom template can be manually applied to any post or page.'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<HStack\n\t\t\t\t\tclassName=\"edit-site-custom-generic-template__modal-actions\"\n\t\t\t\t\tjustify=\"right\"\n\t\t\t\t>\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ onBack }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tisBusy={ isBusy }\n\t\t\t\t\t\taria-disabled={ isBusy }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Create' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t</form>\n\t);\n}\n\nexport default AddCustomGenericTemplateModalContent;\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\t__experimentalHStack as HStack,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useState, useMemo } from '@wordpress/element';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { parse } from '@wordpress/blocks';\nimport { BlockPreview } from '@wordpress/block-editor';\nimport {\n\tEditorProvider,\n\tprivateApis as editorPrivateApis,\n} from '@wordpress/editor';\nimport {\n\tprivateApis as corePrivateApis,\n\tstore as coreStore,\n} from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useAddedBy } from './hooks';\nimport { useDefaultTemplateTypes } from '../add-new-template/utils';\nimport usePatternSettings from '../page-patterns/use-pattern-settings';\nimport { unlock } from '../../lock-unlock';\n\nconst { Badge } = unlock( componentsPrivateApis );\nconst { useEntityRecordsWithPermissions } = unlock( corePrivateApis );\nconst { useStyle } = unlock( editorPrivateApis );\n\nfunction useAllDefaultTemplateTypes() {\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst { records: staticRecords } = useEntityRecordsWithPermissions(\n\t\t'root',\n\t\t'registeredTemplate'\n\t);\n\treturn [\n\t\t...defaultTemplateTypes,\n\t\t...staticRecords\n\t\t\t?.filter( ( record ) => ! record.is_custom )\n\t\t\t.map( ( record ) => {\n\t\t\t\treturn {\n\t\t\t\t\tslug: record.slug,\n\t\t\t\t\ttitle: record.title.rendered,\n\t\t\t\t\tdescription: record.description,\n\t\t\t\t};\n\t\t\t} ),\n\t];\n}\n\nfunction PreviewField( { item } ) {\n\tconst settings = usePatternSettings();\n\tconst backgroundColor = useStyle( 'color.background' ) ?? 'white';\n\tconst blocks = useMemo( () => {\n\t\treturn parse( item.content.raw );\n\t}, [ item.content.raw ] );\n\n\tconst isEmpty = ! blocks?.length;\n\t// Wrap everything in a block editor provider to ensure 'styles' that are needed\n\t// for the previews are synced between the site editor store and the block editor store.\n\t// Additionally we need to have the `__experimentalBlockPatterns` setting in order to\n\t// render patterns inside the previews.\n\t// TODO: Same approach is used in the patterns list and it becomes obvious that some of\n\t// the block editor settings are needed in context where we don't have the block editor.\n\t// Explore how we can solve this in a better way.\n\treturn (\n\t\t<EditorProvider post={ item } settings={ settings }>\n\t\t\t<div\n\t\t\t\tclassName=\"page-templates-preview-field\"\n\t\t\t\tstyle={ { backgroundColor } }\n\t\t\t>\n\t\t\t\t{ isEmpty && __( 'Empty template' ) }\n\t\t\t\t{ ! isEmpty && (\n\t\t\t\t\t<BlockPreview.Async>\n\t\t\t\t\t\t<BlockPreview blocks={ blocks } />\n\t\t\t\t\t</BlockPreview.Async>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</EditorProvider>\n\t);\n}\n\nexport const previewField = {\n\tlabel: __( 'Preview' ),\n\tid: 'preview',\n\trender: PreviewField,\n\tenableSorting: false,\n};\n\nexport const descriptionField = {\n\tlabel: __( 'Description' ),\n\tid: 'description',\n\trender: window?.__experimentalTemplateActivate\n\t\t? function RenderDescription( { item } ) {\n\t\t\t\tconst defaultTemplateTypes = useAllDefaultTemplateTypes();\n\t\t\t\tconst defaultTemplateType = defaultTemplateTypes.find(\n\t\t\t\t\t( type ) => type.slug === item.slug\n\t\t\t\t);\n\t\t\t\treturn item.description\n\t\t\t\t\t? decodeEntities( item.description )\n\t\t\t\t\t: defaultTemplateType?.description;\n\t\t  }\n\t\t: ( { item } ) => {\n\t\t\t\treturn item.description && decodeEntities( item.description );\n\t\t  },\n\tenableSorting: false,\n\tenableGlobalSearch: true,\n};\n\nfunction AuthorField( { item } ) {\n\tconst [ isImageLoaded, setIsImageLoaded ] = useState( false );\n\tconst { text, icon, imageUrl } = useAddedBy( item.type, item.id );\n\n\treturn (\n\t\t<HStack alignment=\"left\" spacing={ 0 }>\n\t\t\t{ imageUrl && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx( 'page-templates-author-field__avatar', {\n\t\t\t\t\t\t'is-loaded': isImageLoaded,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tonLoad={ () => setIsImageLoaded( true ) }\n\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\tsrc={ imageUrl }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ ! imageUrl && (\n\t\t\t\t<div className=\"page-templates-author-field__icon\">\n\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<span className=\"page-templates-author-field__name\">{ text }</span>\n\t\t</HStack>\n\t);\n}\n\nexport const authorField = {\n\tlabel: __( 'Author' ),\n\tid: 'author',\n\tgetValue: ( { item } ) => item.author_text ?? item.author,\n\trender: AuthorField,\n};\n\nexport const activeField = {\n\tlabel: __( 'Status' ),\n\tid: 'active',\n\ttype: 'boolean',\n\tgetValue: ( { item } ) => item._isActive,\n\trender: function Render( { item } ) {\n\t\tconst activeLabel = item._isCustom\n\t\t\t? _x( 'Active when used', 'template' )\n\t\t\t: _x( 'Active', 'template' );\n\t\tconst activeIntent = item._isCustom ? 'info' : 'success';\n\t\tconst isActive = item._isActive;\n\t\treturn (\n\t\t\t<Badge intent={ isActive ? activeIntent : 'default' }>\n\t\t\t\t{ isActive ? activeLabel : _x( 'Inactive', 'template' ) }\n\t\t\t</Badge>\n\t\t);\n\t},\n};\n\nexport const useThemeField = () => {\n\tconst activeTheme = useSelect( ( select ) =>\n\t\tselect( coreStore ).getCurrentTheme()\n\t);\n\treturn useMemo(\n\t\t() => ( {\n\t\t\tlabel: __( 'Compatible Theme' ),\n\t\t\tid: 'theme',\n\t\t\tgetValue: ( { item } ) => item.theme,\n\t\t\trender: function Render( { item } ) {\n\t\t\t\tif ( item.theme === activeTheme.stylesheet ) {\n\t\t\t\t\treturn <Badge intent=\"success\">{ item.theme }</Badge>;\n\t\t\t\t}\n\t\t\t\treturn <Badge intent=\"error\">{ item.theme }</Badge>;\n\t\t\t},\n\t\t} ),\n\t\t[ activeTheme ]\n\t);\n};\n\nexport const slugField = {\n\tlabel: __( 'Template Type' ),\n\tid: 'slug',\n\tgetValue: ( { item } ) => item.slug,\n\trender: function Render( { item } ) {\n\t\tconst defaultTemplateTypes = useAllDefaultTemplateTypes();\n\t\tconst defaultTemplateType = defaultTemplateTypes.find(\n\t\t\t( type ) => type.slug === item.slug\n\t\t);\n\t\treturn defaultTemplateType?.title || _x( 'Custom', 'template type' );\n\t},\n};\n", "export const defaultLayouts = {\n\ttable: {\n\t\tshowMedia: false,\n\t},\n\tgrid: {\n\t\tshowMedia: true,\n\t},\n\tlist: {\n\t\tshowMedia: false,\n\t},\n};\n\nconst DEFAULT_VIEW = {\n\ttype: 'grid',\n\tperPage: 20,\n\tsort: {\n\t\tfield: 'title',\n\t\tdirection: 'asc',\n\t},\n\ttitleField: 'title',\n\tdescriptionField: 'description',\n\tmediaField: 'preview',\n\tfields: [ 'author', 'active', 'slug', 'theme' ],\n\tfilters: [],\n\t...defaultLayouts.grid,\n};\n\nexport function getDefaultView( activeView ) {\n\treturn {\n\t\t...DEFAULT_VIEW,\n\t\tsort:\n\t\t\tactiveView === 'user'\n\t\t\t\t? {\n\t\t\t\t\t\tfield: 'date',\n\t\t\t\t\t\tdirection: 'desc',\n\t\t\t\t  }\n\t\t\t\t: DEFAULT_VIEW.sort,\n\t\tfilters: ! [ 'active', 'user' ].includes( activeView )\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: 'author',\n\t\t\t\t\t\toperator: 'isAny',\n\t\t\t\t\t\tvalue: [ activeView ],\n\t\t\t\t\t},\n\t\t\t  ]\n\t\t\t: [],\n\t};\n}\n", "/**\n * WordPress dependencies\n */\nimport { Page } from '@wordpress/admin-ui';\nimport { __ } from '@wordpress/i18n';\nimport { useState, useMemo, useCallback } from '@wordpress/element';\nimport { privateApis as corePrivateApis } from '@wordpress/core-data';\nimport { DataViews, filterSortAndPaginate } from '@wordpress/dataviews';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\nimport { addQueryArgs } from '@wordpress/url';\nimport { useEvent } from '@wordpress/compose';\nimport { useView } from '@wordpress/views';\nimport { Button } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport AddNewTemplate from '../add-new-template-legacy';\nimport { TEMPLATE_POST_TYPE } from '../../utils/constants';\nimport { unlock } from '../../lock-unlock';\nimport { useEditPostAction } from '../dataviews-actions';\nimport { authorField, descriptionField, previewField } from './fields';\nimport { defaultLayouts, getDefaultView } from './view-utils';\n\nconst { usePostActions, templateTitleField } = unlock( editorPrivateApis );\nconst { useHistory, useLocation } = unlock( routerPrivateApis );\nconst { useEntityRecordsWithPermissions } = unlock( corePrivateApis );\n\nexport default function PageTemplates() {\n\tconst { path, query } = useLocation();\n\tconst { activeView = 'active', postId } = query;\n\tconst [ selection, setSelection ] = useState( [ postId ] );\n\n\tconst defaultView = useMemo( () => {\n\t\treturn getDefaultView( activeView );\n\t}, [ activeView ] );\n\tconst { view, updateView, isModified, resetToDefault } = useView( {\n\t\tkind: 'postType',\n\t\tname: TEMPLATE_POST_TYPE,\n\t\tslug: activeView,\n\t\tdefaultView,\n\t\tqueryParams: {\n\t\t\tpage: query.pageNumber,\n\t\t\tsearch: query.search,\n\t\t},\n\t\tonChangeQueryParams: ( newQueryParams ) => {\n\t\t\thistory.navigate(\n\t\t\t\taddQueryArgs( path, {\n\t\t\t\t\t...query,\n\t\t\t\t\tpageNumber: newQueryParams.page,\n\t\t\t\t\tsearch: newQueryParams.search || undefined,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t} );\n\n\tconst { records, isResolving: isLoadingData } =\n\t\tuseEntityRecordsWithPermissions( 'postType', TEMPLATE_POST_TYPE, {\n\t\t\tper_page: -1,\n\t\t} );\n\tconst history = useHistory();\n\tconst onChangeSelection = useCallback(\n\t\t( items ) => {\n\t\t\tsetSelection( items );\n\t\t\tif ( view?.type === 'list' ) {\n\t\t\t\thistory.navigate(\n\t\t\t\t\taddQueryArgs( path, {\n\t\t\t\t\t\tpostId: items.length === 1 ? items[ 0 ] : undefined,\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ history, path, view?.type ]\n\t);\n\n\tconst authors = useMemo( () => {\n\t\tif ( ! records ) {\n\t\t\treturn [];\n\t\t}\n\t\tconst authorsSet = new Set();\n\t\trecords.forEach( ( template ) => {\n\t\t\tauthorsSet.add( template.author_text );\n\t\t} );\n\t\treturn Array.from( authorsSet ).map( ( author ) => ( {\n\t\t\tvalue: author,\n\t\t\tlabel: author,\n\t\t} ) );\n\t}, [ records ] );\n\n\tconst fields = useMemo(\n\t\t() => [\n\t\t\tpreviewField,\n\t\t\ttemplateTitleField,\n\t\t\tdescriptionField,\n\t\t\t{\n\t\t\t\t...authorField,\n\t\t\t\telements: authors,\n\t\t\t},\n\t\t],\n\t\t[ authors ]\n\t);\n\n\tconst { data, paginationInfo } = useMemo( () => {\n\t\treturn filterSortAndPaginate( records, view, fields );\n\t}, [ records, view, fields ] );\n\n\tconst postTypeActions = usePostActions( {\n\t\tpostType: TEMPLATE_POST_TYPE,\n\t\tcontext: 'list',\n\t} );\n\tconst editAction = useEditPostAction();\n\tconst actions = useMemo(\n\t\t() => [ editAction, ...postTypeActions ],\n\t\t[ postTypeActions, editAction ]\n\t);\n\n\tconst onChangeView = useEvent( ( newView ) => {\n\t\tif ( newView.type !== view.type ) {\n\t\t\t// Retrigger the routing areas resolution.\n\t\t\thistory.invalidate();\n\t\t}\n\t\tupdateView( newView );\n\t} );\n\n\treturn (\n\t\t<Page\n\t\t\tclassName=\"edit-site-page-templates\"\n\t\t\ttitle={ __( 'Templates' ) }\n\t\t\tactions={\n\t\t\t\t<>\n\t\t\t\t\t{ isModified && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tresetToDefault();\n\t\t\t\t\t\t\t\thistory.invalidate();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset view' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t\t\t<AddNewTemplate />\n\t\t\t\t</>\n\t\t\t}\n\t\t>\n\t\t\t<DataViews\n\t\t\t\tkey={ activeView }\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\tfields={ fields }\n\t\t\t\tactions={ actions }\n\t\t\t\tdata={ data }\n\t\t\t\tisLoading={ isLoadingData }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\tisItemClickable={ () => true }\n\t\t\t\tonClickItem={ ( { id } ) => {\n\t\t\t\t\thistory.navigate( `/wp_template/${ id }?canvas=edit` );\n\t\t\t\t} }\n\t\t\t\tselection={ selection }\n\t\t\t\tdefaultLayouts={ defaultLayouts }\n\t\t\t/>\n\t\t</Page>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tModal,\n\t__experimentalGrid as Grid,\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n\tFlex,\n\tIcon,\n} from '@wordpress/components';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useState, memo, useRef, useEffect } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tarchive,\n\tblockMeta,\n\tcalendar,\n\tcategory,\n\tcommentAuthorAvatar,\n\tpencil,\n\thome,\n\tlayout,\n\tlist,\n\tmedia,\n\tnotFound,\n\tpage,\n\tpin,\n\tverse,\n\tsearch,\n\ttag,\n} from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { focus } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport { TEMPLATE_POST_TYPE } from '../../utils/constants';\n\n/**\n * Internal dependencies\n */\nimport AddCustomTemplateModalContent from './add-custom-template-modal-content';\nimport {\n\tuseExistingTemplates,\n\tuseDefaultTemplateTypes,\n\tuseTaxonomiesMenuItems,\n\tusePostTypeMenuItems,\n\tuseAuthorMenuItem,\n\tusePostTypeArchiveMenuItems,\n} from './utils';\nimport AddCustomGenericTemplateModalContent from './add-custom-generic-template-modal-content';\nimport { unlock } from '../../lock-unlock';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nconst DEFAULT_TEMPLATE_SLUGS = [\n\t'front-page',\n\t'home',\n\t'single',\n\t'page',\n\t'index',\n\t'archive',\n\t'author',\n\t'category',\n\t'date',\n\t'tag',\n\t'search',\n\t'404',\n];\n\nconst TEMPLATE_ICONS = {\n\t'front-page': home,\n\thome: verse,\n\tsingle: pin,\n\tpage,\n\tarchive,\n\tsearch,\n\t404: notFound,\n\tindex: list,\n\tcategory,\n\tauthor: commentAuthorAvatar,\n\ttaxonomy: blockMeta,\n\tdate: calendar,\n\ttag,\n\tattachment: media,\n};\n\nfunction TemplateListItem( {\n\ttitle,\n\tdirection,\n\tclassName,\n\tdescription,\n\ticon,\n\tonClick,\n\tchildren,\n} ) {\n\treturn (\n\t\t<Button\n\t\t\t__next40pxDefaultSize\n\t\t\tclassName={ className }\n\t\t\tonClick={ onClick }\n\t\t\tlabel={ description }\n\t\t\tshowTooltip={ !! description }\n\t\t>\n\t\t\t<Flex\n\t\t\t\tas=\"span\"\n\t\t\t\tspacing={ 2 }\n\t\t\t\talign=\"center\"\n\t\t\t\tjustify=\"center\"\n\t\t\t\tstyle={ { width: '100%' } }\n\t\t\t\tdirection={ direction }\n\t\t\t>\n\t\t\t\t<div className=\"edit-site-add-new-template__template-icon\">\n\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t</div>\n\t\t\t\t<VStack\n\t\t\t\t\tclassName=\"edit-site-add-new-template__template-name\"\n\t\t\t\t\talignment=\"center\"\n\t\t\t\t\tspacing={ 0 }\n\t\t\t\t>\n\t\t\t\t\t<Text\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tweight={ 500 }\n\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t>\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</Text>\n\t\t\t\t\t{ children }\n\t\t\t\t</VStack>\n\t\t\t</Flex>\n\t\t</Button>\n\t);\n}\n\nconst modalContentMap = {\n\ttemplatesList: 1,\n\tcustomTemplate: 2,\n\tcustomGenericTemplate: 3,\n};\n\nfunction NewTemplateModal( { onClose } ) {\n\tconst [ modalContent, setModalContent ] = useState(\n\t\tmodalContentMap.templatesList\n\t);\n\tconst [ entityForSuggestions, setEntityForSuggestions ] = useState( {} );\n\tconst [ isSubmitting, setIsSubmitting ] = useState( false );\n\tconst missingTemplates = useMissingTemplates( setEntityForSuggestions, () =>\n\t\tsetModalContent( modalContentMap.customTemplate )\n\t);\n\tconst history = useHistory();\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst containerRef = useRef( null );\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\tconst homeUrl = useSelect( ( select ) => {\n\t\t// Site index.\n\t\treturn select( coreStore ).getEntityRecord( 'root', '__unstableBase' )\n\t\t\t?.home;\n\t}, [] );\n\n\tconst TEMPLATE_SHORT_DESCRIPTIONS = {\n\t\t'front-page': homeUrl,\n\t\tdate: sprintf(\n\t\t\t// translators: %s: The homepage url.\n\t\t\t__( 'E.g. %s' ),\n\t\t\thomeUrl + '/' + new Date().getFullYear()\n\t\t),\n\t};\n\n\tuseEffect( () => {\n\t\t// Focus the first focusable element when component mounts or UI changes\n\t\t// We don't want to focus on the other modals because they have their own focus management.\n\t\tif (\n\t\t\tcontainerRef.current &&\n\t\t\tmodalContent === modalContentMap.templatesList\n\t\t) {\n\t\t\tconst [ firstFocusable ] = focus.focusable.find(\n\t\t\t\tcontainerRef.current\n\t\t\t);\n\t\t\tfirstFocusable?.focus();\n\t\t}\n\t}, [ modalContent ] );\n\n\tasync function createTemplate( template, isWPSuggestion = true ) {\n\t\tif ( isSubmitting ) {\n\t\t\treturn;\n\t\t}\n\t\tsetIsSubmitting( true );\n\t\ttry {\n\t\t\tconst { title, description, slug } = template;\n\t\t\tconst newTemplate = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t{\n\t\t\t\t\tdescription,\n\t\t\t\t\t// Slugs need to be strings, so this is for template `404`\n\t\t\t\t\tslug: slug.toString(),\n\t\t\t\t\tstatus: 'publish',\n\t\t\t\t\ttitle,\n\t\t\t\t\t// This adds a post meta field in template that is part of `is_custom` value calculation.\n\t\t\t\t\tis_wp_suggestion: isWPSuggestion,\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\t// Navigate to the created template editor.\n\t\t\thistory.navigate(\n\t\t\t\t`/${ TEMPLATE_POST_TYPE }/${ newTemplate.id }?canvas=edit`\n\t\t\t);\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: Title of the created post or template, e.g: \"Hello world\".\n\t\t\t\t\t__( '\"%s\" successfully created.' ),\n\t\t\t\t\tdecodeEntities( newTemplate.title?.rendered || title ) ||\n\t\t\t\t\t\t__( '(no title)' )\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while creating the template.' );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t} finally {\n\t\t\tsetIsSubmitting( false );\n\t\t}\n\t}\n\tconst onModalClose = () => {\n\t\tonClose();\n\t\tsetModalContent( modalContentMap.templatesList );\n\t};\n\n\tlet modalTitle = __( 'Add template' );\n\tif ( modalContent === modalContentMap.customTemplate ) {\n\t\tmodalTitle = sprintf(\n\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t__( 'Add template: %s' ),\n\t\t\tentityForSuggestions.labels.singular_name\n\t\t);\n\t} else if ( modalContent === modalContentMap.customGenericTemplate ) {\n\t\tmodalTitle = __( 'Create custom template' );\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ modalTitle }\n\t\t\tclassName={ clsx( 'edit-site-add-new-template__modal', {\n\t\t\t\t'edit-site-add-new-template__modal_template_list':\n\t\t\t\t\tmodalContent === modalContentMap.templatesList,\n\t\t\t\t'edit-site-custom-template-modal':\n\t\t\t\t\tmodalContent === modalContentMap.customTemplate,\n\t\t\t} ) }\n\t\t\tonRequestClose={ onModalClose }\n\t\t\toverlayClassName={\n\t\t\t\tmodalContent === modalContentMap.customGenericTemplate\n\t\t\t\t\t? 'edit-site-custom-generic-template__modal'\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tref={ containerRef }\n\t\t>\n\t\t\t{ modalContent === modalContentMap.templatesList && (\n\t\t\t\t<Grid\n\t\t\t\t\tcolumns={ isMobile ? 2 : 3 }\n\t\t\t\t\tgap={ 4 }\n\t\t\t\t\talign=\"flex-start\"\n\t\t\t\t\tjustify=\"center\"\n\t\t\t\t\tclassName=\"edit-site-add-new-template__template-list__contents\"\n\t\t\t\t>\n\t\t\t\t\t<Flex className=\"edit-site-add-new-template__template-list__prompt\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Select what the new template should apply to:'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Flex>\n\t\t\t\t\t{ missingTemplates.map( ( template ) => {\n\t\t\t\t\t\tconst { title, slug, onClick } = template;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<TemplateListItem\n\t\t\t\t\t\t\t\tkey={ slug }\n\t\t\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\t\t\t\tclassName=\"edit-site-add-new-template__template-button\"\n\t\t\t\t\t\t\t\tdescription={\n\t\t\t\t\t\t\t\t\tTEMPLATE_SHORT_DESCRIPTIONS[ slug ]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ticon={ TEMPLATE_ICONS[ slug ] || layout }\n\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\tonClick\n\t\t\t\t\t\t\t\t\t\t? onClick( template )\n\t\t\t\t\t\t\t\t\t\t: createTemplate( template )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t\t<TemplateListItem\n\t\t\t\t\t\ttitle={ __( 'Custom template' ) }\n\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\tclassName=\"edit-site-add-new-template__custom-template-button\"\n\t\t\t\t\t\ticon={ pencil }\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tsetModalContent(\n\t\t\t\t\t\t\t\tmodalContentMap.customGenericTemplate\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'A custom template can be manually applied to any post or page.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</TemplateListItem>\n\t\t\t\t</Grid>\n\t\t\t) }\n\t\t\t{ modalContent === modalContentMap.customTemplate && (\n\t\t\t\t<AddCustomTemplateModalContent\n\t\t\t\t\tonSelect={ createTemplate }\n\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t\tonBack={ () =>\n\t\t\t\t\t\tsetModalContent( modalContentMap.templatesList )\n\t\t\t\t\t}\n\t\t\t\t\tcontainerRef={ containerRef }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ modalContent === modalContentMap.customGenericTemplate && (\n\t\t\t\t<AddCustomGenericTemplateModalContent\n\t\t\t\t\tcreateTemplate={ createTemplate }\n\t\t\t\t\tonBack={ () =>\n\t\t\t\t\t\tsetModalContent( modalContentMap.templatesList )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Modal>\n\t);\n}\n\nfunction NewTemplate() {\n\tconst [ showModal, setShowModal ] = useState( false );\n\n\tconst { postType } = useSelect( ( select ) => {\n\t\tconst { getPostType } = select( coreStore );\n\n\t\treturn {\n\t\t\tpostType: getPostType( TEMPLATE_POST_TYPE ),\n\t\t};\n\t}, [] );\n\n\tif ( ! postType ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Button\n\t\t\t\tvariant=\"primary\"\n\t\t\t\tonClick={ () => setShowModal( true ) }\n\t\t\t\tlabel={ postType.labels.add_new_item }\n\t\t\t\t__next40pxDefaultSize\n\t\t\t>\n\t\t\t\t{ postType.labels.add_new_item }\n\t\t\t</Button>\n\t\t\t{ showModal && (\n\t\t\t\t<NewTemplateModal onClose={ () => setShowModal( false ) } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction useMissingTemplates( setEntityForSuggestions, onClick ) {\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst existingTemplateSlugs = ( existingTemplates || [] ).map(\n\t\t( { slug } ) => slug\n\t);\n\tconst missingDefaultTemplates = ( defaultTemplateTypes || [] ).filter(\n\t\t( template ) =>\n\t\t\tDEFAULT_TEMPLATE_SLUGS.includes( template.slug ) &&\n\t\t\t! existingTemplateSlugs.includes( template.slug )\n\t);\n\tconst onClickMenuItem = ( _entityForSuggestions ) => {\n\t\tonClick?.();\n\t\tsetEntityForSuggestions( _entityForSuggestions );\n\t};\n\t// We need to replace existing default template types with\n\t// the create specific template functionality. The original\n\t// info (title, description, etc.) is preserved in the\n\t// used hooks.\n\tconst enhancedMissingDefaultTemplateTypes = [ ...missingDefaultTemplates ];\n\tconst { defaultTaxonomiesMenuItems, taxonomiesMenuItems } =\n\t\tuseTaxonomiesMenuItems( onClickMenuItem );\n\tconst { defaultPostTypesMenuItems, postTypesMenuItems } =\n\t\tusePostTypeMenuItems( onClickMenuItem );\n\n\tconst authorMenuItem = useAuthorMenuItem( onClickMenuItem );\n\t[\n\t\t...defaultTaxonomiesMenuItems,\n\t\t...defaultPostTypesMenuItems,\n\t\tauthorMenuItem,\n\t].forEach( ( menuItem ) => {\n\t\tif ( ! menuItem ) {\n\t\t\treturn;\n\t\t}\n\t\tconst matchIndex = enhancedMissingDefaultTemplateTypes.findIndex(\n\t\t\t( template ) => template.slug === menuItem.slug\n\t\t);\n\t\t// Some default template types might have been filtered above from\n\t\t// `missingDefaultTemplates` because they only check for the general\n\t\t// template. So here we either replace or append the item, augmented\n\t\t// with the check if it has available specific item to create a\n\t\t// template for.\n\t\tif ( matchIndex > -1 ) {\n\t\t\tenhancedMissingDefaultTemplateTypes[ matchIndex ] = menuItem;\n\t\t} else {\n\t\t\tenhancedMissingDefaultTemplateTypes.push( menuItem );\n\t\t}\n\t} );\n\t// Update the sort order to match the DEFAULT_TEMPLATE_SLUGS order.\n\tenhancedMissingDefaultTemplateTypes?.sort( ( template1, template2 ) => {\n\t\treturn (\n\t\t\tDEFAULT_TEMPLATE_SLUGS.indexOf( template1.slug ) -\n\t\t\tDEFAULT_TEMPLATE_SLUGS.indexOf( template2.slug )\n\t\t);\n\t} );\n\tconst missingTemplates = [\n\t\t...enhancedMissingDefaultTemplateTypes,\n\t\t...usePostTypeArchiveMenuItems(),\n\t\t...postTypesMenuItems,\n\t\t...taxonomiesMenuItems,\n\t];\n\treturn missingTemplates;\n}\n\nexport default memo( NewTemplate );\n", "/**\n * WordPress dependencies\n */\nimport { useState, useMemo, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tButton,\n\tFlex,\n\tFlexItem,\n\tSearchControl,\n\tTextHighlight,\n\tComposite,\n\t__experimentalText as Text,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useDebouncedInput } from '@wordpress/compose';\nimport { focus } from '@wordpress/dom';\nimport { safeDecodeURI } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { mapToIHasNameAndId } from './utils';\n\nconst EMPTY_ARRAY = [];\n\nfunction SuggestionListItem( {\n\tsuggestion,\n\tsearch,\n\tonSelect,\n\tentityForSuggestions,\n} ) {\n\tconst baseCssClass =\n\t\t'edit-site-custom-template-modal__suggestions_list__list-item';\n\treturn (\n\t\t<Composite.Item\n\t\t\trender={\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\trole=\"option\"\n\t\t\t\t\tclassName={ baseCssClass }\n\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\tonSelect(\n\t\t\t\t\t\t\tentityForSuggestions.config.getSpecificTemplate(\n\t\t\t\t\t\t\t\tsuggestion\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<Text\n\t\t\t\tsize=\"body\"\n\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\tweight={ 500 }\n\t\t\t\tclassName={ `${ baseCssClass }__title` }\n\t\t\t>\n\t\t\t\t<TextHighlight\n\t\t\t\t\ttext={ decodeEntities( suggestion.name ) }\n\t\t\t\t\thighlight={ search }\n\t\t\t\t/>\n\t\t\t</Text>\n\t\t\t{ suggestion.link && (\n\t\t\t\t<Text\n\t\t\t\t\tsize=\"body\"\n\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\tclassName={ `${ baseCssClass }__info` }\n\t\t\t\t>\n\t\t\t\t\t{ safeDecodeURI( suggestion.link ) }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</Composite.Item>\n\t);\n}\n\nfunction useSearchSuggestions( entityForSuggestions, search ) {\n\tconst { config } = entityForSuggestions;\n\tconst query = useMemo(\n\t\t() => ( {\n\t\t\torder: 'asc',\n\t\t\tcontext: 'view',\n\t\t\tsearch,\n\t\t\tper_page: search ? 20 : 10,\n\t\t\t...config.queryArgs( search ),\n\t\t} ),\n\t\t[ search, config ]\n\t);\n\tconst { records: searchResults, hasResolved: searchHasResolved } =\n\t\tuseEntityRecords(\n\t\t\tentityForSuggestions.type,\n\t\t\tentityForSuggestions.slug,\n\t\t\tquery\n\t\t);\n\tconst [ suggestions, setSuggestions ] = useState( EMPTY_ARRAY );\n\tuseEffect( () => {\n\t\tif ( ! searchHasResolved ) {\n\t\t\treturn;\n\t\t}\n\t\tlet newSuggestions = EMPTY_ARRAY;\n\t\tif ( searchResults?.length ) {\n\t\t\tnewSuggestions = searchResults;\n\t\t\tif ( config.recordNamePath ) {\n\t\t\t\tnewSuggestions = mapToIHasNameAndId(\n\t\t\t\t\tnewSuggestions,\n\t\t\t\t\tconfig.recordNamePath\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\t// Update suggestions only when the query has resolved, so as to keep\n\t\t// the previous results in the UI.\n\t\tsetSuggestions( newSuggestions );\n\t}, [ searchResults, searchHasResolved ] );\n\treturn suggestions;\n}\n\nfunction SuggestionList( { entityForSuggestions, onSelect } ) {\n\tconst [ search, setSearch, debouncedSearch ] = useDebouncedInput();\n\tconst suggestions = useSearchSuggestions(\n\t\tentityForSuggestions,\n\t\tdebouncedSearch\n\t);\n\tconst { labels } = entityForSuggestions;\n\tconst [ showSearchControl, setShowSearchControl ] = useState( false );\n\tif ( ! showSearchControl && suggestions?.length > 9 ) {\n\t\tsetShowSearchControl( true );\n\t}\n\treturn (\n\t\t<>\n\t\t\t{ showSearchControl && (\n\t\t\t\t<SearchControl\n\t\t\t\t\tonChange={ setSearch }\n\t\t\t\t\tvalue={ search }\n\t\t\t\t\tlabel={ labels.search_items }\n\t\t\t\t\tplaceholder={ labels.search_items }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ !! suggestions?.length && (\n\t\t\t\t<Composite\n\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\tclassName=\"edit-site-custom-template-modal__suggestions_list\"\n\t\t\t\t\taria-label={ __( 'Suggestions list' ) }\n\t\t\t\t>\n\t\t\t\t\t{ suggestions.map( ( suggestion ) => (\n\t\t\t\t\t\t<SuggestionListItem\n\t\t\t\t\t\t\tkey={ suggestion.slug }\n\t\t\t\t\t\t\tsuggestion={ suggestion }\n\t\t\t\t\t\t\tsearch={ debouncedSearch }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</Composite>\n\t\t\t) }\n\t\t\t{ debouncedSearch && ! suggestions?.length && (\n\t\t\t\t<Text\n\t\t\t\t\tas=\"p\"\n\t\t\t\t\tclassName=\"edit-site-custom-template-modal__no-results\"\n\t\t\t\t>\n\t\t\t\t\t{ labels.not_found }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction AddCustomTemplateModalContent( {\n\tonSelect,\n\tentityForSuggestions,\n\tonBack,\n\tcontainerRef,\n} ) {\n\tconst [ showSearchEntities, setShowSearchEntities ] = useState(\n\t\tentityForSuggestions.hasGeneralTemplate\n\t);\n\n\t// Focus on the first focusable element when the modal opens.\n\t// We handle focus management in the parent modal, just need to focus on the first focusable element.\n\tuseEffect( () => {\n\t\tif ( containerRef.current ) {\n\t\t\tconst [ firstFocusable ] = focus.focusable.find(\n\t\t\t\tcontainerRef.current\n\t\t\t);\n\t\t\tfirstFocusable?.focus();\n\t\t}\n\t}, [ showSearchEntities ] );\n\n\treturn (\n\t\t<VStack\n\t\t\tspacing={ 4 }\n\t\t\tclassName=\"edit-site-custom-template-modal__contents-wrapper\"\n\t\t\talignment=\"left\"\n\t\t>\n\t\t\t{ ! showSearchEntities && (\n\t\t\t\t<>\n\t\t\t\t\t<Text as=\"p\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Select whether to create a single template for all items or a specific one.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t\t<Flex\n\t\t\t\t\t\tclassName=\"edit-site-custom-template-modal__contents\"\n\t\t\t\t\t\tgap=\"4\"\n\t\t\t\t\t\talign=\"initial\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\t\tslug,\n\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\tdescription,\n\t\t\t\t\t\t\t\t\ttemplatePrefix,\n\t\t\t\t\t\t\t\t} = entityForSuggestions.template;\n\t\t\t\t\t\t\t\tonSelect( {\n\t\t\t\t\t\t\t\t\tslug,\n\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\tdescription,\n\t\t\t\t\t\t\t\t\ttemplatePrefix,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tweight={ 500 }\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ entityForSuggestions.labels.all_items }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// 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.\n\t\t\t\t\t\t\t\t\t__( 'For all items' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t<FlexItem\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetShowSearchEntities( true );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tweight={ 500 }\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ entityForSuggestions.labels.singular_name }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tas=\"span\"\n\t\t\t\t\t\t\t\tlineHeight={ 1.53846153846 } // 20px\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// 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.\n\t\t\t\t\t\t\t\t\t__( 'For a specific item' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t</Flex>\n\t\t\t\t\t<Flex justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onBack }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Flex>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ showSearchEntities && (\n\t\t\t\t<>\n\t\t\t\t\t<Text as=\"p\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'This template will be used only for the specific item chosen.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t\t<SuggestionList\n\t\t\t\t\t\tentityForSuggestions={ entityForSuggestions }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t/>\n\t\t\t\t\t<Flex justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t// If general template exists, go directly back to main screen\n\t\t\t\t\t\t\t\t// instead of showing the choice screen\n\t\t\t\t\t\t\t\tif ( entityForSuggestions.hasGeneralTemplate ) {\n\t\t\t\t\t\t\t\t\tonBack();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsetShowSearchEntities( false );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Flex>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\nexport default AddCustomTemplateModalContent;\n", "/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useMemo, useCallback } from '@wordpress/element';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { blockMeta, post, archive } from '@wordpress/icons';\nimport { safeDecodeURI } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { TEMPLATE_POST_TYPE } from '../../utils/constants';\n\nconst EMPTY_OBJECT = {};\n\n/**\n * @typedef IHasNameAndId\n * @property {string|number} id   The entity's id.\n * @property {string}        name The entity's name.\n */\n\nconst getValueFromObjectPath = ( object, path ) => {\n\tlet value = object;\n\tpath.split( '.' ).forEach( ( fieldName ) => {\n\t\tvalue = value?.[ fieldName ];\n\t} );\n\treturn value;\n};\n\n/**\n * Helper that adds a prefix to a post slug. The slug needs to be URL-decoded first,\n * so that we have raw Unicode characters there. The server will truncate the slug to\n * 200 characters, respecing Unicode char boundary. On the other hand, the server\n * doesn't detect urlencoded octet boundary and can possibly construct slugs that\n * are not valid urlencoded strings.\n * @param {string} prefix The prefix to add to the slug.\n * @param {string} slug   The slug to add the prefix to.\n * @return {string} The slug with the prefix.\n */\nfunction prefixSlug( prefix, slug ) {\n\treturn `${ prefix }-${ safeDecodeURI( slug ) }`;\n}\n\n/**\n * Helper util to map records to add a `name` prop from a\n * provided path, in order to handle all entities in the same\n * fashion(implementing`IHasNameAndId` interface).\n *\n * @param {Object[]} entities The array of entities.\n * @param {string}   path     The path to map a `name` property from the entity.\n * @return {IHasNameAndId[]} An array of entities that now implement the `IHasNameAndId` interface.\n */\nexport const mapToIHasNameAndId = ( entities, path ) => {\n\treturn ( entities || [] ).map( ( entity ) => ( {\n\t\t...entity,\n\t\tname: decodeEntities( getValueFromObjectPath( entity, path ) ),\n\t} ) );\n};\n\n/**\n * @typedef {Object} EntitiesInfo\n * @property {boolean}  hasEntities         If an entity has available records(posts, terms, etc..).\n * @property {number[]} existingEntitiesIds An array of the existing entities ids.\n */\n\nexport const useExistingTemplates = () => {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getEntityRecords(\n\t\t\t\t'postType',\n\t\t\t\tTEMPLATE_POST_TYPE,\n\t\t\t\t{\n\t\t\t\t\tper_page: -1,\n\t\t\t\t}\n\t\t\t),\n\t\t[]\n\t);\n};\n\nexport const useDefaultTemplateTypes = () => {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getCurrentTheme()?.default_template_types || [],\n\t\t[]\n\t);\n};\n\nconst usePublicPostTypes = () => {\n\tconst postTypes = useSelect(\n\t\t( select ) => select( coreStore ).getPostTypes( { per_page: -1 } ),\n\t\t[]\n\t);\n\treturn useMemo( () => {\n\t\tconst excludedPostTypes = [ 'attachment' ];\n\t\treturn postTypes\n\t\t\t?.filter(\n\t\t\t\t( { viewable, slug } ) =>\n\t\t\t\t\tviewable && ! excludedPostTypes.includes( slug )\n\t\t\t)\n\t\t\t.sort( ( a, b ) => {\n\t\t\t\t// Sort post types alphabetically by name,\n\t\t\t\t// but exclude the built-in 'post' type from sorting.\n\t\t\t\tif ( a.slug === 'post' || b.slug === 'post' ) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn a.name.localeCompare( b.name );\n\t\t\t} );\n\t}, [ postTypes ] );\n};\n\nconst usePublicTaxonomies = () => {\n\tconst taxonomies = useSelect(\n\t\t( select ) => select( coreStore ).getTaxonomies( { per_page: -1 } ),\n\t\t[]\n\t);\n\treturn useMemo( () => {\n\t\treturn taxonomies?.filter(\n\t\t\t( { visibility } ) => visibility?.publicly_queryable\n\t\t);\n\t}, [ taxonomies ] );\n};\n\nexport function usePostTypeArchiveMenuItems() {\n\tconst publicPostTypes = usePublicPostTypes();\n\tconst postTypesWithArchives = useMemo(\n\t\t() => publicPostTypes?.filter( ( postType ) => postType.has_archive ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst existingTemplates = useExistingTemplates();\n\t// We need to keep track of naming conflicts. If a conflict\n\t// occurs, we need to add slug.\n\tconst postTypeLabels = useMemo(\n\t\t() =>\n\t\t\tpublicPostTypes?.reduce( ( accumulator, { labels } ) => {\n\t\t\t\tconst singularName = labels.singular_name.toLowerCase();\n\t\t\t\taccumulator[ singularName ] =\n\t\t\t\t\t( accumulator[ singularName ] || 0 ) + 1;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst needsUniqueIdentifier = useCallback(\n\t\t( { labels, slug } ) => {\n\t\t\tconst singularName = labels.singular_name.toLowerCase();\n\t\t\treturn postTypeLabels[ singularName ] > 1 && singularName !== slug;\n\t\t},\n\t\t[ postTypeLabels ]\n\t);\n\treturn useMemo(\n\t\t() =>\n\t\t\tpostTypesWithArchives\n\t\t\t\t?.filter(\n\t\t\t\t\t( postType ) =>\n\t\t\t\t\t\t! ( existingTemplates || [] ).some(\n\t\t\t\t\t\t\t( existingTemplate ) =>\n\t\t\t\t\t\t\t\texistingTemplate.slug ===\n\t\t\t\t\t\t\t\t'archive-' + postType.slug\n\t\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.map( ( postType ) => {\n\t\t\t\t\tlet title;\n\t\t\t\t\tif ( needsUniqueIdentifier( postType ) ) {\n\t\t\t\t\t\ttitle = sprintf(\n\t\t\t\t\t\t\t// translators: %1s: Name of the post type e.g: \"Post\"; %2s: Slug of the post type e.g: \"book\".\n\t\t\t\t\t\t\t__( 'Archive: %1$s (%2$s)' ),\n\t\t\t\t\t\t\tpostType.labels.singular_name,\n\t\t\t\t\t\t\tpostType.slug\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttitle = sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t\t\t__( 'Archive: %s' ),\n\t\t\t\t\t\t\tpostType.labels.singular_name\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tslug: 'archive-' + postType.slug,\n\t\t\t\t\t\tdescription: sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t'Displays an archive with the latest posts of type: %s.'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tpostType.labels.singular_name\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t// `icon` is the `menu_icon` property of a post type. We\n\t\t\t\t\t\t// only handle `dashicons` for now, even if the `menu_icon`\n\t\t\t\t\t\t// also supports urls and svg as values.\n\t\t\t\t\t\ticon:\n\t\t\t\t\t\t\ttypeof postType.icon === 'string' &&\n\t\t\t\t\t\t\tpostType.icon.startsWith( 'dashicons-' )\n\t\t\t\t\t\t\t\t? postType.icon.slice( 10 )\n\t\t\t\t\t\t\t\t: archive,\n\t\t\t\t\t\ttemplatePrefix: 'archive',\n\t\t\t\t\t};\n\t\t\t\t} ) || [],\n\t\t[ postTypesWithArchives, existingTemplates, needsUniqueIdentifier ]\n\t);\n}\n\nexport const usePostTypeMenuItems = ( onClickMenuItem ) => {\n\tconst publicPostTypes = usePublicPostTypes();\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\t// We need to keep track of naming conflicts. If a conflict\n\t// occurs, we need to add slug.\n\tconst templateLabels = useMemo(\n\t\t() =>\n\t\t\tpublicPostTypes?.reduce( ( accumulator, { labels } ) => {\n\t\t\t\tconst templateName = (\n\t\t\t\t\tlabels.template_name || labels.singular_name\n\t\t\t\t).toLowerCase();\n\t\t\t\taccumulator[ templateName ] =\n\t\t\t\t\t( accumulator[ templateName ] || 0 ) + 1;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst needsUniqueIdentifier = useCallback(\n\t\t( { labels, slug } ) => {\n\t\t\tconst templateName = (\n\t\t\t\tlabels.template_name || labels.singular_name\n\t\t\t).toLowerCase();\n\t\t\treturn templateLabels[ templateName ] > 1 && templateName !== slug;\n\t\t},\n\t\t[ templateLabels ]\n\t);\n\n\t// `page`is a special case in template hierarchy.\n\tconst templatePrefixes = useMemo(\n\t\t() =>\n\t\t\tpublicPostTypes?.reduce( ( accumulator, { slug } ) => {\n\t\t\t\tlet suffix = slug;\n\t\t\t\tif ( slug !== 'page' ) {\n\t\t\t\t\tsuffix = `single-${ suffix }`;\n\t\t\t\t}\n\t\t\t\taccumulator[ slug ] = suffix;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicPostTypes ]\n\t);\n\tconst postTypesInfo = useEntitiesInfo( 'postType', templatePrefixes );\n\tconst existingTemplateSlugs = ( existingTemplates || [] ).map(\n\t\t( { slug } ) => slug\n\t);\n\tconst menuItems = ( publicPostTypes || [] ).reduce(\n\t\t( accumulator, postType ) => {\n\t\t\tconst { slug, labels, icon } = postType;\n\t\t\t// We need to check if the general template is part of the\n\t\t\t// defaultTemplateTypes. If it is, just use that info and\n\t\t\t// augment it with the specific template functionality.\n\t\t\tconst generalTemplateSlug = templatePrefixes[ slug ];\n\t\t\tconst defaultTemplateType = defaultTemplateTypes?.find(\n\t\t\t\t( { slug: _slug } ) => _slug === generalTemplateSlug\n\t\t\t);\n\t\t\tconst hasGeneralTemplate =\n\t\t\t\texistingTemplateSlugs?.includes( generalTemplateSlug );\n\t\t\tconst _needsUniqueIdentifier = needsUniqueIdentifier( postType );\n\t\t\tlet menuItemTitle =\n\t\t\t\tlabels.template_name ||\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t__( 'Single item: %s' ),\n\t\t\t\t\tlabels.singular_name\n\t\t\t\t);\n\t\t\tif ( _needsUniqueIdentifier ) {\n\t\t\t\tmenuItemTitle = labels.template_name\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// translators: 1: Name of the template e.g: \"Single Item: Post\". 2: Slug of the post type e.g: \"book\".\n\t\t\t\t\t\t\t_x( '%1$s (%2$s)', 'post type menu label' ),\n\t\t\t\t\t\t\tlabels.template_name,\n\t\t\t\t\t\t\tslug\n\t\t\t\t\t  )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t// translators: 1: Name of the post type e.g: \"Post\". 2: Slug of the post type e.g: \"book\".\n\t\t\t\t\t\t\t_x(\n\t\t\t\t\t\t\t\t'Single item: %1$s (%2$s)',\n\t\t\t\t\t\t\t\t'post type menu label'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tlabels.singular_name,\n\t\t\t\t\t\t\tslug\n\t\t\t\t\t  );\n\t\t\t}\n\t\t\tconst menuItem = defaultTemplateType\n\t\t\t\t? {\n\t\t\t\t\t\t...defaultTemplateType,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t  }\n\t\t\t\t: {\n\t\t\t\t\t\tslug: generalTemplateSlug,\n\t\t\t\t\t\ttitle: menuItemTitle,\n\t\t\t\t\t\tdescription: sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the post type e.g: \"Post\".\n\t\t\t\t\t\t\t__( 'Displays a single item: %s.' ),\n\t\t\t\t\t\t\tlabels.singular_name\n\t\t\t\t\t\t),\n\t\t\t\t\t\t// `icon` is the `menu_icon` property of a post type. We\n\t\t\t\t\t\t// only handle `dashicons` for now, even if the `menu_icon`\n\t\t\t\t\t\t// also supports urls and svg as values.\n\t\t\t\t\t\ticon:\n\t\t\t\t\t\t\ttypeof icon === 'string' &&\n\t\t\t\t\t\t\ticon.startsWith( 'dashicons-' )\n\t\t\t\t\t\t\t\t? icon.slice( 10 )\n\t\t\t\t\t\t\t\t: post,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t  };\n\t\t\tconst hasEntities = postTypesInfo?.[ slug ]?.hasEntities;\n\t\t\t// We have a different template creation flow only if they have entities.\n\t\t\tif ( hasEntities ) {\n\t\t\t\tmenuItem.onClick = ( template ) => {\n\t\t\t\t\tonClickMenuItem( {\n\t\t\t\t\t\ttype: 'postType',\n\t\t\t\t\t\tslug,\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\trecordNamePath: 'title.rendered',\n\t\t\t\t\t\t\tqueryArgs: ( { search } ) => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t_fields: 'id,title,slug,link',\n\t\t\t\t\t\t\t\t\torderBy: search ? 'relevance' : 'modified',\n\t\t\t\t\t\t\t\t\texclude:\n\t\t\t\t\t\t\t\t\t\tpostTypesInfo[ slug ]\n\t\t\t\t\t\t\t\t\t\t\t.existingEntitiesIds,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetSpecificTemplate: ( suggestion ) => {\n\t\t\t\t\t\t\t\tconst templateSlug = prefixSlug(\n\t\t\t\t\t\t\t\t\ttemplatePrefixes[ slug ],\n\t\t\t\t\t\t\t\t\tsuggestion.slug\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttitle: templateSlug,\n\t\t\t\t\t\t\t\t\tslug: templateSlug,\n\t\t\t\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlabels,\n\t\t\t\t\t\thasGeneralTemplate,\n\t\t\t\t\t\ttemplate,\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t}\n\t\t\t// We don't need to add the menu item if there are no\n\t\t\t// entities and the general template exists.\n\t\t\tif ( ! hasGeneralTemplate || hasEntities ) {\n\t\t\t\taccumulator.push( menuItem );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t},\n\t\t[]\n\t);\n\t// Split menu items into two groups: one for the default post types\n\t// and one for the rest.\n\tconst postTypesMenuItems = useMemo(\n\t\t() =>\n\t\t\tmenuItems.reduce(\n\t\t\t\t( accumulator, postType ) => {\n\t\t\t\t\tconst { slug } = postType;\n\t\t\t\t\tlet key = 'postTypesMenuItems';\n\t\t\t\t\tif ( slug === 'page' ) {\n\t\t\t\t\t\tkey = 'defaultPostTypesMenuItems';\n\t\t\t\t\t}\n\t\t\t\t\taccumulator[ key ].push( postType );\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{ defaultPostTypesMenuItems: [], postTypesMenuItems: [] }\n\t\t\t),\n\t\t[ menuItems ]\n\t);\n\treturn postTypesMenuItems;\n};\n\nexport const useTaxonomiesMenuItems = ( onClickMenuItem ) => {\n\tconst publicTaxonomies = usePublicTaxonomies();\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\t// `category` and `post_tag` are special cases in template hierarchy.\n\tconst templatePrefixes = useMemo(\n\t\t() =>\n\t\t\tpublicTaxonomies?.reduce( ( accumulator, { slug } ) => {\n\t\t\t\tlet suffix = slug;\n\t\t\t\tif ( ! [ 'category', 'post_tag' ].includes( slug ) ) {\n\t\t\t\t\tsuffix = `taxonomy-${ suffix }`;\n\t\t\t\t}\n\t\t\t\tif ( slug === 'post_tag' ) {\n\t\t\t\t\tsuffix = `tag`;\n\t\t\t\t}\n\t\t\t\taccumulator[ slug ] = suffix;\n\t\t\t\treturn accumulator;\n\t\t\t}, {} ),\n\t\t[ publicTaxonomies ]\n\t);\n\t// We need to keep track of naming conflicts. If a conflict\n\t// occurs, we need to add slug.\n\tconst taxonomyLabels = publicTaxonomies?.reduce(\n\t\t( accumulator, { labels } ) => {\n\t\t\tconst templateName = (\n\t\t\t\tlabels.template_name || labels.singular_name\n\t\t\t).toLowerCase();\n\t\t\taccumulator[ templateName ] =\n\t\t\t\t( accumulator[ templateName ] || 0 ) + 1;\n\t\t\treturn accumulator;\n\t\t},\n\t\t{}\n\t);\n\tconst needsUniqueIdentifier = ( labels, slug ) => {\n\t\tif ( [ 'category', 'post_tag' ].includes( slug ) ) {\n\t\t\treturn false;\n\t\t}\n\t\tconst templateName = (\n\t\t\tlabels.template_name || labels.singular_name\n\t\t).toLowerCase();\n\t\treturn taxonomyLabels[ templateName ] > 1 && templateName !== slug;\n\t};\n\tconst taxonomiesInfo = useEntitiesInfo( 'taxonomy', templatePrefixes );\n\tconst existingTemplateSlugs = ( existingTemplates || [] ).map(\n\t\t( { slug } ) => slug\n\t);\n\tconst menuItems = ( publicTaxonomies || [] ).reduce(\n\t\t( accumulator, taxonomy ) => {\n\t\t\tconst { slug, labels } = taxonomy;\n\t\t\t// We need to check if the general template is part of the\n\t\t\t// defaultTemplateTypes. If it is, just use that info and\n\t\t\t// augment it with the specific template functionality.\n\t\t\tconst generalTemplateSlug = templatePrefixes[ slug ];\n\t\t\tconst defaultTemplateType = defaultTemplateTypes?.find(\n\t\t\t\t( { slug: _slug } ) => _slug === generalTemplateSlug\n\t\t\t);\n\t\t\tconst hasGeneralTemplate =\n\t\t\t\texistingTemplateSlugs?.includes( generalTemplateSlug );\n\t\t\tconst _needsUniqueIdentifier = needsUniqueIdentifier(\n\t\t\t\tlabels,\n\t\t\t\tslug\n\t\t\t);\n\t\t\tlet menuItemTitle = labels.template_name || labels.singular_name;\n\t\t\tif ( _needsUniqueIdentifier ) {\n\t\t\t\tmenuItemTitle = labels.template_name\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// translators: 1: Name of the template e.g: \"Products by Category\". 2: Slug of the taxonomy e.g: \"product_cat\".\n\t\t\t\t\t\t\t_x( '%1$s (%2$s)', 'taxonomy template menu label' ),\n\t\t\t\t\t\t\tlabels.template_name,\n\t\t\t\t\t\t\tslug\n\t\t\t\t\t  )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t// translators: 1: Name of the taxonomy e.g: \"Category\". 2: Slug of the taxonomy e.g: \"product_cat\".\n\t\t\t\t\t\t\t_x( '%1$s (%2$s)', 'taxonomy menu label' ),\n\t\t\t\t\t\t\tlabels.singular_name,\n\t\t\t\t\t\t\tslug\n\t\t\t\t\t  );\n\t\t\t}\n\t\t\tconst menuItem = defaultTemplateType\n\t\t\t\t? {\n\t\t\t\t\t\t...defaultTemplateType,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t  }\n\t\t\t\t: {\n\t\t\t\t\t\tslug: generalTemplateSlug,\n\t\t\t\t\t\ttitle: menuItemTitle,\n\t\t\t\t\t\tdescription: sprintf(\n\t\t\t\t\t\t\t// translators: %s: Name of the taxonomy e.g: \"Product Categories\".\n\t\t\t\t\t\t\t__( 'Displays taxonomy: %s.' ),\n\t\t\t\t\t\t\tlabels.singular_name\n\t\t\t\t\t\t),\n\t\t\t\t\t\ticon: blockMeta,\n\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t  };\n\t\t\tconst hasEntities = taxonomiesInfo?.[ slug ]?.hasEntities;\n\t\t\t// We have a different template creation flow only if they have entities.\n\t\t\tif ( hasEntities ) {\n\t\t\t\tmenuItem.onClick = ( template ) => {\n\t\t\t\t\tonClickMenuItem( {\n\t\t\t\t\t\ttype: 'taxonomy',\n\t\t\t\t\t\tslug,\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\tqueryArgs: ( { search } ) => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t_fields: 'id,name,slug,link',\n\t\t\t\t\t\t\t\t\torderBy: search ? 'name' : 'count',\n\t\t\t\t\t\t\t\t\texclude:\n\t\t\t\t\t\t\t\t\t\ttaxonomiesInfo[ slug ]\n\t\t\t\t\t\t\t\t\t\t\t.existingEntitiesIds,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetSpecificTemplate: ( suggestion ) => {\n\t\t\t\t\t\t\t\tconst templateSlug = prefixSlug(\n\t\t\t\t\t\t\t\t\ttemplatePrefixes[ slug ],\n\t\t\t\t\t\t\t\t\tsuggestion.slug\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttitle: templateSlug,\n\t\t\t\t\t\t\t\t\tslug: templateSlug,\n\t\t\t\t\t\t\t\t\ttemplatePrefix: templatePrefixes[ slug ],\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlabels,\n\t\t\t\t\t\thasGeneralTemplate,\n\t\t\t\t\t\ttemplate,\n\t\t\t\t\t} );\n\t\t\t\t};\n\t\t\t}\n\t\t\t// We don't need to add the menu item if there are no\n\t\t\t// entities and the general template exists.\n\t\t\tif ( ! hasGeneralTemplate || hasEntities ) {\n\t\t\t\taccumulator.push( menuItem );\n\t\t\t}\n\t\t\treturn accumulator;\n\t\t},\n\t\t[]\n\t);\n\t// Split menu items into two groups: one for the default taxonomies\n\t// and one for the rest.\n\tconst taxonomiesMenuItems = useMemo(\n\t\t() =>\n\t\t\tmenuItems.reduce(\n\t\t\t\t( accumulator, taxonomy ) => {\n\t\t\t\t\tconst { slug } = taxonomy;\n\t\t\t\t\tlet key = 'taxonomiesMenuItems';\n\t\t\t\t\tif ( [ 'category', 'tag' ].includes( slug ) ) {\n\t\t\t\t\t\tkey = 'defaultTaxonomiesMenuItems';\n\t\t\t\t\t}\n\t\t\t\t\taccumulator[ key ].push( taxonomy );\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{ defaultTaxonomiesMenuItems: [], taxonomiesMenuItems: [] }\n\t\t\t),\n\t\t[ menuItems ]\n\t);\n\treturn taxonomiesMenuItems;\n};\n\nconst USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX = { user: 'author' };\nconst USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS = { user: { who: 'authors' } };\nexport function useAuthorMenuItem( onClickMenuItem ) {\n\tconst existingTemplates = useExistingTemplates();\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst authorInfo = useEntitiesInfo(\n\t\t'root',\n\t\tUSE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX,\n\t\tUSE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS\n\t);\n\tlet authorMenuItem = defaultTemplateTypes?.find(\n\t\t( { slug } ) => slug === 'author'\n\t);\n\tif ( ! authorMenuItem ) {\n\t\tauthorMenuItem = {\n\t\t\tdescription: __(\n\t\t\t\t'Displays latest posts written by a single author.'\n\t\t\t),\n\t\t\tslug: 'author',\n\t\t\ttitle: 'Author',\n\t\t};\n\t}\n\tconst hasGeneralTemplate = !! existingTemplates?.find(\n\t\t( { slug } ) => slug === 'author'\n\t);\n\tif ( authorInfo.user?.hasEntities ) {\n\t\tauthorMenuItem = { ...authorMenuItem, templatePrefix: 'author' };\n\t\tauthorMenuItem.onClick = ( template ) => {\n\t\t\tonClickMenuItem( {\n\t\t\t\ttype: 'root',\n\t\t\t\tslug: 'user',\n\t\t\t\tconfig: {\n\t\t\t\t\tqueryArgs: ( { search } ) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t_fields: 'id,name,slug,link',\n\t\t\t\t\t\t\torderBy: search ? 'name' : 'registered_date',\n\t\t\t\t\t\t\texclude: authorInfo.user.existingEntitiesIds,\n\t\t\t\t\t\t\twho: 'authors',\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t\tgetSpecificTemplate: ( suggestion ) => {\n\t\t\t\t\t\tconst templateSlug = prefixSlug(\n\t\t\t\t\t\t\t'author',\n\t\t\t\t\t\t\tsuggestion.slug\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: templateSlug,\n\t\t\t\t\t\t\tslug: templateSlug,\n\t\t\t\t\t\t\ttemplatePrefix: 'author',\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tlabels: {\n\t\t\t\t\tsingular_name: __( 'Author' ),\n\t\t\t\t\tsearch_items: __( 'Search Authors' ),\n\t\t\t\t\tnot_found: __( 'No authors found.' ),\n\t\t\t\t\tall_items: __( 'All Authors' ),\n\t\t\t\t},\n\t\t\t\thasGeneralTemplate,\n\t\t\t\ttemplate,\n\t\t\t} );\n\t\t};\n\t}\n\tif ( ! hasGeneralTemplate || authorInfo.user?.hasEntities ) {\n\t\treturn authorMenuItem;\n\t}\n}\n\n/**\n * Helper hook that filters all the existing templates by the given\n * object with the entity's slug as key and the template prefix as value.\n *\n * Example:\n * `existingTemplates` is: [ { slug: 'tag-apple' }, { slug: 'page-about' }, { slug: 'tag' } ]\n * `templatePrefixes` is: { post_tag: 'tag' }\n * It will return: { post_tag: ['apple'] }\n *\n * Note: We append the `-` to the given template prefix in this function for our checks.\n *\n * @param {Record<string,string>} templatePrefixes An object with the entity's slug as key and the template prefix as value.\n * @return {Record<string,string[]>} An object with the entity's slug as key and an array with the existing template slugs as value.\n */\nconst useExistingTemplateSlugs = ( templatePrefixes ) => {\n\tconst existingTemplates = useExistingTemplates();\n\tconst existingSlugs = useMemo( () => {\n\t\treturn Object.entries( templatePrefixes || {} ).reduce(\n\t\t\t( accumulator, [ slug, prefix ] ) => {\n\t\t\t\tconst slugsWithTemplates = ( existingTemplates || [] ).reduce(\n\t\t\t\t\t( _accumulator, existingTemplate ) => {\n\t\t\t\t\t\tconst _prefix = `${ prefix }-`;\n\t\t\t\t\t\tif ( existingTemplate.slug.startsWith( _prefix ) ) {\n\t\t\t\t\t\t\t_accumulator.push(\n\t\t\t\t\t\t\t\texistingTemplate.slug.substring(\n\t\t\t\t\t\t\t\t\t_prefix.length\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn _accumulator;\n\t\t\t\t\t},\n\t\t\t\t\t[]\n\t\t\t\t);\n\t\t\t\tif ( slugsWithTemplates.length ) {\n\t\t\t\t\taccumulator[ slug ] = slugsWithTemplates;\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\t}, [ templatePrefixes, existingTemplates ] );\n\treturn existingSlugs;\n};\n\n/**\n * Helper hook that finds the existing records with an associated template,\n * as they need to be excluded from the template suggestions.\n *\n * @param {string}                entityName                The entity's name.\n * @param {Record<string,string>} templatePrefixes          An object with the entity's slug as key and the template prefix as value.\n * @param {Record<string,Object>} additionalQueryParameters An object with the entity's slug as key and additional query parameters as value.\n * @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the existing records as value.\n */\nconst useTemplatesToExclude = (\n\tentityName,\n\ttemplatePrefixes,\n\tadditionalQueryParameters = {}\n) => {\n\tconst slugsToExcludePerEntity =\n\t\tuseExistingTemplateSlugs( templatePrefixes );\n\tconst recordsToExcludePerEntity = useSelect(\n\t\t( select ) => {\n\t\t\treturn Object.entries( slugsToExcludePerEntity || {} ).reduce(\n\t\t\t\t( accumulator, [ slug, slugsWithTemplates ] ) => {\n\t\t\t\t\tconst entitiesWithTemplates = select(\n\t\t\t\t\t\tcoreStore\n\t\t\t\t\t).getEntityRecords( entityName, slug, {\n\t\t\t\t\t\t_fields: 'id',\n\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\tslug: slugsWithTemplates,\n\t\t\t\t\t\t...additionalQueryParameters[ slug ],\n\t\t\t\t\t} );\n\t\t\t\t\tif ( entitiesWithTemplates?.length ) {\n\t\t\t\t\t\taccumulator[ slug ] = entitiesWithTemplates;\n\t\t\t\t\t}\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\t\t},\n\t\t[ slugsToExcludePerEntity ]\n\t);\n\treturn recordsToExcludePerEntity;\n};\n\n/**\n * Helper hook that returns information about an entity having\n * records that we can create a specific template for.\n *\n * For example we can search for `terms` in `taxonomy` entity or\n * `posts` in `postType` entity.\n *\n * First we need to find the existing records with an associated template,\n * to query afterwards for any remaining record, by excluding them.\n *\n * @param {string}                entityName                The entity's name.\n * @param {Record<string,string>} templatePrefixes          An object with the entity's slug as key and the template prefix as value.\n * @param {Record<string,Object>} additionalQueryParameters An object with the entity's slug as key and additional query parameters as value.\n * @return {Record<string,EntitiesInfo>} An object with the entity's slug as key and the EntitiesInfo as value.\n */\nconst useEntitiesInfo = (\n\tentityName,\n\ttemplatePrefixes,\n\tadditionalQueryParameters = EMPTY_OBJECT\n) => {\n\tconst recordsToExcludePerEntity = useTemplatesToExclude(\n\t\tentityName,\n\t\ttemplatePrefixes,\n\t\tadditionalQueryParameters\n\t);\n\tconst entitiesHasRecords = useSelect(\n\t\t( select ) => {\n\t\t\treturn Object.keys( templatePrefixes || {} ).reduce(\n\t\t\t\t( accumulator, slug ) => {\n\t\t\t\t\tconst existingEntitiesIds =\n\t\t\t\t\t\trecordsToExcludePerEntity?.[ slug ]?.map(\n\t\t\t\t\t\t\t( { id } ) => id\n\t\t\t\t\t\t) || [];\n\t\t\t\t\taccumulator[ slug ] = !! select(\n\t\t\t\t\t\tcoreStore\n\t\t\t\t\t).getEntityRecords( entityName, slug, {\n\t\t\t\t\t\tper_page: 1,\n\t\t\t\t\t\t_fields: 'id',\n\t\t\t\t\t\tcontext: 'view',\n\t\t\t\t\t\texclude: existingEntitiesIds,\n\t\t\t\t\t\t...additionalQueryParameters[ slug ],\n\t\t\t\t\t} )?.length;\n\t\t\t\t\treturn accumulator;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\t\t},\n\t\t[\n\t\t\ttemplatePrefixes,\n\t\t\trecordsToExcludePerEntity,\n\t\t\tentityName,\n\t\t\tadditionalQueryParameters,\n\t\t]\n\t);\n\tconst entitiesInfo = useMemo( () => {\n\t\treturn Object.keys( templatePrefixes || {} ).reduce(\n\t\t\t( accumulator, slug ) => {\n\t\t\t\tconst existingEntitiesIds =\n\t\t\t\t\trecordsToExcludePerEntity?.[ slug ]?.map(\n\t\t\t\t\t\t( { id } ) => id\n\t\t\t\t\t) || [];\n\t\t\t\taccumulator[ slug ] = {\n\t\t\t\t\thasEntities: entitiesHasRecords[ slug ],\n\t\t\t\t\texistingEntitiesIds,\n\t\t\t\t};\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\t}, [ templatePrefixes, recordsToExcludePerEntity, entitiesHasRecords ] );\n\treturn entitiesInfo;\n};\n", "/**\n * External dependencies\n */\nimport { paramCase as kebabCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect, useRef } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tButton,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\n\nfunction AddCustomGenericTemplateModalContent( { createTemplate, onBack } ) {\n\tconst [ title, setTitle ] = useState( '' );\n\tconst defaultTitle = __( 'Custom Template' );\n\tconst [ isBusy, setIsBusy ] = useState( false );\n\tconst inputRef = useRef();\n\n\t// Set focus to the name input when the component mounts\n\tuseEffect( () => {\n\t\tif ( inputRef.current ) {\n\t\t\tinputRef.current.focus();\n\t\t}\n\t}, [] );\n\n\tasync function onCreateTemplate( event ) {\n\t\tevent.preventDefault();\n\t\tif ( isBusy ) {\n\t\t\treturn;\n\t\t}\n\t\tsetIsBusy( true );\n\t\ttry {\n\t\t\tawait createTemplate(\n\t\t\t\t{\n\t\t\t\t\tslug:\n\t\t\t\t\t\tkebabCase( title || defaultTitle ) ||\n\t\t\t\t\t\t'wp-custom-template',\n\t\t\t\t\ttitle: title || defaultTitle,\n\t\t\t\t},\n\t\t\t\tfalse\n\t\t\t);\n\t\t} finally {\n\t\t\tsetIsBusy( false );\n\t\t}\n\t}\n\treturn (\n\t\t<form onSubmit={ onCreateTemplate }>\n\t\t\t<VStack spacing={ 6 }>\n\t\t\t\t<TextControl\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\tvalue={ title }\n\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\tplaceholder={ defaultTitle }\n\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\tref={ inputRef }\n\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax -- 'sidebar' is a common web design term for layouts\n\t\t\t\t\t\t'Describe the template, e.g. \"Post with sidebar\". A custom template can be manually applied to any post or page.'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<HStack\n\t\t\t\t\tclassName=\"edit-site-custom-generic-template__modal-actions\"\n\t\t\t\t\tjustify=\"right\"\n\t\t\t\t>\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ onBack }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Back' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tisBusy={ isBusy }\n\t\t\t\t\t\taria-disabled={ isBusy }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Create' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t</form>\n\t);\n}\n\nexport default AddCustomGenericTemplateModalContent;\n", "/**\n * WordPress dependencies\n */\nimport { loadView } from '@wordpress/views';\n\n/**\n * Internal dependencies\n */\nimport Editor from '../editor';\nimport SidebarNavigationScreenTemplatesBrowse from '../sidebar-navigation-screen-templates-browse';\nimport SidebarNavigationScreenUnsupported from '../sidebar-navigation-screen-unsupported';\nimport PageTemplates from '../page-templates';\nimport PageTemplatesLegacy from '../page-templates/index-legacy';\nimport { getDefaultView } from '../page-templates/view-utils';\n\nasync function isTemplateListView( query ) {\n\tconst { activeView = 'active' } = query;\n\tconst view = await loadView( {\n\t\tkind: 'postType',\n\t\tname: 'wp_template',\n\t\tslug: activeView,\n\t\tdefaultView: getDefaultView( activeView ),\n\t} );\n\treturn view.type === 'list';\n}\n\nexport const templatesRoute = {\n\tname: 'templates',\n\tpath: '/template',\n\tareas: {\n\t\tsidebar( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\treturn isBlockTheme ? (\n\t\t\t\t<SidebarNavigationScreenTemplatesBrowse backPath=\"/\" />\n\t\t\t) : (\n\t\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t\t);\n\t\t},\n\t\tcontent( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\tif ( ! isBlockTheme ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\t// Use the new template activation system if experiment is enabled,\n\t\t\t// otherwise use the legacy simple template list.\n\t\t\treturn window?.__experimentalTemplateActivate ? (\n\t\t\t\t<PageTemplates />\n\t\t\t) : (\n\t\t\t\t<PageTemplatesLegacy />\n\t\t\t);\n\t\t},\n\t\tasync preview( { query, siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\tif ( ! isBlockTheme ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tconst isListView = await isTemplateListView( query );\n\t\t\treturn isListView ? <Editor /> : undefined;\n\t\t},\n\t\tmobile( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\tif ( ! isBlockTheme ) {\n\t\t\t\treturn <SidebarNavigationScreenUnsupported />;\n\t\t\t}\n\t\t\t// Check if the template activation experiment is enabled.\n\t\t\tconst isTemplateActivateEnabled =\n\t\t\t\ttypeof window !== 'undefined' &&\n\t\t\t\twindow.__experimentalTemplateActivate;\n\t\t\t// Use the new template activation system if experiment is enabled,\n\t\t\t// otherwise use the legacy simple template list.\n\t\t\treturn isTemplateActivateEnabled ? (\n\t\t\t\t<PageTemplates />\n\t\t\t) : (\n\t\t\t\t<PageTemplatesLegacy />\n\t\t\t);\n\t\t},\n\t},\n\twidths: {\n\t\tasync content( { query } ) {\n\t\t\tconst isListView = await isTemplateListView( query );\n\t\t\treturn isListView ? 380 : undefined;\n\t\t},\n\t},\n};\n", "/**\n * Internal dependencies\n */\nimport Editor from '../editor';\nimport SidebarNavigationScreenTemplatesBrowse from '../sidebar-navigation-screen-templates-browse';\nimport SidebarNavigationScreenUnsupported from '../sidebar-navigation-screen-unsupported';\n\nconst areas = {\n\tsidebar( { siteData } ) {\n\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\treturn isBlockTheme ? (\n\t\t\t<SidebarNavigationScreenTemplatesBrowse backPath=\"/\" />\n\t\t) : (\n\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t);\n\t},\n\tmobile( { siteData } ) {\n\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\treturn isBlockTheme ? (\n\t\t\t<Editor />\n\t\t) : (\n\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t);\n\t},\n\tpreview( { siteData } ) {\n\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\treturn isBlockTheme ? (\n\t\t\t<Editor />\n\t\t) : (\n\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t);\n\t},\n};\n\nexport const templateItemRoute = {\n\tname: 'template-item',\n\tpath: '/wp_template/*postId',\n\tareas,\n};\n", "/**\n * WordPress dependencies\n */\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { __ } from '@wordpress/i18n';\nimport { loadView } from '@wordpress/views';\nimport { resolveSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport Editor from '../editor';\nimport SidebarNavigationScreen from '../sidebar-navigation-screen';\nimport SidebarNavigationScreenUnsupported from '../sidebar-navigation-screen-unsupported';\nimport DataViewsSidebarContent from '../sidebar-dataviews';\nimport PostList from '../post-list';\nimport { unlock } from '../../lock-unlock';\nimport { PostEdit } from '../post-edit';\nimport { getDefaultView } from '../post-list/view-utils';\n\nconst { useLocation } = unlock( routerPrivateApis );\n\nasync function isListView( query ) {\n\tconst { activeView = 'all' } = query;\n\tconst postTypeObject =\n\t\tawait resolveSelect( coreStore ).getPostType( 'page' );\n\tconst view = await loadView( {\n\t\tkind: 'postType',\n\t\tname: 'page',\n\t\tslug: activeView,\n\t\tdefaultView: getDefaultView( postTypeObject, activeView ),\n\t} );\n\treturn view.type === 'list';\n}\n\nfunction MobilePagesView() {\n\tconst { query = {} } = useLocation();\n\tconst { canvas = 'view' } = query;\n\n\treturn canvas === 'edit' ? <Editor /> : <PostList postType=\"page\" />;\n}\n\nexport const pagesRoute = {\n\tname: 'pages',\n\tpath: '/page',\n\tareas: {\n\t\tsidebar( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\treturn isBlockTheme ? (\n\t\t\t\t<SidebarNavigationScreen\n\t\t\t\t\ttitle={ __( 'Pages' ) }\n\t\t\t\t\tbackPath=\"/\"\n\t\t\t\t\tcontent={ <DataViewsSidebarContent postType=\"page\" /> }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t\t);\n\t\t},\n\t\tcontent( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\treturn isBlockTheme ? <PostList postType=\"page\" /> : undefined;\n\t\t},\n\t\tasync preview( { query, siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\tif ( ! isBlockTheme ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tconst isList = await isListView( query );\n\t\t\treturn isList ? <Editor /> : undefined;\n\t\t},\n\t\tmobile( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\treturn isBlockTheme ? (\n\t\t\t\t<MobilePagesView />\n\t\t\t) : (\n\t\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t\t);\n\t\t},\n\t\tasync edit( { query } ) {\n\t\t\tconst isList = await isListView( query );\n\t\t\tconst hasQuickEdit = ! isList && !! query.quickEdit;\n\t\t\treturn hasQuickEdit ? (\n\t\t\t\t<PostEdit postType=\"page\" postId={ query.postId } />\n\t\t\t) : undefined;\n\t\t},\n\t},\n\twidths: {\n\t\tasync content( { query } ) {\n\t\t\tconst isList = await isListView( query );\n\t\t\treturn isList ? 380 : undefined;\n\t\t},\n\t\tasync edit( { query } ) {\n\t\t\tconst isList = await isListView( query );\n\t\t\tconst hasQuickEdit = ! isList && !! query.quickEdit;\n\t\t\treturn hasQuickEdit ? 380 : undefined;\n\t\t},\n\t},\n};\n", "/**\n * WordPress dependencies\n */\nimport { __experimentalItemGroup as ItemGroup } from '@wordpress/components';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport DataViewItem from './dataview-item';\nimport { getDefaultViews } from '../post-list/view-utils';\n\nconst { useLocation } = unlock( routerPrivateApis );\n\nexport default function DataViewsSidebarContent( { postType } ) {\n\tconst {\n\t\tquery: { activeView = 'all' },\n\t} = useLocation();\n\tconst postTypeObject = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getPostType } = select( coreStore );\n\t\t\treturn getPostType( postType );\n\t\t},\n\t\t[ postType ]\n\t);\n\tconst defaultViews = useMemo(\n\t\t() => getDefaultViews( postTypeObject ),\n\t\t[ postTypeObject ]\n\t);\n\tif ( ! postType ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<ItemGroup className=\"edit-site-sidebar-dataviews\">\n\t\t\t\t{ defaultViews.map( ( dataview ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<DataViewItem\n\t\t\t\t\t\t\tkey={ dataview.slug }\n\t\t\t\t\t\t\tslug={ dataview.slug }\n\t\t\t\t\t\t\ttitle={ dataview.title }\n\t\t\t\t\t\t\ticon={ dataview.icon }\n\t\t\t\t\t\t\ttype={ dataview.view.type }\n\t\t\t\t\t\t\tisActive={ dataview.slug === activeView }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</ItemGroup>\n\t\t</>\n\t);\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { __experimentalHStack as HStack } from '@wordpress/components';\nimport { VIEW_LAYOUTS } from '@wordpress/dataviews';\nimport { addQueryArgs } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport SidebarNavigationItem from '../sidebar-navigation-item';\nimport { unlock } from '../../lock-unlock';\nconst { useLocation } = unlock( routerPrivateApis );\n\nexport default function DataViewItem( {\n\ttitle,\n\tslug,\n\ttype,\n\ticon,\n\tisActive,\n\tsuffix,\n} ) {\n\tconst { path } = useLocation();\n\n\tconst iconToUse =\n\t\ticon || VIEW_LAYOUTS.find( ( v ) => v.type === type ).icon;\n\n\tif ( slug === 'all' ) {\n\t\tslug = undefined;\n\t}\n\treturn (\n\t\t<HStack\n\t\t\tjustify=\"flex-start\"\n\t\t\tclassName={ clsx( 'edit-site-sidebar-dataviews-dataview-item', {\n\t\t\t\t'is-selected': isActive,\n\t\t\t} ) }\n\t\t>\n\t\t\t<SidebarNavigationItem\n\t\t\t\ticon={ iconToUse }\n\t\t\t\tto={ addQueryArgs( path, {\n\t\t\t\t\tactiveView: slug,\n\t\t\t\t} ) }\n\t\t\t\taria-current={ isActive ? 'true' : undefined }\n\t\t\t>\n\t\t\t\t{ title }\n\t\t\t</SidebarNavigationItem>\n\t\t\t{ suffix }\n\t\t</HStack>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\nimport {\n\ttrash,\n\tpages,\n\tdrafts,\n\tpublished,\n\tscheduled,\n\tpending,\n\tnotAllowed,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { OPERATOR_IS_ANY } from '../../utils/constants';\n\nexport const defaultLayouts = {\n\ttable: {},\n\tgrid: {},\n\tlist: {},\n};\n\nconst DEFAULT_POST_BASE = {\n\ttype: 'list',\n\tfilters: [],\n\tperPage: 20,\n\tsort: {\n\t\tfield: 'title',\n\t\tdirection: 'asc',\n\t},\n\tshowLevels: true,\n\ttitleField: 'title',\n\tmediaField: 'featured_media',\n\tfields: [ 'author', 'status' ],\n\t...defaultLayouts.list,\n};\n\nexport function getDefaultViews( postType ) {\n\treturn [\n\t\t{\n\t\t\ttitle: postType?.labels?.all_items || __( 'All items' ),\n\t\t\tslug: 'all',\n\t\t\ticon: pages,\n\t\t\tview: DEFAULT_POST_BASE,\n\t\t},\n\t\t{\n\t\t\ttitle: __( 'Published' ),\n\t\t\tslug: 'published',\n\t\t\ticon: published,\n\t\t\tview: {\n\t\t\t\t...DEFAULT_POST_BASE,\n\t\t\t\tfilters: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: 'status',\n\t\t\t\t\t\toperator: OPERATOR_IS_ANY,\n\t\t\t\t\t\tvalue: 'publish',\n\t\t\t\t\t\tisLocked: true,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: __( 'Scheduled' ),\n\t\t\tslug: 'future',\n\t\t\ticon: scheduled,\n\t\t\tview: {\n\t\t\t\t...DEFAULT_POST_BASE,\n\t\t\t\tfilters: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: 'status',\n\t\t\t\t\t\toperator: OPERATOR_IS_ANY,\n\t\t\t\t\t\tvalue: 'future',\n\t\t\t\t\t\tisLocked: true,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: __( 'Drafts' ),\n\t\t\tslug: 'drafts',\n\t\t\ticon: drafts,\n\t\t\tview: {\n\t\t\t\t...DEFAULT_POST_BASE,\n\t\t\t\tfilters: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: 'status',\n\t\t\t\t\t\toperator: OPERATOR_IS_ANY,\n\t\t\t\t\t\tvalue: 'draft',\n\t\t\t\t\t\tisLocked: true,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: __( 'Pending' ),\n\t\t\tslug: 'pending',\n\t\t\ticon: pending,\n\t\t\tview: {\n\t\t\t\t...DEFAULT_POST_BASE,\n\t\t\t\tfilters: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: 'status',\n\t\t\t\t\t\toperator: OPERATOR_IS_ANY,\n\t\t\t\t\t\tvalue: 'pending',\n\t\t\t\t\t\tisLocked: true,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: __( 'Private' ),\n\t\t\tslug: 'private',\n\t\t\ticon: notAllowed,\n\t\t\tview: {\n\t\t\t\t...DEFAULT_POST_BASE,\n\t\t\t\tfilters: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: 'status',\n\t\t\t\t\t\toperator: OPERATOR_IS_ANY,\n\t\t\t\t\t\tvalue: 'private',\n\t\t\t\t\t\tisLocked: true,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: __( 'Trash' ),\n\t\t\tslug: 'trash',\n\t\t\ticon: trash,\n\t\t\tview: {\n\t\t\t\t...DEFAULT_POST_BASE,\n\t\t\t\ttype: 'table',\n\t\t\t\tlayout: defaultLayouts.table.layout,\n\t\t\t\tfilters: [\n\t\t\t\t\t{\n\t\t\t\t\t\tfield: 'status',\n\t\t\t\t\t\toperator: OPERATOR_IS_ANY,\n\t\t\t\t\t\tvalue: 'trash',\n\t\t\t\t\t\tisLocked: true,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t];\n}\n\nexport const getDefaultView = ( postType, activeView ) => {\n\treturn getDefaultViews( postType ).find(\n\t\t( { slug } ) => slug === activeView\n\t)?.view;\n};\n", "/**\n * WordPress dependencies\n */\nimport { Page } from '@wordpress/admin-ui';\nimport { Button } from '@wordpress/components';\nimport {\n\tstore as coreStore,\n\tprivateApis as coreDataPrivateApis,\n} from '@wordpress/core-data';\nimport { useState, useMemo, useCallback, useEffect } from '@wordpress/element';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { useSelect } from '@wordpress/data';\nimport { DataViews, filterSortAndPaginate } from '@wordpress/dataviews';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\nimport { __ } from '@wordpress/i18n';\nimport { drawerRight } from '@wordpress/icons';\nimport { useEvent, usePrevious } from '@wordpress/compose';\nimport { addQueryArgs } from '@wordpress/url';\nimport { useView } from '@wordpress/views';\n\n/**\n * Internal dependencies\n */\nimport {\n\tOPERATOR_IS_ANY,\n\tOPERATOR_IS_NONE,\n\tOPERATOR_BEFORE,\n\tOPERATOR_AFTER,\n\tLAYOUT_LIST,\n} from '../../utils/constants';\n\nimport AddNewPostModal from '../add-new-post';\nimport { unlock } from '../../lock-unlock';\nimport { useEditPostAction } from '../dataviews-actions';\nimport { defaultLayouts, getDefaultView } from './view-utils';\nimport useNotesCount from './use-notes-count';\n\nconst { usePostActions, usePostFields } = unlock( editorPrivateApis );\nconst { useLocation, useHistory } = unlock( routerPrivateApis );\nconst { useEntityRecordsWithPermissions } = unlock( coreDataPrivateApis );\nconst EMPTY_ARRAY = [];\n\nconst DEFAULT_STATUSES = 'draft,future,pending,private,publish'; // All but 'trash'.\n\nfunction getItemId( item ) {\n\treturn item.id.toString();\n}\n\nfunction getItemLevel( item ) {\n\treturn item.level;\n}\n\nexport default function PostList( { postType } ) {\n\tconst { path, query } = useLocation();\n\tconst { activeView = 'all', postId, quickEdit = false } = query;\n\tconst history = useHistory();\n\tconst postTypeObject = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getPostType } = select( coreStore );\n\t\t\treturn getPostType( postType );\n\t\t},\n\t\t[ postType ]\n\t);\n\tconst { view, updateView, isModified, resetToDefault } = useView( {\n\t\tkind: 'postType',\n\t\tname: postType,\n\t\tslug: activeView,\n\t\tqueryParams: {\n\t\t\tpage: query.pageNumber,\n\t\t\tsearch: query.search,\n\t\t},\n\t\tonChangeQueryParams: ( newQueryParams ) => {\n\t\t\thistory.navigate(\n\t\t\t\taddQueryArgs( path, {\n\t\t\t\t\t...query,\n\t\t\t\t\tpageNumber: newQueryParams.page,\n\t\t\t\t\tsearch: newQueryParams.search || undefined,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\tdefaultView: getDefaultView( postTypeObject, activeView ),\n\t} );\n\n\tconst onChangeView = useEvent( ( newView ) => {\n\t\tif ( newView.type !== view.type ) {\n\t\t\t// Retrigger the routing areas resolution.\n\t\t\thistory.invalidate();\n\t\t}\n\t\tupdateView( newView );\n\t} );\n\n\tconst [ selection, setSelection ] = useState( postId?.split( ',' ) ?? [] );\n\tconst onChangeSelection = useCallback(\n\t\t( items ) => {\n\t\t\tsetSelection( items );\n\t\t\thistory.navigate(\n\t\t\t\taddQueryArgs( path, {\n\t\t\t\t\tpostId: items.join( ',' ),\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\t[ path, history ]\n\t);\n\n\tconst fields = usePostFields( {\n\t\tpostType,\n\t} );\n\n\tconst queryArgs = useMemo( () => {\n\t\tconst filters = {};\n\t\tview.filters?.forEach( ( filter ) => {\n\t\t\tif (\n\t\t\t\tfilter.field === 'status' &&\n\t\t\t\tfilter.operator === OPERATOR_IS_ANY\n\t\t\t) {\n\t\t\t\tfilters.status = filter.value;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tfilter.field === 'author' &&\n\t\t\t\tfilter.operator === OPERATOR_IS_ANY\n\t\t\t) {\n\t\t\t\tfilters.author = filter.value;\n\t\t\t} else if (\n\t\t\t\tfilter.field === 'author' &&\n\t\t\t\tfilter.operator === OPERATOR_IS_NONE\n\t\t\t) {\n\t\t\t\tfilters.author_exclude = filter.value;\n\t\t\t}\n\t\t\tif ( filter.field === 'date' ) {\n\t\t\t\t// Skip if no value is set yet\n\t\t\t\tif ( ! filter.value ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( filter.operator === OPERATOR_BEFORE ) {\n\t\t\t\t\tfilters.before = filter.value;\n\t\t\t\t} else if ( filter.operator === OPERATOR_AFTER ) {\n\t\t\t\t\tfilters.after = filter.value;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// We want to provide a different default item for the status filter\n\t\t// than the REST API provides.\n\t\tif ( ! filters.status || filters.status === '' ) {\n\t\t\tfilters.status = DEFAULT_STATUSES;\n\t\t}\n\n\t\treturn {\n\t\t\tper_page: view.perPage,\n\t\t\tpage: view.page,\n\t\t\t_embed: 'author,wp:featuredmedia',\n\t\t\torder: view.sort?.direction,\n\t\t\torderby: view.sort?.field,\n\t\t\torderby_hierarchy: !! view.showLevels,\n\t\t\tsearch: view.search,\n\t\t\t...filters,\n\t\t};\n\t}, [ view ] );\n\tconst {\n\t\trecords,\n\t\tisResolving: isLoadingData,\n\t\ttotalItems,\n\t\ttotalPages,\n\t} = useEntityRecordsWithPermissions( 'postType', postType, queryArgs );\n\n\tconst postIds = useMemo(\n\t\t() => records?.map( ( record ) => record.id ) ?? [],\n\t\t[ records ]\n\t);\n\tconst { notesCount, isLoading: isLoadingNotesCount } =\n\t\tuseNotesCount( postIds );\n\n\t// The REST API sort the authors by ID, but we want to sort them by name.\n\tconst data = useMemo( () => {\n\t\tlet processedRecords = records;\n\n\t\tif ( view?.sort?.field === 'author' ) {\n\t\t\tprocessedRecords = filterSortAndPaginate(\n\t\t\t\trecords,\n\t\t\t\t{ sort: { ...view.sort } },\n\t\t\t\tfields\n\t\t\t).data;\n\t\t}\n\n\t\tif ( processedRecords ) {\n\t\t\treturn processedRecords.map( ( record ) => ( {\n\t\t\t\t...record,\n\t\t\t\tnotesCount: notesCount[ record.id ] ?? 0,\n\t\t\t} ) );\n\t\t}\n\n\t\treturn processedRecords;\n\t}, [ records, fields, view?.sort, notesCount ] );\n\n\tconst ids = data?.map( ( record ) => getItemId( record ) ) ?? [];\n\tconst prevIds = usePrevious( ids ) ?? [];\n\tconst deletedIds = prevIds.filter( ( id ) => ! ids.includes( id ) );\n\tconst postIdWasDeleted = deletedIds.includes( postId );\n\n\tuseEffect( () => {\n\t\tif ( postIdWasDeleted ) {\n\t\t\thistory.navigate(\n\t\t\t\taddQueryArgs( path, {\n\t\t\t\t\tpostId: undefined,\n\t\t\t\t} )\n\t\t\t);\n\t\t}\n\t}, [ history, postIdWasDeleted, path ] );\n\n\tconst paginationInfo = useMemo(\n\t\t() => ( {\n\t\t\ttotalItems,\n\t\t\ttotalPages,\n\t\t} ),\n\t\t[ totalItems, totalPages ]\n\t);\n\n\tconst { labels, canCreateRecord } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getPostType, canUser } = select( coreStore );\n\t\t\treturn {\n\t\t\t\tlabels: getPostType( postType )?.labels,\n\t\t\t\tcanCreateRecord: canUser( 'create', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: postType,\n\t\t\t\t} ),\n\t\t\t};\n\t\t},\n\t\t[ postType ]\n\t);\n\n\tconst postTypeActions = usePostActions( {\n\t\tpostType,\n\t\tcontext: 'list',\n\t} );\n\tconst editAction = useEditPostAction();\n\tconst actions = useMemo(\n\t\t() => [ editAction, ...postTypeActions ],\n\t\t[ postTypeActions, editAction ]\n\t);\n\n\tconst [ showAddPostModal, setShowAddPostModal ] = useState( false );\n\n\tconst openModal = () => setShowAddPostModal( true );\n\tconst closeModal = () => setShowAddPostModal( false );\n\tconst handleNewPage = ( { type, id } ) => {\n\t\thistory.navigate( `/${ type }/${ id }?canvas=edit` );\n\t\tcloseModal();\n\t};\n\n\treturn (\n\t\t<Page\n\t\t\ttitle={ labels?.name }\n\t\t\tactions={\n\t\t\t\t<>\n\t\t\t\t\t{ isModified && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tresetToDefault();\n\t\t\t\t\t\t\t\thistory.invalidate();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset view' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t\t\t{ labels?.add_new_item && canCreateRecord && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\tonClick={ openModal }\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ labels.add_new_item }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t{ showAddPostModal && (\n\t\t\t\t\t\t\t\t<AddNewPostModal\n\t\t\t\t\t\t\t\t\tpostType={ postType }\n\t\t\t\t\t\t\t\t\tonSave={ handleNewPage }\n\t\t\t\t\t\t\t\t\tonClose={ closeModal }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t}\n\t\t>\n\t\t\t<DataViews\n\t\t\t\tkey={ activeView }\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\tfields={ fields }\n\t\t\t\tactions={ actions }\n\t\t\t\tdata={ data || EMPTY_ARRAY }\n\t\t\t\tisLoading={ isLoadingData || isLoadingNotesCount }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\tselection={ selection }\n\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\tisItemClickable={ ( item ) => item.status !== 'trash' }\n\t\t\t\tonClickItem={ ( { id } ) => {\n\t\t\t\t\thistory.navigate( `/${ postType }/${ id }?canvas=edit` );\n\t\t\t\t} }\n\t\t\t\tgetItemId={ getItemId }\n\t\t\t\tgetItemLevel={ getItemLevel }\n\t\t\t\tdefaultLayouts={ defaultLayouts }\n\t\t\t\theader={\n\t\t\t\t\twindow.__experimentalQuickEditDataViews &&\n\t\t\t\t\tview.type !== LAYOUT_LIST &&\n\t\t\t\t\tpostType === 'page' && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\tisPressed={ quickEdit }\n\t\t\t\t\t\t\ticon={ drawerRight }\n\t\t\t\t\t\t\tlabel={ __( 'Details' ) }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\thistory.navigate(\n\t\t\t\t\t\t\t\t\taddQueryArgs( path, {\n\t\t\t\t\t\t\t\t\t\tquickEdit: quickEdit ? undefined : true,\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t/>\n\t\t</Page>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tModal,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tTextControl,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { serialize, synchronizeBlocksWithTemplate } from '@wordpress/blocks';\n\nexport default function AddNewPostModal( { postType, onSave, onClose } ) {\n\tconst labels = useSelect(\n\t\t( select ) => select( coreStore ).getPostType( postType )?.labels,\n\t\t[ postType ]\n\t);\n\tconst [ isCreatingPost, setIsCreatingPost ] = useState( false );\n\tconst [ title, setTitle ] = useState( '' );\n\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\tconst { resolveSelect } = useRegistry();\n\n\tasync function createPost( event ) {\n\t\tevent.preventDefault();\n\n\t\tif ( isCreatingPost ) {\n\t\t\treturn;\n\t\t}\n\t\tsetIsCreatingPost( true );\n\t\ttry {\n\t\t\tconst postTypeObject =\n\t\t\t\tawait resolveSelect( coreStore ).getPostType( postType );\n\t\t\tconst newPage = await saveEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\t{\n\t\t\t\t\tstatus: 'draft',\n\t\t\t\t\ttitle,\n\t\t\t\t\tslug: title ?? undefined,\n\t\t\t\t\tcontent:\n\t\t\t\t\t\t!! postTypeObject.template &&\n\t\t\t\t\t\tpostTypeObject.template.length\n\t\t\t\t\t\t\t? serialize(\n\t\t\t\t\t\t\t\t\tsynchronizeBlocksWithTemplate(\n\t\t\t\t\t\t\t\t\t\t[],\n\t\t\t\t\t\t\t\t\t\tpostTypeObject.template\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\tonSave( newPage );\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: Title of the created post or template, e.g: \"Hello world\".\n\t\t\t\t\t__( '\"%s\" successfully created.' ),\n\t\t\t\t\tdecodeEntities( newPage.title?.rendered || title ) ||\n\t\t\t\t\t\t__( '(no title)' )\n\t\t\t\t),\n\t\t\t\t{ type: 'snackbar' }\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while creating the item.' );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t} finally {\n\t\t\tsetIsCreatingPost( false );\n\t\t}\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={\n\t\t\t\t// translators: %s: post type singular_name label e.g: \"Page\".\n\t\t\t\tsprintf( __( 'Draft new: %s' ), labels?.singular_name )\n\t\t\t}\n\t\t\tonRequestClose={ onClose }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"small\"\n\t\t>\n\t\t\t<form onSubmit={ createPost }>\n\t\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Title' ) }\n\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\tplaceholder={ __( 'No title' ) }\n\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t/>\n\t\t\t\t\t<HStack spacing={ 2 } justify=\"end\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tisBusy={ isCreatingPost }\n\t\t\t\t\t\t\taria-disabled={ isCreatingPost }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Create draft' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</VStack>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { useEntityRecords } from '@wordpress/core-data';\n\n/**\n * Hook to fetch notes counts for a list of post IDs.\n *\n * Notes are stored as comments with type 'note'.\n * This hook fetches all notes for the given posts and returns\n * a map of post ID to notes count.\n *\n * @param {number[]} postIds - Array of post IDs to fetch notes for.\n * @return {{ notesCount: Object, isResolving: boolean }} Object with notesCount map and loading state.\n */\nexport default function useNotesCount( postIds ) {\n\tconst { records: notes, isResolving } = useEntityRecords(\n\t\t'root',\n\t\t'comment',\n\t\t{\n\t\t\tpost: postIds,\n\t\t\ttype: 'note',\n\t\t\tstatus: 'all',\n\t\t\tper_page: -1,\n\t\t\t_fields: 'id,post',\n\t\t},\n\t\t{\n\t\t\tenabled: postIds?.length > 0,\n\t\t}\n\t);\n\n\tconst notesCount = useMemo( () => {\n\t\tif ( ! notes || notes.length === 0 ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst counts = {};\n\t\tnotes.forEach( ( note ) => {\n\t\t\tconst postId = note.post;\n\t\t\tcounts[ postId ] = ( counts[ postId ] || 0 ) + 1;\n\t\t} );\n\n\t\treturn counts;\n\t}, [ notes ] );\n\n\treturn { notesCount, isResolving };\n}\n", "/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { Page } from '@wordpress/admin-ui';\nimport { __ } from '@wordpress/i18n';\nimport { DataForm } from '@wordpress/dataviews';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport { __experimentalVStack as VStack } from '@wordpress/components';\nimport { useState, useMemo, useEffect } from '@wordpress/element';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport usePatternSettings from '../page-patterns/use-pattern-settings';\n\nconst { usePostFields, PostCardPanel } = unlock( editorPrivateApis );\n\nconst fieldsWithBulkEditSupport = [\n\t'title',\n\t'status',\n\t'date',\n\t'author',\n\t'discussion',\n];\n\nfunction PostEditForm( { postType, postId } ) {\n\tconst ids = useMemo( () => postId.split( ',' ), [ postId ] );\n\tconst { record, hasFinishedResolution } = useSelect(\n\t\t( select ) => {\n\t\t\tconst args = [ 'postType', postType, ids[ 0 ] ];\n\n\t\t\tconst {\n\t\t\t\tgetEditedEntityRecord,\n\t\t\t\thasFinishedResolution: hasFinished,\n\t\t\t} = select( coreDataStore );\n\n\t\t\treturn {\n\t\t\t\trecord:\n\t\t\t\t\tids.length === 1 ? getEditedEntityRecord( ...args ) : null,\n\t\t\t\thasFinishedResolution: hasFinished(\n\t\t\t\t\t'getEditedEntityRecord',\n\t\t\t\t\targs\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ postType, ids ]\n\t);\n\tconst [ multiEdits, setMultiEdits ] = useState( {} );\n\tconst { editEntityRecord } = useDispatch( coreDataStore );\n\tconst _fields = usePostFields( { postType } );\n\tconst fields = useMemo(\n\t\t() =>\n\t\t\t_fields?.map( ( field ) => {\n\t\t\t\tif ( field.id === 'status' ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...field,\n\t\t\t\t\t\telements: field.elements.filter(\n\t\t\t\t\t\t\t( element ) => element.value !== 'trash'\n\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn field;\n\t\t\t} ),\n\t\t[ _fields ]\n\t);\n\n\tconst form = useMemo(\n\t\t() => ( {\n\t\t\tlayout: {\n\t\t\t\ttype: 'panel',\n\t\t\t},\n\t\t\tfields: [\n\t\t\t\t{\n\t\t\t\t\tid: 'featured_media',\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\ttype: 'regular',\n\t\t\t\t\t\tlabelPosition: 'none',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'status',\n\t\t\t\t\tlabel: __( 'Status & Visibility' ),\n\t\t\t\t\tchildren: [ 'status', 'password' ],\n\t\t\t\t},\n\t\t\t\t'author',\n\t\t\t\t'date',\n\t\t\t\t'slug',\n\t\t\t\t'parent',\n\t\t\t\t{\n\t\t\t\t\tid: 'discussion',\n\t\t\t\t\tlabel: __( 'Discussion' ),\n\t\t\t\t\tchildren: [ 'comment_status', 'ping_status' ],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: __( 'Template' ),\n\t\t\t\t\tid: 'template',\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\ttype: 'regular',\n\t\t\t\t\t\tlabelPosition: 'side',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t].filter(\n\t\t\t\t( field ) =>\n\t\t\t\t\tids.length === 1 ||\n\t\t\t\t\tfieldsWithBulkEditSupport.includes(\n\t\t\t\t\t\ttypeof field === 'string' ? field : field.id\n\t\t\t\t\t)\n\t\t\t),\n\t\t} ),\n\t\t[ ids ]\n\t);\n\tconst onChange = ( edits ) => {\n\t\tfor ( const id of ids ) {\n\t\t\tif (\n\t\t\t\tedits.status &&\n\t\t\t\tedits.status !== 'future' &&\n\t\t\t\trecord?.status === 'future' &&\n\t\t\t\tnew Date( record.date ) > new Date()\n\t\t\t) {\n\t\t\t\tedits.date = null;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tedits.status &&\n\t\t\t\tedits.status === 'private' &&\n\t\t\t\trecord.password\n\t\t\t) {\n\t\t\t\tedits.password = '';\n\t\t\t}\n\t\t\teditEntityRecord( 'postType', postType, id, edits );\n\t\t\tif ( ids.length > 1 ) {\n\t\t\t\tsetMultiEdits( ( prev ) => ( {\n\t\t\t\t\t...prev,\n\t\t\t\t\t...edits,\n\t\t\t\t} ) );\n\t\t\t}\n\t\t}\n\t};\n\tuseEffect( () => {\n\t\tsetMultiEdits( {} );\n\t}, [ ids ] );\n\n\tconst { ExperimentalBlockEditorProvider } = unlock(\n\t\tblockEditorPrivateApis\n\t);\n\tconst settings = usePatternSettings();\n\n\t/**\n\t * The template field depends on the block editor settings.\n\t * This is a workaround to ensure that the block editor settings are available.\n\t * For more information, see: https://github.com/WordPress/gutenberg/issues/67521\n\t */\n\tconst fieldsWithDependency = useMemo( () => {\n\t\treturn fields.map( ( field ) => {\n\t\t\tif ( field.id === 'template' ) {\n\t\t\t\treturn {\n\t\t\t\t\t...field,\n\t\t\t\t\tEdit: ( data ) => (\n\t\t\t\t\t\t<ExperimentalBlockEditorProvider settings={ settings }>\n\t\t\t\t\t\t\t<field.Edit { ...data } />\n\t\t\t\t\t\t</ExperimentalBlockEditorProvider>\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn field;\n\t\t} );\n\t}, [ fields, settings ] );\n\n\treturn (\n\t\t<VStack spacing={ 4 }>\n\t\t\t<PostCardPanel postType={ postType } postId={ ids } />\n\t\t\t{ hasFinishedResolution && (\n\t\t\t\t<DataForm\n\t\t\t\t\tdata={ ids.length === 1 ? record : multiEdits }\n\t\t\t\t\tfields={ fieldsWithDependency }\n\t\t\t\t\tform={ form }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\nexport function PostEdit( { postType, postId } ) {\n\treturn (\n\t\t<Page\n\t\t\tclassName={ clsx( 'edit-site-post-edit', {\n\t\t\t\t'is-empty': ! postId,\n\t\t\t} ) }\n\t\t\tlabel={ __( 'Post Edit' ) }\n\t\t>\n\t\t\t{ postId && (\n\t\t\t\t<PostEditForm postType={ postType } postId={ postId } />\n\t\t\t) }\n\t\t\t{ ! postId && <p>{ __( 'Select a page to edit' ) }</p> }\n\t\t</Page>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport Editor from '../editor';\nimport DataViewsSidebarContent from '../sidebar-dataviews';\nimport SidebarNavigationScreen from '../sidebar-navigation-screen';\nimport SidebarNavigationScreenUnsupported from '../sidebar-navigation-screen-unsupported';\n\nexport const pageItemRoute = {\n\tname: 'page-item',\n\tpath: '/page/:postId',\n\tareas: {\n\t\tsidebar( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\treturn isBlockTheme ? (\n\t\t\t\t<SidebarNavigationScreen\n\t\t\t\t\ttitle={ __( 'Pages' ) }\n\t\t\t\t\tbackPath=\"/\"\n\t\t\t\t\tcontent={ <DataViewsSidebarContent postType=\"page\" /> }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t\t);\n\t\t},\n\t\tmobile( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\treturn isBlockTheme ? (\n\t\t\t\t<Editor />\n\t\t\t) : (\n\t\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t\t);\n\t\t},\n\t\tpreview( { siteData } ) {\n\t\t\tconst isBlockTheme = siteData.currentTheme?.is_block_theme;\n\t\t\treturn isBlockTheme ? (\n\t\t\t\t<Editor />\n\t\t\t) : (\n\t\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t\t);\n\t\t},\n\t},\n};\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport SidebarNavigationScreen from '../sidebar-navigation-screen';\nimport SidebarNavigationScreenUnsupported from '../sidebar-navigation-screen-unsupported';\nimport { unlock } from '../../lock-unlock';\nimport { isClassicThemeWithStyleBookSupport } from './utils';\n\nconst { StyleBookPreview } = unlock( editorPrivateApis );\n\nexport const stylebookRoute = {\n\tname: 'stylebook',\n\tpath: '/stylebook',\n\tareas: {\n\t\tsidebar( { siteData } ) {\n\t\t\treturn isClassicThemeWithStyleBookSupport( siteData ) ? (\n\t\t\t\t<SidebarNavigationScreen\n\t\t\t\t\ttitle={ __( 'Styles' ) }\n\t\t\t\t\tbackPath=\"/\"\n\t\t\t\t\tdescription={ __(\n\t\t\t\t\t\t`Preview your website's visual identity: colors, typography, and blocks.`\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<SidebarNavigationScreenUnsupported />\n\t\t\t);\n\t\t},\n\t\tpreview( { siteData } ) {\n\t\t\treturn isClassicThemeWithStyleBookSupport( siteData ) ? (\n\t\t\t\t<StyleBookPreview isStatic />\n\t\t\t) : undefined;\n\t\t},\n\t\tmobile( { siteData } ) {\n\t\t\treturn isClassicThemeWithStyleBookSupport( siteData ) ? (\n\t\t\t\t<StyleBookPreview isStatic />\n\t\t\t) : undefined;\n\t\t},\n\t},\n};\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { Notice, __experimentalSpacer as Spacer } from '@wordpress/components';\nimport SidebarNavigationScreenMain from '../sidebar-navigation-screen-main';\n\nfunction NotFoundError() {\n\treturn (\n\t\t<Notice status=\"error\" isDismissible={ false }>\n\t\t\t{ __(\n\t\t\t\t'The requested page could not be found. Please check the URL.'\n\t\t\t) }\n\t\t</Notice>\n\t);\n}\n\nexport const notFoundRoute = {\n\tname: 'notfound',\n\tpath: '*',\n\tareas: {\n\t\tsidebar: <SidebarNavigationScreenMain />,\n\t\tmobile: (\n\t\t\t<SidebarNavigationScreenMain\n\t\t\t\tcustomDescription={ <NotFoundError /> }\n\t\t\t/>\n\t\t),\n\t\tcontent: (\n\t\t\t<Spacer padding={ 2 }>\n\t\t\t\t<NotFoundError />\n\t\t\t</Spacer>\n\t\t),\n\t},\n};\n", "/**\n * WordPress dependencies\n */\nimport {\n\tPluginMoreMenuItem as EditorPluginMoreMenuItem,\n\tPluginSidebar as EditorPluginSidebar,\n\tPluginSidebarMoreMenuItem as EditorPluginSidebarMoreMenuItem,\n} from '@wordpress/editor';\nimport { getPath } from '@wordpress/url';\nimport deprecated from '@wordpress/deprecated';\n\nconst isSiteEditor = getPath( window.location.href )?.includes(\n\t'site-editor.php'\n);\n\nconst deprecateSlot = ( name ) => {\n\tdeprecated( `wp.editPost.${ name }`, {\n\t\tsince: '6.6',\n\t\talternative: `wp.editor.${ name }`,\n\t} );\n};\n\n/* eslint-disable jsdoc/require-param */\n/**\n * @see PluginMoreMenuItem in @wordpress/editor package.\n */\nexport function PluginMoreMenuItem( props ) {\n\tif ( ! isSiteEditor ) {\n\t\treturn null;\n\t}\n\tdeprecateSlot( 'PluginMoreMenuItem' );\n\treturn <EditorPluginMoreMenuItem { ...props } />;\n}\n\n/**\n * @see PluginSidebar in @wordpress/editor package.\n */\nexport function PluginSidebar( props ) {\n\tif ( ! isSiteEditor ) {\n\t\treturn null;\n\t}\n\tdeprecateSlot( 'PluginSidebar' );\n\treturn <EditorPluginSidebar { ...props } />;\n}\n\n/**\n * @see PluginSidebarMoreMenuItem in @wordpress/editor package.\n */\nexport function PluginSidebarMoreMenuItem( props ) {\n\tif ( ! isSiteEditor ) {\n\t\treturn null;\n\t}\n\tdeprecateSlot( 'PluginSidebarMoreMenuItem' );\n\treturn <EditorPluginSidebarMoreMenuItem { ...props } />;\n}\n/* eslint-enable jsdoc/require-param */\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO;AAAA;AAAA;;;ACAxB;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AAAA,aAAO,UAAU,OAAO,GAAG;AAAA;AAAA;;;ACA3B;AAAA;AA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QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,QAAK;AAAA,QACL,QAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,gBAAM;AAAA,QACN,gBAAM;AAAA,QACN,cAAM;AAAA,QACN,cAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,gBAAM;AAAA,QACN,gBAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,UAAK;AAAA,QACL,gBAAM;AAAA,QACN,gBAAM;AAAA,QACN,UAAK;AAAA,QACL,UAAK;AAAA,QACL,WAAM;AAAA,QACN,WAAM;AAAA,QACN,gBAAM;AAAA,QACN,gBAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WAAM;AAAA,QACN,WA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nD;;;AClDO,MAAM,kCAAkC;IAC9C,gBAAgB;IAChB,oBAAoB;;EACrB;AAEO,WAAS,2BAA4B,iBAAmC;AAC9E,QACC,CAAE;IAEF,CAAE,iBAAiB,iBAAiB,KACnC;AACD;IACD;AAEA,QAAI;AAGJ,QAAK,CAAE,iBAAiB,gBAAiB;AACxC,qCAA+B;QAC9B,gBAAgB,gCAAgC;MACjD;IACD;AAEA,QACC,cAAc,iBAAiB,kBAC/B,CAAE,iBAAiB,oBAClB;AACD,qCAA+B;QAC9B,oBACC,gCAAgC;MAClC;IACD;AACA,WAAO;EACR;;;AClCO,MAAM,qBAAqB;IACjC,SAAS;MACR,MAAM;MACN,MAAM;MACN,WAAW;MACX,YAAY;QACX;UACC,UAAU;UACV,OAAO;YACN,OAAO;YACP,uBAAuB;YACvB,qBAAqB;UACtB;QACD;QACA;UACC,UAAU;UACV,OAAO;YACN,OAAO;YACP,uBAAuB;YACvB,qBAAqB;UACtB;QACD;QACA;UACC,UAAU;UACV,OAAO;YACN,eAAe;YACf,gBAAgB;UACjB;QACD;MACD;MACA,eAAe;QACd;UACC,UAAU;UACV,OAAO;YACN,sBAAsB;UACvB;QACD;QACA;UACC,UAAU;UACV,OAAO;YACN,oBAAoB;UACrB;QACD;QACA;UACC,UAAU;UACV,OAAO;YACN,sBAAsB;YACtB,oBAAoB;UACrB;QACD;MACD;IACD;IACA,aAAa;MACZ,MAAM;MACN,MAAM;MACN,WAAW;MACX,YAAY;QACX;UACC,UAAU;UACV,OAAO;YACN,OAAO;YACP,uBAAuB;YACvB,qBAAqB;UACtB;QACD;QACA;UACC,UAAU;UACV,OAAO;YACN,OAAO;YACP,uBAAuB;YACvB,qBAAqB;UACtB;QACD;QACA;UACC,UAAU;UACV,OAAO;YACN,eAAe;YACf,gBAAgB;UACjB;QACD;QACA;UACC,UACC;UACD,OAAO;YACN,aAAa;YACb,eAAe;YACf,gBAAgB;UACjB;QACD;QACA;UACC,UAAU;UACV,OAAO;YACN,aAAa;UACd;QACD;MACD;MACA,eAAe;QACd;UACC,UAAU;UACV,OAAO;YACN,sBAAsB;UACvB;QA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I;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;;cAE5B;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAA+B;cAAG;cACpD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;;cAEZ;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;;cAEvC;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAA+B;cAAG;cAAG;cAAG;cAAG;cACpD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cACZ;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;;cAExB;cACA;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAI;cAAI;cACrD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;;cAEhD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAI;cAAI;cAAI;cAAI;cAAI;cAClD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACnD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACrD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAI;cAAI;cAClD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;;cAEhC;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAClD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cACpD;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;cAAI;;cAE5B;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cAAG;cACtD;cAAG;cAAG;c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AACA,UAAI,QAAQ,KAAK,eAAgB,OAAQ;AACzC,UAAK,QAAQ,IAAM,QAAO,WAAY,KAAM;AAC5C,UAAI,SAAS,KAAK,iBAAkB,OAAQ;AAC5C,UAAI,OAAO,KAAK,iBAAkB,UAAU,CAAE;AAC9C,UAAI,MAAM,OAAO,SAAS;AAC1B,UAAK,QAAQ,EAAI,QAAO;AACxB,WAAK,OAAO,kBAAkB,KAAK,cAAc;AACjD,YAAM,OAAO,KAAK,OAAO;QACxB;QACA,KAAK,cAAc;QACnB;QACA;MACD;AACA,aAAO,KAAK,IAAK,CAAEU,OAAO,OAAO,aAAcA,EAAE,CAAE,EAAE,KAAM,EAAG;IAC/D;EACD;AACA,MAAM,aAAa;IAClB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EACD;AACA,MAAI,SAAS,OAAO,OAAQ,EAAE,WAAW,MAAM,KAAW,CAAE;AAC5D,MAAM,OAAN,cAAmB,YAAY;IAC9B,YAAa,MAAM,UAAW;AAC7B,YAAM,EAAE,GAAGV,IAAE,IAAI,MAAO,MAAM,QAAS;AACvC,WAAK,eAAeA,IAAE;AACtB,WAAK,eAAeA,IAAE;AACtB,WAAK,kBAAkBA,IAAE;AACzB,WAAK,iBAAiBA,IAAE;AACxB;QACC;QACA;QACA,MACC,IAAI;UACH,EAAE,QAAQ,KAAK,SAAS,KAAK,gBAAgB;UAC7C;QACD;MACF;AACA;QACC;QACA;QACA,MACC,IAAI;UACH,EAAE,QAAQ,KAAK,SAAS,KAAK,eAAe;UAC5C;QACD;MACF;AACA,UAAK,KAAK,iBAAiB,KAAK,KAAK,iBAAiB,GAAI;AACzD,aAAK,qBAAqBA,IAAE;AAC5B;UACC;UACA;UACA,MACC,IAAI;YACH,EAAE,QAAQ,KAAK,SAAS,KAAK,mBAAmB;YAChD;UACD;QACF;MACD;IACD;EACD;AACA,MAAM,YAAN,cAAwB,YAAY;IACnC,YAAa,MAAM,UAAW;AAC7B,YAAM,EAAE,GAAGA,IAAE,IAAI,MAAO,MAAM,UAAU,WAAY;AACpD,WAAK,oBAAoBA,IAAE;AAC3B,WAAK,uBAAuBA,IAAE;AAC9B;QAC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",
  "names": ["a", "b", "i", "isMergeableObject", "deepmerge", "symbol", "getKeys", "is", "x", "y", "subscribe", "React", "useState", "useLayoutEffect", "useEffect", "match", "removeAccents", "import_blocks", "import_block_library", "import_data", "import_deprecated", "import_element", "import_editor", "import_preferences", "import_data", "patternPrivateApis", "editorPrivateApis", "deprecated", "preferencesStore", "editorStore", "dispatch", "coreStore", "postType", "settings", "name", "hasPageContentFocus", "blockEditorStore", "name", "import_core_data", "import_data", "import_deprecated", "import_preferences", "import_editor", "import_block_editor", "import_blocks", "select", "deprecated", "preferencesStore", "editorStore", "coreDataStore", "blockEditorStore", "import_data", "import_router", "import_element", "import_core_data", "e", "t", "f", "n", "o", "import_element", "import_components", "import_jsx_runtime", "VStack", "HStack", "Heading", "import_jsx_runtime", "import_components", "import_compose", "import_i18n", "import_element", "import_editor", "import_router", "import_plugins", "import_data", "import_preferences", "import_data", "import_components", "import_i18n", "import_core_data", "import_element", "import_element", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "page_default", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_primitives", "import_jsx_runtime", "import_data", "import_components", "import_i18n", "import_core_data", "import_jsx_runtime", "select", "coreDataStore", "import_element", "import_jsx_runtime", "import_jsx_runtime", "routerPrivateApis", "select", "getSettings", "coreStore", "commandsStore", "HStack", "isClassicThemeWithStyleBookSupport", "settings", "import_element", "import_components", "import_i18n", "import_router", "import_data", "import_core_data", "import_url", "import_jsx_runtime", "useLocation", "useHistory", "routerPrivateApis", "a", "b", "select", "coreStore", "motion", "import_element", "import_i18n", "import_data", "import_core_data", "import_editor", "coreStore", "editorStore", "setIsSaveViewOpened", "keyboardShortcutsStore", "import_element", "import_data", "import_core_data", "select", "coreStore", "i", "t", "each", "e", "a", "b", "i", "ctx", "globals", "match", "p", "t", "h", "s", "l", "r", "g", "config", "range", "p2", "output", "update", "i", "React", "import_react", "import_react", "animated", "i", "_extends", "host", "observer", "update", "_extends", "i", "defaults", "to", "to", "x", "_extends", "config", "to", "props", "result", "t", "priority", "node", "i", "p", "e", "n", "loop", "flush", "_extends", "onStart", "onChange", "onRest", "to", "loop", "defaults", "result", "props", "i", "init", "TransitionPhase", "priority", "self", "update", "_objectWithoutPropertiesLoose", "i", "name", "n", "prefix", "v", "x", "y", "z", "identity", "t", "import_element", "x", "y", "width", "height", "import_data", "import_components", "import_core_data", "import_data", "import_components", "import_i18n", "import_core_data", "import_keycodes", "import_router", "import_editor", "import_url", "import_jsx_runtime", "useLocation", "routerPrivateApis", "setIsSaveViewOpened", "editorStore", "select", "coreStore", "isSaveViewOpened", "import_jsx_runtime", "select", "coreStore", "HStack", "import_components", "import_editor", "import_data", "import_i18n", "import_core_data", "import_router", "import_element", "import_core_data", "import_data", "import_router", "import_url", "useHistory", "useLocation", "routerPrivateApis", "coreStore", "import_element", "import_url", "apiFetch", "import_jsx_runtime", "useLocation", "routerPrivateApis", "select", "coreStore", "isSaveViewOpened", "setIsSaveViewOpened", "import_jsx_runtime", "useLocation", "routerPrivateApis", "editorPrivateApis", "ANIMATION_DURATION", "areas", "useNavigateRegions", "select", "preferencesStore", "AnimatePresence", "motion", "noticesStore", "name", "import_element", "import_data", "import_i18n", "import_commands", "import_router", "import_preferences", "import_core_data", "import_editor", "useHistory", "useLocation", "routerPrivateApis", "editorPrivateApis", "openGeneralSidebar", "preferencesStore", "select", "coreStore", "editorStore", "import_data", "import_commands", "import_block_editor", "import_router", "commandsPrivateApis", "useLocation", "routerPrivateApis", "select", "blockEditorStore", "import_data", "import_element", "import_components", "import_i18n", "import_data", "import_core_data", "import_components", "import_i18n", "import_core_data", "import_data", "import_router", "import_element", "import_components", "import_jsx_runtime", "import_jsx_runtime", "useHistory", "useLocation", "routerPrivateApis", "select", "getSettings", "coreStore", "VStack", "HStack", "Heading", "import_components", "import_i18n", "import_router", "import_element", "import_jsx_runtime", "useHistory", "routerPrivateApis", "to", "e", "Item", "HStack", "import_i18n", "import_data", "import_element", "import_preferences", "import_editor", "import_router", "import_url", "import_components", "import_blocks", "import_data", "import_block_editor", "import_element", "import_compose", "defaultValue", "settings", "settings", "selector", "settings", "fastDeepEqual", "o", "deepmerge", "import_blocks", "import_style_engine", "import_data", "name", "featureSelector", "r", "t", "n", "e", "u", "a", "o", "i", "s", "h", "p", "r", "t", "n", "e", "u", "i", "a", "colors", "colors", "defaultValue", "selector", "prefix", "STYLE_PROPERTY", "name", "ELEMENTS", "presets", "settings", "config", "blocksStore", "css", "import_element", "import_element", "import_jsx_runtime", "import_components", "import_i18n", "import_data", "import_core_data", "import_jsx_runtime", "import_components", "import_jsx_runtime", "Item", "HStack", "import_components", "import_i18n", "import_block_editor", "o", "t", "r", "n", "a", "i", "e", "v", "u", "d", "c", "import_element", "import_data", "import_core_data", "import_i18n", "useStyle", "EMPTY_ARRAY", "settings", "select", "coreStore", "import_private_apis", "lock", "unlock", "import_jsx_runtime", "unlock", "blockEditorPrivateApis", "import_components", "useStyle", "import_element", "import_components", "import_i18n", "a", "b", "start", "i", "import_jsx_runtime", "config", "useStyle", "motion", "import_components", "import_jsx_runtime", "motion", "import_components", "import_compose", "import_element", "import_jsx_runtime", "useStyle", "motion", "import_jsx_runtime", "useStyle", "motion", "HStack", "VStack", "import_jsx_runtime", "import_blocks", "import_i18n", "import_components", "import_data", "import_element", "import_block_editor", "import_compose", "import_a11y", "import_blocks", "import_data", "import_components", "import_jsx_runtime", "name", "select", "blocksStore", "useStyle", "import_components", "import_i18n", "import_jsx_runtime", "import_jsx_runtime", "useHasDimensionsPanel", "useHasTypographyPanel", "useSettingsForBlockElement", "useHasColorPanel", "unlock", "blockEditorPrivateApis", "select", "blocksStore", "settings", "HStack", "Text", "import_blocks", "import_block_editor", "import_element", "import_data", "import_core_data", "import_components", "import_i18n", "import_block_editor", "import_blocks", "import_components", "import_element", "import_jsx_runtime", "import_components", "import_jsx_runtime", "Heading", "import_jsx_runtime", "useHasDimensionsPanel", "useHasTypographyPanel", "useHasBorderPanel", "useSettingsForBlockElement", "useHasColorPanel", "useHasBackgroundPanel", "unlock", "blockEditorPrivateApis", "import_i18n", "import_components", "import_element", "import_components", "import_jsx_runtime", "import_i18n", "import_components", "import_jsx_runtime", "import_components", "import_components", "import_jsx_runtime", "HStack", "import_components", "import_element", "import_keycodes", "import_i18n", "import_jsx_runtime", "import_jsx_runtime", "VStack", "Grid", "import_i18n", "import_components", "import_element", "import_element", "import_data", "import_core_data", "import_i18n", "import_api_fetch", "import_core_data", "import_components", "import_i18n", "kebabCase", "unlock", "componentsPrivateApis", "import_jsx_runtime", "import_i18n", "import_components", "import_core_data", "import_data", "import_components", "import_core_data", "import_data", "import_element", "import_i18n", "import_i18n", "import_components", "import_components", "import_element", "import_jsx_runtime", "import_jsx_runtime", "import_element", "import_components", "import_jsx_runtime", "import_jsx_runtime", "import_element", "import_components", "import_compose", "import_i18n", "import_core_data", "import_i18n", "import_components", "import_jsx_runtime", "import_element", "import_components", "import_jsx_runtime", "import_jsx_runtime", "import_i18n", "import_components", "import_element", "r", "e", "n", "t", "o", "i", "f", "c", "__require", "u", "a", "p", "require", "module", "exports", "symbol", "x", "v", "j", "_x", "len", "start", "len2", "prefix", "r", "e", "n", "t", "o", "i", "f", "c", "__require", "u", "a", "p", "require", "module", "exports", "l", "chunk", "__", "c2", "k", "start", "flush", "head", "Event", "e", "l", "v", "name", "n", "t", "i", "start", "p", "font", "createTable", "format", "d", "OS2", "h", "s", "r", "w", "b", "record", "str", "f", "SVG", "a", "import_components", "kebabCase", "unlock", "componentsPrivateApis", "import_jsx_runtime", "import_jsx_runtime", "unlock", "componentsPrivateApis", "import_i18n", "import_components", "import_element", "import_jsx_runtime", "import_jsx_runtime", "import_i18n", "import_components", "import_jsx_runtime", "import_jsx_runtime", "import_i18n", "import_components", "import_element", "import_block_editor", "import_jsx_runtime", "useSettingsForBlockElement", "StylesTypographyPanel", "unlock", "blockEditorPrivateApis", "import_jsx_runtime", "import_jsx_runtime", "import_i18n", "import_components", "import_block_editor", "import_components", "import_i18n", "import_element", "import_components", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "useSettingsForBlockElement", "StylesColorPanel", "unlock", "blockEditorPrivateApis", "import_i18n", "import_components", "import_compose", "import_components", "import_i18n", "import_components", "import_components", "import_jsx_runtime", "import_jsx_runtime", "firstFrameVariants", "motion", "HStack", "import_jsx_runtime", "propertiesToFilter", "VStack", "Grid", "import_jsx_runtime", "import_compose", "import_components", "import_i18n", "import_jsx_runtime", "import_jsx_runtime", "Tabs", "unlock", "componentsPrivateApis", "import_i18n", "import_block_editor", "import_components", "import_block_editor", "import_jsx_runtime", "StylesBackgroundPanel", "unlock", "blockEditorPrivateApis", "import_jsx_runtime", "useHasBackgroundPanel", "unlock", "blockEditorPrivateApis", "import_components", "import_i18n", "import_element", "import_components", "import_i18n", "import_jsx_runtime", "import_jsx_runtime", "unlock", "componentsPrivateApis", "import_components", "import_i18n", "import_element", "import_jsx_runtime", "Menu", "unlock", "componentsPrivateApis", "import_jsx_runtime", "import_i18n", "import_block_editor", "import_block_editor", "import_element", "import_jsx_runtime", "useSettingsForBlockElement", "StylesDimensionsPanel", "unlock", "blockEditorPrivateApis", "import_jsx_runtime", "useHasDimensionsPanel", "useSettingsForBlockElement", "unlock", "blockEditorPrivateApis", "import_components", "import_i18n", "import_i18n", "import_components", "import_core_data", "import_data", "import_element", "import_components", "import_i18n", "import_jsx_runtime", "select", "coreStore", "css", "Grid", "import_jsx_runtime", "import_jsx_runtime", "import_i18n", "import_components", "import_block_editor", "import_jsx_runtime", "StylesAdvancedPanel", "unlock", "blockEditorPrivateApis", "import_i18n", "import_components", "import_element", "import_data", "import_core_data", "import_element", "EMPTY_ARRAY", "select", "coreStore", "import_i18n", "import_components", "import_core_data", "import_data", "import_keycodes", "import_jsx_runtime", "import_components", "import_i18n", "import_jsx_runtime", "import_jsx_runtime", "import_i18n", "import_components", "import_element", "import_components", "import_i18n", "import_jsx_runtime", "import_jsx_runtime", "Menu", "unlock", "componentsPrivateApis", "import_i18n", "import_components", "import_element", "import_block_editor", "import_i18n", "import_jsx_runtime", "import_components", "import_i18n", "import_jsx_runtime", "import_components", "import_i18n", "import_element", "import_jsx_runtime", "import_components", "import_jsx_runtime", "import_jsx_runtime", "Menu", "unlock", "componentsPrivateApis", "import_jsx_runtime", "import_jsx_runtime", "ColorVariations", "TypographyVariations", "import_jsx_runtime", "import_i18n", "import_url", "import_components", "import_jsx_runtime", "ItemGroup", "import_jsx_runtime", "useLocation", "useHistory", "routerPrivateApis", "name", "openGeneralSidebar", "editorStore", "preferencesStore", "import_jsx_runtime", "ItemGroup", "page_default", "select", "coreStore", "import_i18n", "import_components", "import_jsx_runtime", "Spacer", "import_data", "import_components", "import_compose", "import_editor", "import_i18n", "import_core_data", "import_element", "import_notices", "import_router", "import_html_entities", "import_block_editor", "import_url", "import_data", "import_components", "import_i18n", "import_element", "import_preferences", "import_core_data", "import_jsx_runtime", "import_jsx_runtime", "preferencesStore", "select", "coreStore", "import_data", "import_components", "import_i18n", "import_preferences", "import_jsx_runtime", "preferencesStore", "isVisible", "select", "import_data", "import_components", "import_i18n", "import_preferences", "import_editor", "import_jsx_runtime", "preferencesStore", "select", "editorStore", "isVisible", "import_jsx_runtime", "postType", "import_components", "import_core_data", "import_data", "import_editor", "import_jsx_runtime", "componentsPrivateApis", "useStyle", "editorPrivateApis", "select", "coreStore", "import_data", "import_element", "import_router", "import_compose", "import_editor", "import_router", "import_element", "import_url", "import_editor", "useHistory", "useLocation", "routerPrivateApis", "editorPrivateApis", "e", "useLocation", "useHistory", "routerPrivateApis", "useGlobalStyles", "editorPrivateApis", "settings", "select", "getSettings", "editorStore", "import_editor", "import_data", "import_components", "import_deprecated", "import_jsx_runtime", "deprecated", "select", "editorStore", "import_editor", "import_i18n", "import_components", "import_api_fetch", "import_data", "import_core_data", "import_notices", "import_jsx_runtime", "select", "coreStore", "noticesStore", "apiFetch", "e", "import_i18n", "import_data", "import_components", "import_preferences", "import_jsx_runtime", "preferencesStore", "import_jsx_runtime", "editorPrivateApis", "import_data", "import_keycodes", "import_element", "import_i18n", "import_editor", "import_router", "import_url", "useLocation", "useHistory", "routerPrivateApis", "select", "editorStore", "import_i18n", "import_data", "import_core_data", "import_html_entities", "import_editor", "import_element", "import_data", "import_core_data", "import_i18n", "import_a11y", "import_html_entities", "import_router", "useLocation", "routerPrivateApis", "select", "coreStore", "editorPrivateApis", "postType", "select", "coreStore", "import_data", "import_block_editor", "import_editor", "import_element", "import_preferences", "blockEditorStore", "setIsListViewOpened", "setIsInserterOpened", "editorStore", "preferencesStore", "import_element", "import_data", "import_core_data", "import_router", "useLocation", "routerPrivateApis", "name", "postType", "select", "coreDataStore", "setEditedEntity", "import_i18n", "import_data", "import_core_data", "import_dom", "import_url", "import_jsx_runtime", "select", "coreStore", "document", "import_jsx_runtime", "editorPrivateApis", "useHistory", "useLocation", "routerPrivateApis", "blockLibraryPrivateApis", "postType", "name", "select", "coreDataStore", "settings", "blockEditorStore", "noticesStore", "motion", "import_jsx_runtime", "import_router", "import_editor", "import_url", "import_i18n", "import_element", "import_router", "import_editor", "import_compose", "import_components", "import_url", "import_jsx_runtime", "editorPrivateApis", "useLocation", "useHistory", "routerPrivateApis", "HStack", "import_jsx_runtime", "useLocation", "useHistory", "routerPrivateApis", "editorPrivateApis", "import_router", "import_i18n", "import_core_data", "import_data", "import_html_entities", "import_components", "import_i18n", "import_html_entities", "import_components", "import_i18n", "import_element", "import_router", "import_components", "import_i18n", "import_element", "import_jsx_runtime", "VStack", "HStack", "e", "import_components", "import_i18n", "import_jsx_runtime", "ConfirmDialog", "import_jsx_runtime", "useHistory", "routerPrivateApis", "import_element", "import_data", "import_block_editor", "import_blocks", "import_block_editor", "import_data", "import_blocks", "import_element", "import_core_data", "import_components", "import_data", "import_element", "import_i18n", "import_block_editor", "import_router", "import_jsx_runtime", "POPOVER_PROPS", "useHistory", "useLocation", "routerPrivateApis", "blockEditorStore", "select", "name", "import_jsx_runtime", "blockEditorPrivateApis", "select", "blockEditorStore", "coreStore", "import_jsx_runtime", "noop", "select", "getSettings", "import_i18n", "import_html_entities", "import_jsx_runtime", "import_core_data", "import_i18n", "import_data", "import_notices", "import_router", "import_core_data", "import_components", "import_i18n", "import_data", "import_html_entities", "import_router", "import_jsx_runtime", "useLocation", "routerPrivateApis", "select", "coreStore", "useHistory", "routerPrivateApis", "coreStore", "noticesStore", "select", "import_jsx_runtime", "coreStore", "select", "ItemGroup", "import_jsx_runtime", "useLocation", "routerPrivateApis", "import_router", "import_jsx_runtime", "useLocation", "routerPrivateApis", "import_components", "import_editor", "import_i18n", "import_router", "import_jsx_runtime", "import_element", "import_i18n", "import_core_data", "import_data", "select", "getSettings", "settings", "coreStore", "import_core_data", "import_data", "import_element", "select", "getSettings", "coreStore", "import_blocks", "import_data", "import_core_data", "import_element", "import_block_editor", "blockEditorPrivateApis", "config", "name", "select", "coreStore", "getSettings", "settings", "postType", "a", "b", "import_core_data", "import_data", "import_block_library", "blockLibraryPrivateApis", "select", "coreStore", "import_jsx_runtime", "useLocation", "routerPrivateApis", "ItemGroup", "postType", "Item", "import_i18n", "import_element", "import_block_editor", "import_element", "import_compose", "React", "init", "React", "a", "b", "c", "d", "update", "i", "React", "React", "a", "b", "a", "b", "c", "d", "e", "i", "result", "EMPTY_ARRAY", "import_react", "render", "_createElement", "import_element", "Stack", "render", "import_element", "import_i18n", "OPERATOR_IS_ANY", "OPERATOR_IS_NONE", "OPERATOR_IS", "OPERATOR_BEFORE", "OPERATOR_AFTER", "LAYOUT_TABLE", "LAYOUT_GRID", "LAYOUT_LIST", "LAYOUT_TABLE", "import_i18n", "import_i18n", "import_components", "import_element", "import_keycodes", "import_components", "import_i18n", "import_jsx_runtime", "getItemId", "import_components", "import_i18n", "import_element", "import_data", "import_compose", "import_private_apis", "lock", "unlock", "import_jsx_runtime", "Menu", "kebabCase", "unlock", "componentsPrivateApis", "import_components", "import_i18n", "import_element", "import_data", "import_compose", "import_jsx_runtime", "getItemId", "EMPTY_ARRAY", "message", "import_i18n", "import_components", "import_element", "f", "import_jsx_runtime", "Menu", "unlock", "componentsPrivateApis", "i", "f", "import_element", "import_jsx_runtime", "import_jsx_runtime", "descriptionField", "import_compose", "import_element", "import_i18n", "import_components", "import_i18n", "import_element", "import_jsx_runtime", "isVisible", "Item", "f", "previewField", "descriptionField", "ItemGroup", "import_jsx_runtime", "f", "descriptionField", "getItemId", "isSelected", "e", "getItemLevel", "import_components", "import_i18n", "import_components", "import_i18n", "import_compose", "import_keycodes", "import_element", "import_components", "import_i18n", "import_element", "import_jsx_runtime", "import_jsx_runtime", "unlock", "componentsPrivateApis", "i", "j", "GridItem", "getItemId", "descriptionField", "config", "isSelected", "f", "import_jsx_runtime", "getItemId", "f", "import_compose", "import_components", "import_element", "import_i18n", "import_data", "import_jsx_runtime", "Menu", "unlock", "componentsPrivateApis", "isSelected", "descriptionField", "isDefined", "getItemId", "f", "import_components", "import_i18n", "import_element", "import_jsx_runtime", "import_components", "import_element", "import_data", "import_jsx_runtime", "descriptionField", "import_react", "isDefined", "getItemId", "descriptionField", "f", "import_jsx_runtime", "import_components", "import_i18n", "import_compose", "import_element", "import_components", "import_data", "import_element", "import_i18n", "import_components", "import_element", "import_i18n", "import_jsx_runtime", "i", "import_jsx_runtime", "import_element", "import_jsx_runtime", "import_jsx_runtime", "Badge", "unlock", "componentsPrivateApis", "GridItem", "getItemId", "descriptionField", "config", "isSelected", "f", "import_i18n", "import_components", "import_element", "import_jsx_runtime", "TableColumnField", "f", "TableRow", "descriptionField", "getItemId", "isSelected", "import_components", "import_i18n", "import_element", "import_jsx_runtime", "imageSizes", "a", "b", "import_components", "import_i18n", "import_element", "import_jsx_runtime", "ToggleGroupControl", "ToggleGroupControlOption", "LAYOUT_TABLE", "LAYOUT_GRID", "LAYOUT_LIST", "import_element", "import_components", "import_i18n", "import_element", "__defProp", "__hasOwnProp", "a", "b", "__defProp", "__defProps", "__getOwnPropDescs", "__getOwnPropSymbols", "__hasOwnProp", "__propIsEnum", "__defNormalProp", "__spreadValues", "a", "b", "__spreadProps", "__objRest", "noop", "normalizeString", "__spreadValues", "message", "import_react", "mergeProps", "start", "a", "b", "__spreadProps", "__spreadValues", "e", "import_react", "React", "useId", "defaultValue", "useForceUpdate", "React", "import_jsx_runtime", "forwardRef2", "render", "memo2", "createElement", "mergeProps", "useContext2", "store", "ctx", "import_react", "ctx", "import_react", "ctx", "store", "noop", "sync", "__spreadProps", "__spreadValues", "k", "store2", "React", "useSyncExternalStoreExports", "store", "selector", "sync", "createStore", "useState2", "store2", "store", "i", "raf", "__spreadValues", "__spreadProps", "store", "update", "toArray", "i", "__spreadProps", "__spreadValues", "sync", "isGrid", "nextId", "useId", "store", "update", "store", "animated", "sync", "__spreadProps", "__spreadValues", "store", "update", "store", "update", "__objRest", "store", "__spreadProps", "__spreadValues", "store", "update", "__objRest", "store", "__spreadProps", "__spreadValues", "sync", "store", "update", "ctx", "import_react", "ctx", "ctx", "import_react", "ctx", "store", "forwardRef2", "createElement", "findFirstEnabledItem", "store", "groupItemsByRows", "import_react", "__spreadValues", "import_react", "TagName", "forwardRef2", "createElement", "TagName", "import_react", "import_jsx_runtime", "TagName", "store", "findFirstEnabledItem", "groupItemsByRows", "schedule", "Composite", "forwardRef2", "Composite2", "createElement", "import_react", "TagName", "normalizeString", "store", "useForceUpdate", "sync", "noop", "start", "elements", "useId", "forwardRef2", "createElement", "import_jsx_runtime", "store", "import_react", "TagName", "forwardRef2", "createElement", "import_react", "import_jsx_runtime", "TagName", "normalizeString", "i", "o", "l", "j", "a", "b", "toArray", "store", "forwardRef2", "createElement", "import_react", "TagName", "symbol", "store", "memo2", "forwardRef2", "createElement", "import_react", "TagName", "store", "useId", "forwardRef2", "createElement", "import_react", "import_jsx_runtime", "TagName", "store", "i", "useId", "isGrid", "nextId", "memo2", "forwardRef2", "createElement", "import_react", "import_jsx_runtime", "TagName", "store", "v", "memo2", "forwardRef2", "createElement", "TagName", "store", "memo2", "forwardRef2", "createElement", "import_react", "import_react_dom", "import_jsx_runtime", "TagName", "afterPaint", "raf", "store", "useId", "animated", "animated2", "forwardRef2", "createElement", "import_react", "import_jsx_runtime", "TagName", "store", "useId", "forwardRef2", "createElement", "import_compose", "import_i18n", "import_element", "import_components", "EMPTY_ARRAY", "import_element", "EMPTY_ARRAY", "elements", "import_jsx_runtime", "removeAccents", "v", "prefix", "f", "ComboboxList", "elements", "import_es6", "import_compose", "import_element", "import_components", "import_jsx_runtime", "f", "fastDeepEqual", "import_i18n", "import_element", "import_jsx_runtime", "OPERATOR_IS_ANY", "OPERATOR_IS_NONE", "OPERATOR_IS", "OPERATOR_BEFORE", "OPERATOR_AFTER", "name", "import_jsx_runtime", "ENTER", "SPACE", "f", "elements", "v", "import_components", "import_i18n", "import_element", "import_jsx_runtime", "Menu", "unlock", "componentsPrivateApis", "import_components", "import_i18n", "import_jsx_runtime", "f", "import_element", "f", "a", "b", "import_jsx_runtime", "import_element", "import_components", "import_i18n", "import_jsx_runtime", "import_element", "import_jsx_runtime", "import_element", "import_i18n", "import_jsx_runtime", "getItemId", "getItemLevel", "defaultLayouts", "v", "import_element", "import_jsx_runtime", "EMPTY_ARRAY", "LAYOUT_TABLE", "LAYOUT_GRID", "import_i18n", "import_element", "import_components", "import_compose", "import_jsx_runtime", "import_components", "import_i18n", "import_element", "import_compose", "import_components", "import_i18n", "import_element", "import_jsx_runtime", "import_jsx_runtime", "Menu", "unlock", "componentsPrivateApis", "defaultLayouts", "v", "config", "e", "warning", "ToggleGroupControl", "ToggleGroupControlOptionIcon", "ToggleGroupControlOption", "Grid", "Heading", "Text", "DropdownContentWrapper", "import_components", "import_element", "isValid", "import_jsx_runtime", "unlock", "isValid", "defaultOptions", "format", "findIndex", "match", "match", "defaultOptions", "defaultOptions", "localize", "formatLong", "format", "defaultOptions", "import_components", "import_element", "import_i18n", "import_date", "import_components", "import_element", "import_i18n", "import_jsx_runtime", "NumberControl", "import_date", "import_jsx_runtime", "unlock", "componentsPrivateApis", "isValid", "import_components", "import_element", "import_i18n", "import_date", "import_jsx_runtime", "DateCalendar", "unlock", "componentsPrivateApis", "isValid", "isSelected", "InputControl", "to", "toDate", "startDate", "import_components", "import_components", "import_element", "import_jsx_runtime", "ValidatedInputControl", "unlock", "prefix", "isValid", "import_jsx_runtime", "InputControlPrefixWrapper", "import_components", "import_jsx_runtime", "InputControlPrefixWrapper", "import_components", "import_jsx_runtime", "InputControlPrefixWrapper", "import_components", "import_element", "import_i18n", "import_jsx_runtime", "unlock", "NumberControl", "isValid", "import_jsx_runtime", "import_jsx_runtime", "Number", "import_components", "import_element", "import_jsx_runtime", "unlock", "isValid", "elements", "import_components", "import_element", "import_jsx_runtime", "unlock", "isValid", "elements", "import_element", "import_jsx_runtime", "Text", "config", "prefix", "import_components", "import_element", "import_jsx_runtime", "unlock", "isValid", "import_components", "import_element", "import_jsx_runtime", "unlock", "config", "isValid", "import_components", "import_element", "import_jsx_runtime", "unlock", "isValid", "elements", "ToggleGroupControlOption", "import_components", "import_element", "import_jsx_runtime", "unlock", "isValid", "elements", "import_components", "import_element", "import_jsx_runtime", "ValidatedInputControl", "unlock", "InputControlPrefixWrapper", "isValid", "import_components", "import_element", "import_i18n", "import_jsx_runtime", "isVisible", "InputControlSuffixWrapper", "import_jsx_runtime", "Number", "Text", "config", "import_i18n", "elements", "import_jsx_runtime", "a", "b", "elements", "v", "OPERATOR_IS_ANY", "OPERATOR_IS_NONE", "OPERATOR_IS", "import_i18n", "a", "b", "format", "getValueFormatted", "isValidCustom", "OPERATOR_IS", "OPERATOR_IS_ANY", "OPERATOR_IS_NONE", "import_i18n", "format", "getValueFormatted", "isEmpty", "isValidCustom", "OPERATOR_IS", "OPERATOR_IS_ANY", "OPERATOR_IS_NONE", "OPERATOR_IS_ANY", "OPERATOR_IS_NONE", "OPERATOR_IS", "import_date", "format", "getValueFormatted", "a", "b", "OPERATOR_BEFORE", "OPERATOR_AFTER", "import_date", "format", "getValueFormatted", "formatDate", "sort", "a", "b", "OPERATOR_BEFORE", "OPERATOR_AFTER", "import_i18n", "getValueFormatted", "isValidCustom", "sort", "a", "b", "OPERATOR_IS", "media_default", "import_i18n", "getValueFormatted", "render", "isValidCustom", "v", "sort", "a", "b", "OPERATOR_IS_ANY", "OPERATOR_IS_NONE", "getValueFormatted", "OPERATOR_IS_ANY", "OPERATOR_IS_NONE", "OPERATOR_IS", "import_i18n", "import_jsx_runtime", "render", "isValidCustom", "sort", "a", "b", "OPERATOR_IS_ANY", "OPERATOR_IS_NONE", "OPERATOR_IS", "OPERATOR_IS_ANY", "OPERATOR_IS_NONE", "OPERATOR_IS", "sort", "a", "b", "OPERATOR_IS", "elements", "media_default", "sort", "a", "b", "import_jsx_runtime", "EMPTY_ARRAY", "getItemId", "getItemLevel", "config", "defaultLayouts", "import_element", "import_element", "import_jsx_runtime", "import_element", "import_element", "import_components", "import_jsx_runtime", "Header", "Heading", "import_components", "import_element", "import_components", "import_i18n", "import_element", "import_compose", "import_components", "import_i18n", "import_jsx_runtime", "import_jsx_runtime", "Heading", "Spacer", "import_deepmerge", "import_components", "import_i18n", "import_element", "import_compose", "import_deepmerge", "import_es6", "import_element", "import_i18n", "fieldDef", "normalizedField", "i", "deepMerge", "fastDeepEqual", "import_jsx_runtime", "deepMerge", "f", "Spacer", "modal_default", "import_jsx_runtime", "modal_default", "import_components", "import_element", "import_jsx_runtime", "OriginalCardHeader", "config", "withHeader", "sizeCardBody", "import_components", "import_jsx_runtime", "Header", "Heading", "import_element", "import_i18n", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "getFieldDefinition", "import_jsx_runtime", "import_remove_accents", "import_deprecated", "import_date", "normalizeSearchInput", "removeAccents", "EMPTY_ARRAY", "OPERATOR_IS_ANY", "OPERATOR_IS_NONE", "deprecated", "OPERATOR_IS", "OPERATOR_BEFORE", "OPERATOR_AFTER", "a", "b", "start", "import_core_data", "import_editor", "import_router", "name", "import_element", "import_data", "import_preferences", "omit", "config", "name", "select", "preferencesStore", "import_data", "import_preferences", "config", "name", "preferencesStore", "import_data", "import_core_data", "import_data", "import_element", "import_editor", "useGlobalStyles", "editorPrivateApis", "select", "getSettings", "coreStore", "settings", "import_components", "import_i18n", "import_components", "import_element", "import_i18n", "import_data", "import_router", "import_patterns", "import_notices", "import_core_data", "import_editor", "import_jsx_runtime", "useHistory", "useLocation", "routerPrivateApis", "editPatternsPrivateApis", "editorPrivateApis", "patternsStore", "noticesStore", "select", "getPostType", "coreStore", "import_components", "import_element", "import_i18n", "import_patterns", "import_jsx_runtime", "patternsPrivateApis", "RenameModal", "import_components", "import_core_data", "import_data", "import_element", "import_html_entities", "import_i18n", "import_notices", "import_router", "import_jsx_runtime", "useHistory", "routerPrivateApis", "noticesStore", "coreStore", "ConfirmDialog", "import_jsx_runtime", "import_i18n", "import_element", "import_router", "import_data", "import_core_data", "useHistory", "routerPrivateApis", "select", "coreStore", "post", "import_components", "import_i18n", "import_element", "import_block_editor", "import_blocks", "import_editor", "import_core_data", "import_data", "postType", "select", "coreStore", "import_jsx_runtime", "useStyle", "editorPrivateApis", "isTemplatePart", "isEmpty", "HStack", "import_url", "import_components", "import_jsx_runtime", "blockEditorPrivateApis", "editorPrivateApis", "useLocation", "useHistory", "routerPrivateApis", "EMPTY_ARRAY", "select", "coreStore", "postType", "settings", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "import_i18n", "import_core_data", "import_element", "import_components", "import_i18n", "import_router", "import_url", "import_jsx_runtime", "useLocation", "routerPrivateApis", "EMPTY_ARRAY", "ItemGroup", "import_core_data", "import_element", "import_components", "import_i18n", "import_router", "import_url", "import_jsx_runtime", "useLocation", "routerPrivateApis", "EMPTY_ARRAY", "TemplateDataviewItem", "DataviewsTemplatesSidebarContent", "ItemGroup", "import_jsx_runtime", "DataviewsTemplatesSidebarContent", "import_i18n", "import_html_entities", "import_element", "import_core_data", "import_router", "import_editor", "import_url", "import_data", "import_compose", "import_components", "import_notices", "import_components", "import_html_entities", "import_element", "import_data", "import_core_data", "import_compose", "import_i18n", "import_notices", "import_router", "import_dom", "import_element", "import_i18n", "import_components", "import_core_data", "import_html_entities", "import_compose", "import_dom", "import_url", "import_data", "import_core_data", "import_html_entities", "import_element", "import_i18n", "import_url", "EMPTY_OBJECT", "getValueFromObjectPath", "prefix", "select", "coreStore", "a", "b", "postType", "import_jsx_runtime", "EMPTY_ARRAY", "Text", "config", "VStack", "__assign", "t", "s", "i", "n", "p", "start", "input", "re", "import_element", "import_i18n", "import_components", "import_jsx_runtime", "VStack", "HStack", "import_jsx_runtime", "useHistory", "routerPrivateApis", "page_default", "VStack", "Text", "coreStore", "noticesStore", "select", "Grid", "postType", "getPostType", "import_components", "import_i18n", "import_element", "import_html_entities", "import_blocks", "import_block_editor", "import_editor", "import_core_data", "import_data", "import_jsx_runtime", "Badge", "componentsPrivateApis", "corePrivateApis", "useStyle", "editorPrivateApis", "PreviewField", "settings", "isEmpty", "previewField", "AuthorField", "HStack", "select", "coreStore", "Render", "defaultLayouts", "DEFAULT_VIEW", "import_jsx_runtime", "usePostActions", "editorPrivateApis", "useHistory", "useLocation", "routerPrivateApis", "useEntityRecordsWithPermissions", "corePrivateApis", "select", "coreStore", "previewField", "elements", "noticesStore", "defaultLayouts", "import_i18n", "import_element", "import_core_data", "import_router", "import_editor", "import_url", "import_compose", "import_components", "import_components", "import_html_entities", "import_element", "import_data", "import_core_data", "import_compose", "import_i18n", "import_notices", "import_router", "import_dom", "import_element", "import_i18n", "import_components", "import_core_data", "import_html_entities", "import_compose", "import_dom", "import_url", "import_data", "import_core_data", "import_html_entities", "import_element", "import_i18n", "import_url", "EMPTY_OBJECT", "getValueFromObjectPath", "prefixSlug", "prefix", "mapToIHasNameAndId", "useExistingTemplates", "select", "coreStore", "useDefaultTemplateTypes", "usePublicPostTypes", "a", "b", "usePublicTaxonomies", "usePostTypeArchiveMenuItems", "postType", "usePostTypeMenuItems", "useEntitiesInfo", "useTaxonomiesMenuItems", "USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX", "USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS", "useAuthorMenuItem", "import_jsx_runtime", "EMPTY_ARRAY", "SuggestionListItem", "Text", "useSearchSuggestions", "config", "mapToIHasNameAndId", "SuggestionList", "AddCustomTemplateModalContent", "VStack", "add_custom_template_modal_content_default", "import_element", "import_i18n", "import_components", "import_jsx_runtime", "AddCustomGenericTemplateModalContent", "VStack", "HStack", "add_custom_generic_template_modal_content_default", "import_jsx_runtime", "useHistory", "routerPrivateApis", "DEFAULT_TEMPLATE_SLUGS", "TEMPLATE_ICONS", "page_default", "TemplateListItem", "VStack", "Text", "modalContentMap", "NewTemplateModal", "useMissingTemplates", "coreStore", "noticesStore", "select", "Grid", "add_custom_template_modal_content_default", "add_custom_generic_template_modal_content_default", "NewTemplate", "postType", "getPostType", "useExistingTemplates", "useDefaultTemplateTypes", "useTaxonomiesMenuItems", "usePostTypeMenuItems", "useAuthorMenuItem", "usePostTypeArchiveMenuItems", "import_jsx_runtime", "usePostActions", "templateTitleField", "editorPrivateApis", "useHistory", "useLocation", "routerPrivateApis", "useEntityRecordsWithPermissions", "corePrivateApis", "PageTemplates", "previewField", "defaultLayouts", "import_jsx_runtime", "PageTemplates", "isListView", "import_jsx_runtime", "import_router", "import_i18n", "import_data", "import_core_data", "import_components", "import_router", "import_data", "import_core_data", "import_element", "import_router", "import_components", "import_url", "import_jsx_runtime", "useLocation", "routerPrivateApis", "v", "HStack", "import_i18n", "defaultLayouts", "postType", "getDefaultView", "import_jsx_runtime", "useLocation", "routerPrivateApis", "postType", "select", "getPostType", "coreStore", "ItemGroup", "import_components", "import_core_data", "import_element", "import_router", "import_data", "import_editor", "import_i18n", "import_compose", "import_url", "import_components", "import_i18n", "import_data", "import_element", "import_core_data", "import_notices", "import_html_entities", "import_blocks", "import_jsx_runtime", "postType", "select", "coreStore", "noticesStore", "resolveSelect", "VStack", "HStack", "import_element", "import_core_data", "import_jsx_runtime", "usePostActions", "usePostFields", "editorPrivateApis", "useLocation", "useHistory", "routerPrivateApis", "useEntityRecordsWithPermissions", "coreDataPrivateApis", "EMPTY_ARRAY", "postType", "select", "getPostType", "coreStore", "getDefaultView", "defaultLayouts", "import_i18n", "import_data", "import_core_data", "import_components", "import_element", "import_editor", "import_block_editor", "import_jsx_runtime", "usePostFields", "editorPrivateApis", "postType", "select", "coreDataStore", "ExperimentalBlockEditorProvider", "blockEditorPrivateApis", "settings", "VStack", "import_jsx_runtime", "useLocation", "routerPrivateApis", "coreStore", "getDefaultView", "import_i18n", "import_jsx_runtime", "import_i18n", "import_editor", "import_jsx_runtime", "StyleBookPreview", "editorPrivateApis", "import_i18n", "import_components", "import_jsx_runtime", "Spacer", "routes", "registerRoute", "import_jsx_runtime", "routerPrivateApis", "routes", "select", "coreStore", "import_editor", "import_url", "import_deprecated", "import_jsx_runtime", "name", "deprecated", "EditorPluginMoreMenuItem", "EditorPluginSidebar", "EditorPluginSidebarMoreMenuItem", "import_jsx_runtime", "editorPrivateApis", "settings", "blocksStore", "name", "preferencesStore", "e", "deprecated"]
}