Fix File
•
/
home
/
sportsfe...
/
httpdocs
/
clone
/
wp-inclu...
/
js
/
dist
•
File:
edit-site.js
•
Content:
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, { level: 3, children: (0,external_wp_i18n_namespaceObject.__)('Fonts') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { onClick: () => setModalTabOpen('installed-fonts'), label: (0,external_wp_i18n_namespaceObject.__)('Manage fonts'), icon: library_settings, size: "small" })] }), hasFonts ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalItemGroup, { isBordered: true, isSeparated: true, children: [customFonts.map(font => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_family_item, { font: font }, font.slug)), themeFonts.map(font => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_family_item, { font: font }, font.slug))] }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [(0,external_wp_i18n_namespaceObject.__)('No fonts installed.'), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { className: "edit-site-global-styles-font-families__add-fonts", variant: "secondary", onClick: () => setModalTabOpen('upload-fonts'), children: (0,external_wp_i18n_namespaceObject.__)('Add fonts') })] })] })] }); } /* harmony default export */ const font_families = (({ ...props }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(context, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FontFamilies, { ...props }) })); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-typography.js /** * WordPress dependencies */ /** * Internal dependencies */ function ScreenTypography() { const fontLibraryEnabled = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_editor_namespaceObject.store).getEditorSettings().fontLibraryEnabled, []); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, { title: (0,external_wp_i18n_namespaceObject.__)('Typography'), description: (0,external_wp_i18n_namespaceObject.__)('Typography styles and the application of those styles on site elements.') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-global-styles-screen", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { spacing: 7, children: [!window.__experimentalDisableFontLibrary && fontLibraryEnabled && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(font_families, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(typography_elements, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TypographyVariations, { title: (0,external_wp_i18n_namespaceObject.__)('Presets') })] }) })] }); } /* harmony default export */ const screen_typography = (ScreenTypography); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/typography-panel.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useGlobalStyle: typography_panel_useGlobalStyle, useGlobalSetting: typography_panel_useGlobalSetting, useSettingsForBlockElement: typography_panel_useSettingsForBlockElement, TypographyPanel: typography_panel_StylesTypographyPanel } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); function TypographyPanel({ element, headingLevel }) { let prefixParts = []; if (element === 'heading') { prefixParts = prefixParts.concat(['elements', headingLevel]); } else if (element && element !== 'text') { prefixParts = prefixParts.concat(['elements', element]); } const prefix = prefixParts.join('.'); const [style] = typography_panel_useGlobalStyle(prefix, undefined, 'user', { shouldDecodeEncode: false }); const [inheritedStyle, setStyle] = typography_panel_useGlobalStyle(prefix, undefined, 'all', { shouldDecodeEncode: false }); const [rawSettings] = typography_panel_useGlobalSetting(''); const usedElement = element === 'heading' ? headingLevel : element; const settings = typography_panel_useSettingsForBlockElement(rawSettings, undefined, usedElement); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(typography_panel_StylesTypographyPanel, { inheritedValue: inheritedStyle, value: style, onChange: setStyle, settings: settings }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/typography-preview.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useGlobalStyle: typography_preview_useGlobalStyle } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); function TypographyPreview({ name, element, headingLevel }) { var _ref; let prefix = ''; if (element === 'heading') { prefix = `elements.${headingLevel}.`; } else if (element && element !== 'text') { prefix = `elements.${element}.`; } const [fontFamily] = typography_preview_useGlobalStyle(prefix + 'typography.fontFamily', name); const [gradientValue] = typography_preview_useGlobalStyle(prefix + 'color.gradient', name); const [backgroundColor] = typography_preview_useGlobalStyle(prefix + 'color.background', name); const [fallbackBackgroundColor] = typography_preview_useGlobalStyle('color.background'); const [color] = typography_preview_useGlobalStyle(prefix + 'color.text', name); const [fontSize] = typography_preview_useGlobalStyle(prefix + 'typography.fontSize', name); const [fontStyle] = typography_preview_useGlobalStyle(prefix + 'typography.fontStyle', name); const [fontWeight] = typography_preview_useGlobalStyle(prefix + 'typography.fontWeight', name); const [letterSpacing] = typography_preview_useGlobalStyle(prefix + 'typography.letterSpacing', name); const extraStyles = element === 'link' ? { textDecoration: 'underline' } : {}; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-typography-preview", style: { fontFamily: fontFamily !== null && fontFamily !== void 0 ? fontFamily : 'serif', background: (_ref = gradientValue !== null && gradientValue !== void 0 ? gradientValue : backgroundColor) !== null && _ref !== void 0 ? _ref : fallbackBackgroundColor, color, fontSize, fontStyle, fontWeight, letterSpacing, ...extraStyles }, children: "Aa" }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-typography-element.js /** * WordPress dependencies */ /** * Internal dependencies */ const screen_typography_element_elements = { text: { description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts used on the site.'), title: (0,external_wp_i18n_namespaceObject.__)('Text') }, link: { description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts and typography used on the links.'), title: (0,external_wp_i18n_namespaceObject.__)('Links') }, heading: { description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts and typography used on headings.'), title: (0,external_wp_i18n_namespaceObject.__)('Headings') }, caption: { description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts and typography used on captions.'), title: (0,external_wp_i18n_namespaceObject.__)('Captions') }, button: { description: (0,external_wp_i18n_namespaceObject.__)('Manage the fonts and typography used on buttons.'), title: (0,external_wp_i18n_namespaceObject.__)('Buttons') } }; function ScreenTypographyElement({ element }) { const [headingLevel, setHeadingLevel] = (0,external_wp_element_namespaceObject.useState)('heading'); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, { title: screen_typography_element_elements[element].title, description: screen_typography_element_elements[element].description }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, { marginX: 4, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TypographyPreview, { element: element, headingLevel: headingLevel }) }), element === 'heading' && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, { marginX: 4, marginBottom: "1em", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, { label: (0,external_wp_i18n_namespaceObject.__)('Select heading level'), hideLabelFromVision: true, value: headingLevel, onChange: setHeadingLevel, isBlock: true, size: "__unstable-large", __nextHasNoMarginBottom: true, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { value: "heading", label: (0,external_wp_i18n_namespaceObject._x)('All', 'heading levels') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { value: "h1", label: (0,external_wp_i18n_namespaceObject.__)('H1') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { value: "h2", label: (0,external_wp_i18n_namespaceObject.__)('H2') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { value: "h3", label: (0,external_wp_i18n_namespaceObject.__)('H3') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { value: "h4", label: (0,external_wp_i18n_namespaceObject.__)('H4') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { value: "h5", label: (0,external_wp_i18n_namespaceObject.__)('H5') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { value: "h6", label: (0,external_wp_i18n_namespaceObject.__)('H6') })] }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TypographyPanel, { element: element, headingLevel: headingLevel })] }); } /* harmony default export */ const screen_typography_element = (ScreenTypographyElement); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/icon/index.js /** * WordPress dependencies */ /** @typedef {{icon: JSX.Element, size?: number} & import('@wordpress/primitives').SVGProps} IconProps */ /** * Return an SVG icon. * * @param {IconProps} props icon is the SVG component to render * size is a number specifiying the icon size in pixels * Other props will be passed to wrapped SVG component * @param {import('react').ForwardedRef<HTMLElement>} ref The forwarded ref to the SVG element. * * @return {JSX.Element} Icon component */ function Icon({ icon, size = 24, ...props }, ref) { return (0,external_wp_element_namespaceObject.cloneElement)(icon, { width: size, height: size, ...props, ref }); } /* harmony default export */ const build_module_icon = ((0,external_wp_element_namespaceObject.forwardRef)(Icon)); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/shuffle.js /** * WordPress dependencies */ const shuffle = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/SVG", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M17.192 6.75L15.47 5.03l1.06-1.06 3.537 3.53-3.537 3.53-1.06-1.06 1.723-1.72h-3.19c-.602 0-.993.202-1.28.498-.309.319-.538.792-.695 1.383-.13.488-.222 1.023-.296 1.508-.034.664-.116 1.413-.303 2.117-.193.721-.513 1.467-1.068 2.04-.575.594-1.359.954-2.357.954H4v-1.5h4.003c.601 0 .993-.202 1.28-.498.308-.319.538-.792.695-1.383.149-.557.216-1.093.288-1.662l.039-.31a9.653 9.653 0 0 1 .272-1.653c.193-.722.513-1.467 1.067-2.04.576-.594 1.36-.954 2.358-.954h3.19zM8.004 6.75c.8 0 1.46.23 1.988.628a6.24 6.24 0 0 0-.684 1.396 1.725 1.725 0 0 0-.024-.026c-.287-.296-.679-.498-1.28-.498H4v-1.5h4.003zM12.699 14.726c-.161.459-.38.94-.684 1.396.527.397 1.188.628 1.988.628h3.19l-1.722 1.72 1.06 1.06L20.067 16l-3.537-3.53-1.06 1.06 1.723 1.72h-3.19c-.602 0-.993-.202-1.28-.498a1.96 1.96 0 0 1-.024-.026z" }) }); /* harmony default export */ const library_shuffle = (shuffle); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/color-indicator-wrapper.js /** * External dependencies */ /** * WordPress dependencies */ function ColorIndicatorWrapper({ className, ...props }) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, { className: dist_clsx('edit-site-global-styles__color-indicator-wrapper', className), ...props }); } /* harmony default export */ const color_indicator_wrapper = (ColorIndicatorWrapper); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/palette.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useGlobalSetting: palette_useGlobalSetting } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); const EMPTY_COLORS = []; function Palette({ name }) { const [customColors] = palette_useGlobalSetting('color.palette.custom'); const [themeColors] = palette_useGlobalSetting('color.palette.theme'); const [defaultColors] = palette_useGlobalSetting('color.palette.default'); const [defaultPaletteEnabled] = palette_useGlobalSetting('color.defaultPalette', name); const [randomizeThemeColors] = useColorRandomizer(); const colors = (0,external_wp_element_namespaceObject.useMemo)(() => [...(customColors || EMPTY_COLORS), ...(themeColors || EMPTY_COLORS), ...(defaultColors && defaultPaletteEnabled ? defaultColors : EMPTY_COLORS)], [customColors, themeColors, defaultColors, defaultPaletteEnabled]); const screenPath = !name ? '/colors/palette' : '/blocks/' + encodeURIComponent(name) + '/colors/palette'; const paletteButtonText = colors.length > 0 ? (0,external_wp_i18n_namespaceObject.__)('Edit palette') : (0,external_wp_i18n_namespaceObject.__)('Add colors'); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { spacing: 3, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, { level: 3, children: (0,external_wp_i18n_namespaceObject.__)('Palette') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, { isBordered: true, isSeparated: true, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, { path: screenPath, "aria-label": paletteButtonText, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { direction: "row", children: [colors.length <= 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { children: (0,external_wp_i18n_namespaceObject.__)('Add colors') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalZStack, { isLayered: false, offset: -8, children: colors.slice(0, 5).map(({ color }, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(color_indicator_wrapper, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ColorIndicator, { colorValue: color }) }, `${color}-${index}`)) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_icon, { icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? chevron_left : chevron_right })] }) }) }), window.__experimentalEnableColorRandomizer && themeColors?.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { variant: "secondary", icon: library_shuffle, onClick: randomizeThemeColors, children: (0,external_wp_i18n_namespaceObject.__)('Randomize colors') })] }); } /* harmony default export */ const palette = (Palette); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-colors.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useGlobalStyle: screen_colors_useGlobalStyle, useGlobalSetting: screen_colors_useGlobalSetting, useSettingsForBlockElement: screen_colors_useSettingsForBlockElement, ColorPanel: screen_colors_StylesColorPanel } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); function ScreenColors() { const [style] = screen_colors_useGlobalStyle('', undefined, 'user', { shouldDecodeEncode: false }); const [inheritedStyle, setStyle] = screen_colors_useGlobalStyle('', undefined, 'all', { shouldDecodeEncode: false }); const [rawSettings] = screen_colors_useGlobalSetting(''); const settings = screen_colors_useSettingsForBlockElement(rawSettings); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, { title: (0,external_wp_i18n_namespaceObject.__)('Colors'), description: (0,external_wp_i18n_namespaceObject.__)('Palette colors and the application of those colors on site elements.') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-global-styles-screen", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { spacing: 7, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(palette, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_colors_StylesColorPanel, { inheritedValue: inheritedStyle, value: style, onChange: setStyle, settings: settings })] }) })] }); } /* harmony default export */ const screen_colors = (ScreenColors); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/preset-colors.js /** * Internal dependencies */ function PresetColors() { const { paletteColors } = useStylesPreviewColors(); return paletteColors.slice(0, 5).map(({ slug, color }, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { style: { flexGrow: 1, height: '100%', background: color } }, `${slug}-${index}`)); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/preview-colors.js /** * WordPress dependencies */ /** * Internal dependencies */ const preview_colors_firstFrameVariants = { start: { scale: 1, opacity: 1 }, hover: { scale: 0, opacity: 0 } }; const StylesPreviewColors = ({ label, isFocused, withHoverView }) => { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PreviewIframe, { label: label, isFocused: isFocused, withHoverView: withHoverView, children: ({ key }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__unstableMotion.div, { variants: preview_colors_firstFrameVariants, style: { height: '100%', overflow: 'hidden' }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, { spacing: 0, justify: "center", style: { height: '100%', overflow: 'hidden' }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PresetColors, {}) }) }, key) }); }; /* harmony default export */ const preview_colors = (StylesPreviewColors); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/variations/variations-color.js /** * WordPress dependencies */ /** * Internal dependencies */ function ColorVariations({ title, gap = 2 }) { const colorVariations = useColorVariations(); // Return null if there is only one variation (the default). if (colorVariations?.length <= 1) { return null; } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { spacing: 3, children: [title && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, { level: 3, children: title }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalGrid, { spacing: gap, children: colorVariations.map((variation, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Variation, { variation: variation, isPill: true, property: "color", children: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(preview_colors, {}) }, index)) })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/color-palette-panel.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useGlobalSetting: color_palette_panel_useGlobalSetting } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); const mobilePopoverProps = { placement: 'bottom-start', offset: 8 }; function ColorPalettePanel({ name }) { const [themeColors, setThemeColors] = color_palette_panel_useGlobalSetting('color.palette.theme', name); const [baseThemeColors] = color_palette_panel_useGlobalSetting('color.palette.theme', name, 'base'); const [defaultColors, setDefaultColors] = color_palette_panel_useGlobalSetting('color.palette.default', name); const [baseDefaultColors] = color_palette_panel_useGlobalSetting('color.palette.default', name, 'base'); const [customColors, setCustomColors] = color_palette_panel_useGlobalSetting('color.palette.custom', name); const [defaultPaletteEnabled] = color_palette_panel_useGlobalSetting('color.defaultPalette', name); const isMobileViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('small', '<'); const popoverProps = isMobileViewport ? mobilePopoverProps : undefined; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { className: "edit-site-global-styles-color-palette-panel", spacing: 8, children: [!!themeColors && !!themeColors.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalPaletteEdit, { canReset: themeColors !== baseThemeColors, canOnlyChangeValues: true, colors: themeColors, onChange: setThemeColors, paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Theme'), paletteLabelHeadingLevel: 3, popoverProps: popoverProps }), !!defaultColors && !!defaultColors.length && !!defaultPaletteEnabled && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalPaletteEdit, { canReset: defaultColors !== baseDefaultColors, canOnlyChangeValues: true, colors: defaultColors, onChange: setDefaultColors, paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Default'), paletteLabelHeadingLevel: 3, popoverProps: popoverProps }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalPaletteEdit, { colors: customColors, onChange: setCustomColors, paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Custom'), paletteLabelHeadingLevel: 3, slugPrefix: "custom-", popoverProps: popoverProps }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ColorVariations, { title: (0,external_wp_i18n_namespaceObject.__)('Palettes') })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/gradients-palette-panel.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useGlobalSetting: gradients_palette_panel_useGlobalSetting } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); const gradients_palette_panel_mobilePopoverProps = { placement: 'bottom-start', offset: 8 }; const noop = () => {}; function GradientPalettePanel({ name }) { const [themeGradients, setThemeGradients] = gradients_palette_panel_useGlobalSetting('color.gradients.theme', name); const [baseThemeGradients] = gradients_palette_panel_useGlobalSetting('color.gradients.theme', name, 'base'); const [defaultGradients, setDefaultGradients] = gradients_palette_panel_useGlobalSetting('color.gradients.default', name); const [baseDefaultGradients] = gradients_palette_panel_useGlobalSetting('color.gradients.default', name, 'base'); const [customGradients, setCustomGradients] = gradients_palette_panel_useGlobalSetting('color.gradients.custom', name); const [defaultPaletteEnabled] = gradients_palette_panel_useGlobalSetting('color.defaultGradients', name); const [customDuotone] = gradients_palette_panel_useGlobalSetting('color.duotone.custom') || []; const [defaultDuotone] = gradients_palette_panel_useGlobalSetting('color.duotone.default') || []; const [themeDuotone] = gradients_palette_panel_useGlobalSetting('color.duotone.theme') || []; const [defaultDuotoneEnabled] = gradients_palette_panel_useGlobalSetting('color.defaultDuotone'); const duotonePalette = [...(customDuotone || []), ...(themeDuotone || []), ...(defaultDuotone && defaultDuotoneEnabled ? defaultDuotone : [])]; const isMobileViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('small', '<'); const popoverProps = isMobileViewport ? gradients_palette_panel_mobilePopoverProps : undefined; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { className: "edit-site-global-styles-gradient-palette-panel", spacing: 8, children: [!!themeGradients && !!themeGradients.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalPaletteEdit, { canReset: themeGradients !== baseThemeGradients, canOnlyChangeValues: true, gradients: themeGradients, onChange: setThemeGradients, paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Theme'), paletteLabelHeadingLevel: 3, popoverProps: popoverProps }), !!defaultGradients && !!defaultGradients.length && !!defaultPaletteEnabled && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalPaletteEdit, { canReset: defaultGradients !== baseDefaultGradients, canOnlyChangeValues: true, gradients: defaultGradients, onChange: setDefaultGradients, paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Default'), paletteLabelLevel: 3, popoverProps: popoverProps }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalPaletteEdit, { gradients: customGradients, onChange: setCustomGradients, paletteLabel: (0,external_wp_i18n_namespaceObject.__)('Custom'), paletteLabelLevel: 3, slugPrefix: "custom-", popoverProps: popoverProps }), !!duotonePalette && !!duotonePalette.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, { level: 3, children: (0,external_wp_i18n_namespaceObject.__)('Duotone') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, { margin: 3 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DuotonePicker, { duotonePalette: duotonePalette, disableCustomDuotone: true, disableCustomColors: true, clearable: false, onChange: noop })] })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-color-palette.js /** * WordPress dependencies */ /** * Internal dependencies */ const { Tabs: screen_color_palette_Tabs } = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis); function ScreenColorPalette({ name }) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, { title: (0,external_wp_i18n_namespaceObject.__)('Edit palette'), description: (0,external_wp_i18n_namespaceObject.__)('The combination of colors used across the site and in color pickers.') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(screen_color_palette_Tabs, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(screen_color_palette_Tabs.TabList, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_color_palette_Tabs.Tab, { tabId: "color", children: (0,external_wp_i18n_namespaceObject.__)('Color') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_color_palette_Tabs.Tab, { tabId: "gradient", children: (0,external_wp_i18n_namespaceObject.__)('Gradient') })] }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_color_palette_Tabs.TabPanel, { tabId: "color", focusable: false, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ColorPalettePanel, { name: name }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_color_palette_Tabs.TabPanel, { tabId: "gradient", focusable: false, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GradientPalettePanel, { name: name }) })] })] }); } /* harmony default export */ const screen_color_palette = (ScreenColorPalette); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/plus.js /** * WordPress dependencies */ const plus = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M11 12.5V17.5H12.5V12.5H17.5V11H12.5V6H11V11H6V12.5H11Z" }) }); /* harmony default export */ const library_plus = (plus); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/shadows-panel.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useGlobalSetting: shadows_panel_useGlobalSetting } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); const defaultShadow = '6px 6px 9px rgba(0, 0, 0, 0.2)'; function ShadowsPanel() { const [defaultShadows] = shadows_panel_useGlobalSetting('shadow.presets.default'); const [defaultShadowsEnabled] = shadows_panel_useGlobalSetting('shadow.defaultPresets'); const [themeShadows] = shadows_panel_useGlobalSetting('shadow.presets.theme'); const [customShadows, setCustomShadows] = shadows_panel_useGlobalSetting('shadow.presets.custom'); const onCreateShadow = shadow => { setCustomShadows([...(customShadows || []), shadow]); }; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, { title: (0,external_wp_i18n_namespaceObject.__)('Shadows'), description: (0,external_wp_i18n_namespaceObject.__)('Manage and create shadow styles for use across the site.') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-global-styles-screen", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { className: "edit-site-global-styles__shadows-panel", spacing: 7, children: [defaultShadowsEnabled && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowList, { label: (0,external_wp_i18n_namespaceObject.__)('Default'), shadows: defaultShadows || [], category: "default" }), themeShadows && themeShadows.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowList, { label: (0,external_wp_i18n_namespaceObject.__)('Theme'), shadows: themeShadows || [], category: "theme" }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowList, { label: (0,external_wp_i18n_namespaceObject.__)('Custom'), shadows: customShadows || [], category: "custom", canCreate: true, onCreate: onCreateShadow })] }) })] }); } function ShadowList({ label, shadows, category, canCreate, onCreate }) { const handleAddShadow = () => { const newIndex = getNewIndexFromPresets(shadows, 'shadow-'); onCreate({ name: (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: is an index for a preset */ (0,external_wp_i18n_namespaceObject.__)('Shadow %s'), newIndex), shadow: defaultShadow, slug: `shadow-${newIndex}` }); }; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { spacing: 2, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { justify: "space-between", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, { align: "center", className: "edit-site-global-styles__shadows-panel__title", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, { level: 3, children: label }) }), canCreate && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { className: "edit-site-global-styles__shadows-panel__options-container", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { size: "small", icon: library_plus, label: (0,external_wp_i18n_namespaceObject.__)('Add shadow'), onClick: () => { handleAddShadow(); } }) })] }), shadows.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, { isBordered: true, isSeparated: true, children: shadows.map(shadow => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowItem, { shadow: shadow, category: category }, shadow.slug)) })] }); } function ShadowItem({ shadow, category }) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(NavigationButtonAsItem, { path: `/shadows/edit/${category}/${shadow.slug}`, "aria-label": // translators: %s: name of the shadow (0,external_wp_i18n_namespaceObject.sprintf)('Edit shadow %s', shadow.name), icon: library_shadow, children: shadow.name }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/reset.js /** * WordPress dependencies */ const reset_reset = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M7 11.5h10V13H7z" }) }); /* harmony default export */ const library_reset = (reset_reset); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/shadow-utils.js const CUSTOM_VALUE_SETTINGS = { px: { max: 20, step: 1 }, '%': { max: 100, step: 1 }, vw: { max: 100, step: 1 }, vh: { max: 100, step: 1 }, em: { max: 10, step: 0.1 }, rm: { max: 10, step: 0.1 }, svw: { max: 100, step: 1 }, lvw: { max: 100, step: 1 }, dvw: { max: 100, step: 1 }, svh: { max: 100, step: 1 }, lvh: { max: 100, step: 1 }, dvh: { max: 100, step: 1 }, vi: { max: 100, step: 1 }, svi: { max: 100, step: 1 }, lvi: { max: 100, step: 1 }, dvi: { max: 100, step: 1 }, vb: { max: 100, step: 1 }, svb: { max: 100, step: 1 }, lvb: { max: 100, step: 1 }, dvb: { max: 100, step: 1 }, vmin: { max: 100, step: 1 }, svmin: { max: 100, step: 1 }, lvmin: { max: 100, step: 1 }, dvmin: { max: 100, step: 1 }, vmax: { max: 100, step: 1 }, svmax: { max: 100, step: 1 }, lvmax: { max: 100, step: 1 }, dvmax: { max: 100, step: 1 } }; function getShadowParts(shadow) { const shadowValues = shadow.match(/(?:[^,(]|\([^)]*\))+/g) || []; return shadowValues.map(value => value.trim()); } function shadowStringToObject(shadowValue) { /* * Shadow spec: https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow * Shadow string format: <offset-x> <offset-y> <blur-radius> <spread-radius> <color> [inset] * * A shadow to be valid it must satisfy the following. * * 1. Should not contain "none" keyword. * 2. Values x, y, blur, spread should be in the order. Color and inset can be anywhere in the string except in between x, y, blur, spread values. * 3. Should not contain more than one set of x, y, blur, spread values. * 4. Should contain at least x and y values. Others are optional. * 5. Should not contain more than one "inset" (case insensitive) keyword. * 6. Should not contain more than one color value. */ const defaultShadow = { x: '0', y: '0', blur: '0', spread: '0', color: '#000', inset: false }; if (!shadowValue) { return defaultShadow; } // Rule 1: Should not contain "none" keyword. // if the shadow has "none" keyword, it is not a valid shadow string if (shadowValue.includes('none')) { return defaultShadow; } // Rule 2: Values x, y, blur, spread should be in the order. // Color and inset can be anywhere in the string except in between x, y, blur, spread values. // Extract length values (x, y, blur, spread) from shadow string // Regex match groups of 1 to 4 length values. const lengthsRegex = /((?:^|\s+)(-?\d*\.?\d+(?:px|%|in|cm|mm|em|rem|ex|pt|pc|vh|vw|vmin|vmax|ch|lh)?)(?=\s|$)(?![^(]*\))){1,4}/g; const matches = shadowValue.match(lengthsRegex) || []; // Rule 3: Should not contain more than one set of x, y, blur, spread values. // if the string doesn't contain exactly 1 set of x, y, blur, spread values, // it is not a valid shadow string if (matches.length !== 1) { return defaultShadow; } // Extract length values (x, y, blur, spread) from shadow string const lengths = matches[0].split(' ').map(value => value.trim()).filter(value => value); // Rule 4: Should contain at least x and y values. Others are optional. if (lengths.length < 2) { return defaultShadow; } // Rule 5: Should not contain more than one "inset" (case insensitive) keyword. // check if the shadow string contains "inset" keyword const insets = shadowValue.match(/inset/gi) || []; if (insets.length > 1) { return defaultShadow; } // Strip lengths and inset from shadow string, leaving just color. const hasInset = insets.length === 1; let colorString = shadowValue.replace(lengthsRegex, '').trim(); if (hasInset) { colorString = colorString.replace('inset', '').replace('INSET', '').trim(); } // Rule 6: Should not contain more than one color value. // validate color string with regular expression // check if color has matching hex, rgb or hsl values const colorRegex = /^#([0-9a-f]{3}){1,2}$|^#([0-9a-f]{4}){1,2}$|^(?:rgb|hsl)a?\(?[\d*\.?\d+%?,?\/?\s]*\)$/gi; let colorMatches = (colorString.match(colorRegex) || []).map(value => value?.trim()).filter(value => value); // If color string has more than one color values, it is not a valid if (colorMatches.length > 1) { return defaultShadow; } else if (colorMatches.length === 0) { // check if color string has multiple named color values separated by space colorMatches = colorString.trim().split(' ').filter(value => value); // If color string has more than one color values, it is not a valid if (colorMatches.length > 1) { return defaultShadow; } } // Return parsed shadow object. const [x, y, blur, spread] = lengths; return { x, y, blur: blur || defaultShadow.blur, spread: spread || defaultShadow.spread, inset: hasInset, color: colorString || defaultShadow.color }; } function shadowObjectToString(shadowObj) { const shadowString = `${shadowObj.x || '0px'} ${shadowObj.y || '0px'} ${shadowObj.blur || '0px'} ${shadowObj.spread || '0px'}`; return `${shadowObj.inset ? 'inset' : ''} ${shadowString} ${shadowObj.color || ''}`.trim(); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/shadows-edit-panel.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ const { useGlobalSetting: shadows_edit_panel_useGlobalSetting } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); const { DropdownMenuV2: DropdownMenu, DropdownMenuItemV2: DropdownMenuItem, DropdownMenuItemLabelV2: DropdownMenuItemLabel } = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis); const customShadowMenuItems = [{ label: (0,external_wp_i18n_namespaceObject.__)('Rename'), action: 'rename' }, { label: (0,external_wp_i18n_namespaceObject.__)('Delete'), action: 'delete' }]; const presetShadowMenuItems = [{ label: (0,external_wp_i18n_namespaceObject.__)('Reset'), action: 'reset' }]; function ShadowsEditPanel() { const { params: { category, slug }, goTo } = (0,external_wp_components_namespaceObject.__experimentalUseNavigator)(); const [shadows, setShadows] = shadows_edit_panel_useGlobalSetting(`shadow.presets.${category}`); const [baseShadows] = shadows_edit_panel_useGlobalSetting(`shadow.presets.${category}`, undefined, 'base'); const [selectedShadow, setSelectedShadow] = (0,external_wp_element_namespaceObject.useState)(() => (shadows || []).find(shadow => shadow.slug === slug)); const baseSelectedShadow = (0,external_wp_element_namespaceObject.useMemo)(() => (baseShadows || []).find(b => b.slug === slug), [baseShadows, slug]); const [isConfirmDialogVisible, setIsConfirmDialogVisible] = (0,external_wp_element_namespaceObject.useState)(false); const [isRenameModalVisible, setIsRenameModalVisible] = (0,external_wp_element_namespaceObject.useState)(false); const [shadowName, setShadowName] = (0,external_wp_element_namespaceObject.useState)(selectedShadow.name); const onShadowChange = shadow => { setSelectedShadow({ ...selectedShadow, shadow }); const updatedShadows = shadows.map(s => s.slug === slug ? { ...selectedShadow, shadow } : s); setShadows(updatedShadows); }; const onMenuClick = action => { if (action === 'reset') { const updatedShadows = shadows.map(s => s.slug === slug ? baseSelectedShadow : s); setSelectedShadow(baseSelectedShadow); setShadows(updatedShadows); } else if (action === 'delete') { setIsConfirmDialogVisible(true); } else if (action === 'rename') { setIsRenameModalVisible(true); } }; const handleShadowDelete = () => { const updatedShadows = shadows.filter(s => s.slug !== slug); setShadows(updatedShadows); goTo(`/shadows`); }; const handleShadowRename = newName => { if (!newName) { return; } const updatedShadows = shadows.map(s => s.slug === slug ? { ...selectedShadow, name: newName } : s); setSelectedShadow({ ...selectedShadow, name: newName }); setShadows(updatedShadows); }; return !selectedShadow ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, { title: "" }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { justify: "space-between", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, { title: selectedShadow.name }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, { marginTop: 2, marginBottom: 0, paddingX: 4, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DropdownMenu, { trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { size: "small", icon: more_vertical, label: (0,external_wp_i18n_namespaceObject.__)('Menu') }), children: (category === 'custom' ? customShadowMenuItems : presetShadowMenuItems).map(item => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DropdownMenuItem, { onClick: () => onMenuClick(item.action), disabled: item.action === 'reset' && selectedShadow.shadow === baseSelectedShadow.shadow, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DropdownMenuItemLabel, { children: item.label }) }, item.action)) }) }) })] }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { className: "edit-site-global-styles-screen", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowsPreview, { shadow: selectedShadow.shadow }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowEditor, { shadow: selectedShadow.shadow, onChange: onShadowChange })] }), isConfirmDialogVisible && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalConfirmDialog, { isOpen: true, onConfirm: () => { handleShadowDelete(); setIsConfirmDialogVisible(false); }, onCancel: () => { setIsConfirmDialogVisible(false); }, confirmButtonText: (0,external_wp_i18n_namespaceObject.__)('Delete'), size: "medium", children: (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: name of the shadow 'Are you sure you want to delete "%s"?', selectedShadow.name) }), isRenameModalVisible && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, { title: (0,external_wp_i18n_namespaceObject.__)('Rename'), onRequestClose: () => setIsRenameModalVisible(false), size: "small", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("form", { onSubmit: event => { event.preventDefault(); handleShadowRename(shadowName); setIsRenameModalVisible(false); }, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalInputControl, { autoComplete: "off", label: (0,external_wp_i18n_namespaceObject.__)('Name'), placeholder: (0,external_wp_i18n_namespaceObject.__)('Shadow name'), value: shadowName, onChange: value => setShadowName(value) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, { marginBottom: 6 }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, { className: "block-editor-shadow-edit-modal__actions", justify: "flex-end", expanded: false, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { variant: "tertiary", onClick: () => setIsRenameModalVisible(false), children: (0,external_wp_i18n_namespaceObject.__)('Cancel') }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { variant: "primary", type: "submit", children: (0,external_wp_i18n_namespaceObject.__)('Save') }) })] })] }) })] }); } function ShadowsPreview({ shadow }) { const shadowStyle = { boxShadow: shadow }; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, { marginBottom: 4, marginTop: -2, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, { align: "center", justify: "center", className: "edit-site-global-styles__shadow-preview-panel", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-global-styles__shadow-preview-block", style: shadowStyle }) }) }); } function ShadowEditor({ shadow, onChange }) { const shadowParts = (0,external_wp_element_namespaceObject.useMemo)(() => getShadowParts(shadow), [shadow]); const onChangeShadowPart = (index, part) => { shadowParts[index] = part; onChange(shadowParts.join(', ')); }; const onAddShadowPart = () => { shadowParts.push(defaultShadow); onChange(shadowParts.join(', ')); }; const onRemoveShadowPart = index => { shadowParts.splice(index, 1); onChange(shadowParts.join(', ')); }; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, { spacing: 2, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { justify: "space-between", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, { align: "center", className: "edit-site-global-styles__shadows-panel__title", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, { level: 3, children: (0,external_wp_i18n_namespaceObject.__)('Shadows') }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { className: "edit-site-global-styles__shadows-panel__options-container", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { size: "small", icon: library_plus, label: (0,external_wp_i18n_namespaceObject.__)('Add shadow'), onClick: () => { onAddShadowPart(); } }) })] }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalSpacer, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, { isBordered: true, isSeparated: true, children: shadowParts.map((part, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(shadows_edit_panel_ShadowItem, { shadow: part, onChange: value => onChangeShadowPart(index, value), canRemove: shadowParts.length > 1, onRemove: () => onRemoveShadowPart(index) }, index)) })] }); } function shadows_edit_panel_ShadowItem({ shadow, onChange, canRemove, onRemove }) { const popoverProps = { placement: 'left-start', offset: 36, shift: true }; const shadowObj = (0,external_wp_element_namespaceObject.useMemo)(() => shadowStringToObject(shadow), [shadow]); const onShadowChange = newShadow => { onChange(shadowObjectToString(newShadow)); }; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Dropdown, { popoverProps: popoverProps, className: "edit-site-global-styles__shadow-editor__dropdown", renderToggle: ({ onToggle, isOpen }) => { const toggleProps = { onClick: onToggle, className: dist_clsx('edit-site-global-styles__shadow-editor__dropdown-toggle', { 'is-open': isOpen }), 'aria-expanded': isOpen }; const removeButtonProps = { onClick: onRemove, className: dist_clsx('edit-site-global-styles__shadow-editor__remove-button', { 'is-open': isOpen }), label: (0,external_wp_i18n_namespaceObject.__)('Remove shadow') }; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { align: "center", justify: "flex-start", spacing: 0, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { style: { flexGrow: 1 }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { icon: library_shadow, ...toggleProps, children: shadowObj.inset ? (0,external_wp_i18n_namespaceObject.__)('Inner shadow') : (0,external_wp_i18n_namespaceObject.__)('Drop shadow') }) }), canRemove && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { icon: library_reset, ...removeButtonProps }) })] }); }, renderContent: () => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalDropdownContentWrapper, { paddingSize: "none", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-global-styles__shadow-editor__dropdown-content", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowPopover, { shadowObj: shadowObj, onChange: onShadowChange }) }) }) }); } function ShadowPopover({ shadowObj, onChange }) { const __experimentalIsRenderedInSidebar = true; const enableAlpha = true; const onShadowChange = (key, value) => { const newShadow = { ...shadowObj, [key]: value }; onChange(newShadow); }; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-global-styles__shadow-editor-panel", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { spacing: 2, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHeading, { level: 5, children: (0,external_wp_i18n_namespaceObject.__)('Shadow') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-global-styles__shadow-editor-color-palette", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ColorPalette, { clearable: false, enableAlpha: enableAlpha, __experimentalIsRenderedInSidebar: __experimentalIsRenderedInSidebar, value: shadowObj.color, onChange: value => onShadowChange('color', value) }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalToggleGroupControl, { value: shadowObj.inset ? 'inset' : 'outset', isBlock: true, onChange: value => onShadowChange('inset', value === 'inset'), hideLabelFromVision: true, __next40pxDefaultSize: true, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { value: "outset", label: (0,external_wp_i18n_namespaceObject.__)('Outset') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToggleGroupControlOption, { value: "inset", label: (0,external_wp_i18n_namespaceObject.__)('Inset') })] }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalGrid, { columns: 2, gap: 4, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowInputControl, { label: (0,external_wp_i18n_namespaceObject.__)('X Position'), value: shadowObj.x, hasNegativeRange: true, onChange: value => onShadowChange('x', value) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowInputControl, { label: (0,external_wp_i18n_namespaceObject.__)('Y Position'), value: shadowObj.y, hasNegativeRange: true, onChange: value => onShadowChange('y', value) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowInputControl, { label: (0,external_wp_i18n_namespaceObject.__)('Blur'), value: shadowObj.blur, onChange: value => onShadowChange('blur', value) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowInputControl, { label: (0,external_wp_i18n_namespaceObject.__)('Spread'), value: shadowObj.spread, hasNegativeRange: true, onChange: value => onShadowChange('spread', value) })] })] }) }); } function ShadowInputControl({ label, value, onChange, hasNegativeRange }) { var _CUSTOM_VALUE_SETTING, _CUSTOM_VALUE_SETTING2, _CUSTOM_VALUE_SETTING3; const [isCustomInput, setIsCustomInput] = (0,external_wp_element_namespaceObject.useState)(false); const [parsedQuantity, parsedUnit] = (0,external_wp_components_namespaceObject.__experimentalParseQuantityAndUnitFromRawValue)(value); const sliderOnChange = next => { onChange(next !== undefined ? [next, parsedUnit || 'px'].join('') : '0px'); }; const onValueChange = next => { const isNumeric = next !== undefined && !isNaN(parseFloat(next)); const nextValue = isNumeric ? next : '0px'; onChange(nextValue); }; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { justify: "flex-start", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { justify: "space-between", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(subtitle, { children: label }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { label: (0,external_wp_i18n_namespaceObject.__)('Use custom size'), icon: library_settings, onClick: () => { setIsCustomInput(!isCustomInput); }, isPressed: isCustomInput, size: "small" })] }), isCustomInput ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalUnitControl, { label: label, hideLabelFromVision: true, __next40pxDefaultSize: true, value: value, onChange: onValueChange }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.RangeControl, { value: parsedQuantity !== null && parsedQuantity !== void 0 ? parsedQuantity : 0, onChange: sliderOnChange, withInputField: false, __next40pxDefaultSize: true, __nextHasNoMarginBottom: true, min: hasNegativeRange ? -((_CUSTOM_VALUE_SETTING = CUSTOM_VALUE_SETTINGS[parsedUnit !== null && parsedUnit !== void 0 ? parsedUnit : 'px']?.max) !== null && _CUSTOM_VALUE_SETTING !== void 0 ? _CUSTOM_VALUE_SETTING : 10) : 0, max: (_CUSTOM_VALUE_SETTING2 = CUSTOM_VALUE_SETTINGS[parsedUnit !== null && parsedUnit !== void 0 ? parsedUnit : 'px']?.max) !== null && _CUSTOM_VALUE_SETTING2 !== void 0 ? _CUSTOM_VALUE_SETTING2 : 10, step: (_CUSTOM_VALUE_SETTING3 = CUSTOM_VALUE_SETTINGS[parsedUnit !== null && parsedUnit !== void 0 ? parsedUnit : 'px']?.step) !== null && _CUSTOM_VALUE_SETTING3 !== void 0 ? _CUSTOM_VALUE_SETTING3 : 0.1 })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-shadows.js /** * Internal dependencies */ function ScreenShadows() { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowsPanel, {}); } function ScreenShadowsEdit() { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowsEditPanel, {}); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/dimensions-panel.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useGlobalStyle: dimensions_panel_useGlobalStyle, useGlobalSetting: dimensions_panel_useGlobalSetting, useSettingsForBlockElement: dimensions_panel_useSettingsForBlockElement, DimensionsPanel: dimensions_panel_StylesDimensionsPanel } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); const DEFAULT_CONTROLS = { contentSize: true, wideSize: true, padding: true, margin: true, blockGap: true, minHeight: true, childLayout: false }; function DimensionsPanel() { const [style] = dimensions_panel_useGlobalStyle('', undefined, 'user', { shouldDecodeEncode: false }); const [inheritedStyle, setStyle] = dimensions_panel_useGlobalStyle('', undefined, 'all', { shouldDecodeEncode: false }); const [userSettings] = dimensions_panel_useGlobalSetting('', undefined, 'user'); const [rawSettings, setSettings] = dimensions_panel_useGlobalSetting(''); const settings = dimensions_panel_useSettingsForBlockElement(rawSettings); // These intermediary objects are needed because the "layout" property is stored // in settings rather than styles. const inheritedStyleWithLayout = (0,external_wp_element_namespaceObject.useMemo)(() => { return { ...inheritedStyle, layout: settings.layout }; }, [inheritedStyle, settings.layout]); const styleWithLayout = (0,external_wp_element_namespaceObject.useMemo)(() => { return { ...style, layout: userSettings.layout }; }, [style, userSettings.layout]); const onChange = newStyle => { const updatedStyle = { ...newStyle }; delete updatedStyle.layout; setStyle(updatedStyle); if (newStyle.layout !== userSettings.layout) { const updatedSettings = { ...userSettings, layout: newStyle.layout }; // Ensure any changes to layout definitions are not persisted. if (updatedSettings.layout?.definitions) { delete updatedSettings.layout.definitions; } setSettings(updatedSettings); } }; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(dimensions_panel_StylesDimensionsPanel, { inheritedValue: inheritedStyleWithLayout, value: styleWithLayout, onChange: onChange, settings: settings, includeLayoutControls: true, defaultControls: DEFAULT_CONTROLS }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/background-panel.js /** * WordPress dependencies */ /** * Internal dependencies */ // Initial control values where no block style is set. const BACKGROUND_DEFAULT_VALUES = { backgroundSize: 'auto' }; const { useGlobalStyle: background_panel_useGlobalStyle, useGlobalSetting: background_panel_useGlobalSetting, useGlobalStyleLinks, BackgroundPanel: StylesBackgroundPanel } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); /** * Checks if there is a current value in the background image block support * attributes. * * @param {Object} style Style attribute. * @return {boolean} Whether the block has a background image value set. */ function hasBackgroundImageValue(style) { return !!style?.background?.backgroundImage?.id || !!style?.background?.backgroundImage?.url || typeof style?.background?.backgroundImage === 'string'; } function BackgroundPanel() { const [style] = background_panel_useGlobalStyle('', undefined, 'user', { shouldDecodeEncode: false }); const [inheritedStyle, setStyle] = background_panel_useGlobalStyle('', undefined, 'all', { shouldDecodeEncode: false }); const _links = useGlobalStyleLinks(); const [settings] = background_panel_useGlobalSetting(''); const defaultControls = { backgroundImage: true, backgroundSize: hasBackgroundImageValue(style) || hasBackgroundImageValue(inheritedStyle) }; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StylesBackgroundPanel, { inheritedValue: inheritedStyle, value: style, onChange: setStyle, settings: settings, defaultValues: BACKGROUND_DEFAULT_VALUES, defaultControls: defaultControls, themeFileURIs: _links?.['wp:theme-file'] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-layout.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useHasBackgroundPanel, useHasDimensionsPanel: screen_layout_useHasDimensionsPanel, useGlobalSetting: screen_layout_useGlobalSetting, useSettingsForBlockElement: screen_layout_useSettingsForBlockElement } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); function ScreenLayout() { const [rawSettings] = screen_layout_useGlobalSetting(''); const settings = screen_layout_useSettingsForBlockElement(rawSettings); const hasDimensionsPanel = screen_layout_useHasDimensionsPanel(settings); const hasBackgroundPanel = useHasBackgroundPanel(settings); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, { title: (0,external_wp_i18n_namespaceObject.__)('Layout') }), hasDimensionsPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DimensionsPanel, {}), hasBackgroundPanel && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BackgroundPanel, {})] }); } /* harmony default export */ const screen_layout = (ScreenLayout); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/style-variations-container.js /** * WordPress dependencies */ /** * Internal dependencies */ const { GlobalStylesContext: style_variations_container_GlobalStylesContext } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); function StyleVariationsContainer({ gap = 2 }) { const { user } = (0,external_wp_element_namespaceObject.useContext)(style_variations_container_GlobalStylesContext); const [currentUserStyles, setCurrentUserStyles] = (0,external_wp_element_namespaceObject.useState)(user); const userStyles = currentUserStyles?.styles; (0,external_wp_element_namespaceObject.useEffect)(() => { setCurrentUserStyles(user); }, [user]); const variations = (0,external_wp_data_namespaceObject.useSelect)(select => { return select(external_wp_coreData_namespaceObject.store).__experimentalGetCurrentThemeGlobalStylesVariations(); }, []); // Filter out variations that are of single property type, i.e. color or typography variations. const multiplePropertyVariations = variations?.filter(variation => { return !isVariationWithSingleProperty(variation, 'color') && !isVariationWithSingleProperty(variation, 'typography'); }); const themeVariations = (0,external_wp_element_namespaceObject.useMemo)(() => { const withEmptyVariation = [{ title: (0,external_wp_i18n_namespaceObject.__)('Default'), settings: {}, styles: {} }, ...(multiplePropertyVariations !== null && multiplePropertyVariations !== void 0 ? multiplePropertyVariations : [])]; return [...withEmptyVariation.map(variation => { var _variation$settings; const blockStyles = { ...variation?.styles?.blocks } || {}; // We need to copy any user custom CSS to the variation to prevent it being lost // when switching variations. if (userStyles?.blocks) { Object.keys(userStyles.blocks).forEach(blockName => { // First get any block specific custom CSS from the current user styles and merge with any custom CSS for // that block in the variation. if (userStyles.blocks[blockName].css) { const variationBlockStyles = blockStyles[blockName] || {}; const customCSS = { css: `${blockStyles[blockName]?.css || ''} ${userStyles.blocks[blockName].css.trim() || ''}` }; blockStyles[blockName] = { ...variationBlockStyles, ...customCSS }; } }); } // Now merge any global custom CSS from current user styles with global custom CSS in the variation. const css = userStyles?.css || variation.styles?.css ? { css: `${variation.styles?.css || ''} ${userStyles?.css || ''}` } : {}; const blocks = Object.keys(blockStyles).length > 0 ? { blocks: blockStyles } : {}; const styles = { ...variation.styles, ...css, ...blocks }; return { ...variation, settings: (_variation$settings = variation.settings) !== null && _variation$settings !== void 0 ? _variation$settings : {}, styles }; })]; }, [multiplePropertyVariations, userStyles?.blocks, userStyles?.css]); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalGrid, { columns: 2, className: "edit-site-global-styles-style-variations-container", gap: gap, children: themeVariations.map((variation, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Variation, { variation: variation, children: isFocused => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(preview_styles, { label: variation?.title, withHoverView: true, isFocused: isFocused, variation: variation }) }, index)) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-style-variations.js /** * WordPress dependencies */ /** * Internal dependencies */ function ScreenStyleVariations() { // Move to zoom out mode when this component is mounted // and back to the previous mode when unmounted. (0,external_wp_blockEditor_namespaceObject.useZoomOut)(); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, { title: (0,external_wp_i18n_namespaceObject.__)('Browse styles'), description: (0,external_wp_i18n_namespaceObject.__)('Choose a variation to change the look of the site.') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Card, { size: "small", isBorderless: true, className: "edit-site-global-styles-screen-style-variations", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CardBody, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StyleVariationsContainer, {}) }) })] }); } /* harmony default export */ const screen_style_variations = (ScreenStyleVariations); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/close-small.js /** * WordPress dependencies */ const closeSmall = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.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" }) }); /* harmony default export */ const close_small = (closeSmall); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/editor-canvas-container/index.js /** * WordPress dependencies */ /** * Internal dependencies */ const { EditorContentSlotFill, ResizableEditor } = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis); /** * Returns a translated string for the title of the editor canvas container. * * @param {string} view Editor canvas container view. * * @return {string} Translated string corresponding to value of view. Default is ''. */ function getEditorCanvasContainerTitle(view) { switch (view) { case 'style-book': return (0,external_wp_i18n_namespaceObject.__)('Style Book'); case 'global-styles-revisions': case 'global-styles-revisions:style-book': return (0,external_wp_i18n_namespaceObject.__)('Style Revisions'); default: return ''; } } function EditorCanvasContainer({ children, closeButtonLabel, onClose, enableResizing = false }) { const { editorCanvasContainerView, showListViewByDefault } = (0,external_wp_data_namespaceObject.useSelect)(select => { const _editorCanvasContainerView = lock_unlock_unlock(select(store)).getEditorCanvasContainerView(); const _showListViewByDefault = select(external_wp_preferences_namespaceObject.store).get('core', 'showListViewByDefault'); return { editorCanvasContainerView: _editorCanvasContainerView, showListViewByDefault: _showListViewByDefault }; }, []); const [isClosed, setIsClosed] = (0,external_wp_element_namespaceObject.useState)(false); const { setEditorCanvasContainerView } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store)); const { setIsListViewOpened } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_editor_namespaceObject.store); const focusOnMountRef = (0,external_wp_compose_namespaceObject.useFocusOnMount)('firstElement'); const sectionFocusReturnRef = (0,external_wp_compose_namespaceObject.useFocusReturn)(); function onCloseContainer() { setIsListViewOpened(showListViewByDefault); setEditorCanvasContainerView(undefined); setIsClosed(true); if (typeof onClose === 'function') { onClose(); } } function closeOnEscape(event) { if (event.keyCode === external_wp_keycodes_namespaceObject.ESCAPE && !event.defaultPrevented) { event.preventDefault(); onCloseContainer(); } } const childrenWithProps = Array.isArray(children) ? external_wp_element_namespaceObject.Children.map(children, (child, index) => index === 0 ? (0,external_wp_element_namespaceObject.cloneElement)(child, { ref: sectionFocusReturnRef }) : child) : (0,external_wp_element_namespaceObject.cloneElement)(children, { ref: sectionFocusReturnRef }); if (isClosed) { return null; } const title = getEditorCanvasContainerTitle(editorCanvasContainerView); const shouldShowCloseButton = onClose || closeButtonLabel; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EditorContentSlotFill.Fill, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-editor-canvas-container", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ResizableEditor, { enableResizing: enableResizing, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("section", { className: "edit-site-editor-canvas-container__section", ref: shouldShowCloseButton ? focusOnMountRef : null, onKeyDown: closeOnEscape, "aria-label": title, children: [shouldShowCloseButton && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { className: "edit-site-editor-canvas-container__close-button", icon: close_small, label: closeButtonLabel || (0,external_wp_i18n_namespaceObject.__)('Close'), onClick: onCloseContainer }), childrenWithProps] }) }) }) }); } function useHasEditorCanvasContainer() { const fills = (0,external_wp_components_namespaceObject.__experimentalUseSlotFills)(EditorContentSlotFill.privateKey); return !!fills?.length; } /* harmony default export */ const editor_canvas_container = (EditorCanvasContainer); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/style-book/index.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ const { ExperimentalBlockEditorProvider, useGlobalStyle: style_book_useGlobalStyle, GlobalStylesContext: style_book_GlobalStylesContext, useGlobalStylesOutputWithConfig } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); const { mergeBaseAndUserConfigs: style_book_mergeBaseAndUserConfigs } = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis); const { CompositeV2: Composite, CompositeItemV2: CompositeItem, useCompositeStoreV2: useCompositeStore, Tabs: style_book_Tabs } = lock_unlock_unlock(external_wp_components_namespaceObject.privateApis); // The content area of the Style Book is rendered within an iframe so that global styles // are applied to elements within the entire content area. To support elements that are // not part of the block previews, such as headings and layout for the block previews, // additional CSS rules need to be passed into the iframe. These are hard-coded below. // Note that button styles are unset, and then focus rules from the `Button` component are // applied to the `button` element, targeted via `.edit-site-style-book__example`. // This is to ensure that browser default styles for buttons are not applied to the previews. const STYLE_BOOK_IFRAME_STYLES = ` .edit-site-style-book__examples { max-width: 900px; margin: 0 auto; } .edit-site-style-book__example { border-radius: 2px; cursor: pointer; display: flex; flex-direction: column; gap: 40px; margin-bottom: 40px; padding: 16px; width: 100%; box-sizing: border-box; scroll-margin-top: 32px; scroll-margin-bottom: 32px; } .edit-site-style-book__example.is-selected { box-shadow: 0 0 0 1px var(--wp-components-color-accent, var(--wp-admin-theme-color, #007cba)); } .edit-site-style-book__example:focus:not(:disabled) { box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent, var(--wp-admin-theme-color, #007cba)); outline: 3px solid transparent; } .edit-site-style-book__examples.is-wide .edit-site-style-book__example { flex-direction: row; } .edit-site-style-book__example-title { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 11px; font-weight: 500; line-height: normal; margin: 0; text-align: left; text-transform: uppercase; } .edit-site-style-book__examples.is-wide .edit-site-style-book__example-title { text-align: right; width: 120px; } .edit-site-style-book__example-preview { width: 100%; } .edit-site-style-book__example-preview .block-editor-block-list__insertion-point, .edit-site-style-book__example-preview .block-list-appender { display: none; } .edit-site-style-book__example-preview .is-root-container > .wp-block:first-child { margin-top: 0; } .edit-site-style-book__example-preview .is-root-container > .wp-block:last-child { margin-bottom: 0; } `; function isObjectEmpty(object) { return !object || Object.keys(object).length === 0; } function getExamples() { // Use our own example for the Heading block so that we can show multiple // heading levels. const headingsExample = { name: 'core/heading', title: (0,external_wp_i18n_namespaceObject.__)('Headings'), category: 'text', blocks: [(0,external_wp_blocks_namespaceObject.createBlock)('core/heading', { content: (0,external_wp_i18n_namespaceObject.__)('Code Is Poetry'), level: 1 }), (0,external_wp_blocks_namespaceObject.createBlock)('core/heading', { content: (0,external_wp_i18n_namespaceObject.__)('Code Is Poetry'), level: 2 }), (0,external_wp_blocks_namespaceObject.createBlock)('core/heading', { content: (0,external_wp_i18n_namespaceObject.__)('Code Is Poetry'), level: 3 }), (0,external_wp_blocks_namespaceObject.createBlock)('core/heading', { content: (0,external_wp_i18n_namespaceObject.__)('Code Is Poetry'), level: 4 }), (0,external_wp_blocks_namespaceObject.createBlock)('core/heading', { content: (0,external_wp_i18n_namespaceObject.__)('Code Is Poetry'), level: 5 })] }; const otherExamples = (0,external_wp_blocks_namespaceObject.getBlockTypes)().filter(blockType => { const { name, example, supports } = blockType; return name !== 'core/heading' && !!example && supports.inserter !== false; }).map(blockType => ({ name: blockType.name, title: blockType.title, category: blockType.category, blocks: (0,external_wp_blocks_namespaceObject.getBlockFromExample)(blockType.name, blockType.example) })); return [headingsExample, ...otherExamples]; } function StyleBook({ enableResizing = true, isSelected, onClick, onSelect, showCloseButton = true, onClose, showTabs = true, userConfig = {} }) { const [resizeObserver, sizes] = (0,external_wp_compose_namespaceObject.useResizeObserver)(); const [textColor] = style_book_useGlobalStyle('color.text'); const [backgroundColor] = style_book_useGlobalStyle('color.background'); const [examples] = (0,external_wp_element_namespaceObject.useState)(getExamples); const tabs = (0,external_wp_element_namespaceObject.useMemo)(() => (0,external_wp_blocks_namespaceObject.getCategories)().filter(category => examples.some(example => example.category === category.slug)).map(category => ({ name: category.slug, title: category.title, icon: category.icon })), [examples]); const { base: baseConfig } = (0,external_wp_element_namespaceObject.useContext)(style_book_GlobalStylesContext); const mergedConfig = (0,external_wp_element_namespaceObject.useMemo)(() => { if (!isObjectEmpty(userConfig) && !isObjectEmpty(baseConfig)) { return style_book_mergeBaseAndUserConfigs(baseConfig, userConfig); } return {}; }, [baseConfig, userConfig]); // Copied from packages/edit-site/src/components/revisions/index.js // could we create a shared hook? const originalSettings = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getSettings(), []); const settings = (0,external_wp_element_namespaceObject.useMemo)(() => ({ ...originalSettings, __unstableIsPreviewMode: true }), [originalSettings]); const [globalStyles] = useGlobalStylesOutputWithConfig(mergedConfig); settings.styles = !isObjectEmpty(globalStyles) && !isObjectEmpty(userConfig) ? globalStyles : settings.styles; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(editor_canvas_container, { onClose: onClose, enableResizing: enableResizing, closeButtonLabel: showCloseButton ? (0,external_wp_i18n_namespaceObject.__)('Close') : null, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { className: dist_clsx('edit-site-style-book', { 'is-wide': sizes.width > 600, 'is-button': !!onClick }), style: { color: textColor, background: backgroundColor }, children: [resizeObserver, showTabs ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-style-book__tabs", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(style_book_Tabs, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(style_book_Tabs.TabList, { children: tabs.map(tab => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(style_book_Tabs.Tab, { tabId: tab.name, children: tab.title }, tab.name)) }), tabs.map(tab => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(style_book_Tabs.TabPanel, { tabId: tab.name, focusable: false, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StyleBookBody, { category: tab.name, examples: examples, isSelected: isSelected, onSelect: onSelect, settings: settings, sizes: sizes, title: tab.title }) }, tab.name))] }) }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(StyleBookBody, { examples: examples, isSelected: isSelected, onClick: onClick, onSelect: onSelect, settings: settings, sizes: sizes })] }) }); } const StyleBookBody = ({ category, examples, isSelected, onClick, onSelect, settings, sizes, title }) => { const [isFocused, setIsFocused] = (0,external_wp_element_namespaceObject.useState)(false); // The presence of an `onClick` prop indicates that the Style Book is being used as a button. // In this case, add additional props to the iframe to make it behave like a button. const buttonModeProps = { role: 'button', onFocus: () => setIsFocused(true), onBlur: () => setIsFocused(false), onKeyDown: event => { if (event.defaultPrevented) { return; } const { keyCode } = event; if (onClick && (keyCode === external_wp_keycodes_namespaceObject.ENTER || keyCode === external_wp_keycodes_namespaceObject.SPACE)) { event.preventDefault(); onClick(event); } }, onClick: event => { if (event.defaultPrevented) { return; } if (onClick) { event.preventDefault(); onClick(event); } }, readonly: true }; const buttonModeStyles = onClick ? 'body { cursor: pointer; } body * { pointer-events: none; }' : ''; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.__unstableIframe, { className: dist_clsx('edit-site-style-book__iframe', { 'is-focused': isFocused && !!onClick, 'is-button': !!onClick }), name: "style-book-canvas", tabIndex: 0, ...(onClick ? buttonModeProps : {}), children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__unstableEditorStyles, { styles: settings.styles }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("style", { children: // Forming a "block formatting context" to prevent margin collapsing. // @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context `.is-root-container { display: flow-root; } body { position: relative; padding: 32px !important; }` + STYLE_BOOK_IFRAME_STYLES + buttonModeStyles }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Examples, { className: dist_clsx('edit-site-style-book__examples', { 'is-wide': sizes.width > 600 }), examples: examples, category: category, label: title ? (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: Category of blocks, e.g. Text. (0,external_wp_i18n_namespaceObject.__)('Examples of blocks in the %s category'), title) : (0,external_wp_i18n_namespaceObject.__)('Examples of blocks'), isSelected: isSelected, onSelect: onSelect }, category)] }); }; const Examples = (0,external_wp_element_namespaceObject.memo)(({ className, examples, category, label, isSelected, onSelect }) => { const compositeStore = useCompositeStore({ orientation: 'vertical' }); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Composite, { store: compositeStore, className: className, "aria-label": label, role: "grid", children: examples.filter(example => category ? example.category === category : true).map(example => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Example, { id: `example-${example.name}`, title: example.title, blocks: example.blocks, isSelected: isSelected(example.name), onClick: () => { onSelect?.(example.name); } }, example.name)) }); }); const Example = ({ id, title, blocks, isSelected, onClick }) => { const originalSettings = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getSettings(), []); const settings = (0,external_wp_element_namespaceObject.useMemo)(() => ({ ...originalSettings, focusMode: false, // Disable "Spotlight mode". __unstableIsPreviewMode: true }), [originalSettings]); // Cache the list of blocks to avoid additional processing when the component is re-rendered. const renderedBlocks = (0,external_wp_element_namespaceObject.useMemo)(() => Array.isArray(blocks) ? blocks : [blocks], [blocks]); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { role: "row", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { role: "gridcell", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(CompositeItem, { className: dist_clsx('edit-site-style-book__example', { 'is-selected': isSelected }), id: id, "aria-label": (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: Title of a block, e.g. Heading. (0,external_wp_i18n_namespaceObject.__)('Open %s styles in Styles panel'), title), render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {}), role: "button", onClick: onClick, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { className: "edit-site-style-book__example-title", children: title }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-style-book__example-preview", "aria-hidden": true, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Disabled, { className: "edit-site-style-book__example-preview__content", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ExperimentalBlockEditorProvider, { value: renderedBlocks, settings: settings, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockList, { renderAppender: false }) }) }) })] }) }) }); }; /* harmony default export */ const style_book = (StyleBook); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-css.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useGlobalStyle: screen_css_useGlobalStyle, AdvancedPanel: screen_css_StylesAdvancedPanel } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); function ScreenCSS() { const description = (0,external_wp_i18n_namespaceObject.__)('Add your own CSS to customize the appearance and layout of your site.'); const [style] = screen_css_useGlobalStyle('', undefined, 'user', { shouldDecodeEncode: false }); const [inheritedStyle, setStyle] = screen_css_useGlobalStyle('', undefined, 'all', { shouldDecodeEncode: false }); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, { title: (0,external_wp_i18n_namespaceObject.__)('CSS'), description: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [description, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.ExternalLink, { href: "https://developer.wordpress.org/advanced-administration/wordpress/css/", className: "edit-site-global-styles-screen-css-help-link", children: (0,external_wp_i18n_namespaceObject.__)('Learn more about CSS') })] }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-global-styles-screen-css", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_css_StylesAdvancedPanel, { value: style, onChange: setStyle, inheritedValue: inheritedStyle }) })] }); } /* harmony default export */ const screen_css = (ScreenCSS); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/revisions/index.js /** * WordPress dependencies */ /** * Internal dependencies */ const { ExperimentalBlockEditorProvider: revisions_ExperimentalBlockEditorProvider, GlobalStylesContext: revisions_GlobalStylesContext, useGlobalStylesOutputWithConfig: revisions_useGlobalStylesOutputWithConfig, __unstableBlockStyleVariationOverridesWithConfig } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); const { mergeBaseAndUserConfigs: revisions_mergeBaseAndUserConfigs } = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis); function revisions_isObjectEmpty(object) { return !object || Object.keys(object).length === 0; } function Revisions({ userConfig, blocks }) { const { base: baseConfig } = (0,external_wp_element_namespaceObject.useContext)(revisions_GlobalStylesContext); const mergedConfig = (0,external_wp_element_namespaceObject.useMemo)(() => { if (!revisions_isObjectEmpty(userConfig) && !revisions_isObjectEmpty(baseConfig)) { return revisions_mergeBaseAndUserConfigs(baseConfig, userConfig); } return {}; }, [baseConfig, userConfig]); const renderedBlocksArray = (0,external_wp_element_namespaceObject.useMemo)(() => Array.isArray(blocks) ? blocks : [blocks], [blocks]); const originalSettings = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_blockEditor_namespaceObject.store).getSettings(), []); const settings = (0,external_wp_element_namespaceObject.useMemo)(() => ({ ...originalSettings, __unstableIsPreviewMode: true }), [originalSettings]); const [globalStyles] = revisions_useGlobalStylesOutputWithConfig(mergedConfig); const editorStyles = !revisions_isObjectEmpty(globalStyles) && !revisions_isObjectEmpty(userConfig) ? globalStyles : settings.styles; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(editor_canvas_container, { title: (0,external_wp_i18n_namespaceObject.__)('Revisions'), closeButtonLabel: (0,external_wp_i18n_namespaceObject.__)('Close revisions'), enableResizing: true, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_blockEditor_namespaceObject.__unstableIframe, { className: "edit-site-revisions__iframe", name: "revisions", tabIndex: 0, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("style", { children: // Forming a "block formatting context" to prevent margin collapsing. // @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context `.is-root-container { display: flow-root; }` }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Disabled, { className: "edit-site-revisions__example-preview__content", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(revisions_ExperimentalBlockEditorProvider, { value: renderedBlocksArray, settings: settings, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.BlockList, { renderAppender: false }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_blockEditor_namespaceObject.__unstableEditorStyles, { styles: editorStyles }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(__unstableBlockStyleVariationOverridesWithConfig, { config: mergedConfig })] }) })] }) }); } /* harmony default export */ const components_revisions = (Revisions); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-revisions/use-global-styles-revisions.js /** * WordPress dependencies */ /** * Internal dependencies */ const SITE_EDITOR_AUTHORS_QUERY = { per_page: -1, _fields: 'id,name,avatar_urls', context: 'view', capabilities: ['edit_theme_options'] }; const DEFAULT_QUERY = { per_page: 100, page: 1 }; const EMPTY_ARRAY = []; const { GlobalStylesContext: use_global_styles_revisions_GlobalStylesContext } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); function useGlobalStylesRevisions({ query } = {}) { const { user: userConfig } = (0,external_wp_element_namespaceObject.useContext)(use_global_styles_revisions_GlobalStylesContext); const _query = { ...DEFAULT_QUERY, ...query }; const { authors, currentUser, isDirty, revisions, isLoadingGlobalStylesRevisions, revisionsCount } = (0,external_wp_data_namespaceObject.useSelect)(select => { var _globalStyles$_links$; const { __experimentalGetDirtyEntityRecords, getCurrentUser, getUsers, getRevisions, __experimentalGetCurrentGlobalStylesId, getEntityRecord, isResolving } = select(external_wp_coreData_namespaceObject.store); const dirtyEntityRecords = __experimentalGetDirtyEntityRecords(); const _currentUser = getCurrentUser(); const _isDirty = dirtyEntityRecords.length > 0; const globalStylesId = __experimentalGetCurrentGlobalStylesId(); const globalStyles = globalStylesId ? getEntityRecord('root', 'globalStyles', globalStylesId) : undefined; const _revisionsCount = (_globalStyles$_links$ = globalStyles?._links?.['version-history']?.[0]?.count) !== null && _globalStyles$_links$ !== void 0 ? _globalStyles$_links$ : 0; const globalStylesRevisions = getRevisions('root', 'globalStyles', globalStylesId, _query) || EMPTY_ARRAY; const _authors = getUsers(SITE_EDITOR_AUTHORS_QUERY) || EMPTY_ARRAY; const _isResolving = isResolving('getRevisions', ['root', 'globalStyles', globalStylesId, _query]); return { authors: _authors, currentUser: _currentUser, isDirty: _isDirty, revisions: globalStylesRevisions, isLoadingGlobalStylesRevisions: _isResolving, revisionsCount: _revisionsCount }; }, [query]); return (0,external_wp_element_namespaceObject.useMemo)(() => { if (!authors.length || isLoadingGlobalStylesRevisions) { return { revisions: EMPTY_ARRAY, hasUnsavedChanges: isDirty, isLoading: true, revisionsCount }; } // Adds author details to each revision. const _modifiedRevisions = revisions.map(revision => { return { ...revision, author: authors.find(author => author.id === revision.author) }; }); const fetchedRevisionsCount = revisions.length; if (fetchedRevisionsCount) { // Flags the most current saved revision. if (_modifiedRevisions[0].id !== 'unsaved' && _query.page === 1) { _modifiedRevisions[0].isLatest = true; } // Adds an item for unsaved changes. if (isDirty && userConfig && Object.keys(userConfig).length > 0 && currentUser && _query.page === 1) { const unsavedRevision = { id: 'unsaved', styles: userConfig?.styles, settings: userConfig?.settings, _links: userConfig?._links, author: { name: currentUser?.name, avatar_urls: currentUser?.avatar_urls }, modified: new Date() }; _modifiedRevisions.unshift(unsavedRevision); } if (_query.page === Math.ceil(revisionsCount / _query.per_page)) { // Adds an item for the default theme styles. _modifiedRevisions.push({ id: 'parent', styles: {}, settings: {} }); } } return { revisions: _modifiedRevisions, hasUnsavedChanges: isDirty, isLoading: false, revisionsCount }; }, [isDirty, revisions, currentUser, authors, userConfig, isLoadingGlobalStylesRevisions]); } ;// CONCATENATED MODULE: external ["wp","date"] const external_wp_date_namespaceObject = window["wp"]["date"]; ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-revisions/revisions-buttons.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ const DAY_IN_MILLISECONDS = 60 * 60 * 1000 * 24; const { getGlobalStylesChanges } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); function ChangesSummary({ revision, previousRevision }) { const changes = getGlobalStylesChanges(revision, previousRevision, { maxResults: 7 }); if (!changes.length) { return null; } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", { "data-testid": "global-styles-revision-changes", className: "edit-site-global-styles-screen-revisions__changes", children: changes.map(change => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", { children: change }, change)) }); } /** * Returns a button label for the revision. * * @param {string|number} id A revision object. * @param {string} authorDisplayName Author name. * @param {string} formattedModifiedDate Revision modified date formatted. * @param {boolean} areStylesEqual Whether the revision matches the current editor styles. * @return {string} Translated label. */ function getRevisionLabel(id, authorDisplayName, formattedModifiedDate, areStylesEqual) { if ('parent' === id) { return (0,external_wp_i18n_namespaceObject.__)('Reset the styles to the theme defaults'); } if ('unsaved' === id) { return (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: author display name */ (0,external_wp_i18n_namespaceObject.__)('Unsaved changes by %s'), authorDisplayName); } return areStylesEqual ? (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %1$s: author display name, %2$s: revision creation date. (0,external_wp_i18n_namespaceObject.__)('Changes saved by %1$s on %2$s. This revision matches current editor styles.'), authorDisplayName, formattedModifiedDate) : (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %1$s: author display name, %2$s: revision creation date. (0,external_wp_i18n_namespaceObject.__)('Changes saved by %1$s on %2$s'), authorDisplayName, formattedModifiedDate); } /** * Returns a rendered list of revisions buttons. * * @typedef {Object} props * @property {Array<Object>} userRevisions A collection of user revisions. * @property {number} selectedRevisionId The id of the currently-selected revision. * @property {Function} onChange Callback fired when a revision is selected. * * @param {props} Component props. * @return {JSX.Element} The modal component. */ function RevisionsButtons({ userRevisions, selectedRevisionId, onChange, canApplyRevision, onApplyRevision }) { const { currentThemeName, currentUser } = (0,external_wp_data_namespaceObject.useSelect)(select => { const { getCurrentTheme, getCurrentUser } = select(external_wp_coreData_namespaceObject.store); const currentTheme = getCurrentTheme(); return { currentThemeName: currentTheme?.name?.rendered || currentTheme?.stylesheet, currentUser: getCurrentUser() }; }, []); const dateNowInMs = (0,external_wp_date_namespaceObject.getDate)().getTime(); const { datetimeAbbreviated } = (0,external_wp_date_namespaceObject.getSettings)().formats; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ol", { className: "edit-site-global-styles-screen-revisions__revisions-list", "aria-label": (0,external_wp_i18n_namespaceObject.__)('Global styles revisions list'), role: "group", children: userRevisions.map((revision, index) => { const { id, author, modified } = revision; const isUnsaved = 'unsaved' === id; // Unsaved changes are created by the current user. const revisionAuthor = isUnsaved ? currentUser : author; const authorDisplayName = revisionAuthor?.name || (0,external_wp_i18n_namespaceObject.__)('User'); const authorAvatar = revisionAuthor?.avatar_urls?.['48']; const isFirstItem = index === 0; const isSelected = selectedRevisionId ? selectedRevisionId === id : isFirstItem; const areStylesEqual = !canApplyRevision && isSelected; const isReset = 'parent' === id; const modifiedDate = (0,external_wp_date_namespaceObject.getDate)(modified); const displayDate = modified && dateNowInMs - modifiedDate.getTime() > DAY_IN_MILLISECONDS ? (0,external_wp_date_namespaceObject.dateI18n)(datetimeAbbreviated, modifiedDate) : (0,external_wp_date_namespaceObject.humanTimeDiff)(modified); const revisionLabel = getRevisionLabel(id, authorDisplayName, (0,external_wp_date_namespaceObject.dateI18n)(datetimeAbbreviated, modifiedDate), areStylesEqual); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("li", { className: dist_clsx('edit-site-global-styles-screen-revisions__revision-item', { 'is-selected': isSelected, 'is-active': areStylesEqual, 'is-reset': isReset }), "aria-current": isSelected, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { className: "edit-site-global-styles-screen-revisions__revision-button", __experimentalIsFocusable: true, disabled: isSelected, onClick: () => { onChange(revision); }, "aria-label": revisionLabel, children: isReset ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", { className: "edit-site-global-styles-screen-revisions__description", children: [(0,external_wp_i18n_namespaceObject.__)('Default styles'), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { className: "edit-site-global-styles-screen-revisions__meta", children: currentThemeName })] }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", { className: "edit-site-global-styles-screen-revisions__description", children: [isUnsaved ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { className: "edit-site-global-styles-screen-revisions__date", children: (0,external_wp_i18n_namespaceObject.__)('(Unsaved)') }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("time", { className: "edit-site-global-styles-screen-revisions__date", dateTime: modified, children: displayDate }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", { className: "edit-site-global-styles-screen-revisions__meta", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("img", { alt: authorDisplayName, src: authorAvatar }), authorDisplayName] }), isSelected && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ChangesSummary, { revision: revision, previousRevision: index < userRevisions.length ? userRevisions[index + 1] : {} })] }) }), isSelected && (areStylesEqual ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { className: "edit-site-global-styles-screen-revisions__applied-text", children: (0,external_wp_i18n_namespaceObject.__)('These styles are already applied to your site.') }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { size: "compact", variant: "primary", className: "edit-site-global-styles-screen-revisions__apply-button", onClick: onApplyRevision, children: isReset ? (0,external_wp_i18n_namespaceObject.__)('Reset to defaults') : (0,external_wp_i18n_namespaceObject.__)('Apply') }))] }, id); }) }); } /* harmony default export */ const revisions_buttons = (RevisionsButtons); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/previous.js /** * WordPress dependencies */ const previous = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.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" }) }); /* harmony default export */ const library_previous = (previous); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/next.js /** * WordPress dependencies */ const next = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.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" }) }); /* harmony default export */ const library_next = (next); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/pagination/index.js /** * External dependencies */ /** * WordPress dependencies */ function Pagination({ currentPage, numPages, changePage, totalItems, className, disabled = false, buttonVariant = 'tertiary', label = (0,external_wp_i18n_namespaceObject.__)('Pagination Navigation') }) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { expanded: false, as: "nav", "aria-label": label, spacing: 3, justify: "flex-start", className: dist_clsx('edit-site-pagination', className), children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, { variant: "muted", className: "edit-site-pagination__total", children: // translators: %s: Total number of patterns. (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: Total number of patterns. (0,external_wp_i18n_namespaceObject._n)('%s item', '%s items', totalItems), totalItems) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { expanded: false, spacing: 1, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { variant: buttonVariant, onClick: () => changePage(1), __experimentalIsFocusable: true, disabled: disabled || currentPage === 1, label: (0,external_wp_i18n_namespaceObject.__)('First page'), icon: library_previous, size: "compact" }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { variant: buttonVariant, onClick: () => changePage(currentPage - 1), __experimentalIsFocusable: true, disabled: disabled || currentPage === 1, label: (0,external_wp_i18n_namespaceObject.__)('Previous page'), icon: chevron_left, size: "compact" })] }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalText, { variant: "muted", children: (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %1$s: Current page number, %2$s: Total number of pages. (0,external_wp_i18n_namespaceObject._x)('%1$s of %2$s', 'paging'), currentPage, numPages) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { expanded: false, spacing: 1, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { variant: buttonVariant, onClick: () => changePage(currentPage + 1), __experimentalIsFocusable: true, disabled: disabled || currentPage === numPages, label: (0,external_wp_i18n_namespaceObject.__)('Next page'), icon: chevron_right, size: "compact" }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { variant: buttonVariant, onClick: () => changePage(numPages), __experimentalIsFocusable: true, disabled: disabled || currentPage === numPages, label: (0,external_wp_i18n_namespaceObject.__)('Last page'), icon: library_next, size: "compact" })] })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/screen-revisions/index.js /** * WordPress dependencies */ /** * Internal dependencies */ const { GlobalStylesContext: screen_revisions_GlobalStylesContext, areGlobalStyleConfigsEqual: screen_revisions_areGlobalStyleConfigsEqual } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); const PAGE_SIZE = 10; function ScreenRevisions() { const { goTo } = (0,external_wp_components_namespaceObject.__experimentalUseNavigator)(); const { user: currentEditorGlobalStyles, setUserConfig } = (0,external_wp_element_namespaceObject.useContext)(screen_revisions_GlobalStylesContext); const { blocks, editorCanvasContainerView } = (0,external_wp_data_namespaceObject.useSelect)(select => ({ editorCanvasContainerView: lock_unlock_unlock(select(store)).getEditorCanvasContainerView(), blocks: select(external_wp_blockEditor_namespaceObject.store).getBlocks() }), []); const [currentPage, setCurrentPage] = (0,external_wp_element_namespaceObject.useState)(1); const [currentRevisions, setCurrentRevisions] = (0,external_wp_element_namespaceObject.useState)([]); const { revisions, isLoading, hasUnsavedChanges, revisionsCount } = useGlobalStylesRevisions({ query: { per_page: PAGE_SIZE, page: currentPage } }); const numPages = Math.ceil(revisionsCount / PAGE_SIZE); const [currentlySelectedRevision, setCurrentlySelectedRevision] = (0,external_wp_element_namespaceObject.useState)(currentEditorGlobalStyles); const [isLoadingRevisionWithUnsavedChanges, setIsLoadingRevisionWithUnsavedChanges] = (0,external_wp_element_namespaceObject.useState)(false); const { setEditorCanvasContainerView } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store)); const selectedRevisionMatchesEditorStyles = screen_revisions_areGlobalStyleConfigsEqual(currentlySelectedRevision, currentEditorGlobalStyles); const onCloseRevisions = () => { goTo('/'); // Return to global styles main panel. const canvasContainerView = editorCanvasContainerView === 'global-styles-revisions:style-book' ? 'style-book' : undefined; setEditorCanvasContainerView(canvasContainerView); }; const restoreRevision = revision => { setUserConfig(() => revision); setIsLoadingRevisionWithUnsavedChanges(false); onCloseRevisions(); }; (0,external_wp_element_namespaceObject.useEffect)(() => { if (!editorCanvasContainerView || !editorCanvasContainerView.startsWith('global-styles-revisions')) { goTo('/'); // Return to global styles main panel. } }, [editorCanvasContainerView]); (0,external_wp_element_namespaceObject.useEffect)(() => { if (!isLoading && revisions.length) { setCurrentRevisions(revisions); } }, [revisions, isLoading]); const firstRevision = revisions[0]; const currentlySelectedRevisionId = currentlySelectedRevision?.id; const shouldSelectFirstItem = !!firstRevision?.id && !selectedRevisionMatchesEditorStyles && !currentlySelectedRevisionId; (0,external_wp_element_namespaceObject.useEffect)(() => { /* * Ensure that the first item is selected and loaded into the preview pane * when no revision is selected and the selected styles don't match the current editor styles. * This is required in case editor styles are changed outside the revisions panel, * e.g., via the reset styles function of useGlobalStylesReset(). * See: https://github.com/WordPress/gutenberg/issues/55866 */ if (shouldSelectFirstItem) { setCurrentlySelectedRevision(firstRevision); } }, [shouldSelectFirstItem, firstRevision]); // Only display load button if there is a revision to load, // and it is different from the current editor styles. const isLoadButtonEnabled = !!currentlySelectedRevisionId && currentlySelectedRevisionId !== 'unsaved' && !selectedRevisionMatchesEditorStyles; const hasRevisions = !!currentRevisions.length; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(header, { title: revisionsCount && // translators: %s: number of revisions. (0,external_wp_i18n_namespaceObject.sprintf)((0,external_wp_i18n_namespaceObject.__)('Revisions (%s)'), revisionsCount), description: (0,external_wp_i18n_namespaceObject.__)('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.'), onBack: onCloseRevisions }), !hasRevisions && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, { className: "edit-site-global-styles-screen-revisions__loading" }), hasRevisions && (editorCanvasContainerView === 'global-styles-revisions:style-book' ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(style_book, { userConfig: currentlySelectedRevision, isSelected: () => {}, onClose: () => { setEditorCanvasContainerView('global-styles-revisions'); } }) : /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(components_revisions, { blocks: blocks, userConfig: currentlySelectedRevision, closeButtonLabel: (0,external_wp_i18n_namespaceObject.__)('Close revisions') })), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(revisions_buttons, { onChange: setCurrentlySelectedRevision, selectedRevisionId: currentlySelectedRevisionId, userRevisions: currentRevisions, canApplyRevision: isLoadButtonEnabled, onApplyRevision: () => hasUnsavedChanges ? setIsLoadingRevisionWithUnsavedChanges(true) : restoreRevision(currentlySelectedRevision) }), numPages > 1 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "edit-site-global-styles-screen-revisions__footer", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(Pagination, { className: "edit-site-global-styles-screen-revisions__pagination", currentPage: currentPage, numPages: numPages, changePage: setCurrentPage, totalItems: revisionsCount, disabled: isLoading, label: (0,external_wp_i18n_namespaceObject.__)('Global Styles pagination navigation') }) }), isLoadingRevisionWithUnsavedChanges && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalConfirmDialog, { isOpen: isLoadingRevisionWithUnsavedChanges, confirmButtonText: (0,external_wp_i18n_namespaceObject.__)('Apply'), onConfirm: () => restoreRevision(currentlySelectedRevision), onCancel: () => setIsLoadingRevisionWithUnsavedChanges(false), size: "medium", children: (0,external_wp_i18n_namespaceObject.__)('Are you sure you want to apply this revision? Any unsaved changes will be lost.') })] }); } /* harmony default export */ const screen_revisions = (ScreenRevisions); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/ui.js /** * WordPress dependencies */ /** * Internal dependencies */ const SLOT_FILL_NAME = 'GlobalStylesMenu'; const { useGlobalStylesReset: ui_useGlobalStylesReset } = lock_unlock_unlock(external_wp_blockEditor_namespaceObject.privateApis); const { Slot: GlobalStylesMenuSlot, Fill: GlobalStylesMenuFill } = (0,external_wp_components_namespaceObject.createSlotFill)(SLOT_FILL_NAME); function GlobalStylesActionMenu() { const [canReset, onReset] = ui_useGlobalStylesReset(); const { toggle } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store); const { canEditCSS } = (0,external_wp_data_namespaceObject.useSelect)(select => { const { getEntityRecord, __experimentalGetCurrentGlobalStylesId } = select(external_wp_coreData_namespaceObject.store); const globalStylesId = __experimentalGetCurrentGlobalStylesId(); const globalStyles = globalStylesId ? getEntityRecord('root', 'globalStyles', globalStylesId) : undefined; return { canEditCSS: !!globalStyles?._links?.['wp:action-edit-css'] }; }, []); const { setEditorCanvasContainerView } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store)); const { goTo } = (0,external_wp_components_namespaceObject.__experimentalUseNavigator)(); const loadCustomCSS = () => { setEditorCanvasContainerView('global-styles-css'); goTo('/css'); }; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesMenuFill, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.DropdownMenu, { icon: more_vertical, label: (0,external_wp_i18n_namespaceObject.__)('More'), toggleProps: { size: 'compact' }, children: ({ onClose }) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.MenuGroup, { children: [canEditCSS && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { onClick: loadCustomCSS, children: (0,external_wp_i18n_namespaceObject.__)('Additional CSS') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { onClick: () => { toggle('core/edit-site', 'welcomeGuideStyles'); onClose(); }, children: (0,external_wp_i18n_namespaceObject.__)('Welcome Guide') })] }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuGroup, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { onClick: () => { onReset(); onClose(); }, disabled: !canReset, children: (0,external_wp_i18n_namespaceObject.__)('Reset styles') }) })] }) }) }); } function GlobalStylesNavigationScreen({ className, ...props }) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalNavigatorScreen, { className: ['edit-site-global-styles-sidebar__navigator-screen', className].filter(Boolean).join(' '), ...props }); } function BlockStylesNavigationScreens({ parentMenu, blockStyles, blockName }) { return blockStyles.map((style, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, { path: parentMenu + '/variations/' + style.name, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_block, { name: blockName, variation: style.name }) }, index)); } function ContextScreens({ name, parentMenu = '' }) { const blockStyleVariations = (0,external_wp_data_namespaceObject.useSelect)(select => { const { getBlockStyles } = select(external_wp_blocks_namespaceObject.store); return getBlockStyles(name); }, [name]); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, { path: parentMenu + '/colors/palette', children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_color_palette, { name: name }) }), !!blockStyleVariations?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BlockStylesNavigationScreens, { parentMenu: parentMenu, blockStyles: blockStyleVariations, blockName: name })] }); } function GlobalStylesStyleBook() { const navigator = (0,external_wp_components_namespaceObject.__experimentalUseNavigator)(); const { path } = navigator.location; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(style_book, { isSelected: blockName => // Match '/blocks/core%2Fbutton' and // '/blocks/core%2Fbutton/typography', but not // '/blocks/core%2Fbuttons'. path === `/blocks/${encodeURIComponent(blockName)}` || path.startsWith(`/blocks/${encodeURIComponent(blockName)}/`), onSelect: blockName => { // Now go to the selected block. navigator.goTo('/blocks/' + encodeURIComponent(blockName)); } }); } function GlobalStylesBlockLink() { const navigator = (0,external_wp_components_namespaceObject.__experimentalUseNavigator)(); const { selectedBlockName, selectedBlockClientId } = (0,external_wp_data_namespaceObject.useSelect)(select => { const { getSelectedBlockClientId, getBlockName } = select(external_wp_blockEditor_namespaceObject.store); const clientId = getSelectedBlockClientId(); return { selectedBlockName: getBlockName(clientId), selectedBlockClientId: clientId }; }, []); const blockHasGlobalStyles = useBlockHasGlobalStyles(selectedBlockName); // When we're in the `Blocks` screen enable deep linking to the selected block. (0,external_wp_element_namespaceObject.useEffect)(() => { if (!selectedBlockClientId || !blockHasGlobalStyles) { return; } const currentPath = navigator.location.path; if (currentPath !== '/blocks' && !currentPath.startsWith('/blocks/')) { return; } const newPath = '/blocks/' + encodeURIComponent(selectedBlockName); // Avoid navigating to the same path. This can happen when selecting // a new block of the same type. if (newPath !== currentPath) { navigator.goTo(newPath, { skipFocus: true }); } }, [selectedBlockClientId, selectedBlockName, blockHasGlobalStyles]); } function GlobalStylesEditorCanvasContainerLink() { const { goTo, location } = (0,external_wp_components_namespaceObject.__experimentalUseNavigator)(); const editorCanvasContainerView = (0,external_wp_data_namespaceObject.useSelect)(select => lock_unlock_unlock(select(store)).getEditorCanvasContainerView(), []); const path = location?.path; const isRevisionsOpen = path === '/revisions'; // If the user switches the editor canvas container view, redirect // to the appropriate screen. This effectively allows deep linking to the // desired screens from outside the global styles navigation provider. (0,external_wp_element_namespaceObject.useEffect)(() => { switch (editorCanvasContainerView) { case 'global-styles-revisions': case 'global-styles-revisions:style-book': goTo('/revisions'); break; case 'global-styles-css': goTo('/css'); break; case 'style-book': /* * The stand-alone style book is open * and the revisions panel is open, * close the revisions panel. * Otherwise keep the style book open while * browsing global styles panel. */ if (isRevisionsOpen) { goTo('/'); } break; default: /* * Example: the user has navigated to "Browse styles" or elsewhere * and changes the editorCanvasContainerView, e.g., closes the style book. * The panel should not be affected. * Exclude revisions panel from this behavior, * as it should close when the editorCanvasContainerView doesn't correspond. */ if (path !== '/' && !isRevisionsOpen) { return; } goTo('/'); break; } }, [editorCanvasContainerView, isRevisionsOpen, goTo]); } function GlobalStylesUI() { const blocks = (0,external_wp_blocks_namespaceObject.getBlockTypes)(); const editorCanvasContainerView = (0,external_wp_data_namespaceObject.useSelect)(select => lock_unlock_unlock(select(store)).getEditorCanvasContainerView(), []); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalNavigatorProvider, { className: "edit-site-global-styles-sidebar__navigator-provider", initialPath: "/", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, { path: "/", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_root, {}) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, { path: "/variations", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_style_variations, {}) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, { path: "/blocks", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_block_list, {}) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, { path: "/typography", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_typography, {}) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, { path: "/typography/text", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_typography_element, { element: "text" }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, { path: "/typography/link", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_typography_element, { element: "link" }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, { path: "/typography/heading", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_typography_element, { element: "heading" }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, { path: "/typography/caption", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_typography_element, { element: "caption" }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, { path: "/typography/button", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_typography_element, { element: "button" }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, { path: "/colors", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_colors, {}) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, { path: "/shadows", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ScreenShadows, {}) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, { path: "/shadows/edit/:category/:slug", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ScreenShadowsEdit, {}) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, { path: "/layout", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_layout, {}) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, { path: "/css", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_css, {}) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, { path: "/revisions", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_revisions, {}) }), blocks.map(block => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesNavigationScreen, { path: '/blocks/' + encodeURIComponent(block.name), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(screen_block, { name: block.name }) }, 'menu-block-' + block.name)), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ContextScreens, {}), blocks.map(block => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ContextScreens, { name: block.name, parentMenu: '/blocks/' + encodeURIComponent(block.name) }, 'screens-block-' + block.name)), 'style-book' === editorCanvasContainerView && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesStyleBook, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesActionMenu, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesBlockLink, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesEditorCanvasContainerLink, {})] }); } /* harmony default export */ const ui = (GlobalStylesUI); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles/index.js ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles-sidebar/default-sidebar.js /** * WordPress dependencies */ /** * Internal dependencies */ const { ComplementaryArea, ComplementaryAreaMoreMenuItem } = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis); function DefaultSidebar({ className, identifier, title, icon, children, closeLabel, header, headerClassName, panelClassName, isActiveByDefault }) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ComplementaryArea, { className: className, scope: "core", identifier: identifier, title: title, smallScreenTitle: title, icon: icon, closeLabel: closeLabel, header: header, headerClassName: headerClassName, panelClassName: panelClassName, isActiveByDefault: isActiveByDefault, children: children }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ComplementaryAreaMoreMenuItem, { scope: "core", identifier: identifier, icon: icon, children: title })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/global-styles-sidebar/index.js /** * WordPress dependencies */ /** * Internal dependencies */ const { interfaceStore: global_styles_sidebar_interfaceStore } = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis); function GlobalStylesSidebar() { const { shouldClearCanvasContainerView, isStyleBookOpened, showListViewByDefault, hasRevisions, isRevisionsOpened, isRevisionsStyleBookOpened } = (0,external_wp_data_namespaceObject.useSelect)(select => { const { getActiveComplementaryArea } = select(global_styles_sidebar_interfaceStore); const { getEditorCanvasContainerView, getCanvasMode } = lock_unlock_unlock(select(store)); const canvasContainerView = getEditorCanvasContainerView(); const _isVisualEditorMode = 'visual' === select(external_wp_editor_namespaceObject.store).getEditorMode(); const _isEditCanvasMode = 'edit' === getCanvasMode(); const _showListViewByDefault = select(external_wp_preferences_namespaceObject.store).get('core', 'showListViewByDefault'); const { getEntityRecord, __experimentalGetCurrentGlobalStylesId } = select(external_wp_coreData_namespaceObject.store); const globalStylesId = __experimentalGetCurrentGlobalStylesId(); const globalStyles = globalStylesId ? getEntityRecord('root', 'globalStyles', globalStylesId) : undefined; return { isStyleBookOpened: 'style-book' === canvasContainerView, shouldClearCanvasContainerView: 'edit-site/global-styles' !== getActiveComplementaryArea('core') || !_isVisualEditorMode || !_isEditCanvasMode, showListViewByDefault: _showListViewByDefault, hasRevisions: !!globalStyles?._links?.['version-history']?.[0]?.count, isRevisionsStyleBookOpened: 'global-styles-revisions:style-book' === canvasContainerView, isRevisionsOpened: 'global-styles-revisions' === canvasContainerView }; }, []); const { setEditorCanvasContainerView } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store)); (0,external_wp_element_namespaceObject.useEffect)(() => { if (shouldClearCanvasContainerView) { setEditorCanvasContainerView(undefined); } }, [shouldClearCanvasContainerView]); const { setIsListViewOpened } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_editor_namespaceObject.store); const { goTo } = (0,external_wp_components_namespaceObject.__experimentalUseNavigator)(); const toggleRevisions = () => { setIsListViewOpened(false); if (isRevisionsStyleBookOpened) { goTo('/'); setEditorCanvasContainerView('style-book'); return; } if (isRevisionsOpened) { goTo('/'); setEditorCanvasContainerView(undefined); return; } goTo('/revisions'); if (isStyleBookOpened) { setEditorCanvasContainerView('global-styles-revisions:style-book'); } else { setEditorCanvasContainerView('global-styles-revisions'); } }; const toggleStyleBook = () => { if (isRevisionsOpened) { setEditorCanvasContainerView('global-styles-revisions:style-book'); return; } if (isRevisionsStyleBookOpened) { setEditorCanvasContainerView('global-styles-revisions'); return; } setIsListViewOpened(isStyleBookOpened && showListViewByDefault); setEditorCanvasContainerView(isStyleBookOpened ? undefined : 'style-book'); }; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DefaultSidebar, { className: "edit-site-global-styles-sidebar", identifier: "edit-site/global-styles", title: (0,external_wp_i18n_namespaceObject.__)('Styles'), icon: library_styles, closeLabel: (0,external_wp_i18n_namespaceObject.__)('Close Styles'), panelClassName: "edit-site-global-styles-sidebar__panel", header: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Flex, { className: "edit-site-global-styles-sidebar__header", gap: 1, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexBlock, { style: { minWidth: 'min-content' }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("h2", { className: "edit-site-global-styles-sidebar__header-title", children: (0,external_wp_i18n_namespaceObject.__)('Styles') }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { icon: library_seen, label: (0,external_wp_i18n_namespaceObject.__)('Style Book'), isPressed: isStyleBookOpened || isRevisionsStyleBookOpened, __experimentalIsFocusable: true, disabled: shouldClearCanvasContainerView, onClick: toggleStyleBook, size: "compact" }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { label: (0,external_wp_i18n_namespaceObject.__)('Revisions'), icon: library_backup, onClick: toggleRevisions, __experimentalIsFocusable: true, disabled: !hasRevisions, isPressed: isRevisionsOpened || isRevisionsStyleBookOpened, size: "compact" }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesMenuSlot, {})] }), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ui, {}) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/save-button/index.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useLocation: save_button_useLocation } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); function SaveButton({ className = 'edit-site-save-button__button', variant = 'primary', showTooltip = true, showReviewMessage, icon, size, __next40pxDefaultSize = false }) { const { params } = save_button_useLocation(); const { setIsSaveViewOpened } = (0,external_wp_data_namespaceObject.useDispatch)(store); const { saveDirtyEntities } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(external_wp_editor_namespaceObject.store)); const { dirtyEntityRecords } = (0,external_wp_editor_namespaceObject.useEntitiesSavedStatesIsDirty)(); const { isSaving, isSaveViewOpen, previewingThemeName } = (0,external_wp_data_namespaceObject.useSelect)(select => { const { isSavingEntityRecord, isResolving } = select(external_wp_coreData_namespaceObject.store); const { isSaveViewOpened } = select(store); const isActivatingTheme = isResolving('activateTheme'); const currentlyPreviewingThemeId = currentlyPreviewingTheme(); return { isSaving: dirtyEntityRecords.some(record => isSavingEntityRecord(record.kind, record.name, record.key)) || isActivatingTheme, isSaveViewOpen: isSaveViewOpened(), // Do not call `getTheme` with null, it will cause a request to // the server. previewingThemeName: currentlyPreviewingThemeId ? select(external_wp_coreData_namespaceObject.store).getTheme(currentlyPreviewingThemeId)?.name?.rendered : undefined }; }, [dirtyEntityRecords]); const hasDirtyEntities = !!dirtyEntityRecords.length; let isOnlyCurrentEntityDirty; // Check if the current entity is the only entity with changes. // We have some extra logic for `wp_global_styles` for now, that // is used in navigation sidebar. if (dirtyEntityRecords.length === 1) { if (params.postId) { isOnlyCurrentEntityDirty = `${dirtyEntityRecords[0].key}` === params.postId && dirtyEntityRecords[0].name === params.postType; } else if (params.path?.includes('wp_global_styles')) { isOnlyCurrentEntityDirty = dirtyEntityRecords[0].name === 'globalStyles'; } } const disabled = isSaving || !hasDirtyEntities && !isPreviewingTheme(); const getLabel = () => { if (isPreviewingTheme()) { if (isSaving) { return (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: The name of theme to be activated. */ (0,external_wp_i18n_namespaceObject.__)('Activating %s'), previewingThemeName); } else if (disabled) { return (0,external_wp_i18n_namespaceObject.__)('Saved'); } else if (hasDirtyEntities) { return (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: The name of theme to be activated. */ (0,external_wp_i18n_namespaceObject.__)('Activate %s & Save'), previewingThemeName); } return (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: The name of theme to be activated. */ (0,external_wp_i18n_namespaceObject.__)('Activate %s'), previewingThemeName); } if (isSaving) { return (0,external_wp_i18n_namespaceObject.__)('Saving'); } if (disabled) { return (0,external_wp_i18n_namespaceObject.__)('Saved'); } if (!isOnlyCurrentEntityDirty && showReviewMessage) { return (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %d: number of unsaved changes (number). (0,external_wp_i18n_namespaceObject._n)('Review %d change…', 'Review %d changes…', dirtyEntityRecords.length), dirtyEntityRecords.length); } return (0,external_wp_i18n_namespaceObject.__)('Save'); }; const label = getLabel(); const onClick = isOnlyCurrentEntityDirty ? () => saveDirtyEntities({ dirtyEntityRecords }) : () => setIsSaveViewOpened(true); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { variant: variant, className: className, "aria-disabled": disabled, "aria-expanded": isSaveViewOpen, isBusy: isSaving, onClick: disabled ? undefined : onClick, label: label /* * We want the tooltip to show the keyboard shortcut only when the * button does something, i.e. when it's not disabled. */, shortcut: disabled ? undefined : external_wp_keycodes_namespaceObject.displayShortcut.primary('s') /* * Displaying the keyboard shortcut conditionally makes the tooltip * itself show conditionally. This would trigger a full-rerendering * of the button that we want to avoid. By setting `showTooltip`, * the tooltip is always rendered even when there's no keyboard shortcut. */, showTooltip: showTooltip, icon: icon, __next40pxDefaultSize: __next40pxDefaultSize, size: size, children: label }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/use-activate-theme.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useHistory: use_activate_theme_useHistory } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); /** * This should be refactored to use the REST API, once the REST API can activate themes. * * @return {Function} A function that activates the theme. */ function useActivateTheme() { const history = use_activate_theme_useHistory(); const { startResolution, finishResolution } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store); return async () => { if (isPreviewingTheme()) { const activationURL = 'themes.php?action=activate&stylesheet=' + currentlyPreviewingTheme() + '&_wpnonce=' + window.WP_BLOCK_THEME_ACTIVATE_NONCE; startResolution('activateTheme'); await window.fetch(activationURL); finishResolution('activateTheme'); // Remove the wp_theme_preview query param: we've finished activating // the queue and are switching to normal Site Editor. const { params } = history.getLocationWithParams(); history.replace({ ...params, wp_theme_preview: undefined }); } }; } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/utils/use-actual-current-theme.js /** * WordPress dependencies */ const ACTIVE_THEMES_URL = '/wp/v2/themes?status=active'; function useActualCurrentTheme() { const [currentTheme, setCurrentTheme] = (0,external_wp_element_namespaceObject.useState)(); (0,external_wp_element_namespaceObject.useEffect)(() => { // Set the `wp_theme_preview` to empty string to bypass the createThemePreviewMiddleware. const path = (0,external_wp_url_namespaceObject.addQueryArgs)(ACTIVE_THEMES_URL, { context: 'edit', wp_theme_preview: '' }); external_wp_apiFetch_default()({ path }).then(activeThemes => setCurrentTheme(activeThemes[0])) // Do nothing .catch(() => {}); }, []); return currentTheme; } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/save-panel/index.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ const { EntitiesSavedStatesExtensible, NavigableRegion } = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis); const EntitiesSavedStatesForPreview = ({ onClose }) => { var _currentTheme$name$re, _previewingTheme$name; const isDirtyProps = (0,external_wp_editor_namespaceObject.useEntitiesSavedStatesIsDirty)(); let activateSaveLabel; if (isDirtyProps.isDirty) { activateSaveLabel = (0,external_wp_i18n_namespaceObject.__)('Activate & Save'); } else { activateSaveLabel = (0,external_wp_i18n_namespaceObject.__)('Activate'); } const currentTheme = useActualCurrentTheme(); const previewingTheme = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getCurrentTheme(), []); const additionalPrompt = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { children: (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %1$s: The name of active theme, %2$s: The name of theme to be activated. */ (0,external_wp_i18n_namespaceObject.__)('Saving your changes will change your active theme from %1$s to %2$s.'), (_currentTheme$name$re = currentTheme?.name?.rendered) !== null && _currentTheme$name$re !== void 0 ? _currentTheme$name$re : '...', (_previewingTheme$name = previewingTheme?.name?.rendered) !== null && _previewingTheme$name !== void 0 ? _previewingTheme$name : '...') }); const activateTheme = useActivateTheme(); const onSave = async values => { await activateTheme(); return values; }; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EntitiesSavedStatesExtensible, { ...isDirtyProps, additionalPrompt, close: onClose, onSave, saveEnabled: true, saveLabel: activateSaveLabel }); }; const _EntitiesSavedStates = ({ onClose, renderDialog = undefined }) => { if (isPreviewingTheme()) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(EntitiesSavedStatesForPreview, { onClose: onClose }); } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.EntitiesSavedStates, { close: onClose, renderDialog: renderDialog }); }; function SavePanel() { const { isSaveViewOpen, canvasMode, isDirty, isSaving } = (0,external_wp_data_namespaceObject.useSelect)(select => { const { __experimentalGetDirtyEntityRecords, isSavingEntityRecord, isResolving } = select(external_wp_coreData_namespaceObject.store); const dirtyEntityRecords = __experimentalGetDirtyEntityRecords(); const isActivatingTheme = isResolving('activateTheme'); const { isSaveViewOpened, getCanvasMode } = lock_unlock_unlock(select(store)); // The currently selected entity to display. // Typically template or template part in the site editor. return { isSaveViewOpen: isSaveViewOpened(), canvasMode: getCanvasMode(), isDirty: dirtyEntityRecords.length > 0, isSaving: dirtyEntityRecords.some(record => isSavingEntityRecord(record.kind, record.name, record.key)) || isActivatingTheme }; }, []); const { setIsSaveViewOpened } = (0,external_wp_data_namespaceObject.useDispatch)(store); const onClose = () => setIsSaveViewOpened(false); if (canvasMode === 'view') { return isSaveViewOpen ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, { className: "edit-site-save-panel__modal", onRequestClose: onClose, __experimentalHideHeader: true, contentLabel: (0,external_wp_i18n_namespaceObject.__)('Save site, content, and template changes'), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(_EntitiesSavedStates, { onClose: onClose }) }) : null; } const activateSaveEnabled = isPreviewingTheme() || isDirty; const disabled = isSaving || !activateSaveEnabled; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(NavigableRegion, { className: dist_clsx('edit-site-layout__actions', { 'is-entity-save-view-open': isSaveViewOpen }), ariaLabel: (0,external_wp_i18n_namespaceObject.__)('Save panel'), children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: dist_clsx('edit-site-editor__toggle-save-panel', { 'screen-reader-text': isSaveViewOpen }), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { variant: "secondary", className: "edit-site-editor__toggle-save-panel-button", onClick: () => setIsSaveViewOpened(true), "aria-haspopup": "dialog", disabled: disabled, __experimentalIsFocusable: true, children: (0,external_wp_i18n_namespaceObject.__)('Open save panel') }) }), isSaveViewOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(_EntitiesSavedStates, { onClose: onClose, renderDialog: true })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/download.js /** * WordPress dependencies */ const download = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.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" }) }); /* harmony default export */ const library_download = (download); ;// CONCATENATED MODULE: external ["wp","blob"] const external_wp_blob_namespaceObject = window["wp"]["blob"]; ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/more-menu/site-export.js /** * WordPress dependencies */ function SiteExport() { const { createErrorNotice } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); async function handleExport() { try { const response = await external_wp_apiFetch_default()({ path: '/wp-block-editor/v1/export', parse: false, headers: { Accept: 'application/zip' } }); const blob = await response.blob(); const contentDisposition = response.headers.get('content-disposition'); const contentDispositionMatches = contentDisposition.match(/=(.+)\.zip/); const fileName = contentDispositionMatches[1] ? contentDispositionMatches[1] : 'edit-site-export'; (0,external_wp_blob_namespaceObject.downloadBlob)(fileName + '.zip', blob, 'application/zip'); } catch (errorResponse) { let error = {}; try { error = await errorResponse.json(); } catch (e) {} const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : (0,external_wp_i18n_namespaceObject.__)('An error occurred while creating the site export.'); createErrorNotice(errorMessage, { type: 'snackbar' }); } } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { role: "menuitem", icon: library_download, onClick: handleExport, info: (0,external_wp_i18n_namespaceObject.__)('Download your theme with updated templates and styles.'), children: (0,external_wp_i18n_namespaceObject._x)('Export', 'site exporter menu item') }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/more-menu/welcome-guide-menu-item.js /** * WordPress dependencies */ function WelcomeGuideMenuItem() { const { toggle } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_preferences_namespaceObject.store); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.MenuItem, { onClick: () => toggle('core/edit-site', 'welcomeGuide'), children: (0,external_wp_i18n_namespaceObject.__)('Welcome Guide') }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/more-menu/index.js /** * WordPress dependencies */ /** * Internal dependencies */ const { ToolsMoreMenuGroup, PreferencesModal } = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis); function MoreMenu() { const isBlockBasedTheme = (0,external_wp_data_namespaceObject.useSelect)(select => { return select(external_wp_coreData_namespaceObject.store).getCurrentTheme().is_block_theme; }, []); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(ToolsMoreMenuGroup, { children: [isBlockBasedTheme && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SiteExport, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuideMenuItem, {})] }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PreferencesModal, {})] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/block-editor/use-editor-iframe-props.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ function useEditorIframeProps() { const { canvasMode, currentPostIsTrashed } = (0,external_wp_data_namespaceObject.useSelect)(select => { const { getCanvasMode } = lock_unlock_unlock(select(store)); return { canvasMode: getCanvasMode(), currentPostIsTrashed: select(external_wp_editor_namespaceObject.store).getCurrentPostAttribute('status') === 'trash' }; }, []); const { setCanvasMode } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store)); const [isFocused, setIsFocused] = (0,external_wp_element_namespaceObject.useState)(false); (0,external_wp_element_namespaceObject.useEffect)(() => { if (canvasMode === 'edit') { setIsFocused(false); } }, [canvasMode]); // In view mode, make the canvas iframe be perceived and behave as a button // to switch to edit mode, with a meaningful label and no title attribute. const viewModeIframeProps = { 'aria-label': (0,external_wp_i18n_namespaceObject.__)('Edit'), 'aria-disabled': currentPostIsTrashed, title: null, role: 'button', tabIndex: 0, onFocus: () => setIsFocused(true), onBlur: () => setIsFocused(false), onKeyDown: event => { const { keyCode } = event; if ((keyCode === external_wp_keycodes_namespaceObject.ENTER || keyCode === external_wp_keycodes_namespaceObject.SPACE) && !currentPostIsTrashed) { event.preventDefault(); setCanvasMode('edit'); } }, onClick: () => { setCanvasMode('edit'); }, onClickCapture: event => { if (currentPostIsTrashed) { event.preventDefault(); event.stopPropagation(); } }, readonly: true }; return { className: dist_clsx('edit-site-visual-editor__editor-canvas', { 'is-focused': isFocused && canvasMode === 'view' }), ...(canvasMode === 'view' ? viewModeIframeProps : {}) }; } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/routes/use-title.js /** * WordPress dependencies */ /** * Internal dependencies */ const { useLocation: use_title_useLocation } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); function useTitle(title) { const location = use_title_useLocation(); const siteTitle = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getEntityRecord('root', 'site')?.title, []); const isInitialLocationRef = (0,external_wp_element_namespaceObject.useRef)(true); (0,external_wp_element_namespaceObject.useEffect)(() => { isInitialLocationRef.current = false; }, [location]); (0,external_wp_element_namespaceObject.useEffect)(() => { // Don't update or announce the title for initial page load. if (isInitialLocationRef.current) { return; } if (title && siteTitle) { // @see https://github.com/WordPress/wordpress-develop/blob/94849898192d271d533e09756007e176feb80697/src/wp-admin/admin-header.php#L67-L68 const formattedTitle = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: Admin document title. 1: Admin screen name, 2: Network or site name. */ (0,external_wp_i18n_namespaceObject.__)('%1$s ‹ %2$s ‹ Editor — WordPress'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(title), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(siteTitle)); document.title = formattedTitle; // Announce title on route change for screen readers. (0,external_wp_a11y_namespaceObject.speak)(title, 'assertive'); } }, [title, siteTitle, location]); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/editor/use-editor-title.js /** * WordPress dependencies */ /** * Internal dependencies */ function useEditorTitle() { const { record: editedPost, getTitle, isLoaded: hasLoadedPost } = useEditedEntityRecord(); let title; if (hasLoadedPost) { var _POST_TYPE_LABELS$edi; title = (0,external_wp_i18n_namespaceObject.sprintf)( // translators: A breadcrumb trail for the Admin document title. %1$s: title of template being edited, %2$s: type of template (Template or Template Part). (0,external_wp_i18n_namespaceObject.__)('%1$s ‹ %2$s'), getTitle(), (_POST_TYPE_LABELS$edi = POST_TYPE_LABELS[editedPost.type]) !== null && _POST_TYPE_LABELS$edi !== void 0 ? _POST_TYPE_LABELS$edi : POST_TYPE_LABELS[TEMPLATE_POST_TYPE]); } // Only announce the title once the editor is ready to prevent "Replace" // action in <URLQueryController> from double-announcing. useTitle(hasLoadedPost && title); } /* harmony default export */ const use_editor_title = (useEditorTitle); ;// CONCATENATED MODULE: ./node_modules/@wordpress/edit-site/build-module/components/editor/index.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ const { Editor, BackButton } = lock_unlock_unlock(external_wp_editor_namespaceObject.privateApis); const { useHistory: editor_useHistory } = lock_unlock_unlock(external_wp_router_namespaceObject.privateApis); const { BlockKeyboardShortcuts } = lock_unlock_unlock(external_wp_blockLibrary_namespaceObject.privateApis); function EditSiteEditor({ isLoading }) { const { editedPostType, editedPostId, contextPostType, contextPostId, editorMode, canvasMode, isEditingPage, supportsGlobalStyles, showIconLabels, editorCanvasView, currentPostIsTrashed } = (0,external_wp_data_namespaceObject.useSelect)(select => { const { getEditedPostContext, getCanvasMode, isPage, getEditedPostType, getEditedPostId } = lock_unlock_unlock(select(store)); const { get } = select(external_wp_preferences_namespaceObject.store); const { getCurrentTheme } = select(external_wp_coreData_namespaceObject.store); const { getEditorMode } = select(external_wp_editor_namespaceObject.store); const _context = getEditedPostContext(); // The currently selected entity to display. // Typically template or template part in the site editor. return { editedPostType: getEditedPostType(), editedPostId: getEditedPostId(), contextPostType: _context?.postId ? _context.postType : undefined, contextPostId: _context?.postId ? _context.postId : undefined, editorMode: getEditorMode(), canvasMode: getCanvasMode(), isEditingPage: isPage(), supportsGlobalStyles: getCurrentTheme()?.is_block_theme, showIconLabels: get('core', 'showIconLabels'), editorCanvasView: lock_unlock_unlock(select(store)).getEditorCanvasContainerView(), currentPostIsTrashed: select(external_wp_editor_namespaceObject.store).getCurrentPostAttribute('status') === 'trash' }; }, []); use_editor_title(); const _isPreviewingTheme = isPreviewingTheme(); const hasDefaultEditorCanvasView = !useHasEditorCanvasContainer(); const iframeProps = useEditorIframeProps(); const isViewMode = canvasMode === 'view'; const isEditMode = canvasMode === 'edit'; const showVisualEditor = isViewMode || editorMode === 'visual'; const postWithTemplate = !!contextPostId; const loadingProgressId = (0,external_wp_compose_namespaceObject.useInstanceId)(CanvasLoader, 'edit-site-editor__loading-progress'); const settings = useSpecificEditorSettings(); const styles = (0,external_wp_element_namespaceObject.useMemo)(() => [...settings.styles, { // Forming a "block formatting context" to prevent margin collapsing. // @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context css: `body{${canvasMode === 'view' ? `min-height: 100vh; ${currentPostIsTrashed ? '' : 'cursor: pointer;'}` : ''}}}` }], [settings.styles, canvasMode, currentPostIsTrashed]); const { setCanvasMode } = lock_unlock_unlock((0,external_wp_data_namespaceObject.useDispatch)(store)); const { createSuccessNotice } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); const history = editor_useHistory(); const onActionPerformed = (0,external_wp_element_namespaceObject.useCallback)((actionId, items) => { switch (actionId) { case 'move-to-trash': case 'delete-post': { history.push({ postType: items[0].type }); } break; case 'duplicate-post': { const newItem = items[0]; const _title = typeof newItem.title === 'string' ? newItem.title : newItem.title?.rendered; createSuccessNotice((0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: Title of the created post e.g: "Post 1". (0,external_wp_i18n_namespaceObject.__)('"%s" successfully created.'), (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(_title)), { type: 'snackbar', id: 'duplicate-post-action', actions: [{ label: (0,external_wp_i18n_namespaceObject.__)('Edit'), onClick: () => { history.push({ postId: newItem.id, postType: newItem.type, canvas: 'edit' }); } }] }); } break; } }, [history, createSuccessNotice]); const isReady = !isLoading; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesRenderer, {}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_editor_namespaceObject.EditorKeyboardShortcutsRegister, {}), isEditMode && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BlockKeyboardShortcuts, {}), showVisualEditor && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TemplatePartConverter, {}), !isReady ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CanvasLoader, { id: loadingProgressId }) : null, isEditMode && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(WelcomeGuide, {}), isReady && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(Editor, { postType: postWithTemplate ? contextPostType : editedPostType, postId: postWithTemplate ? contextPostId : editedPostId, templateId: postWithTemplate ? editedPostId : undefined, settings: settings, className: dist_clsx('edit-site-editor__editor-interface', { 'show-icon-labels': showIconLabels }), styles: styles, enableRegionNavigation: false, customSaveButton: _isPreviewingTheme && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SaveButton, { size: "compact" }), customSavePanel: _isPreviewingTheme && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SavePanel, {}), forceDisableBlockTools: !hasDefaultEditorCanvasView, title: !hasDefaultEditorCanvasView ? getEditorCanvasContainerTitle(editorCanvasView) : undefined, iframeProps: iframeProps, onActionPerformed: onActionPerformed, extraSidebarPanels: !isEditingPage && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(plugin_template_setting_panel.Slot, {}), children: [isEditMode && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BackButton, { children: ({ length }) => length <= 1 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { label: (0,external_wp_i18n_namespaceObject.__)('Open Navigation'), className: "edit-site-layout__view-mode-toggle", onClick: () => setCanvasMode('view'), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(site_icon, { className: "edit-site-layout__view-mode-toggle-icon" }) }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(MoreMenu, {}), supportsGlobalStyles && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GlobalStylesSidebar, {})] })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/pagination.js /** * WordPress dependencies */ /** * Internal dependencies */ const pagination_Pagination = (0,external_wp_element_namespaceObject.memo)(function Pagination({ view, onChangeView, paginationInfo: { totalItems = 0, totalPages } }) { var _view$page; if (!totalItems || !totalPages) { return null; } const currentPage = (_view$page = view.page) !== null && _view$page !== void 0 ? _view$page : 1; return !!totalItems && totalPages !== 1 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { expanded: false, spacing: 6, justify: "end", className: "dataviews-pagination", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, { justify: "flex-start", expanded: false, spacing: 2, className: "dataviews-pagination__page-selection", children: (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: Total number of pages. (0,external_wp_i18n_namespaceObject._x)('Page <CurrentPageControl /> of %s', 'paging'), totalPages), { CurrentPageControl: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.SelectControl, { "aria-label": (0,external_wp_i18n_namespaceObject.__)('Current page'), value: view.page?.toString(), options: Array.from(Array(totalPages)).map((_, i) => { const page = i + 1; return { value: page.toString(), label: page.toString() }; }), onChange: newValue => { onChangeView({ ...view, page: +newValue }); }, size: "compact", __nextHasNoMarginBottom: true }) }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { expanded: false, spacing: 1, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { onClick: () => onChangeView({ ...view, page: currentPage - 1 }), disabled: currentPage === 1, __experimentalIsFocusable: true, label: (0,external_wp_i18n_namespaceObject.__)('Previous page'), icon: chevron_left, showTooltip: true, size: "compact", tooltipPosition: "top" }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { onClick: () => onChangeView({ ...view, page: currentPage + 1 }), disabled: currentPage >= totalPages, __experimentalIsFocusable: true, label: (0,external_wp_i18n_namespaceObject.__)('Next page'), icon: chevron_right, showTooltip: true, size: "compact", tooltipPosition: "top" })] })] }); }); /* harmony default export */ const pagination = (pagination_Pagination); ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/lock-unlock.js /** * WordPress dependencies */ const { lock: lock_unlock_lock, unlock: build_module_lock_unlock_unlock } = (0,external_wp_privateApis_namespaceObject.__dangerousOptInToUnstableAPIsOnlyForCoreModules)('I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.', '@wordpress/dataviews'); ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/constants.js /** * WordPress dependencies */ /** * Internal dependencies */ // Filter operators. const constants_OPERATOR_IS = 'is'; const constants_OPERATOR_IS_NOT = 'isNot'; const constants_OPERATOR_IS_ANY = 'isAny'; const constants_OPERATOR_IS_NONE = 'isNone'; const OPERATOR_IS_ALL = 'isAll'; const OPERATOR_IS_NOT_ALL = 'isNotAll'; const ALL_OPERATORS = [constants_OPERATOR_IS, constants_OPERATOR_IS_NOT, constants_OPERATOR_IS_ANY, constants_OPERATOR_IS_NONE, OPERATOR_IS_ALL, OPERATOR_IS_NOT_ALL]; const OPERATORS = { [constants_OPERATOR_IS]: { key: 'is-filter', label: (0,external_wp_i18n_namespaceObject.__)('Is') }, [constants_OPERATOR_IS_NOT]: { key: 'is-not-filter', label: (0,external_wp_i18n_namespaceObject.__)('Is not') }, [constants_OPERATOR_IS_ANY]: { key: 'is-any-filter', label: (0,external_wp_i18n_namespaceObject.__)('Is any') }, [constants_OPERATOR_IS_NONE]: { key: 'is-none-filter', label: (0,external_wp_i18n_namespaceObject.__)('Is none') }, [OPERATOR_IS_ALL]: { key: 'is-all-filter', label: (0,external_wp_i18n_namespaceObject.__)('Is all') }, [OPERATOR_IS_NOT_ALL]: { key: 'is-not-all-filter', label: (0,external_wp_i18n_namespaceObject.__)('Is not all') } }; const SORTING_DIRECTIONS = ['asc', 'desc']; const sortArrows = { asc: '↑', desc: '↓' }; const sortValues = { asc: 'ascending', desc: 'descending' }; const sortLabels = { asc: (0,external_wp_i18n_namespaceObject.__)('Sort ascending'), desc: (0,external_wp_i18n_namespaceObject.__)('Sort descending') }; // View layouts. const constants_LAYOUT_TABLE = 'table'; const constants_LAYOUT_GRID = 'grid'; const constants_LAYOUT_LIST = 'list'; ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/block-table.js /** * WordPress dependencies */ const blockTable = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.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" }) }); /* harmony default export */ const block_table = (blockTable); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/category.js /** * WordPress dependencies */ const category = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z", fillRule: "evenodd", clipRule: "evenodd" }) }); /* harmony default export */ const library_category = (category); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/format-list-bullets-rtl.js /** * WordPress dependencies */ const formatListBulletsRTL = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.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" }) }); /* harmony default export */ const format_list_bullets_rtl = (formatListBulletsRTL); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/format-list-bullets.js /** * WordPress dependencies */ const formatListBullets = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.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" }) }); /* harmony default export */ const format_list_bullets = (formatListBullets); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/funnel.js /** * WordPress dependencies */ const funnel = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z" }) }); /* harmony default export */ const library_funnel = (funnel); ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/unseen.js /** * WordPress dependencies */ const unseen = /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.SVG, { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_primitives_namespaceObject.Path, { d: "M4.67 10.664s-2.09 1.11-2.917 1.582l.494.87 1.608-.914.002.002c.343.502.86 1.17 1.563 1.84.348.33.742.663 1.185.976L5.57 16.744l.858.515 1.02-1.701a9.1 9.1 0 0 0 4.051 1.18V19h1v-2.263a9.1 9.1 0 0 0 4.05-1.18l1.021 1.7.858-.514-1.034-1.723c.442-.313.837-.646 1.184-.977.703-.669 1.22-1.337 1.563-1.839l.002-.003 1.61.914.493-.87c-1.75-.994-2.918-1.58-2.918-1.58l-.003.005a8.29 8.29 0 0 1-.422.689 10.097 10.097 0 0 1-1.36 1.598c-1.218 1.16-3.042 2.293-5.544 2.293-2.503 0-4.327-1.132-5.546-2.293a10.099 10.099 0 0 1-1.359-1.599 8.267 8.267 0 0 1-.422-.689l-.003-.005Z" }) }); /* harmony default export */ const library_unseen = (unseen); ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/single-selection-checkbox.js /** * WordPress dependencies */ /** * Internal dependencies */ function SingleSelectionCheckbox({ selection, onSelectionChange, item, data, getItemId, primaryField, disabled }) { const id = getItemId(item); const isSelected = !disabled && selection.includes(id); let selectionLabel; if (primaryField?.getValue && item) { // eslint-disable-next-line @wordpress/valid-sprintf selectionLabel = (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %s: item title. */ isSelected ? (0,external_wp_i18n_namespaceObject.__)('Deselect item: %s') : (0,external_wp_i18n_namespaceObject.__)('Select item: %s'), primaryField.getValue({ item })); } else { selectionLabel = isSelected ? (0,external_wp_i18n_namespaceObject.__)('Select a new item') : (0,external_wp_i18n_namespaceObject.__)('Deselect item'); } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CheckboxControl, { className: "dataviews-view-table-selection-checkbox", __nextHasNoMarginBottom: true, "aria-label": selectionLabel, "aria-disabled": disabled, checked: isSelected, onChange: () => { if (disabled) { return; } if (!isSelected) { onSelectionChange(data.filter(_item => { const itemId = getItemId?.(_item); return itemId === id || selection.includes(itemId); })); } else { onSelectionChange(data.filter(_item => { const itemId = getItemId?.(_item); return itemId !== id && selection.includes(itemId); })); } } }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/item-actions.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ const { DropdownMenuV2: item_actions_DropdownMenu, DropdownMenuGroupV2: DropdownMenuGroup, DropdownMenuItemV2: item_actions_DropdownMenuItem, DropdownMenuItemLabelV2: item_actions_DropdownMenuItemLabel, kebabCase: item_actions_kebabCase } = build_module_lock_unlock_unlock(external_wp_components_namespaceObject.privateApis); function ButtonTrigger({ action, onClick, items }) { const label = typeof action.label === 'string' ? action.label : action.label(items); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { label: label, icon: action.icon, isDestructive: action.isDestructive, size: "compact", onClick: onClick }); } function DropdownMenuItemTrigger({ action, onClick, items }) { const label = typeof action.label === 'string' ? action.label : action.label(items); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(item_actions_DropdownMenuItem, { onClick: onClick, hideOnClick: !('RenderModal' in action), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(item_actions_DropdownMenuItemLabel, { children: label }) }); } function ActionModal({ action, items, closeModal }) { const label = typeof action.label === 'string' ? action.label : action.label(items); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, { title: action.modalHeader || label, __experimentalHideHeader: !!action.hideModalHeader, onRequestClose: closeModal !== null && closeModal !== void 0 ? closeModal : () => {}, overlayClassName: `dataviews-action-modal dataviews-action-modal__${item_actions_kebabCase(action.id)}`, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(action.RenderModal, { items: items, closeModal: closeModal, onActionStart: action.onActionStart, onActionPerformed: action.onActionPerformed }) }); } function ActionWithModal({ action, items, ActionTrigger, isBusy }) { const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false); const actionTriggerProps = { action, onClick: () => { setIsModalOpen(true); }, items, isBusy }; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionTrigger, { ...actionTriggerProps }), isModalOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionModal, { action: action, items: items, closeModal: () => setIsModalOpen(false) })] }); } function ActionsDropdownMenuGroup({ actions, item }) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DropdownMenuGroup, { children: actions.map(action => { if ('RenderModal' in action) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionWithModal, { action: action, items: [item], ActionTrigger: DropdownMenuItemTrigger }, action.id); } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DropdownMenuItemTrigger, { action: action, onClick: () => action.callback([item]), items: [item] }, action.id); }) }); } function ItemActions({ item, actions, isCompact }) { const { primaryActions, eligibleActions } = (0,external_wp_element_namespaceObject.useMemo)(() => { // If an action is eligible for all items, doesn't need // to provide the `isEligible` function. const _eligibleActions = actions.filter(action => !action.isEligible || action.isEligible(item)); const _primaryActions = _eligibleActions.filter(action => action.isPrimary && !!action.icon); return { primaryActions: _primaryActions, eligibleActions: _eligibleActions }; }, [actions, item]); if (isCompact) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CompactItemActions, { item: item, actions: eligibleActions }); } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { spacing: 1, justify: "flex-end", className: "dataviews-item-actions", style: { flexShrink: '0', width: 'auto' }, children: [!!primaryActions.length && primaryActions.map(action => { if ('RenderModal' in action) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionWithModal, { action: action, items: [item], ActionTrigger: ButtonTrigger }, action.id); } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ButtonTrigger, { action: action, onClick: () => action.callback([item]), items: [item] }, action.id); }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CompactItemActions, { item: item, actions: eligibleActions })] }); } function CompactItemActions({ item, actions }) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(item_actions_DropdownMenu, { trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { size: "compact", icon: more_vertical, label: (0,external_wp_i18n_namespaceObject.__)('Actions'), __experimentalIsFocusable: true, disabled: !actions.length, className: "dataviews-all-actions-button" }), placement: "bottom-end", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionsDropdownMenuGroup, { actions: actions, item: item }) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/utils.js /** * Internal dependencies */ function sanitizeOperators(field) { let operators = field.filterBy?.operators; // Assign default values. if (!operators || !Array.isArray(operators)) { operators = [constants_OPERATOR_IS_ANY, constants_OPERATOR_IS_NONE]; } // Make sure only valid operators are used. operators = operators.filter(operator => ALL_OPERATORS.includes(operator)); // Do not allow mixing single & multiselection operators. // Remove multiselection operators if any of the single selection ones is present. if (operators.includes(constants_OPERATOR_IS) || operators.includes(constants_OPERATOR_IS_NOT)) { operators = operators.filter(operator => [constants_OPERATOR_IS, constants_OPERATOR_IS_NOT].includes(operator)); } return operators; } ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/bulk-actions.js /** * WordPress dependencies */ /** * Internal dependencies */ const { DropdownMenuV2: bulk_actions_DropdownMenu, DropdownMenuGroupV2: bulk_actions_DropdownMenuGroup, DropdownMenuItemV2: bulk_actions_DropdownMenuItem, DropdownMenuSeparatorV2: DropdownMenuSeparator } = build_module_lock_unlock_unlock(external_wp_components_namespaceObject.privateApis); function useHasAPossibleBulkAction(actions, item) { return (0,external_wp_element_namespaceObject.useMemo)(() => { return actions.some(action => { return action.supportsBulk && (!action.isEligible || action.isEligible(item)); }); }, [actions, item]); } function useSomeItemHasAPossibleBulkAction(actions, data) { return (0,external_wp_element_namespaceObject.useMemo)(() => { return data.some(item => { return actions.some(action => { return action.supportsBulk && (!action.isEligible || action.isEligible(item)); }); }); }, [actions, data]); } function bulk_actions_ActionWithModal({ action, selectedItems, setActionWithModal, onMenuOpenChange }) { const eligibleItems = (0,external_wp_element_namespaceObject.useMemo)(() => { return selectedItems.filter(item => !action.isEligible || action.isEligible(item)); }, [action, selectedItems]); const { RenderModal, hideModalHeader } = action; const onCloseModal = (0,external_wp_element_namespaceObject.useCallback)(() => { setActionWithModal(undefined); }, [setActionWithModal]); if (!eligibleItems.length) { return null; } const label = typeof action.label === 'string' ? action.label : action.label(selectedItems); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Modal, { title: !hideModalHeader ? label : undefined, __experimentalHideHeader: !!hideModalHeader, onRequestClose: onCloseModal, overlayClassName: "dataviews-action-modal", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(RenderModal, { items: eligibleItems, closeModal: onCloseModal, onActionPerformed: () => onMenuOpenChange(false) }) }); } function BulkActionItem({ action, selectedItems, setActionWithModal }) { const eligibleItems = (0,external_wp_element_namespaceObject.useMemo)(() => { return selectedItems.filter(item => !action.isEligible || action.isEligible(item)); }, [action, selectedItems]); const shouldShowModal = ('RenderModal' in action); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(bulk_actions_DropdownMenuItem, { disabled: eligibleItems.length === 0, hideOnClick: !shouldShowModal, onClick: async () => { if (shouldShowModal) { setActionWithModal(action); } else { await action.callback(eligibleItems); } }, suffix: eligibleItems.length > 0 ? eligibleItems.length : undefined, children: action.label }, action.id); } function ActionsMenuGroup({ actions, selectedItems, setActionWithModal }) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(bulk_actions_DropdownMenuGroup, { children: actions.map(action => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BulkActionItem, { action: action, selectedItems: selectedItems, setActionWithModal: setActionWithModal }, action.id)) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DropdownMenuSeparator, {})] }); } function BulkActions({ data, actions, selection, onSelectionChange, getItemId }) { const bulkActions = (0,external_wp_element_namespaceObject.useMemo)(() => actions.filter(action => action.supportsBulk), [actions]); const [isMenuOpen, onMenuOpenChange] = (0,external_wp_element_namespaceObject.useState)(false); const [actionWithModal, setActionWithModal] = (0,external_wp_element_namespaceObject.useState)(); const selectableItems = (0,external_wp_element_namespaceObject.useMemo)(() => { return data.filter(item => { return bulkActions.some(action => !action.isEligible || action.isEligible(item)); }); }, [data, bulkActions]); const numberSelectableItems = selectableItems.length; const selectedItems = (0,external_wp_element_namespaceObject.useMemo)(() => { return data.filter(item => selection.includes(getItemId(item)) && selectableItems.includes(item)); }, [selection, data, getItemId, selectableItems]); const areAllSelected = selectedItems.length === numberSelectableItems; if (bulkActions.length === 0) { return null; } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(bulk_actions_DropdownMenu, { open: isMenuOpen, onOpenChange: onMenuOpenChange, label: (0,external_wp_i18n_namespaceObject.__)('Bulk actions'), style: { minWidth: '240px' }, trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { className: "dataviews-bulk-edit-button", __next40pxDefaultSize: true, variant: "tertiary", size: "compact", children: selectedItems.length ? (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %d: Number of items. */ (0,external_wp_i18n_namespaceObject._n)('Edit %d item', 'Edit %d items', selectedItems.length), selectedItems.length) : (0,external_wp_i18n_namespaceObject.__)('Bulk edit') }), children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionsMenuGroup, { actions: bulkActions, setActionWithModal: setActionWithModal, selectedItems: selectedItems }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(bulk_actions_DropdownMenuGroup, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(bulk_actions_DropdownMenuItem, { disabled: areAllSelected, hideOnClick: false, onClick: () => { onSelectionChange(selectableItems); }, suffix: numberSelectableItems, children: (0,external_wp_i18n_namespaceObject.__)('Select all') }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(bulk_actions_DropdownMenuItem, { disabled: selection.length === 0, hideOnClick: false, onClick: () => { onSelectionChange([]); }, children: (0,external_wp_i18n_namespaceObject.__)('Deselect') })] })] }), actionWithModal && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(bulk_actions_ActionWithModal, { action: actionWithModal, selectedItems: selectedItems, setActionWithModal: setActionWithModal, onMenuOpenChange: onMenuOpenChange })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/view-table.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ const { DropdownMenuV2: view_table_DropdownMenu, DropdownMenuGroupV2: view_table_DropdownMenuGroup, DropdownMenuItemV2: view_table_DropdownMenuItem, DropdownMenuRadioItemV2: DropdownMenuRadioItem, DropdownMenuItemLabelV2: view_table_DropdownMenuItemLabel, DropdownMenuSeparatorV2: view_table_DropdownMenuSeparator } = build_module_lock_unlock_unlock(external_wp_components_namespaceObject.privateApis); function WithDropDownMenuSeparators({ children }) { return external_wp_element_namespaceObject.Children.toArray(children).filter(Boolean).map((child, i) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_element_namespaceObject.Fragment, { children: [i > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_table_DropdownMenuSeparator, {}), child] }, i)); } const _HeaderMenu = (0,external_wp_element_namespaceObject.forwardRef)(function HeaderMenu({ field, view, onChangeView, onHide, setOpenedFilter }, ref) { const isHidable = field.enableHiding !== false; const isSortable = field.enableSorting !== false; const isSorted = view.sort?.field === field.id; const operators = sanitizeOperators(field); // Filter can be added: // 1. If the field is not already part of a view's filters. // 2. If the field meets the type and operator requirements. // 3. If it's not primary. If it is, it should be already visible. const canAddFilter = !view.filters?.some(_filter => field.id === _filter.field) && !!field.elements?.length && !!operators.length && !field.filterBy?.isPrimary; if (!isSortable && !isHidable && !canAddFilter) { return field.header; } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_table_DropdownMenu, { align: "start", trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.Button, { size: "compact", className: "dataviews-view-table-header-button", ref: ref, variant: "tertiary", children: [field.header, view.sort && isSorted && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { "aria-hidden": "true", children: sortArrows[view.sort.direction] })] }), style: { minWidth: '240px' }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(WithDropDownMenuSeparators, { children: [isSortable && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_table_DropdownMenuGroup, { children: SORTING_DIRECTIONS.map(direction => { const isChecked = view.sort && isSorted && view.sort.direction === direction; const value = `${field.id}-${direction}`; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DropdownMenuRadioItem, { // All sorting radio items share the same name, so that // selecting a sorting option automatically deselects the // previously selected one, even if it is displayed in // another submenu. The field and direction are passed via // the `value` prop. name: "view-table-sorting", value: value, checked: isChecked, onChange: () => { onChangeView({ ...view, sort: { field: field.id, direction } }); }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_table_DropdownMenuItemLabel, { children: sortLabels[direction] }) }, value); }) }), canAddFilter && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_table_DropdownMenuGroup, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_table_DropdownMenuItem, { prefix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, { icon: library_funnel }), onClick: () => { setOpenedFilter(field.id); onChangeView({ ...view, page: 1, filters: [...(view.filters || []), { field: field.id, value: undefined, operator: operators[0] }] }); }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_table_DropdownMenuItemLabel, { children: (0,external_wp_i18n_namespaceObject.__)('Add filter') }) }) }), isHidable && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_table_DropdownMenuItem, { prefix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Icon, { icon: library_unseen }), onClick: () => { onHide(field); onChangeView({ ...view, hiddenFields: view.hiddenFields.concat(field.id) }); }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_table_DropdownMenuItemLabel, { children: (0,external_wp_i18n_namespaceObject.__)('Hide') }) })] }) }); }); // @ts-expect-error Lift the `Item` type argument through the forwardRef. const HeaderMenu = _HeaderMenu; function BulkSelectionCheckbox({ selection, onSelectionChange, data, actions, getItemId }) { const selectableItems = (0,external_wp_element_namespaceObject.useMemo)(() => { return data.filter(item => { return actions.some(action => action.supportsBulk && (!action.isEligible || action.isEligible(item))); }); }, [data, actions]); const selectedItems = data.filter(item => selection.includes(getItemId(item)) && selectableItems.includes(item)); const areAllSelected = selectedItems.length === selectableItems.length; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.CheckboxControl, { className: "dataviews-view-table-selection-checkbox", __nextHasNoMarginBottom: true, checked: areAllSelected, indeterminate: !areAllSelected && !!selectedItems.length, onChange: () => { if (areAllSelected) { onSelectionChange([]); } else { onSelectionChange(selectableItems); } }, "aria-label": areAllSelected ? (0,external_wp_i18n_namespaceObject.__)('Deselect all') : (0,external_wp_i18n_namespaceObject.__)('Select all') }); } function TableRow({ hasBulkActions, item, actions, id, visibleFields, primaryField, selection, getItemId, onSelectionChange, data }) { const hasPossibleBulkAction = useHasAPossibleBulkAction(actions, item); const isSelected = hasPossibleBulkAction && selection.includes(id); const [isHovered, setIsHovered] = (0,external_wp_element_namespaceObject.useState)(false); const handleMouseEnter = () => { setIsHovered(true); }; const handleMouseLeave = () => { setIsHovered(false); }; // Will be set to true if `onTouchStart` fires. This happens before // `onClick` and can be used to exclude touchscreen devices from certain // behaviours. const isTouchDevice = (0,external_wp_element_namespaceObject.useRef)(false); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("tr", { className: dist_clsx('dataviews-view-table__row', { 'is-selected': hasPossibleBulkAction && isSelected, 'is-hovered': isHovered, 'has-bulk-actions': hasPossibleBulkAction }), onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onTouchStart: () => { isTouchDevice.current = true; }, onClick: () => { if (!hasPossibleBulkAction) { return; } if (!isTouchDevice.current && document.getSelection()?.type !== 'Range') { if (!isSelected) { onSelectionChange(data.filter(_item => { const itemId = getItemId?.(_item); return itemId === id || selection.includes(itemId); })); } else { onSelectionChange(data.filter(_item => { const itemId = getItemId?.(_item); return itemId !== id && selection.includes(itemId); })); } } }, children: [hasBulkActions && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("td", { className: "dataviews-view-table__checkbox-column", style: { width: '1%' }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "dataviews-view-table__cell-content-wrapper", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SingleSelectionCheckbox, { item: item, selection: selection, onSelectionChange: onSelectionChange, getItemId: getItemId, data: data, primaryField: primaryField, disabled: !hasPossibleBulkAction }) }) }), visibleFields.map(field => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("td", { style: { width: field.width || undefined, minWidth: field.minWidth || undefined, maxWidth: field.maxWidth || undefined }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: dist_clsx('dataviews-view-table__cell-content-wrapper', { 'dataviews-view-table__primary-field': primaryField?.id === field.id }), children: field.render({ item }) }) }, field.id)), !!actions?.length && /*#__PURE__*/ // Disable reason: we are not making the element interactive, // but preventing any click events from bubbling up to the // table row. This allows us to add a click handler to the row // itself (to toggle row selection) without erroneously // intercepting click events from ItemActions. /* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */ (0,external_ReactJSXRuntime_namespaceObject.jsx)("td", { className: "dataviews-view-table__actions-column", onClick: e => e.stopPropagation(), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ItemActions, { item: item, actions: actions }) }) /* eslint-enable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */] }); } function ViewTable({ actions, data, fields, getItemId, isLoading = false, onChangeView, onSelectionChange, selection, setOpenedFilter, view }) { const headerMenuRefs = (0,external_wp_element_namespaceObject.useRef)(new Map()); const headerMenuToFocusRef = (0,external_wp_element_namespaceObject.useRef)(); const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0,external_wp_element_namespaceObject.useState)(); const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data); (0,external_wp_element_namespaceObject.useEffect)(() => { if (headerMenuToFocusRef.current) { headerMenuToFocusRef.current.focus(); headerMenuToFocusRef.current = undefined; } }); const tableNoticeId = (0,external_wp_element_namespaceObject.useId)(); if (nextHeaderMenuToFocus) { // If we need to force focus, we short-circuit rendering here // to prevent any additional work while we handle that. // Clearing out the focus directive is necessary to make sure // future renders don't cause unexpected focus jumps. headerMenuToFocusRef.current = nextHeaderMenuToFocus; setNextHeaderMenuToFocus(undefined); return; } const onHide = field => { const hidden = headerMenuRefs.current.get(field.id); const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : undefined; setNextHeaderMenuToFocus(fallback?.node); }; const visibleFields = fields.filter(field => !view.hiddenFields.includes(field.id) && ![view.layout.mediaField].includes(field.id)); const hasData = !!data?.length; const primaryField = fields.find(field => field.id === view.layout.primaryField); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("table", { className: "dataviews-view-table", "aria-busy": isLoading, "aria-describedby": tableNoticeId, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("thead", { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("tr", { className: "dataviews-view-table__row", children: [hasBulkActions && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("th", { className: "dataviews-view-table__checkbox-column", style: { width: '1%' }, "data-field-id": "selection", scope: "col", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BulkSelectionCheckbox, { selection: selection, onSelectionChange: onSelectionChange, data: data, actions: actions, getItemId: getItemId }) }), visibleFields.map((field, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("th", { style: { width: field.width || undefined, minWidth: field.minWidth || undefined, maxWidth: field.maxWidth || undefined }, "data-field-id": field.id, "aria-sort": view.sort?.field === field.id ? sortValues[view.sort.direction] : undefined, scope: "col", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(HeaderMenu, { ref: node => { if (node) { headerMenuRefs.current.set(field.id, { node, fallback: visibleFields[index > 0 ? index - 1 : 1]?.id }); } else { headerMenuRefs.current.delete(field.id); } }, field: field, view: view, onChangeView: onChangeView, onHide: onHide, setOpenedFilter: setOpenedFilter }) }, field.id)), !!actions?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("th", { "data-field-id": "actions", className: "dataviews-view-table__actions-column", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { className: "dataviews-view-table-header", children: (0,external_wp_i18n_namespaceObject.__)('Actions') }) })] }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("tbody", { children: hasData && data.map((item, index) => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(TableRow, { item: item, hasBulkActions: hasBulkActions, actions: actions, id: getItemId(item) || index.toString(), visibleFields: visibleFields, primaryField: primaryField, selection: selection, getItemId: getItemId, onSelectionChange: onSelectionChange, data: data }, getItemId(item))) })] }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: dist_clsx({ 'dataviews-loading': isLoading, 'dataviews-no-results': !hasData && !isLoading }), id: tableNoticeId, children: !hasData && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { children: isLoading ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) : (0,external_wp_i18n_namespaceObject.__)('No results') }) })] }); } /* harmony default export */ const view_table = (ViewTable); ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/view-grid.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ function GridItem({ selection, data, onSelectionChange, getItemId, item, actions, mediaField, primaryField, visibleFields, badgeFields, columnFields }) { const hasBulkAction = useHasAPossibleBulkAction(actions, item); const id = getItemId(item); const isSelected = selection.includes(id); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { spacing: 0, className: dist_clsx('dataviews-view-grid__card', { 'is-selected': hasBulkAction && isSelected }), onClickCapture: event => { if (event.ctrlKey || event.metaKey) { event.stopPropagation(); event.preventDefault(); if (!hasBulkAction) { return; } if (!isSelected) { onSelectionChange(data.filter(_item => { const itemId = getItemId?.(_item); return itemId === id || selection.includes(itemId); })); } else { onSelectionChange(data.filter(_item => { const itemId = getItemId?.(_item); return itemId !== id && selection.includes(itemId); })); } } }, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "dataviews-view-grid__media", children: mediaField?.render({ item }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { justify: "space-between", className: "dataviews-view-grid__title-actions", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SingleSelectionCheckbox, { item: item, selection: selection, onSelectionChange: onSelectionChange, getItemId: getItemId, data: data, primaryField: primaryField, disabled: !hasBulkAction }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, { className: "dataviews-view-grid__primary-field", children: primaryField?.render({ item }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ItemActions, { item: item, actions: actions, isCompact: true })] }), !!badgeFields?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalHStack, { className: "dataviews-view-grid__badge-fields", spacing: 2, wrap: true, alignment: "top", justify: "flex-start", children: badgeFields.map(field => { const renderedValue = field.render({ item }); if (!renderedValue) { return null; } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { className: "dataviews-view-grid__field-value", children: renderedValue }, field.id); }) }), !!visibleFields?.length && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalVStack, { className: "dataviews-view-grid__fields", spacing: 3, children: visibleFields.map(field => { const renderedValue = field.render({ item }); if (!renderedValue) { return null; } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Flex, { className: dist_clsx('dataviews-view-grid__field', columnFields?.includes(field.id) ? 'is-column' : 'is-row'), gap: 1, justify: "flex-start", expanded: true, style: { height: 'auto' }, direction: columnFields?.includes(field.id) ? 'column' : 'row', children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { className: "dataviews-view-grid__field-name", children: field.header }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.FlexItem, { className: "dataviews-view-grid__field-value", style: { maxHeight: 'none' }, children: renderedValue })] }) }, field.id); }) })] }, id); } function ViewGrid({ actions, data, fields, getItemId, isLoading, onSelectionChange, selection, view }) { const mediaField = fields.find(field => field.id === view.layout.mediaField); const primaryField = fields.find(field => field.id === view.layout.primaryField); const { visibleFields, badgeFields } = fields.reduce((accumulator, field) => { if (view.hiddenFields.includes(field.id) || [view.layout.mediaField, view.layout.primaryField].includes(field.id)) { return accumulator; } // If the field is a badge field, add it to the badgeFields array // otherwise add it to the rest visibleFields array. const key = view.layout.badgeFields?.includes(field.id) ? 'badgeFields' : 'visibleFields'; accumulator[key].push(field); return accumulator; }, { visibleFields: [], badgeFields: [] }); const hasData = !!data?.length; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_ReactJSXRuntime_namespaceObject.Fragment, { children: [hasData && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalGrid, { gap: 8, columns: 2, alignment: "top", className: "dataviews-view-grid", "aria-busy": isLoading, children: data.map(item => { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(GridItem, { selection: selection, data: data, onSelectionChange: onSelectionChange, getItemId: getItemId, item: item, actions: actions, mediaField: mediaField, primaryField: primaryField, visibleFields: visibleFields, badgeFields: badgeFields, columnFields: view.layout.columnFields }, getItemId(item)); }) }), !hasData && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: dist_clsx({ 'dataviews-loading': isLoading, 'dataviews-no-results': !isLoading }), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { children: isLoading ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) : (0,external_wp_i18n_namespaceObject.__)('No results') }) })] }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/view-list.js /** * External dependencies */ // Import CompositeStore type, which is not exported from @wordpress/components. // eslint-disable-next-line no-restricted-imports /** * WordPress dependencies */ /** * Internal dependencies */ const { useCompositeStoreV2: view_list_useCompositeStore, CompositeV2: view_list_Composite, CompositeItemV2: view_list_CompositeItem, CompositeRowV2: CompositeRow, DropdownMenuV2: view_list_DropdownMenu } = build_module_lock_unlock_unlock(external_wp_components_namespaceObject.privateApis); function ListItem({ actions, id, isSelected, item, mediaField, onSelect, primaryField, store, visibleFields }) { const itemRef = (0,external_wp_element_namespaceObject.useRef)(null); const labelId = `${id}-label`; const descriptionId = `${id}-description`; const [isHovered, setIsHovered] = (0,external_wp_element_namespaceObject.useState)(false); const handleMouseEnter = () => { setIsHovered(true); }; const handleMouseLeave = () => { setIsHovered(false); }; (0,external_wp_element_namespaceObject.useEffect)(() => { if (isSelected) { itemRef.current?.scrollIntoView({ behavior: 'auto', block: 'nearest', inline: 'nearest' }); } }, [isSelected]); const { primaryAction, eligibleActions } = (0,external_wp_element_namespaceObject.useMemo)(() => { // If an action is eligible for all items, doesn't need // to provide the `isEligible` function. const _eligibleActions = actions.filter(action => !action.isEligible || action.isEligible(item)); const _primaryActions = _eligibleActions.filter(action => action.isPrimary && !!action.icon); return { primaryAction: _primaryActions?.[0], eligibleActions: _eligibleActions }; }, [actions, item]); const [isModalOpen, setIsModalOpen] = (0,external_wp_element_namespaceObject.useState)(false); const primaryActionLabel = primaryAction && (typeof primaryAction.label === 'string' ? primaryAction.label : primaryAction.label([item])); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(CompositeRow, { ref: itemRef, render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("li", {}), role: "row", className: dist_clsx({ 'is-selected': isSelected, 'is-hovered': isHovered }), onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { className: "dataviews-view-list__item-wrapper", alignment: "center", spacing: 0, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { role: "gridcell", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_list_CompositeItem, { store: store, render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", {}), role: "button", id: id, "aria-pressed": isSelected, "aria-labelledby": labelId, "aria-describedby": descriptionId, className: "dataviews-view-list__item", onClick: () => onSelect(item), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { spacing: 3, justify: "start", alignment: "flex-start", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "dataviews-view-list__media-wrapper", children: mediaField?.render({ item }) || /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "dataviews-view-list__media-placeholder" }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalVStack, { spacing: 0, children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { className: "dataviews-view-list__primary-field", id: labelId, children: primaryField?.render({ item }) }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: "dataviews-view-list__fields", id: descriptionId, children: visibleFields.map(field => /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("div", { className: "dataviews-view-list__field", children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.VisuallyHidden, { as: "span", className: "dataviews-view-list__field-label", children: field.header }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { className: "dataviews-view-list__field-value", children: field.render({ item }) })] }, field.id)) })] })] }) }) }), eligibleActions?.length > 0 && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalHStack, { spacing: 1, justify: "flex-end", className: "dataviews-view-list__item-actions", style: { flexShrink: '0', width: 'auto' }, children: [primaryAction && 'RenderModal' in primaryAction && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { role: "gridcell", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_list_CompositeItem, { store: store, render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { label: primaryActionLabel, icon: primaryAction.icon, isDestructive: primaryAction.isDestructive, size: "compact", onClick: () => setIsModalOpen(true) }), children: isModalOpen && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionModal, { action: primaryAction, items: [item], closeModal: () => setIsModalOpen(false) }) }) }), primaryAction && !('RenderModal' in primaryAction) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { role: "gridcell", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_list_CompositeItem, { store: store, render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { label: primaryActionLabel, icon: primaryAction.icon, isDestructive: primaryAction.isDestructive, size: "compact", onClick: () => primaryAction.callback([item]) }) }) }, primaryAction.id), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { role: "gridcell", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_list_DropdownMenu, { trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_list_CompositeItem, { store: store, render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { size: "compact", icon: more_vertical, label: (0,external_wp_i18n_namespaceObject.__)('Actions'), __experimentalIsFocusable: true, disabled: !actions.length, onKeyDown: event => { if (event.key === 'ArrowDown') { // Prevent the default behaviour (open dropdown menu) and go down. event.preventDefault(); store.move(store.down()); } if (event.key === 'ArrowUp') { // Prevent the default behavior (open dropdown menu) and go up. event.preventDefault(); store.move(store.up()); } } }) }), placement: "bottom-end", children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ActionsDropdownMenuGroup, { actions: eligibleActions, item: item }) }) })] })] }) }); } function ViewList(props) { const { actions, data, fields, getItemId, isLoading, onSelectionChange, selection, view } = props; const baseId = (0,external_wp_compose_namespaceObject.useInstanceId)(ViewList, 'view-list'); const selectedItem = data?.findLast(item => selection.includes(getItemId(item))); const mediaField = fields.find(field => field.id === view.layout.mediaField); const primaryField = fields.find(field => field.id === view.layout.primaryField); const visibleFields = fields.filter(field => !view.hiddenFields.includes(field.id) && ![view.layout.primaryField, view.layout.mediaField].includes(field.id)); const onSelect = (0,external_wp_element_namespaceObject.useCallback)(item => onSelectionChange([item]), [onSelectionChange]); const getItemDomId = (0,external_wp_element_namespaceObject.useCallback)(item => item ? `${baseId}-${getItemId(item)}` : undefined, [baseId, getItemId]); const store = view_list_useCompositeStore({ defaultActiveId: getItemDomId(selectedItem) }); // Manage focused item, when the active one is removed from the list. const isActiveIdInList = store.useState(state => state.items.some(item => item.id === state.activeId)); (0,external_wp_element_namespaceObject.useEffect)(() => { if (!isActiveIdInList) { // Prefer going down, except if there is no item below (last item), then go up (last item in list). if (store.down()) { store.move(store.down()); } else if (store.up()) { store.move(store.up()); } } }, [isActiveIdInList]); const hasData = data?.length; if (!hasData) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("div", { className: dist_clsx({ 'dataviews-loading': isLoading, 'dataviews-no-results': !hasData && !isLoading }), children: !hasData && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("p", { children: isLoading ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Spinner, {}) : (0,external_wp_i18n_namespaceObject.__)('No results') }) }); } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_list_Composite, { id: baseId, render: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("ul", {}), className: "dataviews-view-list", role: "grid", store: store, children: data.map(item => { const id = getItemDomId(item); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ListItem, { id: id, actions: actions, item: item, isSelected: item === selectedItem, onSelect: onSelect, mediaField: mediaField, primaryField: primaryField, store: store, visibleFields: visibleFields }, id); }) }); } ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/layouts.js /** * WordPress dependencies */ /** * Internal dependencies */ const VIEW_LAYOUTS = [{ type: constants_LAYOUT_TABLE, label: (0,external_wp_i18n_namespaceObject.__)('Table'), component: view_table, icon: block_table }, { type: constants_LAYOUT_GRID, label: (0,external_wp_i18n_namespaceObject.__)('Grid'), component: ViewGrid, icon: library_category }, { type: constants_LAYOUT_LIST, label: (0,external_wp_i18n_namespaceObject.__)('List'), component: ViewList, icon: (0,external_wp_i18n_namespaceObject.isRTL)() ? format_list_bullets_rtl : format_list_bullets }]; ;// CONCATENATED MODULE: ./node_modules/@wordpress/dataviews/build-module/view-actions.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ const { DropdownMenuV2: view_actions_DropdownMenu, DropdownMenuGroupV2: view_actions_DropdownMenuGroup, DropdownMenuItemV2: view_actions_DropdownMenuItem, DropdownMenuRadioItemV2: view_actions_DropdownMenuRadioItem, DropdownMenuCheckboxItemV2: DropdownMenuCheckboxItem, DropdownMenuItemLabelV2: view_actions_DropdownMenuItemLabel } = build_module_lock_unlock_unlock(external_wp_components_namespaceObject.privateApis); function ViewTypeMenu({ view, onChangeView, supportedLayouts }) { let _availableViews = VIEW_LAYOUTS; if (supportedLayouts) { _availableViews = _availableViews.filter(_view => supportedLayouts.includes(_view.type)); } if (_availableViews.length === 1) { return null; } const activeView = _availableViews.find(v => view.type === v.type); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenu, { trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItem, { suffix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { "aria-hidden": "true", children: activeView?.label }), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItemLabel, { children: (0,external_wp_i18n_namespaceObject.__)('Layout') }) }), children: _availableViews.map(availableView => { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuRadioItem, { value: availableView.type, name: "view-actions-available-view", checked: availableView.type === view.type, hideOnClick: true, onChange: e => { switch (e.target.value) { case 'list': case 'grid': case 'table': return onChangeView({ ...view, type: e.target.value, layout: {} }); } throw new Error('Invalid dataview'); }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItemLabel, { children: availableView.label }) }, availableView.type); }) }); } const PAGE_SIZE_VALUES = [10, 20, 50, 100]; function PageSizeMenu({ view, onChangeView }) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenu, { trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItem, { suffix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { "aria-hidden": "true", children: view.perPage }), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItemLabel, { children: (0,external_wp_i18n_namespaceObject.__)('Items per page') }) }), children: PAGE_SIZE_VALUES.map(size => { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuRadioItem, { value: size, name: "view-actions-page-size", checked: view.perPage === size, onChange: () => { onChangeView({ ...view, // `e.target.value` holds the same value as `size` but as a string, // so we use `size` directly to avoid parsing to int. perPage: size, page: 1 }); }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItemLabel, { children: size }) }, size); }) }); } function FieldsVisibilityMenu({ view, onChangeView, fields }) { const hidableFields = fields.filter(field => field.enableHiding !== false && field.id !== view.layout.mediaField); if (!hidableFields?.length) { return null; } return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenu, { trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItem, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItemLabel, { children: (0,external_wp_i18n_namespaceObject.__)('Fields') }) }), children: hidableFields?.map(field => { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(DropdownMenuCheckboxItem, { value: field.id, checked: !view.hiddenFields?.includes(field.id), onChange: () => { onChangeView({ ...view, hiddenFields: view.hiddenFields?.includes(field.id) ? view.hiddenFields.filter(id => id !== field.id) : [...(view.hiddenFields || []), field.id] }); }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItemLabel, { children: field.header }) }, field.id); }) }); } function SortMenu({ fields, view, onChangeView }) { const sortableFields = fields.filter(field => field.enableSorting !== false); if (!sortableFields?.length) { return null; } const currentSortedField = fields.find(field => field.id === view.sort?.field); return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenu, { trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItem, { suffix: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", { "aria-hidden": "true", children: currentSortedField?.header }), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItemLabel, { children: (0,external_wp_i18n_namespaceObject.__)('Sort by') }) }), children: sortableFields?.map(field => { const sortedDirection = view.sort?.direction; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenu, { trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItem, { children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItemLabel, { children: field.header }) }), style: { minWidth: '220px' }, children: SORTING_DIRECTIONS.map(direction => { const isChecked = currentSortedField !== undefined && sortedDirection === direction && field.id === currentSortedField.id; const value = `${field.id}-${direction}`; return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuRadioItem, { // All sorting radio items share the same name, so that // selecting a sorting option automatically deselects the // previously selected one, even if it is displayed in // another submenu. The field and direction are passed via // the `value` prop. name: "view-actions-sorting", value: value, checked: isChecked, onChange: () => { onChangeView({ ...view, sort: { field: field.id, direction } }); }, children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenuItemLabel, { children: sortLabels[direction] }) }, value); }) }, field.id); }) }); } function _ViewActions({ fields, view, onChangeView, supportedLayouts }) { return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(view_actions_DropdownMenu, { trigger: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.Button, { size: "compact", icon: library_settings, label: (0,external_wp_i18n_namespaceObject.__)('View options') }), children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(view_actions_DropdownMenuGroup, { children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ViewTypeMenu, { view: view, onChangeView: onChangeView, supportedLayouts: supportedLayouts }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(SortMenu, { fields: fields, view: view, onChangeView: onChangeView }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(FieldsVisibilityMenu, { fields: fields, view: view, onChangeView: onChangeView }), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(PageSizeMenu, { view: view, onChangeView: onChangeView })] }) }); } // A type assertion is used here to keep the type argument. const ViewActions = (0,external_wp_element_namespaceObject.memo)(_ViewActions); /* harmony default export */ const view_actions = (ViewActions); ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/3IEDWLST.js "use client"; // src/composite/utils.ts var NULL_ITEM = { id: null }; function flipItems(items, activeId, shouldInsertNullItem = false) { const index = items.findIndex((item) => item.id === activeId); return [ ...items.slice(index + 1), ...shouldInsertNullItem ? [NULL_ITEM] : [], ...items.slice(0, index) ]; } function findFirstEnabledItem(items, excludeId) { return items.find((item) => { if (excludeId) { return !item.disabled && item.id !== excludeId; } return !item.disabled; }); } function getEnabledItem(store, id) { if (!id) return null; return store.item(id) || null; } function groupItemsByRows(items) { const rows = []; for (const item of items) { const row = rows.find((currentRow) => { var _a; return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId; }); if (row) { row.push(item); } else { rows.push([item]); } } return rows; } function selectTextField(element, collapseToEnd = false) { if (isTextField(element)) { element.setSelectionRange( collapseToEnd ? element.value.length : 0, element.value.length ); } else if (element.isContentEditable) { const selection = getDocument(element).getSelection(); selection == null ? void 0 : selection.selectAllChildren(element); if (collapseToEnd) { selection == null ? void 0 : selection.collapseToEnd(); } } } var FOCUS_SILENTLY = Symbol("FOCUS_SILENTLY"); function focusSilently(element) { element[FOCUS_SILENTLY] = true; element.focus({ preventScroll: true }); } function silentlyFocused(element) { const isSilentlyFocused = element[FOCUS_SILENTLY]; delete element[FOCUS_SILENTLY]; return isSilentlyFocused; } function isItem(store, element, exclude) { if (!element) return false; if (element === exclude) return false; const item = store.item(element.id); if (!item) return false; if (exclude && item.element === exclude) return false; return true; } ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/4R3V3JGP.js "use client"; var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var _4R3V3JGP_spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var _4R3V3JGP_spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); var __objRest = (source, exclude) => { var target = {}; for (var prop in source) if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop]; if (source != null && __getOwnPropSymbols) for (var prop of __getOwnPropSymbols(source)) { if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) target[prop] = source[prop]; } return target; }; // EXTERNAL MODULE: external "React" var external_React_ = __webpack_require__(1609); var external_React_namespaceObject = /*#__PURE__*/__webpack_require__.t(external_React_, 2); ;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/4R3V3JGP.js "use client"; var _4R3V3JGP_defProp = Object.defineProperty; var _4R3V3JGP_defProps = Object.defineProperties; var _4R3V3JGP_getOwnPropDescs = Object.getOwnPropertyDescriptors; var _4R3V3JGP_getOwnPropSymbols = Object.getOwnPropertySymbols; var _4R3V3JGP_hasOwnProp = Object.prototype.hasOwnProperty; var _4R3V3JGP_propIsEnum = Object.prototype.propertyIsEnumerable; var _4R3V3JGP_defNormalProp = (obj, key, value) => key in obj ? _4R3V3JGP_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var _chunks_4R3V3JGP_spreadValues = (a, b) => { for (var prop in b || (b = {})) if (_4R3V3JGP_hasOwnProp.call(b, prop)) _4R3V3JGP_defNormalProp(a, prop, b[prop]); if (_4R3V3JGP_getOwnPropSymbols) for (var prop of _4R3V3JGP_getOwnPropSymbols(b)) { if (_4R3V3JGP_propIsEnum.call(b, prop)) _4R3V3JGP_defNormalProp(a, prop, b[prop]); } return a; }; var _chunks_4R3V3JGP_spreadProps = (a, b) => _4R3V3JGP_defProps(a, _4R3V3JGP_getOwnPropDescs(b)); var _4R3V3JGP_objRest = (source, exclude) => { var target = {}; for (var prop in source) if (_4R3V3JGP_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop]; if (source != null && _4R3V3JGP_getOwnPropSymbols) for (var prop of _4R3V3JGP_getOwnPropSymbols(source)) { if (exclude.indexOf(prop) < 0 && _4R3V3JGP_propIsEnum.call(source, prop)) target[prop] = source[prop]; } return target; }; ;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/Y3OOHFCN.js "use client"; // src/utils/misc.ts function Y3OOHFCN_noop(..._) { } function shallowEqual(a, b) { if (a === b) return true; if (!a) return false; if (!b) return false; if (typeof a !== "object") return false; if (typeof b !== "object") return false; const aKeys = Object.keys(a); const bKeys = Object.keys(b); const { length } = aKeys; if (bKeys.length !== length) return false; for (const key of aKeys) { if (a[key] !== b[key]) { return false; } } return true; } function Y3OOHFCN_applyState(argument, currentValue) { if (isUpdater(argument)) { const value = isLazyValue(currentValue) ? currentValue() : currentValue; return argument(value); } return argument; } function isUpdater(argument) { return typeof argument === "function"; } function isLazyValue(value) { return typeof value === "function"; } function isObject(arg) { return typeof arg === "object" && arg != null; } function isEmpty(arg) { if (Array.isArray(arg)) return !arg.length; if (isObject(arg)) return !Object.keys(arg).length; if (arg == null) return true; if (arg === "") return true; return false; } function isInteger(arg) { if (typeof arg === "number") { return Math.floor(arg) === arg; } return String(Math.floor(Number(arg))) === arg; } function Y3OOHFCN_hasOwnProperty(object, prop) { if (typeof Object.hasOwn === "function") { return Object.hasOwn(object, prop); } return Object.prototype.hasOwnProperty.call(object, prop); } function chain(...fns) { return (...args) => { for (const fn of fns) { if (typeof fn === "function") { fn(...args); } } }; } function cx(...args) { return args.filter(Boolean).join(" ") || void 0; } function normalizeString(str) { return str.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); } function omit(object, keys) { const result = _chunks_4R3V3JGP_spreadValues({}, object); for (const key of keys) { if (Y3OOHFCN_hasOwnProperty(result, key)) { delete result[key]; } } return result; } function pick(object, paths) { const result = {}; for (const key of paths) { if (Y3OOHFCN_hasOwnProperty(object, key)) { result[key] = object[key]; } } return result; } function identity(value) { return value; } function beforePaint(cb = Y3OOHFCN_noop) { const raf = requestAnimationFrame(cb); return () => cancelAnimationFrame(raf); } function afterPaint(cb = Y3OOHFCN_noop) { let raf = requestAnimationFrame(() => { raf = requestAnimationFrame(cb); }); return () => cancelAnimationFrame(raf); } function invariant(condition, message) { if (condition) return; if (typeof message !== "string") throw new Error("Invariant failed"); throw new Error(message); } function getKeys(obj) { return Object.keys(obj); } function isFalsyBooleanCallback(booleanOrCallback, ...args) { const result = typeof booleanOrCallback === "function" ? booleanOrCallback(...args) : booleanOrCallback; if (result == null) return false; return !result; } function disabledFromProps(props) { return props.disabled || props["aria-disabled"] === true || props["aria-disabled"] === "true"; } function defaultValue(...values) { for (const value of values) { if (value !== void 0) return value; } return void 0; } ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/XM66DUTO.js "use client"; // src/utils/misc.ts function setRef(ref, value) { if (typeof ref === "function") { ref(value); } else if (ref) { ref.current = value; } } function isValidElementWithRef(element) { if (!element) return false; if (!(0,external_React_.isValidElement)(element)) return false; if (!("ref" in element)) return false; return true; } function getRefProperty(element) { if (!isValidElementWithRef(element)) return null; return element.ref; } function mergeProps(base, overrides) { const props = _4R3V3JGP_spreadValues({}, base); for (const key in overrides) { if (!Y3OOHFCN_hasOwnProperty(overrides, key)) continue; if (key === "className") { const prop = "className"; props[prop] = base[prop] ? `${base[prop]} ${overrides[prop]}` : overrides[prop]; continue; } if (key === "style") { const prop = "style"; props[prop] = base[prop] ? _4R3V3JGP_spreadValues(_4R3V3JGP_spreadValues({}, base[prop]), overrides[prop]) : overrides[prop]; continue; } const overrideValue = overrides[key]; if (typeof overrideValue === "function" && key.startsWith("on")) { const baseValue = base[key]; if (typeof baseValue === "function") { props[key] = (...args) => { overrideValue(...args); baseValue(...args); }; continue; } } props[key] = overrideValue; } return props; } ;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/DLOEKDPY.js "use client"; // src/utils/dom.ts var DLOEKDPY_canUseDOM = checkIsBrowser(); function checkIsBrowser() { var _a; return typeof window !== "undefined" && !!((_a = window.document) == null ? void 0 : _a.createElement); } function DLOEKDPY_getDocument(node) { return node ? node.ownerDocument || node : document; } function getWindow(node) { return DLOEKDPY_getDocument(node).defaultView || window; } function DLOEKDPY_getActiveElement(node, activeDescendant = false) { const { activeElement } = DLOEKDPY_getDocument(node); if (!(activeElement == null ? void 0 : activeElement.nodeName)) { return null; } if (DLOEKDPY_isFrame(activeElement) && activeElement.contentDocument) { return DLOEKDPY_getActiveElement( activeElement.contentDocument.body, activeDescendant ); } if (activeDescendant) { const id = activeElement.getAttribute("aria-activedescendant"); if (id) { const element = DLOEKDPY_getDocument(activeElement).getElementById(id); if (element) { return element; } } } return activeElement; } function contains(parent, child) { return parent === child || parent.contains(child); } function DLOEKDPY_isFrame(element) { return element.tagName === "IFRAME"; } function isButton(element) { const tagName = element.tagName.toLowerCase(); if (tagName === "button") return true; if (tagName === "input" && element.type) { return buttonInputTypes.indexOf(element.type) !== -1; } return false; } var buttonInputTypes = [ "button", "color", "file", "image", "reset", "submit" ]; function matches(element, selectors) { if ("matches" in element) { return element.matches(selectors); } if ("msMatchesSelector" in element) { return element.msMatchesSelector(selectors); } return element.webkitMatchesSelector(selectors); } function isVisible(element) { const htmlElement = element; return htmlElement.offsetWidth > 0 || htmlElement.offsetHeight > 0 || element.getClientRects().length > 0; } function DLOEKDPY_closest(element, selectors) { if ("closest" in element) return element.closest(selectors); do { if (matches(element, selectors)) return element; element = element.parentElement || element.parentNode; } while (element !== null && element.nodeType === 1); return null; } function DLOEKDPY_isTextField(element) { try { const isTextInput = element instanceof HTMLInputElement && element.selectionStart !== null; const isTextArea = element.tagName === "TEXTAREA"; return isTextInput || isTextArea || false; } catch (error) { return false; } } function getPopupRole(element, fallback) { const allowedPopupRoles = ["dialog", "menu", "listbox", "tree", "grid"]; const role = element == null ? void 0 : element.getAttribute("role"); if (role && allowedPopupRoles.indexOf(role) !== -1) { return role; } return fallback; } function getPopupItemRole(element, fallback) { var _a; const itemRoleByPopupRole = { menu: "menuitem", listbox: "option", tree: "treeitem", grid: "gridcell" }; const popupRole = getPopupRole(element); if (!popupRole) return fallback; const key = popupRole; return (_a = itemRoleByPopupRole[key]) != null ? _a : fallback; } function getTextboxSelection(element) { let start = 0; let end = 0; if (DLOEKDPY_isTextField(element)) { start = element.selectionStart || 0; end = element.selectionEnd || 0; } else if (element.isContentEditable) { const selection = DLOEKDPY_getDocument(element).getSelection(); if ((selection == null ? void 0 : selection.rangeCount) && selection.anchorNode && contains(element, selection.anchorNode) && selection.focusNode && contains(element, selection.focusNode)) { const range = selection.getRangeAt(0); const nextRange = range.cloneRange(); nextRange.selectNodeContents(element); nextRange.setEnd(range.startContainer, range.startOffset); start = nextRange.toString().length; nextRange.setEnd(range.endContainer, range.endOffset); end = nextRange.toString().length; } } return { start, end }; } function scrollIntoViewIfNeeded(element, arg) { if (isPartiallyHidden(element) && "scrollIntoView" in element) { element.scrollIntoView(arg); } } function getScrollingElement(element) { if (!element) return null; if (element.clientHeight && element.scrollHeight > element.clientHeight) { const { overflowY } = getComputedStyle(element); const isScrollable = overflowY !== "visible" && overflowY !== "hidden"; if (isScrollable) return element; } else if (element.clientWidth && element.scrollWidth > element.clientWidth) { const { overflowX } = getComputedStyle(element); const isScrollable = overflowX !== "visible" && overflowX !== "hidden"; if (isScrollable) return element; } return getScrollingElement(element.parentElement) || document.scrollingElement || document.body; } function isPartiallyHidden(element) { const elementRect = element.getBoundingClientRect(); const scroller = getScrollingElement(element); if (!scroller) return false; const scrollerRect = scroller.getBoundingClientRect(); const isHTML = scroller.tagName === "HTML"; const scrollerTop = isHTML ? scrollerRect.top + scroller.scrollTop : scrollerRect.top; const scrollerBottom = isHTML ? scroller.clientHeight : scrollerRect.bottom; const scrollerLeft = isHTML ? scrollerRect.left + scroller.scrollLeft : scrollerRect.left; const scrollerRight = isHTML ? scroller.clientWidth : scrollerRect.right; const top = elementRect.top < scrollerTop; const left = elementRect.left < scrollerLeft; const bottom = elementRect.bottom > scrollerBottom; const right = elementRect.right > scrollerRight; return top || left || bottom || right; } function setSelectionRange(element, ...args) { if (/text|search|password|tel|url/i.test(element.type)) { element.setSelectionRange(...args); } } ;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/MHPO2BXA.js "use client"; // src/utils/platform.ts function isTouchDevice() { return DLOEKDPY_canUseDOM && !!navigator.maxTouchPoints; } function isApple() { if (!DLOEKDPY_canUseDOM) return false; return /mac|iphone|ipad|ipod/i.test(navigator.platform); } function isSafari() { return DLOEKDPY_canUseDOM && isApple() && /apple/i.test(navigator.vendor); } function isFirefox() { return DLOEKDPY_canUseDOM && /firefox\//i.test(navigator.userAgent); } function isMac() { return canUseDOM && navigator.platform.startsWith("Mac") && !isTouchDevice(); } ;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/utils/events.js "use client"; // src/utils/events.ts function isPortalEvent(event) { return Boolean( event.currentTarget && !contains(event.currentTarget, event.target) ); } function isSelfTarget(event) { return event.target === event.currentTarget; } function isOpeningInNewTab(event) { const element = event.currentTarget; if (!element) return false; const isAppleDevice = isApple(); if (isAppleDevice && !event.metaKey) return false; if (!isAppleDevice && !event.ctrlKey) return false; const tagName = element.tagName.toLowerCase(); if (tagName === "a") return true; if (tagName === "button" && element.type === "submit") return true; if (tagName === "input" && element.type === "submit") return true; return false; } function isDownloading(event) { const element = event.currentTarget; if (!element) return false; const tagName = element.tagName.toLowerCase(); if (!event.altKey) return false; if (tagName === "a") return true; if (tagName === "button" && element.type === "submit") return true; if (tagName === "input" && element.type === "submit") return true; return false; } function fireEvent(element, type, eventInit) { const event = new Event(type, eventInit); return element.dispatchEvent(event); } function fireBlurEvent(element, eventInit) { const event = new FocusEvent("blur", eventInit); const defaultAllowed = element.dispatchEvent(event); const bubbleInit = _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, eventInit), { bubbles: true }); element.dispatchEvent(new FocusEvent("focusout", bubbleInit)); return defaultAllowed; } function fireFocusEvent(element, eventInit) { const event = new FocusEvent("focus", eventInit); const defaultAllowed = element.dispatchEvent(event); const bubbleInit = __spreadProps(__spreadValues({}, eventInit), { bubbles: true }); element.dispatchEvent(new FocusEvent("focusin", bubbleInit)); return defaultAllowed; } function fireKeyboardEvent(element, type, eventInit) { const event = new KeyboardEvent(type, eventInit); return element.dispatchEvent(event); } function fireClickEvent(element, eventInit) { const event = new MouseEvent("click", eventInit); return element.dispatchEvent(event); } function isFocusEventOutside(event, container) { const containerElement = container || event.currentTarget; const relatedTarget = event.relatedTarget; return !relatedTarget || !contains(containerElement, relatedTarget); } function queueBeforeEvent(element, type, callback) { const raf = requestAnimationFrame(() => { element.removeEventListener(type, callImmediately, true); callback(); }); const callImmediately = () => { cancelAnimationFrame(raf); callback(); }; element.addEventListener(type, callImmediately, { once: true, capture: true }); return raf; } function addGlobalEventListener(type, listener, options, scope = window) { const children = []; try { scope.document.addEventListener(type, listener, options); for (const frame of Array.from(scope.frames)) { children.push(addGlobalEventListener(type, listener, options, frame)); } } catch (e) { } const removeEventListener = () => { try { scope.document.removeEventListener(type, listener, options); } catch (e) { } children.forEach((remove) => remove()); }; return removeEventListener; } ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/6O5OEQGF.js "use client"; // src/utils/hooks.ts var _React = _4R3V3JGP_spreadValues({}, external_React_namespaceObject); var useReactId = _React.useId; var useReactDeferredValue = _React.useDeferredValue; var useReactInsertionEffect = _React.useInsertionEffect; var useSafeLayoutEffect = DLOEKDPY_canUseDOM ? external_React_.useLayoutEffect : external_React_.useEffect; function useInitialValue(value) { const [initialValue] = useState(value); return initialValue; } function useLazyValue(init) { const ref = useRef(); if (ref.current === void 0) { ref.current = init(); } return ref.current; } function useLiveRef(value) { const ref = (0,external_React_.useRef)(value); useSafeLayoutEffect(() => { ref.current = value; }); return ref; } function usePreviousValue(value) { const [previousValue, setPreviousValue] = useState(value); if (value !== previousValue) { setPreviousValue(value); } return previousValue; } function useEvent(callback) { const ref = (0,external_React_.useRef)(() => { throw new Error("Cannot call an event handler while rendering."); }); if (useReactInsertionEffect) { useReactInsertionEffect(() => { ref.current = callback; }); } else { ref.current = callback; } return (0,external_React_.useCallback)((...args) => { var _a; return (_a = ref.current) == null ? void 0 : _a.call(ref, ...args); }, []); } function useMergeRefs(...refs) { return (0,external_React_.useMemo)(() => { if (!refs.some(Boolean)) return; return (value) => { refs.forEach((ref) => setRef(ref, value)); }; }, refs); } function useRefId(ref, deps) { const [id, setId] = useState(void 0); useSafeLayoutEffect(() => { var _a; setId((_a = ref == null ? void 0 : ref.current) == null ? void 0 : _a.id); }, deps); return id; } function useId(defaultId) { if (useReactId) { const reactId = useReactId(); if (defaultId) return defaultId; return reactId; } const [id, setId] = (0,external_React_.useState)(defaultId); useSafeLayoutEffect(() => { if (defaultId || id) return; const random = Math.random().toString(36).substr(2, 6); setId(`id-${random}`); }, [defaultId, id]); return defaultId || id; } function useDeferredValue(value) { if (useReactDeferredValue) { return useReactDeferredValue(value); } const [deferredValue, setDeferredValue] = useState(value); useEffect(() => { const raf = requestAnimationFrame(() => setDeferredValue(value)); return () => cancelAnimationFrame(raf); }, [value]); return deferredValue; } function useTagName(refOrElement, type) { const stringOrUndefined = (type2) => { if (typeof type2 !== "string") return; return type2; }; const [tagName, setTagName] = (0,external_React_.useState)(() => stringOrUndefined(type)); useSafeLayoutEffect(() => { const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement; setTagName((element == null ? void 0 : element.tagName.toLowerCase()) || stringOrUndefined(type)); }, [refOrElement, type]); return tagName; } function useAttribute(refOrElement, attributeName, defaultValue) { const [attribute, setAttribute] = (0,external_React_.useState)(defaultValue); useSafeLayoutEffect(() => { const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement; const value = element == null ? void 0 : element.getAttribute(attributeName); if (value == null) return; setAttribute(value); }, [refOrElement, attributeName]); return attribute; } function useUpdateEffect(effect, deps) { const mounted = (0,external_React_.useRef)(false); (0,external_React_.useEffect)(() => { if (mounted.current) { return effect(); } mounted.current = true; }, deps); (0,external_React_.useEffect)( () => () => { mounted.current = false; }, [] ); } function useUpdateLayoutEffect(effect, deps) { const mounted = (0,external_React_.useRef)(false); useSafeLayoutEffect(() => { if (mounted.current) { return effect(); } mounted.current = true; }, deps); useSafeLayoutEffect( () => () => { mounted.current = false; }, [] ); } function useControlledState(defaultState, state, setState) { const [localState, setLocalState] = useState(defaultState); const nextState = state !== void 0 ? state : localState; const stateRef = useLiveRef(state); const setStateRef = useLiveRef(setState); const nextStateRef = useLiveRef(nextState); const setNextState = useCallback((prevValue) => { const setStateProp = setStateRef.current; if (setStateProp) { if (isSetNextState(setStateProp)) { setStateProp(prevValue); } else { const nextValue = applyState(prevValue, nextStateRef.current); nextStateRef.current = nextValue; setStateProp(nextValue); } } if (stateRef.current === void 0) { setLocalState(prevValue); } }, []); defineSetNextState(setNextState); return [nextState, setNextState]; } var SET_NEXT_STATE = Symbol("setNextState"); function isSetNextState(arg) { return arg[SET_NEXT_STATE] === true; } function defineSetNextState(arg) { if (!isSetNextState(arg)) { Object.defineProperty(arg, SET_NEXT_STATE, { value: true }); } } function useForceUpdate() { return (0,external_React_.useReducer)(() => [], []); } function useBooleanEvent(booleanOrCallback) { return useEvent( typeof booleanOrCallback === "function" ? booleanOrCallback : () => booleanOrCallback ); } function useWrapElement(props, callback, deps = []) { const wrapElement = (0,external_React_.useCallback)( (element) => { if (props.wrapElement) { element = props.wrapElement(element); } return callback(element); }, [...deps, props.wrapElement] ); return _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props), { wrapElement }); } function usePortalRef(portalProp = false, portalRefProp) { const [portalNode, setPortalNode] = useState(null); const portalRef = useMergeRefs(setPortalNode, portalRefProp); const domReady = !portalProp || portalNode; return { portalRef, portalNode, domReady }; } function useMetadataProps(props, key, value) { const parent = props.onLoadedMetadataCapture; const onLoadedMetadataCapture = (0,external_React_.useMemo)(() => { return Object.assign(() => { }, _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, parent), { [key]: value })); }, [parent, key, value]); return [parent == null ? void 0 : parent[key], { onLoadedMetadataCapture }]; } function useIsMouseMoving() { (0,external_React_.useEffect)(() => { addGlobalEventListener("mousemove", setMouseMoving, true); addGlobalEventListener("mousedown", resetMouseMoving, true); addGlobalEventListener("mouseup", resetMouseMoving, true); addGlobalEventListener("keydown", resetMouseMoving, true); addGlobalEventListener("scroll", resetMouseMoving, true); }, []); const isMouseMoving = useEvent(() => mouseMoving); return isMouseMoving; } var mouseMoving = false; var previousScreenX = 0; var previousScreenY = 0; function hasMouseMovement(event) { const movementX = event.movementX || event.screenX - previousScreenX; const movementY = event.movementY || event.screenY - previousScreenY; previousScreenX = event.screenX; previousScreenY = event.screenY; return movementX || movementY || "production" === "test"; } function setMouseMoving(event) { if (!hasMouseMovement(event)) return; mouseMoving = true; } function resetMouseMoving() { mouseMoving = false; } ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/3ORBWXWF.js "use client"; // src/utils/system.tsx function isRenderProp(children) { return typeof children === "function"; } function forwardRef2(render) { const Role = React.forwardRef((props, ref) => render(__spreadProps(__spreadValues({}, props), { ref }))); Role.displayName = render.displayName || render.name; return Role; } function memo2(Component, propsAreEqual) { const Role = React.memo(Component, propsAreEqual); Role.displayName = Component.displayName || Component.name; return Role; } function createComponent(render) { const Role = (props, ref) => render(_4R3V3JGP_spreadValues({ ref }, props)); return external_React_.forwardRef(Role); } function createMemoComponent(render) { const Role = createComponent(render); return external_React_.memo(Role); } function createElement(Type, props) { const _a = props, { as: As, wrapElement, render } = _a, rest = __objRest(_a, ["as", "wrapElement", "render"]); let element; const mergedRef = useMergeRefs(props.ref, getRefProperty(render)); if (false) {} if (As && typeof As !== "string") { element = /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(As, _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, rest), { render })); } else if (external_React_.isValidElement(render)) { const renderProps = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, render.props), { ref: mergedRef }); element = external_React_.cloneElement(render, mergeProps(rest, renderProps)); } else if (render) { element = render(rest); } else if (isRenderProp(props.children)) { if (false) {} const _b = rest, { children } = _b, otherProps = __objRest(_b, ["children"]); element = props.children(otherProps); } else if (As) { element = /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(As, _4R3V3JGP_spreadValues({}, rest)); } else { element = /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(Type, _4R3V3JGP_spreadValues({}, rest)); } if (wrapElement) { return wrapElement(element); } return element; } function createHook(useProps) { const useRole = (props = {}) => { const htmlProps = useProps(props); const copy = {}; for (const prop in htmlProps) { if (Y3OOHFCN_hasOwnProperty(htmlProps, prop) && htmlProps[prop] !== void 0) { copy[prop] = htmlProps[prop]; } } return copy; }; return useRole; } function createStoreContext(providers = [], scopedProviders = []) { const context = external_React_.createContext(void 0); const scopedContext = external_React_.createContext(void 0); const useContext2 = () => external_React_.useContext(context); const useScopedContext = (onlyScoped = false) => { const scoped = external_React_.useContext(scopedContext); const store = useContext2(); if (onlyScoped) return scoped; return scoped || store; }; const useProviderContext = () => { const scoped = external_React_.useContext(scopedContext); const store = useContext2(); if (scoped && scoped === store) return; return store; }; const ContextProvider = (props) => { return providers.reduceRight( (children, Provider) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(Provider, _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props), { children })), /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(context.Provider, _4R3V3JGP_spreadValues({}, props)) ); }; const ScopedContextProvider = (props) => { return /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(ContextProvider, _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props), { children: scopedProviders.reduceRight( (children, Provider) => /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(Provider, _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props), { children })), /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(scopedContext.Provider, _4R3V3JGP_spreadValues({}, props)) ) })); }; return { context, scopedContext, useContext: useContext2, useScopedContext, useProviderContext, ContextProvider, ScopedContextProvider }; } ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/4UUKJZ4V.js "use client"; // src/collection/collection-context.tsx var ctx = createStoreContext(); var useCollectionContext = ctx.useContext; var useCollectionScopedContext = ctx.useScopedContext; var useCollectionProviderContext = ctx.useProviderContext; var CollectionContextProvider = ctx.ContextProvider; var CollectionScopedContextProvider = ctx.ScopedContextProvider; ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/IB7YUKH5.js "use client"; // src/composite/composite-context.tsx var IB7YUKH5_ctx = createStoreContext( [CollectionContextProvider], [CollectionScopedContextProvider] ); var useCompositeContext = IB7YUKH5_ctx.useContext; var useCompositeScopedContext = IB7YUKH5_ctx.useScopedContext; var useCompositeProviderContext = IB7YUKH5_ctx.useProviderContext; var CompositeContextProvider = IB7YUKH5_ctx.ContextProvider; var CompositeScopedContextProvider = IB7YUKH5_ctx.ScopedContextProvider; var CompositeItemContext = (0,external_React_.createContext)( void 0 ); var CompositeRowContext = (0,external_React_.createContext)( void 0 ); ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/346FK57L.js "use client"; // src/composite/composite-typeahead.ts var chars = ""; function clearChars() { chars = ""; } function isValidTypeaheadEvent(event) { const target = event.target; if (target && DLOEKDPY_isTextField(target)) return false; if (event.key === " " && chars.length) return true; return event.key.length === 1 && !event.ctrlKey && !event.altKey && !event.metaKey && /^[\p{Letter}\p{Number}]$/u.test(event.key); } function isSelfTargetOrItem(event, items) { if (isSelfTarget(event)) return true; const target = event.target; if (!target) return false; const isItem = items.some((item) => item.element === target); return isItem; } function getEnabledItems(items) { return items.filter((item) => !item.disabled); } function itemTextStartsWith(item, text) { var _a; const itemText = ((_a = item.element) == null ? void 0 : _a.textContent) || item.children; if (!itemText) return false; return normalizeString(itemText).trim().toLowerCase().startsWith(text.toLowerCase()); } function getSameInitialItems(items, char, activeId) { if (!activeId) return items; const activeItem = items.find((item) => item.id === activeId); if (!activeItem) return items; if (!itemTextStartsWith(activeItem, char)) return items; if (chars !== char && itemTextStartsWith(activeItem, chars)) return items; chars = char; return flipItems( items.filter((item) => itemTextStartsWith(item, chars)), activeId ).filter((item) => item.id !== activeId); } var useCompositeTypeahead = createHook( (_a) => { var _b = _a, { store, typeahead = true } = _b, props = __objRest(_b, ["store", "typeahead"]); const context = useCompositeContext(); store = store || context; invariant( store, false && 0 ); const onKeyDownCaptureProp = props.onKeyDownCapture; const cleanupTimeoutRef = (0,external_React_.useRef)(0); const onKeyDownCapture = useEvent( (event) => { onKeyDownCaptureProp == null ? void 0 : onKeyDownCaptureProp(event); if (event.defaultPrevented) return; if (!typeahead) return; if (!store) return; const { items, activeId } = store.getState(); if (!isValidTypeaheadEvent(event)) return clearChars(); let enabledItems = getEnabledItems(items); if (!isSelfTargetOrItem(event, enabledItems)) return clearChars(); event.preventDefault(); window.clearTimeout(cleanupTimeoutRef.current); cleanupTimeoutRef.current = window.setTimeout(() => { chars = ""; }, 500); const char = event.key.toLowerCase(); chars += char; enabledItems = getSameInitialItems(enabledItems, char, activeId); const item = enabledItems.find( (item2) => itemTextStartsWith(item2, chars) ); if (item) { store.move(item.id); } else { clearChars(); } } ); props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props), { onKeyDownCapture }); return props; } ); var CompositeTypeahead = createComponent( (props) => { const htmlProps = useCompositeTypeahead(props); return createElement("div", htmlProps); } ); if (false) {} ;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/utils/focus.js "use client"; // src/utils/focus.ts var selector = "input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])"; function hasNegativeTabIndex(element) { const tabIndex = parseInt(element.getAttribute("tabindex") || "0", 10); return tabIndex < 0; } function isFocusable(element) { if (!matches(element, selector)) return false; if (!isVisible(element)) return false; if (DLOEKDPY_closest(element, "[inert]")) return false; return true; } function isTabbable(element) { if (!isFocusable(element)) return false; if (hasNegativeTabIndex(element)) return false; if (!("form" in element)) return true; if (!element.form) return true; if (element.checked) return true; if (element.type !== "radio") return true; const radioGroup = element.form.elements.namedItem(element.name); if (!radioGroup) return true; if (!("length" in radioGroup)) return true; const activeElement = getActiveElement(element); if (!activeElement) return true; if (activeElement === element) return true; if (!("form" in activeElement)) return true; if (activeElement.form !== element.form) return true; if (activeElement.name !== element.name) return true; return false; } function getAllFocusableIn(container, includeContainer) { const elements = Array.from( container.querySelectorAll(selector) ); if (includeContainer) { elements.unshift(container); } const focusableElements = elements.filter(isFocusable); focusableElements.forEach((element, i) => { if (isFrame(element) && element.contentDocument) { const frameBody = element.contentDocument.body; focusableElements.splice(i, 1, ...getAllFocusableIn(frameBody)); } }); return focusableElements; } function getAllFocusable(includeBody) { return getAllFocusableIn(document.body, includeBody); } function getFirstFocusableIn(container, includeContainer) { const [first] = getAllFocusableIn(container, includeContainer); return first || null; } function getFirstFocusable(includeBody) { return getFirstFocusableIn(document.body, includeBody); } function getAllTabbableIn(container, includeContainer, fallbackToFocusable) { const elements = Array.from( container.querySelectorAll(selector) ); const tabbableElements = elements.filter(isTabbable); if (includeContainer && isTabbable(container)) { tabbableElements.unshift(container); } tabbableElements.forEach((element, i) => { if (isFrame(element) && element.contentDocument) { const frameBody = element.contentDocument.body; const allFrameTabbable = getAllTabbableIn( frameBody, false, fallbackToFocusable ); tabbableElements.splice(i, 1, ...allFrameTabbable); } }); if (!tabbableElements.length && fallbackToFocusable) { return elements; } return tabbableElements; } function getAllTabbable(fallbackToFocusable) { return getAllTabbableIn(document.body, false, fallbackToFocusable); } function getFirstTabbableIn(container, includeContainer, fallbackToFocusable) { const [first] = getAllTabbableIn( container, includeContainer, fallbackToFocusable ); return first || null; } function getFirstTabbable(fallbackToFocusable) { return getFirstTabbableIn(document.body, false, fallbackToFocusable); } function getLastTabbableIn(container, includeContainer, fallbackToFocusable) { const allTabbable = getAllTabbableIn( container, includeContainer, fallbackToFocusable ); return allTabbable[allTabbable.length - 1] || null; } function getLastTabbable(fallbackToFocusable) { return getLastTabbableIn(document.body, false, fallbackToFocusable); } function getNextTabbableIn(container, includeContainer, fallbackToFirst, fallbackToFocusable) { const activeElement = getActiveElement(container); const allFocusable = getAllFocusableIn(container, includeContainer); const activeIndex = allFocusable.indexOf(activeElement); const nextFocusableElements = allFocusable.slice(activeIndex + 1); return nextFocusableElements.find(isTabbable) || (fallbackToFirst ? allFocusable.find(isTabbable) : null) || (fallbackToFocusable ? nextFocusableElements[0] : null) || null; } function getNextTabbable(fallbackToFirst, fallbackToFocusable) { return getNextTabbableIn( document.body, false, fallbackToFirst, fallbackToFocusable ); } function getPreviousTabbableIn(container, includeContainer, fallbackToLast, fallbackToFocusable) { const activeElement = getActiveElement(container); const allFocusable = getAllFocusableIn(container, includeContainer).reverse(); const activeIndex = allFocusable.indexOf(activeElement); const previousFocusableElements = allFocusable.slice(activeIndex + 1); return previousFocusableElements.find(isTabbable) || (fallbackToLast ? allFocusable.find(isTabbable) : null) || (fallbackToFocusable ? previousFocusableElements[0] : null) || null; } function getPreviousTabbable(fallbackToFirst, fallbackToFocusable) { return getPreviousTabbableIn( document.body, false, fallbackToFirst, fallbackToFocusable ); } function getClosestFocusable(element) { while (element && !isFocusable(element)) { element = closest(element, selector); } return element || null; } function hasFocus(element) { const activeElement = DLOEKDPY_getActiveElement(element); if (!activeElement) return false; if (activeElement === element) return true; const activeDescendant = activeElement.getAttribute("aria-activedescendant"); if (!activeDescendant) return false; return activeDescendant === element.id; } function hasFocusWithin(element) { const activeElement = DLOEKDPY_getActiveElement(element); if (!activeElement) return false; if (contains(element, activeElement)) return true; const activeDescendant = activeElement.getAttribute("aria-activedescendant"); if (!activeDescendant) return false; if (!("id" in element)) return false; if (activeDescendant === element.id) return true; return !!element.querySelector(`#${CSS.escape(activeDescendant)}`); } function focusIfNeeded(element) { if (!hasFocusWithin(element) && isFocusable(element)) { element.focus(); } } function disableFocus(element) { var _a; const currentTabindex = (_a = element.getAttribute("tabindex")) != null ? _a : ""; element.setAttribute("data-tabindex", currentTabindex); element.setAttribute("tabindex", "-1"); } function disableFocusIn(container, includeContainer) { const tabbableElements = getAllTabbableIn(container, includeContainer); tabbableElements.forEach(disableFocus); } function restoreFocusIn(container) { const elements = container.querySelectorAll("[data-tabindex]"); const restoreTabIndex = (element) => { const tabindex = element.getAttribute("data-tabindex"); element.removeAttribute("data-tabindex"); if (tabindex) { element.setAttribute("tabindex", tabindex); } else { element.removeAttribute("tabindex"); } }; if (container.hasAttribute("data-tabindex")) { restoreTabIndex(container); } elements.forEach(restoreTabIndex); } function focusIntoView(element, options) { if (!("scrollIntoView" in element)) { element.focus(); } else { element.focus({ preventScroll: true }); element.scrollIntoView(_chunks_4R3V3JGP_spreadValues({ block: "nearest", inline: "nearest" }, options)); } } ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/G6ONQ5EH.js "use client"; // src/composite/composite-hover.ts function getMouseDestination(event) { const relatedTarget = event.relatedTarget; if ((relatedTarget == null ? void 0 : relatedTarget.nodeType) === Node.ELEMENT_NODE) { return relatedTarget; } return null; } function hoveringInside(event) { const nextElement = getMouseDestination(event); if (!nextElement) return false; return contains(event.currentTarget, nextElement); } var symbol = Symbol("composite-hover"); function movingToAnotherItem(event) { let dest = getMouseDestination(event); if (!dest) return false; do { if (Y3OOHFCN_hasOwnProperty(dest, symbol) && dest[symbol]) return true; dest = dest.parentElement; } while (dest); return false; } var useCompositeHover = createHook( (_a) => { var _b = _a, { store, focusOnHover = true, blurOnHoverEnd = !!focusOnHover } = _b, props = __objRest(_b, [ "store", "focusOnHover", "blurOnHoverEnd" ]); const context = useCompositeContext(); store = store || context; invariant( store, false && 0 ); const isMouseMoving = useIsMouseMoving(); const onMouseMoveProp = props.onMouseMove; const focusOnHoverProp = useBooleanEvent(focusOnHover); const onMouseMove = useEvent((event) => { onMouseMoveProp == null ? void 0 : onMouseMoveProp(event); if (event.defaultPrevented) return; if (!isMouseMoving()) return; if (!focusOnHoverProp(event)) return; if (!hasFocusWithin(event.currentTarget)) { const baseElement = store == null ? void 0 : store.getState().baseElement; if (baseElement && !hasFocus(baseElement)) { baseElement.focus(); } } store == null ? void 0 : store.setActiveId(event.currentTarget.id); }); const onMouseLeaveProp = props.onMouseLeave; const blurOnHoverEndProp = useBooleanEvent(blurOnHoverEnd); const onMouseLeave = useEvent((event) => { var _a2; onMouseLeaveProp == null ? void 0 : onMouseLeaveProp(event); if (event.defaultPrevented) return; if (!isMouseMoving()) return; if (hoveringInside(event)) return; if (movingToAnotherItem(event)) return; if (!focusOnHoverProp(event)) return; if (!blurOnHoverEndProp(event)) return; store == null ? void 0 : store.setActiveId(null); (_a2 = store == null ? void 0 : store.getState().baseElement) == null ? void 0 : _a2.focus(); }); const ref = (0,external_React_.useCallback)((element) => { if (!element) return; element[symbol] = true; }, []); props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props), { ref: useMergeRefs(ref, props.ref), onMouseMove, onMouseLeave }); return props; } ); var CompositeHover = createMemoComponent( (props) => { const htmlProps = useCompositeHover(props); return createElement("div", htmlProps); } ); if (false) {} ;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/EAHJFCU4.js "use client"; // src/utils/store.ts function getInternal(store, key) { const internals = store.__unstableInternals; invariant(internals, "Invalid store"); return internals[key]; } function createStore(initialState, ...stores) { let state = initialState; let prevStateBatch = state; let lastUpdate = Symbol(); let destroy = Y3OOHFCN_noop; const instances = /* @__PURE__ */ new Set(); const updatedKeys = /* @__PURE__ */ new Set(); const setups = /* @__PURE__ */ new Set(); const listeners = /* @__PURE__ */ new Set(); const batchListeners = /* @__PURE__ */ new Set(); const disposables = /* @__PURE__ */ new WeakMap(); const listenerKeys = /* @__PURE__ */ new WeakMap(); const storeSetup = (callback) => { setups.add(callback); return () => setups.delete(callback); }; const storeInit = () => { const initialized = instances.size; const instance = Symbol(); instances.add(instance); const maybeDestroy = () => { instances.delete(instance); if (instances.size) return; destroy(); }; if (initialized) return maybeDestroy; const desyncs = getKeys(state).map( (key) => chain( ...stores.map((store) => { var _a; const storeState = (_a = store == null ? void 0 : store.getState) == null ? void 0 : _a.call(store); if (!storeState) return; if (!Y3OOHFCN_hasOwnProperty(storeState, key)) return; return sync(store, [key], (state2) => { setState( key, state2[key], // @ts-expect-error - Not public API. This is just to prevent // infinite loops. true ); }); }) ) ); const teardowns = []; setups.forEach((setup2) => teardowns.push(setup2())); const cleanups = stores.map(init); destroy = chain(...desyncs, ...teardowns, ...cleanups); return maybeDestroy; }; const sub = (keys, listener, set = listeners) => { set.add(listener); listenerKeys.set(listener, keys); return () => { var _a; (_a = disposables.get(listener)) == null ? void 0 : _a(); disposables.delete(listener); listenerKeys.delete(listener); set.delete(listener); }; }; const storeSubscribe = (keys, listener) => sub(keys, listener); const storeSync = (keys, listener) => { disposables.set(listener, listener(state, state)); return sub(keys, listener); }; const storeBatch = (keys, listener) => { disposables.set(listener, listener(state, prevStateBatch)); return sub(keys, listener, batchListeners); }; const storePick = (keys) => createStore(pick(state, keys), finalStore); const storeOmit = (keys) => createStore(omit(state, keys), finalStore); const getState = () => state; const setState = (key, value, fromStores = false) => { if (!Y3OOHFCN_hasOwnProperty(state, key)) return; const nextValue = Y3OOHFCN_applyState(value, state[key]); if (nextValue === state[key]) return; if (!fromStores) { stores.forEach((store) => { var _a; (_a = store == null ? void 0 : store.setState) == null ? void 0 : _a.call(store, key, nextValue); }); } const prevState = state; state = _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, state), { [key]: nextValue }); const thisUpdate = Symbol(); lastUpdate = thisUpdate; updatedKeys.add(key); const run = (listener, prev, uKeys) => { var _a; const keys = listenerKeys.get(listener); const updated = (k) => uKeys ? uKeys.has(k) : k === key; if (!keys || keys.some(updated)) { (_a = disposables.get(listener)) == null ? void 0 : _a(); disposables.set(listener, listener(state, prev)); } }; listeners.forEach((listener) => { run(listener, prevState); }); queueMicrotask(() => { if (lastUpdate !== thisUpdate) return; const snapshot = state; batchListeners.forEach((listener) => { run(listener, prevStateBatch, updatedKeys); }); prevStateBatch = snapshot; updatedKeys.clear(); }); }; const finalStore = { getState, setState, __unstableInternals: { setup: storeSetup, init: storeInit, subscribe: storeSubscribe, sync: storeSync, batch: storeBatch, pick: storePick, omit: storeOmit } }; return finalStore; } function setup(store, ...args) { if (!store) return; return getInternal(store, "setup")(...args); } function init(store, ...args) { if (!store) return; return getInternal(store, "init")(...args); } function subscribe(store, ...args) { if (!store) return; return getInternal(store, "subscribe")(...args); } function sync(store, ...args) { if (!store) return; return getInternal(store, "sync")(...args); } function batch(store, ...args) { if (!store) return; return getInternal(store, "batch")(...args); } function omit2(store, ...args) { if (!store) return; return getInternal(store, "omit")(...args); } function pick2(store, ...args) { if (!store) return; return getInternal(store, "pick")(...args); } function mergeStore(...stores) { const initialState = stores.reduce((state, store2) => { var _a; const nextState = (_a = store2 == null ? void 0 : store2.getState) == null ? void 0 : _a.call(store2); if (!nextState) return state; return _chunks_4R3V3JGP_spreadValues(_chunks_4R3V3JGP_spreadValues({}, state), nextState); }, {}); const store = createStore(initialState, ...stores); return store; } function throwOnConflictingProps(props, store) { if (true) return; if (!store) return; const defaultKeys = Object.entries(props).filter(([key, value]) => key.startsWith("default") && value !== void 0).map(([key]) => { var _a; const stateKey = key.replace("default", ""); return `${((_a = stateKey[0]) == null ? void 0 : _a.toLowerCase()) || ""}${stateKey.slice(1)}`; }); if (!defaultKeys.length) return; const storeState = store.getState(); const conflictingProps = defaultKeys.filter( (key) => Y3OOHFCN_hasOwnProperty(storeState, key) ); if (!conflictingProps.length) return; throw new Error( `Passing a store prop in conjunction with a default state is not supported. const store = useSelectStore(); <SelectProvider store={store} defaultValue="Apple" /> ^ ^ Instead, pass the default state to the topmost store: const store = useSelectStore({ defaultValue: "Apple" }); <SelectProvider store={store} /> See https://github.com/ariakit/ariakit/pull/2745 for more details. If there's a particular need for this, please submit a feature request at https://github.com/ariakit/ariakit ` ); } // EXTERNAL MODULE: ./node_modules/use-sync-external-store/shim/index.js var shim = __webpack_require__(422); ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/EKQEJRUF.js "use client"; // src/utils/store.tsx var { useSyncExternalStore } = shim; var noopSubscribe = () => () => { }; function useStoreState(store, keyOrSelector = identity) { const storeSubscribe = external_React_.useCallback( (callback) => { if (!store) return noopSubscribe(); return subscribe(store, null, callback); }, [store] ); const getSnapshot = () => { const key = typeof keyOrSelector === "string" ? keyOrSelector : null; const selector = typeof keyOrSelector === "function" ? keyOrSelector : null; const state = store == null ? void 0 : store.getState(); if (selector) return selector(state); if (!state) return; if (!key) return; if (!Y3OOHFCN_hasOwnProperty(state, key)) return; return state[key]; }; return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot); } function useStoreProps(store, props, key, setKey) { const value = Y3OOHFCN_hasOwnProperty(props, key) ? props[key] : void 0; const setValue = setKey ? props[setKey] : void 0; const propsRef = useLiveRef({ value, setValue }); useSafeLayoutEffect(() => { return sync(store, [key], (state, prev) => { const { value: value2, setValue: setValue2 } = propsRef.current; if (!setValue2) return; if (state[key] === prev[key]) return; if (state[key] === value2) return; setValue2(state[key]); }); }, [store, key]); useSafeLayoutEffect(() => { if (value === void 0) return; store.setState(key, value); return batch(store, [key], () => { if (value === void 0) return; store.setState(key, value); }); }); } function EKQEJRUF_useStore(createStore, props) { const [store, setStore] = external_React_.useState(() => createStore(props)); useSafeLayoutEffect(() => init(store), [store]); const useState2 = external_React_.useCallback( (keyOrSelector) => useStoreState(store, keyOrSelector), [store] ); const memoizedStore = external_React_.useMemo( () => _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, store), { useState: useState2 }), [store, useState2] ); const updateStore = useEvent(() => { setStore((store2) => createStore(_4R3V3JGP_spreadValues(_4R3V3JGP_spreadValues({}, props), store2.getState()))); }); return [memoizedStore, updateStore]; } ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/Y6GYTNQ2.js "use client"; // src/collection/collection-store.ts function useCollectionStoreProps(store, update, props) { useUpdateEffect(update, [props.store]); useStoreProps(store, props, "items", "setItems"); return store; } function useCollectionStore(props = {}) { const [store, update] = useStore(Core.createCollectionStore, props); return useCollectionStoreProps(store, update, props); } ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/7GBW5FLS.js "use client"; // src/composite/composite-store.ts function useCompositeStoreProps(store, update, props) { store = useCollectionStoreProps(store, update, props); useStoreProps(store, props, "activeId", "setActiveId"); useStoreProps(store, props, "includesBaseElement"); useStoreProps(store, props, "virtualFocus"); useStoreProps(store, props, "orientation"); useStoreProps(store, props, "rtl"); useStoreProps(store, props, "focusLoop"); useStoreProps(store, props, "focusWrap"); useStoreProps(store, props, "focusShift"); return store; } function _7GBW5FLS_useCompositeStore(props = {}) { const [store, update] = useStore(Core.createCompositeStore, props); return useCompositeStoreProps(store, update, props); } ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/SFCBA2JZ.js "use client"; // src/disclosure/disclosure-store.ts function useDisclosureStoreProps(store, update, props) { useUpdateEffect(update, [props.store, props.disclosure]); useStoreProps(store, props, "open", "setOpen"); useStoreProps(store, props, "mounted", "setMounted"); useStoreProps(store, props, "animated"); return store; } function useDisclosureStore(props = {}) { const [store, update] = useStore(Core.createDisclosureStore, props); return useDisclosureStoreProps(store, update, props); } ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/ZSELSBRM.js "use client"; // src/dialog/dialog-store.ts function useDialogStoreProps(store, update, props) { return useDisclosureStoreProps(store, update, props); } function useDialogStore(props = {}) { const [store, update] = useStore(Core.createDialogStore, props); return useDialogStoreProps(store, update, props); } ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/MG4P3223.js "use client"; // src/popover/popover-store.ts function usePopoverStoreProps(store, update, props) { useUpdateEffect(update, [props.popover]); store = useDialogStoreProps(store, update, props); useStoreProps(store, props, "placement"); return store; } function usePopoverStore(props = {}) { const [store, update] = useStore(Core.createPopoverStore, props); return usePopoverStoreProps(store, update, props); } ;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/Z5IGYIPT.js "use client"; // src/disclosure/disclosure-store.ts function createDisclosureStore(props = {}) { const store = mergeStore( props.store, omit2(props.disclosure, ["contentElement", "disclosureElement"]) ); throwOnConflictingProps(props, store); const syncState = store == null ? void 0 : store.getState(); const open = defaultValue( props.open, syncState == null ? void 0 : syncState.open, props.defaultOpen, false ); const animated = defaultValue(props.animated, syncState == null ? void 0 : syncState.animated, false); const initialState = { open, animated, animating: !!animated && open, mounted: open, contentElement: defaultValue(syncState == null ? void 0 : syncState.contentElement, null), disclosureElement: defaultValue(syncState == null ? void 0 : syncState.disclosureElement, null) }; const disclosure = createStore(initialState, store); setup( disclosure, () => sync(disclosure, ["animated", "animating"], (state) => { if (state.animated) return; disclosure.setState("animating", false); }) ); setup( disclosure, () => subscribe(disclosure, ["open"], () => { if (!disclosure.getState().animated) return; disclosure.setState("animating", true); }) ); setup( disclosure, () => sync(disclosure, ["open", "animating"], (state) => { disclosure.setState("mounted", state.open || state.animating); }) ); return _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, disclosure), { setOpen: (value) => disclosure.setState("open", value), show: () => disclosure.setState("open", true), hide: () => disclosure.setState("open", false), toggle: () => disclosure.setState("open", (open2) => !open2), stopAnimation: () => disclosure.setState("animating", false), setContentElement: (value) => disclosure.setState("contentElement", value), setDisclosureElement: (value) => disclosure.setState("disclosureElement", value) }); } ;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/SX2XFD6A.js "use client"; // src/dialog/dialog-store.ts function createDialogStore(props = {}) { return createDisclosureStore(props); } ;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/AF6IUUFN.js "use client"; // src/popover/popover-store.ts function createPopoverStore(_a = {}) { var _b = _a, { popover: otherPopover } = _b, props = _4R3V3JGP_objRest(_b, [ "popover" ]); const store = mergeStore( props.store, omit2(otherPopover, [ "arrowElement", "anchorElement", "contentElement", "popoverElement", "disclosureElement" ]) ); throwOnConflictingProps(props, store); const syncState = store == null ? void 0 : store.getState(); const dialog = createDialogStore(_chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, props), { store })); const placement = defaultValue( props.placement, syncState == null ? void 0 : syncState.placement, "bottom" ); const initialState = _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, dialog.getState()), { placement, currentPlacement: placement, anchorElement: defaultValue(syncState == null ? void 0 : syncState.anchorElement, null), popoverElement: defaultValue(syncState == null ? void 0 : syncState.popoverElement, null), arrowElement: defaultValue(syncState == null ? void 0 : syncState.arrowElement, null), rendered: Symbol("rendered") }); const popover = createStore(initialState, dialog, store); return _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues(_chunks_4R3V3JGP_spreadValues({}, dialog), popover), { setAnchorElement: (element) => popover.setState("anchorElement", element), setPopoverElement: (element) => popover.setState("popoverElement", element), setArrowElement: (element) => popover.setState("arrowElement", element), render: () => popover.setState("rendered", Symbol("rendered")) }); } ;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/22K762VQ.js "use client"; // src/collection/collection-store.ts function isElementPreceding(a, b) { return Boolean( b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING ); } function sortBasedOnDOMPosition(items) { const pairs = items.map((item, index) => [index, item]); let isOrderDifferent = false; pairs.sort(([indexA, a], [indexB, b]) => { const elementA = a.element; const elementB = b.element; if (elementA === elementB) return 0; if (!elementA || !elementB) return 0; if (isElementPreceding(elementA, elementB)) { if (indexA > indexB) { isOrderDifferent = true; } return -1; } if (indexA < indexB) { isOrderDifferent = true; } return 1; }); if (isOrderDifferent) { return pairs.map(([_, item]) => item); } return items; } function getCommonParent(items) { var _a; const firstItem = items.find((item) => !!item.element); const lastItem = [...items].reverse().find((item) => !!item.element); let parentElement = (_a = firstItem == null ? void 0 : firstItem.element) == null ? void 0 : _a.parentElement; while (parentElement && (lastItem == null ? void 0 : lastItem.element)) { const parent = parentElement; if (lastItem && parent.contains(lastItem.element)) { return parentElement; } parentElement = parentElement.parentElement; } return DLOEKDPY_getDocument(parentElement).body; } function getPrivateStore(store) { return store == null ? void 0 : store.__unstablePrivateStore; } function createCollectionStore(props = {}) { var _a; throwOnConflictingProps(props, props.store); const syncState = (_a = props.store) == null ? void 0 : _a.getState(); const items = defaultValue( props.items, syncState == null ? void 0 : syncState.items, props.defaultItems, [] ); const itemsMap = new Map(items.map((item) => [item.id, item])); const initialState = { items, renderedItems: defaultValue(syncState == null ? void 0 : syncState.renderedItems, []) }; const syncPrivateStore = getPrivateStore(props.store); const privateStore = createStore( { items, renderedItems: initialState.renderedItems }, syncPrivateStore ); const collection = createStore(initialState, props.store); const sortItems = (renderedItems) => { const sortedItems = sortBasedOnDOMPosition(renderedItems); privateStore.setState("renderedItems", sortedItems); collection.setState("renderedItems", sortedItems); }; setup(collection, () => init(privateStore)); setup(privateStore, () => { return batch(privateStore, ["items"], (state) => { collection.setState("items", state.items); }); }); setup(privateStore, () => { return batch(privateStore, ["renderedItems"], (state) => { let firstRun = true; let raf = requestAnimationFrame(() => { const { renderedItems } = collection.getState(); if (state.renderedItems === renderedItems) return; sortItems(state.renderedItems); }); if (typeof IntersectionObserver !== "function") { return () => cancelAnimationFrame(raf); } const ioCallback = () => { if (firstRun) { firstRun = false; return; } cancelAnimationFrame(raf); raf = requestAnimationFrame(() => sortItems(state.renderedItems)); }; const root = getCommonParent(state.renderedItems); const observer = new IntersectionObserver(ioCallback, { root }); for (const item of state.renderedItems) { if (!item.element) continue; observer.observe(item.element); } return () => { cancelAnimationFrame(raf); observer.disconnect(); }; }); }); const mergeItem = (item, setItems, canDeleteFromMap = false) => { let prevItem; setItems((items2) => { const index = items2.findIndex(({ id }) => id === item.id); const nextItems = items2.slice(); if (index !== -1) { prevItem = items2[index]; const nextItem = _chunks_4R3V3JGP_spreadValues(_chunks_4R3V3JGP_spreadValues({}, prevItem), item); nextItems[index] = nextItem; itemsMap.set(item.id, nextItem); } else { nextItems.push(item); itemsMap.set(item.id, item); } return nextItems; }); const unmergeItem = () => { setItems((items2) => { if (!prevItem) { if (canDeleteFromMap) { itemsMap.delete(item.id); } return items2.filter(({ id }) => id !== item.id); } const index = items2.findIndex(({ id }) => id === item.id); if (index === -1) return items2; const nextItems = items2.slice(); nextItems[index] = prevItem; itemsMap.set(item.id, prevItem); return nextItems; }); }; return unmergeItem; }; const registerItem = (item) => mergeItem( item, (getItems) => privateStore.setState("items", getItems), true ); return _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, collection), { registerItem, renderItem: (item) => chain( registerItem(item), mergeItem( item, (getItems) => privateStore.setState("renderedItems", getItems) ) ), item: (id) => { if (!id) return null; let item = itemsMap.get(id); if (!item) { const { items: items2 } = collection.getState(); item = items2.find((item2) => item2.id === id); if (item) { itemsMap.set(id, item); } } return item || null; }, // @ts-expect-error Internal __unstablePrivateStore: privateStore }); } ;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/7PRQYBBV.js "use client"; // src/utils/array.ts function toArray(arg) { if (Array.isArray(arg)) { return arg; } return typeof arg !== "undefined" ? [arg] : []; } function addItemToArray(array, item, index = -1) { if (!(index in array)) { return [...array, item]; } return [...array.slice(0, index), item, ...array.slice(index)]; } function flatten2DArray(array) { const flattened = []; for (const row of array) { flattened.push(...row); } return flattened; } function reverseArray(array) { return array.slice().reverse(); } ;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/__chunks/IERTEJ3A.js "use client"; // src/composite/composite-store.ts var IERTEJ3A_NULL_ITEM = { id: null }; function IERTEJ3A_findFirstEnabledItem(items, excludeId) { return items.find((item) => { if (excludeId) { return !item.disabled && item.id !== excludeId; } return !item.disabled; }); } function IERTEJ3A_getEnabledItems(items, excludeId) { return items.filter((item) => { if (excludeId) { return !item.disabled && item.id !== excludeId; } return !item.disabled; }); } function getOppositeOrientation(orientation) { if (orientation === "vertical") return "horizontal"; if (orientation === "horizontal") return "vertical"; return; } function getItemsInRow(items, rowId) { return items.filter((item) => item.rowId === rowId); } function IERTEJ3A_flipItems(items, activeId, shouldInsertNullItem = false) { const index = items.findIndex((item) => item.id === activeId); return [ ...items.slice(index + 1), ...shouldInsertNullItem ? [IERTEJ3A_NULL_ITEM] : [], ...items.slice(0, index) ]; } function IERTEJ3A_groupItemsByRows(items) { const rows = []; for (const item of items) { const row = rows.find((currentRow) => { var _a; return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId; }); if (row) { row.push(item); } else { rows.push([item]); } } return rows; } function getMaxRowLength(array) { let maxLength = 0; for (const { length } of array) { if (length > maxLength) { maxLength = length; } } return maxLength; } function createEmptyItem(rowId) { return { id: "__EMPTY_ITEM__", disabled: true, rowId }; } function normalizeRows(rows, activeId, focusShift) { const maxLength = getMaxRowLength(rows); for (const row of rows) { for (let i = 0; i < maxLength; i += 1) { const item = row[i]; if (!item || focusShift && item.disabled) { const isFirst = i === 0; const previousItem = isFirst && focusShift ? IERTEJ3A_findFirstEnabledItem(row) : row[i - 1]; row[i] = previousItem && activeId !== previousItem.id && focusShift ? previousItem : createEmptyItem(previousItem == null ? void 0 : previousItem.rowId); } } } return rows; } function verticalizeItems(items) { const rows = IERTEJ3A_groupItemsByRows(items); const maxLength = getMaxRowLength(rows); const verticalized = []; for (let i = 0; i < maxLength; i += 1) { for (const row of rows) { const item = row[i]; if (item) { verticalized.push(_chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, item), { // If there's no rowId, it means that it's not a grid composite, but // a single row instead. So, instead of verticalizing it, that is, // assigning a different rowId based on the column index, we keep it // undefined so they will be part of the same row. This is useful // when using up/down on one-dimensional composites. rowId: item.rowId ? `${i}` : void 0 })); } } } return verticalized; } function createCompositeStore(props = {}) { var _a; const syncState = (_a = props.store) == null ? void 0 : _a.getState(); const collection = createCollectionStore(props); const activeId = defaultValue( props.activeId, syncState == null ? void 0 : syncState.activeId, props.defaultActiveId ); const initialState = _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, collection.getState()), { activeId, baseElement: defaultValue(syncState == null ? void 0 : syncState.baseElement, null), includesBaseElement: defaultValue( props.includesBaseElement, syncState == null ? void 0 : syncState.includesBaseElement, activeId === null ), moves: defaultValue(syncState == null ? void 0 : syncState.moves, 0), orientation: defaultValue( props.orientation, syncState == null ? void 0 : syncState.orientation, "both" ), rtl: defaultValue(props.rtl, syncState == null ? void 0 : syncState.rtl, false), virtualFocus: defaultValue( props.virtualFocus, syncState == null ? void 0 : syncState.virtualFocus, false ), focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, false), focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, false), focusShift: defaultValue(props.focusShift, syncState == null ? void 0 : syncState.focusShift, false) }); const composite = createStore(initialState, collection, props.store); setup( composite, () => sync(composite, ["renderedItems", "activeId"], (state) => { composite.setState("activeId", (activeId2) => { var _a2; if (activeId2 !== void 0) return activeId2; return (_a2 = IERTEJ3A_findFirstEnabledItem(state.renderedItems)) == null ? void 0 : _a2.id; }); }) ); const getNextId = (items, orientation, hasNullItem, skip) => { var _a2, _b; const { activeId: activeId2, rtl, focusLoop, focusWrap, includesBaseElement } = composite.getState(); const isHorizontal = orientation !== "vertical"; const isRTL = rtl && isHorizontal; const allItems = isRTL ? reverseArray(items) : items; if (activeId2 == null) { return (_a2 = IERTEJ3A_findFirstEnabledItem(allItems)) == null ? void 0 : _a2.id; } const activeItem = allItems.find((item) => item.id === activeId2); if (!activeItem) { return (_b = IERTEJ3A_findFirstEnabledItem(allItems)) == null ? void 0 : _b.id; } const isGrid = !!activeItem.rowId; const activeIndex = allItems.indexOf(activeItem); const nextItems = allItems.slice(activeIndex + 1); const nextItemsInRow = getItemsInRow(nextItems, activeItem.rowId); if (skip !== void 0) { const nextEnabledItemsInRow = IERTEJ3A_getEnabledItems(nextItemsInRow, activeId2); const nextItem2 = nextEnabledItemsInRow.slice(skip)[0] || // If we can't find an item, just return the last one. nextEnabledItemsInRow[nextEnabledItemsInRow.length - 1]; return nextItem2 == null ? void 0 : nextItem2.id; } const oppositeOrientation = getOppositeOrientation( // If it's a grid and orientation is not set, it's a next/previous call, // which is inherently horizontal. up/down will call next with orientation // set to vertical by default (see below on up/down methods). isGrid ? orientation || "horizontal" : orientation ); const canLoop = focusLoop && focusLoop !== oppositeOrientation; const canWrap = isGrid && focusWrap && focusWrap !== oppositeOrientation; hasNullItem = hasNullItem || !isGrid && canLoop && includesBaseElement; if (canLoop) { const loopItems = canWrap && !hasNullItem ? allItems : getItemsInRow(allItems, activeItem.rowId); const sortedItems = IERTEJ3A_flipItems(loopItems, activeId2, hasNullItem); const nextItem2 = IERTEJ3A_findFirstEnabledItem(sortedItems, activeId2); return nextItem2 == null ? void 0 : nextItem2.id; } if (canWrap) { const nextItem2 = IERTEJ3A_findFirstEnabledItem( // We can use nextItems, which contains all the next items, including // items from other rows, to wrap between rows. However, if there is a // null item (the composite container), we'll only use the next items in // the row. So moving next from the last item will focus on the // composite container. On grid composites, horizontal navigation never // focuses on the composite container, only vertical. hasNullItem ? nextItemsInRow : nextItems, activeId2 ); const nextId = hasNullItem ? (nextItem2 == null ? void 0 : nextItem2.id) || null : nextItem2 == null ? void 0 : nextItem2.id; return nextId; } const nextItem = IERTEJ3A_findFirstEnabledItem(nextItemsInRow, activeId2); if (!nextItem && hasNullItem) { return null; } return nextItem == null ? void 0 : nextItem.id; }; return _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues(_chunks_4R3V3JGP_spreadValues({}, collection), composite), { setBaseElement: (element) => composite.setState("baseElement", element), setActiveId: (id) => composite.setState("activeId", id), move: (id) => { if (id === void 0) return; composite.setState("activeId", id); composite.setState("moves", (moves) => moves + 1); }, first: () => { var _a2; return (_a2 = IERTEJ3A_findFirstEnabledItem(composite.getState().renderedItems)) == null ? void 0 : _a2.id; }, last: () => { var _a2; return (_a2 = IERTEJ3A_findFirstEnabledItem(reverseArray(composite.getState().renderedItems))) == null ? void 0 : _a2.id; }, next: (skip) => { const { renderedItems, orientation } = composite.getState(); return getNextId(renderedItems, orientation, false, skip); }, previous: (skip) => { var _a2; const { renderedItems, orientation, includesBaseElement } = composite.getState(); const isGrid = !!((_a2 = IERTEJ3A_findFirstEnabledItem(renderedItems)) == null ? void 0 : _a2.rowId); const hasNullItem = !isGrid && includesBaseElement; return getNextId( reverseArray(renderedItems), orientation, hasNullItem, skip ); }, down: (skip) => { const { activeId: activeId2, renderedItems, focusShift, focusLoop, includesBaseElement } = composite.getState(); const shouldShift = focusShift && !skip; const verticalItems = verticalizeItems( flatten2DArray( normalizeRows(IERTEJ3A_groupItemsByRows(renderedItems), activeId2, shouldShift) ) ); const canLoop = focusLoop && focusLoop !== "horizontal"; const hasNullItem = canLoop && includesBaseElement; return getNextId(verticalItems, "vertical", hasNullItem, skip); }, up: (skip) => { const { activeId: activeId2, renderedItems, focusShift, includesBaseElement } = composite.getState(); const shouldShift = focusShift && !skip; const verticalItems = verticalizeItems( reverseArray( flatten2DArray( normalizeRows( IERTEJ3A_groupItemsByRows(renderedItems), activeId2, shouldShift ) ) ) ); const hasNullItem = includesBaseElement; return getNextId(verticalItems, "vertical", hasNullItem, skip); } }); } ;// CONCATENATED MODULE: ./node_modules/@ariakit/core/esm/combobox/combobox-store.js "use client"; // src/combobox/combobox-store.ts var isSafariOnMobile = isSafari() && isTouchDevice(); function createComboboxStore(props = {}) { var _a; throwOnConflictingProps(props, props.store); const syncState = (_a = props.store) == null ? void 0 : _a.getState(); const activeId = defaultValue( props.activeId, syncState == null ? void 0 : syncState.activeId, props.defaultActiveId, null ); const composite = createCompositeStore(_chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, props), { activeId, includesBaseElement: defaultValue( props.includesBaseElement, syncState == null ? void 0 : syncState.includesBaseElement, true ), orientation: defaultValue( props.orientation, syncState == null ? void 0 : syncState.orientation, "vertical" ), focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, true), focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, true), virtualFocus: defaultValue( props.virtualFocus, syncState == null ? void 0 : syncState.virtualFocus, !isSafariOnMobile ) })); const popover = createPopoverStore(_chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues({}, props), { placement: defaultValue( props.placement, syncState == null ? void 0 : syncState.placement, "bottom-start" ) })); const value = defaultValue( props.value, syncState == null ? void 0 : syncState.value, props.defaultValue, "" ); const selectedValue = defaultValue( props.selectedValue, syncState == null ? void 0 : syncState.selectedValue, props.defaultSelectedValue, "" ); const multiSelectable = Array.isArray(selectedValue); const initialState = _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues(_chunks_4R3V3JGP_spreadValues({}, composite.getState()), popover.getState()), { value, selectedValue, resetValueOnSelect: defaultValue( props.resetValueOnSelect, syncState == null ? void 0 : syncState.resetValueOnSelect, multiSelectable ), resetValueOnHide: defaultValue( props.resetValueOnHide, syncState == null ? void 0 : syncState.resetValueOnHide, multiSelectable ), activeValue: syncState == null ? void 0 : syncState.activeValue }); const combobox = createStore(initialState, composite, popover, props.store); setup( combobox, () => sync(combobox, ["resetValueOnHide", "mounted"], (state) => { if (!state.resetValueOnHide) return; if (state.mounted) return; combobox.setState("value", value); }) ); setup( combobox, () => sync(combobox, ["resetValueOnSelect", "selectedValue"], (state) => { if (!state.resetValueOnSelect) return; combobox.setState("value", value); }) ); setup( combobox, () => batch(combobox, ["mounted"], (state) => { if (state.mounted) return; combobox.setState("activeId", activeId); combobox.setState("moves", 0); }) ); setup( combobox, () => sync(combobox, ["moves", "activeId"], (state, prevState) => { if (state.moves === prevState.moves) { combobox.setState("activeValue", void 0); } }) ); setup( combobox, () => batch(combobox, ["moves", "renderedItems"], (state, prev) => { if (state.moves === prev.moves) return; const { activeId: activeId2 } = combobox.getState(); const activeItem = composite.item(activeId2); combobox.setState("activeValue", activeItem == null ? void 0 : activeItem.value); }) ); return _chunks_4R3V3JGP_spreadProps(_chunks_4R3V3JGP_spreadValues(_chunks_4R3V3JGP_spreadValues(_chunks_4R3V3JGP_spreadValues({}, popover), composite), combobox), { setValue: (value2) => combobox.setState("value", value2), setSelectedValue: (selectedValue2) => combobox.setState("selectedValue", selectedValue2) }); } ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/ZKJ2WLF7.js "use client"; // src/combobox/combobox-store.ts function useComboboxStoreProps(store, update, props) { store = usePopoverStoreProps(store, update, props); store = useCompositeStoreProps(store, update, props); useStoreProps(store, props, "value", "setValue"); useStoreProps(store, props, "selectedValue", "setSelectedValue"); useStoreProps(store, props, "resetValueOnHide"); useStoreProps(store, props, "resetValueOnSelect"); return store; } function useComboboxStore(props = {}) { const [store, update] = EKQEJRUF_useStore(createComboboxStore, props); return useComboboxStoreProps(store, update, props); } ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/OAYFXAQ2.js "use client"; // src/disclosure/disclosure-context.tsx var OAYFXAQ2_ctx = createStoreContext(); var useDisclosureContext = OAYFXAQ2_ctx.useContext; var useDisclosureScopedContext = OAYFXAQ2_ctx.useScopedContext; var useDisclosureProviderContext = OAYFXAQ2_ctx.useProviderContext; var DisclosureContextProvider = OAYFXAQ2_ctx.ContextProvider; var DisclosureScopedContextProvider = OAYFXAQ2_ctx.ScopedContextProvider; ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/G6BJYYBK.js "use client"; // src/dialog/dialog-context.tsx var G6BJYYBK_ctx = createStoreContext( [DisclosureContextProvider], [DisclosureScopedContextProvider] ); var useDialogContext = G6BJYYBK_ctx.useContext; var useDialogScopedContext = G6BJYYBK_ctx.useScopedContext; var useDialogProviderContext = G6BJYYBK_ctx.useProviderContext; var DialogContextProvider = G6BJYYBK_ctx.ContextProvider; var DialogScopedContextProvider = G6BJYYBK_ctx.ScopedContextProvider; var DialogHeadingContext = (0,external_React_.createContext)(void 0); var DialogDescriptionContext = (0,external_React_.createContext)(void 0); ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/7H5KSHHF.js "use client"; // src/popover/popover-context.tsx var _7H5KSHHF_ctx = createStoreContext( [DialogContextProvider], [DialogScopedContextProvider] ); var usePopoverContext = _7H5KSHHF_ctx.useContext; var usePopoverScopedContext = _7H5KSHHF_ctx.useScopedContext; var usePopoverProviderContext = _7H5KSHHF_ctx.useProviderContext; var PopoverContextProvider = _7H5KSHHF_ctx.ContextProvider; var PopoverScopedContextProvider = _7H5KSHHF_ctx.ScopedContextProvider; ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/W76OTZCC.js "use client"; // src/combobox/combobox-context.tsx var W76OTZCC_ctx = createStoreContext( [PopoverContextProvider, CompositeContextProvider], [PopoverScopedContextProvider, CompositeScopedContextProvider] ); var useComboboxContext = W76OTZCC_ctx.useContext; var useComboboxScopedContext = W76OTZCC_ctx.useScopedContext; var useComboboxProviderContext = W76OTZCC_ctx.useProviderContext; var ComboboxContextProvider = W76OTZCC_ctx.ContextProvider; var ComboboxScopedContextProvider = W76OTZCC_ctx.ScopedContextProvider; var ComboboxItemValueContext = (0,external_React_.createContext)( void 0 ); var ComboboxItemCheckedContext = (0,external_React_.createContext)(false); ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/combobox/combobox-provider.js "use client"; // src/combobox/combobox-provider.tsx function ComboboxProvider(props = {}) { const store = useComboboxStore(props); return /* @__PURE__ */ (0,external_ReactJSXRuntime_namespaceObject.jsx)(ComboboxContextProvider, { value: store, children: props.children }); } ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/combobox/combobox-label.js "use client"; // src/combobox/combobox-label.ts var useComboboxLabel = createHook( (_a) => { var _b = _a, { store } = _b, props = __objRest(_b, ["store"]); const context = useComboboxProviderContext(); store = store || context; invariant( store, false && 0 ); const comboboxId = store.useState((state) => { var _a2; return (_a2 = state.baseElement) == null ? void 0 : _a2.id; }); props = _4R3V3JGP_spreadValues({ htmlFor: comboboxId }, props); return props; } ); var ComboboxLabel = createMemoComponent( (props) => { const htmlProps = useComboboxLabel(props); return createElement("label", htmlProps); } ); if (false) {} ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/JCH6MLL2.js "use client"; // src/popover/popover-anchor.ts var usePopoverAnchor = createHook( (_a) => { var _b = _a, { store } = _b, props = __objRest(_b, ["store"]); const context = usePopoverProviderContext(); store = store || context; props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({}, props), { ref: useMergeRefs(store == null ? void 0 : store.setAnchorElement, props.ref) }); return props; } ); var PopoverAnchor = createComponent((props) => { const htmlProps = usePopoverAnchor(props); return createElement("div", htmlProps); }); if (false) {} ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/SHA3WOPI.js "use client"; // src/focusable/focusable-context.ts var FocusableContext = (0,external_React_.createContext)(true); ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/KK7H3W2B.js "use client"; // src/focusable/focusable.ts var isSafariBrowser = isSafari(); var alwaysFocusVisibleInputTypes = [ "text", "search", "url", "tel", "email", "password", "number", "date", "month", "week", "time", "datetime", "datetime-local" ]; function isAlwaysFocusVisible(element) { const { tagName, readOnly, type } = element; if (tagName === "TEXTAREA" && !readOnly) return true; if (tagName === "SELECT" && !readOnly) return true; if (tagName === "INPUT" && !readOnly) { return alwaysFocusVisibleInputTypes.includes(type); } if (element.isContentEditable) return true; return false; } function isAlwaysFocusVisibleDelayed(element) { const role = element.getAttribute("role"); if (role !== "combobox") return false; return !!element.dataset.name; } function getLabels(element) { if ("labels" in element) { return element.labels; } return null; } function isNativeCheckboxOrRadio(element) { const tagName = element.tagName.toLowerCase(); if (tagName === "input" && element.type) { return element.type === "radio" || element.type === "checkbox"; } return false; } function isNativeTabbable(tagName) { if (!tagName) return true; return tagName === "button" || tagName === "input" || tagName === "select" || tagName === "textarea" || tagName === "a"; } function supportsDisabledAttribute(tagName) { if (!tagName) return true; return tagName === "button" || tagName === "input" || tagName === "select" || tagName === "textarea"; } function getTabIndex(focusable, trulyDisabled, nativeTabbable, supportsDisabled, tabIndexProp) { if (!focusable) { return tabIndexProp; } if (trulyDisabled) { if (nativeTabbable && !supportsDisabled) { return -1; } return; } if (nativeTabbable) { return tabIndexProp; } return tabIndexProp || 0; } function useDisableEvent(onEvent, disabled) { return useEvent((event) => { onEvent == null ? void 0 : onEvent(event); if (event.defaultPrevented) return; if (disabled) { event.stopPropagation(); event.preventDefault(); } }); } var isKeyboardModality = true; function onGlobalMouseDown(event) { const target = event.target; if (target && "hasAttribute" in target) { if (!target.hasAttribute("data-focus-visible")) { isKeyboardModality = false; } } } function onGlobalKeyDown(event) { if (event.metaKey) return; if (event.ctrlKey) return; if (event.altKey) return; isKeyboardModality = true; } var useFocusable = createHook( (_a) => { var _b = _a, { focusable = true, accessibleWhenDisabled, autoFocus, onFocusVisible } = _b, props = __objRest(_b, [ "focusable", "accessibleWhenDisabled", "autoFocus", "onFocusVisible" ]); const ref = (0,external_React_.useRef)(null); (0,external_React_.useEffect)(() => { if (!focusable) return; addGlobalEventListener("mousedown", onGlobalMouseDown, true); addGlobalEventListener("keydown", onGlobalKeyDown, true); }, [focusable]); if (isSafariBrowser) { (0,external_React_.useEffect)(() => { if (!focusable) return; const element = ref.current; if (!element) return; if (!isNativeCheckboxOrRadio(element)) return; const labels = getLabels(element); if (!labels) return; const onMouseUp = () => queueMicrotask(() => element.focus()); labels.forEach((label) => label.addEventListener("mouseup", onMouseUp)); return () => { labels.forEach( (label) => label.removeEventListener("mouseup", onMouseUp) ); }; }, [focusable]); } const disabled = focusable && disabledFromProps(props); const trulyDisabled = !!disabled && !accessibleWhenDisabled; const [focusVisible, setFocusVisible] = (0,external_React_.useState)(false); (0,external_React_.useEffect)(() => { if (!focusable) return; if (trulyDisabled && focusVisible) { setFocusVisible(false); } }, [focusable, trulyDisabled, focusVisible]); (0,external_React_.useEffect)(() => { if (!focusable) return; if (!focusVisible) return; const element = ref.current; if (!element) return; if (typeof IntersectionObserver === "undefined") return; const observer = new IntersectionObserver(() => { if (!isFocusable(element)) { setFocusVisible(false); } }); observer.observe(element); return () => observer.disconnect(); }, [focusable, focusVisible]); const onKeyPressCapture = useDisableEvent( props.onKeyPressCapture, disabled ); const onMouseDownCapture = useDisableEvent( props.onMouseDownCapture, disabled ); const onClickCapture = useDisableEvent(props.onClickCapture, disabled); const onMouseDownProp = props.onMouseDown; const onMouseDown = useEvent((event) => { onMouseDownProp == null ? void 0 : onMouseDownProp(event); if (event.defaultPrevented) return; if (!focusable) return; const element = event.currentTarget; if (!isSafariBrowser) return; if (isPortalEvent(event)) return; if (!isButton(element) && !isNativeCheckboxOrRadio(element)) return; let receivedFocus = false; const onFocus = () => { receivedFocus = true; }; const options = { capture: true, once: true }; element.addEventListener("focusin", onFocus, options); queueBeforeEvent(element, "mouseup", () => { element.removeEventListener("focusin", onFocus, true); if (receivedFocus) return; focusIfNeeded(element); }); }); const handleFocusVisible = (event, currentTarget) => { if (currentTarget) { event.currentTarget = currentTarget; } if (!focusable) return; const element = event.currentTarget; if (!element) return; if (!hasFocus(element)) return; onFocusVisible == null ? void 0 : onFocusVisible(event); if (event.defaultPrevented) return; setFocusVisible(true); }; const onKeyDownCaptureProp = props.onKeyDownCapture; const onKeyDownCapture = useEvent( (event) => { onKeyDownCaptureProp == null ? void 0 : onKeyDownCaptureProp(event); if (event.defaultPrevented) return; if (!focusable) return; if (focusVisible) return; if (event.metaKey) return; if (event.altKey) return; if (event.ctrlKey) return; if (!isSelfTarget(event)) return; const element = event.currentTarget; queueMicrotask(() => handleFocusVisible(event, element)); } ); const onFocusCaptureProp = props.onFocusCapture; const onFocusCapture = useEvent((event) => { onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event); if (event.defaultPrevented) return; if (!focusable) return; if (!isSelfTarget(event)) { setFocusVisible(false); return; } const element = event.currentTarget; const applyFocusVisible = () => handleFocusVisible(event, element); if (isKeyboardModality || isAlwaysFocusVisible(event.target)) { queueMicrotask(applyFocusVisible); } else if (isAlwaysFocusVisibleDelayed(event.target)) { queueBeforeEvent(event.target, "focusout", applyFocusVisible); } else { setFocusVisible(false); } }); const onBlurProp = props.onBlur; const onBlur = useEvent((event) => { onBlurProp == null ? void 0 : onBlurProp(event); if (!focusable) return; if (!isFocusEventOutside(event)) return; setFocusVisible(false); }); const autoFocusOnShow = (0,external_React_.useContext)(FocusableContext); const autoFocusRef = useEvent((element) => { if (!focusable) return; if (!autoFocus) return; if (!element) return; if (!autoFocusOnShow) return; queueMicrotask(() => { if (hasFocus(element)) return; if (!isFocusable(element)) return; element.focus(); }); }); const tagName = useTagName(ref, props.as); const nativeTabbable = focusable && isNativeTabbable(tagName); const supportsDisabled = focusable && supportsDisabledAttribute(tagName); const style = trulyDisabled ? _4R3V3JGP_spreadValues({ pointerEvents: "none" }, props.style) : props.style; props = _4R3V3JGP_spreadProps(_4R3V3JGP_spreadValues({ "data-focus-visible": focusable && focusVisible ? "" : void 0, "data-autofocus": autoFocus ? true : void 0, "aria-disabled": disabled ? true : void 0 }, props), { ref: useMergeRefs(ref, autoFocusRef, props.ref), style, tabIndex: getTabIndex( focusable, trulyDisabled, nativeTabbable, supportsDisabled, props.tabIndex ), disabled: supportsDisabled && trulyDisabled ? true : void 0, // TODO: Test Focusable contentEditable. contentEditable: disabled ? void 0 : props.contentEditable, onKeyPressCapture, onClickCapture, onMouseDownCapture, onMouseDown, onKeyDownCapture, onFocusCapture, onBlur }); return props; } ); var Focusable = createComponent((props) => { props = useFocusable(props); return createElement("div", props); }); if (false) {} ;// CONCATENATED MODULE: ./node_modules/@ariakit/react-core/esm/__chunks/7QTPYGNZ.js "use client"; // src/composite/composite.tsx function isGrid(items) { return items.some((item) => !!item.rowId); } function isPrintableKey(event) { const target = event.target; if (target && !DLOEKDPY_isTextField(target)) return false; return event.key.length === 1 && !event.ctrlKey && !event.metaKey; } function isModifierKey(event) { return event.key === "Shift" || event.key === "Control" || event.key === "Alt" || event.key === "Meta"; } function useKeyboardEventProxy(store, onKeyboardEvent, previousElementRef) { return useEvent((event) => { var _a; onKeyboardEvent == null ? void 0 : onKeyboardEvent(event); if (event.defaultPrevented) return; if (event.isPropagationStopped()) return; if (!isSelfTarget(event)) return; if (isModifierKey(event)) return; if (isPrintableKey(event)) return; const state = store.getState(); const activeElement = (_a = getEnabledItem(store, state.activeId)) == null ? void 0 : _a.element; if (!activeElement) return; const _b = event, { view } = _b, eventInit = __objRest(_b, ["view"]); const previousElement = previousElementRef == null ? void 0 : previousElementRef.current; if (activeElement !== previousElement) { activeElement.focus(); } if (!fireKeyboardEvent(activeElement, event.type, eventInit)) { event.preventDefault(); } if (event.currentTarget.contains(activeElement)) { event.stopPropagation(); } }); } function findFirstEnabledItemInTheLastRow(items) { return findFirstEnabledItem( flatten2DArray(reverseArray(groupItemsByRows(items))) ); } function useScheduleFocus(store) { const [scheduled, setScheduled] = (0,external_React_.useState)(false); const schedule = (0,external_React_.useCallback)(() => setScheduled(true), []); const activeItem = store.useState( (state) => getEnabledItem(store, state.activeId) ); (0,external_React_.useEffect)(() => { const activeElement = activeItem == null ? void 0 : activeItem.element; if (!scheduled) return; if (!activeElement) return; setScheduled(false); activeElement.focus({ preventScroll: true }); }, [activeItem, scheduled]); return schedule; } var useComposite = createHook( (_a) => { var _b = _a, { store, composite = true, focusOnMove = composite, moveOnKeyPress = true } = _b, props = __objRest(_b, [ "store", "composite", "focusOnMove", "moveOnKeyPress" ]); const context = useCompositeProviderContext(); store = store || context; invariant( store, false && 0 ); const previousElementRef = (0,external_React_.useRef)(null); const scheduleFocus = useScheduleFocus(store); const moves = store.useState("moves"); (0,external_React_.useEffect)(() => { var _a2; if (!store) return; if (!moves) return; if (!composite) return; if (!focusOnMove) return; const { activeId: activeId2 } = store.getState(); const itemElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element; if (!itemElement) return; focusIntoView(itemElement); }, [store, moves, composite, focusOnMove]); useSafeLayoutEffect(() => { if (!store) return; if (!moves) return; if (!composite) return; const { baseElement, activeId: activeId2 } = store.getState(); const isSelfAcive = activeId2 === null; if (!isSelfAcive) return; if (!baseElement) return; const previousElement = previousElementRef.current; previousElementRef.current = null; if (previousElement) { fireBlurEvent(previousElement, { relatedTarget: baseElement }); } if (!hasFocus(baseElement)) { baseElement.focus(); } }, [store, moves, composite]); const activeId = store.useState("activeId"); const virtualFocus = store.useState("virtualFocus"); useSafeLayoutEffect(() => { var _a2; if (!store) return; if (!composite) return; if (!virtualFocus) return; const previousElement = previousElementRef.current; previousElementRef.current = null; if (!previousElement) return; const activeElement = (_a2 = getEnabledItem(store, activeId)) == null ? void 0 : _a2.element; const relatedTarget = activeElement || DLOEKDPY_getActiveElement(previousElement); if (relatedTarget === previousElement) return; fireBlurEvent(previousElement, { relatedTarget }); }, [store, activeId, virtualFocus, composite]); const onKeyDownCapture = useKeyboardEventProxy( store, props.onKeyDownCapture, previousElementRef ); const onKeyUpCapture = useKeyboardEventProxy( store, props.onKeyUpCapture, previousElementRef ); const onFocusCaptureProp = props.onFocusCapture; const onFocusCapture = useEvent((event) => { onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event); if (event.defaultPrevented) return; if (!store) return; const { virtualFocus: virtualFocus2 } = store.getState(); if (!virtualFocus2) return; const previousActiveElement = event.relatedTarget; const isSilentlyFocused = silentlyFocused(event.currentTarget); if (isSelfTarget(event) && isSilentlyFocused) { event.stopPropagation(); previousElementRef.current = previousActiveElement; } }); const onFocusProp = props.onFocus; const onFocus = useEvent((event) => { onFocusProp == null ? void 0 : onFocusProp(event); if (event.defaultPrevented) return; if (!composite) return; if (!store) return; const { relatedTarget } = event; const { virtualFocus: virtualFocus2 } = store.getState(); if (virtualFocus2) { if (isSelfTarget(event) && !isItem(store, relatedTarget)) { queueMicrotask(scheduleFocus); } } else if (isSelfTarget(event)) { store.setActiveId(null); } }); const onBlurCaptureProp = props.onBlurCapture; const onBlurCapture = useEvent((event) => { var _a2; onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event); if (event.defaultPrevented) return; if (!store) return; const { virtualFocus: virtualFocus2, activeId: activeId2 } = store.getState(); if (!virtualFocus2) return; const activeElement = (_a2 = getEnabledItem(store, activeId2)) == null ? void 0 : _a2.element; const nextActiveElement = event.relatedTarget; const nextActiveElementIsItem = isItem(store, nextActiveElement); const previousElement = previousElementRef.current; previousElementRef.current = null; if (isSelfTarget(event) && nextActiveElementIsItem) { if (nextActiveElement === activeElement) { if (previousElement && previousElement !== nextActiveElement) { fireBlurEvent(previousElement, event); } } else if (activeElement) { fireBlurEvent(activeElement, event); } else if (previousElement) { fireBlurEvent(previousElement, event); } event.stopPropagation(); } else { const targetIsItem = isItem(store, event.target); if (!targetIsItem && activeElement) { fireBlurEvent(activeElement, event); } } }); const onKeyDownProp = props.onKeyDown; const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); const onKeyDown = useEvent((event) => { var _a2; onKeyDownProp == null ? void 0 : onKeyDownProp(event); if (event.defaultPrevented) return; if (!store) return; if (!isSelfTarget(event)) return; const { orientation, items, renderedItems, activeId: activeId2 } = store.getState(); const activeItem = getEnabledItem(store, activeId2); if ((_a2 = activeItem == null ? void 0 : activeItem.element) == null ? void 0 : _a2.isConnected) return; const isVertical = orientation !== "horizontal"; const isHorizontal = orientation !== "vertical"; const grid = isGrid(renderedItems); const isHorizontalKey = event.key === "ArrowLeft" || event.key === "ArrowRight" || event.key === "Home" || event.key === "End"; if (isHorizontalKey && DLOEKDPY_isTextField(event.currentTarget)) return; const up = () => { if (grid) { const item = items && findFirstEnabledItemInTheLastRow(items); return item == null ? void 0 : item.id; } return store == null ? void 0 : store.last(); }; const keyMap = { ArrowUp: (grid || isVertical) && up, ArrowRight: (grid || isHorizontal) && store.first, ArrowDown: (grid || isVertical) && store.first, ArrowLeft: (grid || isHorizontal) && store.last, Home: store.first, End: store.last, PageUp: store.first, PageDown: store.last }; const action = keyMap[event.key]; if (action) { const id = action(); if (id !== void 0) {
•
Search:
•
Replace:
1
2
3
4
5
Function
Edit by line
Download
Information
Rename
Copy
Move
Delete
Chmod
List