{
  "version": 3,
  "sources": ["../../../src/components/preview-dropdown/index.js"],
  "sourcesContent": ["import clsx from 'clsx';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\tMenuItemsChoice,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { desktop, mobile, tablet, external, check } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { ActionItem, store as interfaceStore } from '@wordpress/interface';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { privateApis as globalStylesEnginePrivateApis } from '@wordpress/global-styles-engine';\nimport { VisuallyHidden } from '@wordpress/ui';\nimport { store as editorStore } from '../../store';\nimport { PostPreviewMenuItem } from '../post-preview-button';\nimport { sidebars } from '../sidebar/constants';\nimport { VIEWPORT_STATE_BY_DEVICE_TYPE } from '../../utils/device-type';\nimport { unlock } from '../../lock-unlock';\n\nconst { getViewportBreakpoints } = unlock( globalStylesEnginePrivateApis );\n\nexport default function PreviewDropdown( { forceIsAutosaveable, disabled } ) {\n\tconst {\n\t\tdeviceType,\n\t\thomeUrl,\n\t\thasMobileViewport,\n\t\thasTabletViewport,\n\t\tisTemplate,\n\t\tisViewable,\n\t\tshowIconLabels,\n\t\tisTemplateHidden,\n\t\ttemplateId,\n\t\tisResponsiveEditing,\n\t\tisResponsiveEditingEnabled,\n\t\thasBlockSelection,\n\t\tactiveComplementaryArea,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetCurrentPostType,\n\t\t\tgetCurrentTemplateId,\n\t\t\tgetRenderingMode,\n\t\t\tgetDeviceType,\n\t\t\tgetEditorSettings,\n\t\t} = unlock( select( editorStore ) );\n\t\tconst {\n\t\t\tisResponsiveEditing: _isResponsiveEditing,\n\t\t\tgetBlockSelectionStart,\n\t\t\tgetSettings,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst { getEntityRecord, getPostType } = select( coreStore );\n\t\tconst { get } = select( preferencesStore );\n\t\tconst _currentPostType = getCurrentPostType();\n\t\tconst viewportBreakpoints = getViewportBreakpoints(\n\t\t\tgetSettings().__experimentalFeatures?.viewport\n\t\t);\n\t\treturn {\n\t\t\tdeviceType: getDeviceType(),\n\t\t\thomeUrl: getEntityRecord( 'root', '__unstableBase' )?.home,\n\t\t\thasMobileViewport: viewportBreakpoints.mobile !== undefined,\n\t\t\thasTabletViewport: viewportBreakpoints.tablet !== undefined,\n\t\t\tisTemplate: _currentPostType === 'wp_template',\n\t\t\tisViewable: getPostType( _currentPostType )?.viewable ?? false,\n\t\t\tshowIconLabels: get( 'core', 'showIconLabels' ),\n\t\t\tisTemplateHidden: getRenderingMode() === 'post-only',\n\t\t\ttemplateId: getCurrentTemplateId(),\n\t\t\tisResponsiveEditing: _isResponsiveEditing(),\n\t\t\tisResponsiveEditingEnabled:\n\t\t\t\tgetEditorSettings().responsiveEditingEnabled,\n\t\t\thasBlockSelection: !! getBlockSelectionStart(),\n\t\t\tactiveComplementaryArea:\n\t\t\t\tselect( interfaceStore ).getActiveComplementaryArea( 'core' ),\n\t\t};\n\t}, [] );\n\tconst { setDeviceType, setRenderingMode, setDefaultRenderingMode } = unlock(\n\t\tuseDispatch( editorStore )\n\t);\n\tconst { resetZoomLevel, setStyleStateViewport, setResponsiveEditing } =\n\t\tunlock( useDispatch( blockEditorStore ) );\n\tconst { enableComplementaryArea } = useDispatch( interfaceStore );\n\n\tconst handleDevicePreviewChange = ( newDeviceType ) => {\n\t\tsetDeviceType( newDeviceType );\n\t\tresetZoomLevel();\n\t};\n\n\tconst handleResponsiveEditingChange = () => {\n\t\tconst newIsResponsiveEditing = ! isResponsiveEditing;\n\t\tsetResponsiveEditing( newIsResponsiveEditing );\n\t\tsetStyleStateViewport(\n\t\t\tnewIsResponsiveEditing\n\t\t\t\t? VIEWPORT_STATE_BY_DEVICE_TYPE[ deviceType ] ?? 'default'\n\t\t\t\t: 'default'\n\t\t);\n\t\t// Only auto-open the block inspector when enabling responsive styles\n\t\t// for a selected block and no complementary area is already open.\n\t\tif (\n\t\t\tnewIsResponsiveEditing &&\n\t\t\thasBlockSelection &&\n\t\t\t! activeComplementaryArea\n\t\t) {\n\t\t\tenableComplementaryArea( 'core', sidebars.block );\n\t\t}\n\t};\n\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\tif ( isMobile ) {\n\t\treturn null;\n\t}\n\n\tconst popoverProps = {\n\t\tplacement: 'bottom-end',\n\t};\n\tconst toggleProps = {\n\t\tclassName: 'editor-preview-dropdown__toggle',\n\t\ticonPosition: 'right',\n\t\tsize: 'compact',\n\t\tshowTooltip: ! showIconLabels,\n\t\tdisabled,\n\t\taccessibleWhenDisabled: disabled,\n\t};\n\tconst menuProps = {\n\t\t'aria-label': __( 'View options' ),\n\t};\n\n\tconst deviceIcons = {\n\t\tdesktop,\n\t\tmobile,\n\t\ttablet,\n\t};\n\n\t/**\n\t * The choices for the device type.\n\t * Duplicated in block-editor block-visibility constants, and in the edit-site\n\t * and boot `viewport` modules. Update all four when adding new viewport types.\n\t *\n\t * @type {Array}\n\t */\n\tconst choices = [\n\t\t{\n\t\t\tvalue: 'Desktop',\n\t\t\tlabel: __( 'Desktop' ),\n\t\t\ticon: desktop,\n\t\t\tinfo: isResponsiveEditing\n\t\t\t\t? __( 'Style all viewports.' )\n\t\t\t\t: __( 'Preview desktop viewport.' ),\n\t\t},\n\t\t...( hasTabletViewport\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: 'Tablet',\n\t\t\t\t\t\tlabel: __( 'Tablet' ),\n\t\t\t\t\t\ticon: tablet,\n\t\t\t\t\t\tinfo: isResponsiveEditing\n\t\t\t\t\t\t\t? __( 'Style tablet only.' )\n\t\t\t\t\t\t\t: __( 'Preview tablet viewport.' ),\n\t\t\t\t\t},\n\t\t\t  ]\n\t\t\t: [] ),\n\t\t...( hasMobileViewport\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: 'Mobile',\n\t\t\t\t\t\tlabel: __( 'Mobile' ),\n\t\t\t\t\t\ticon: mobile,\n\t\t\t\t\t\tinfo: isResponsiveEditing\n\t\t\t\t\t\t\t? __( 'Style mobile only.' )\n\t\t\t\t\t\t\t: __( 'Preview mobile viewport.' ),\n\t\t\t\t\t},\n\t\t\t  ]\n\t\t\t: [] ),\n\t];\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\tclassName={ clsx(\n\t\t\t\t'editor-preview-dropdown',\n\t\t\t\t`editor-preview-dropdown--${ deviceType.toLowerCase() }`,\n\t\t\t\t{ 'is-responsive-editing': isResponsiveEditing }\n\t\t\t) }\n\t\t\tpopoverProps={ popoverProps }\n\t\t\ttoggleProps={ toggleProps }\n\t\t\tmenuProps={ menuProps }\n\t\t\ticon={ deviceIcons[ deviceType.toLowerCase() ] }\n\t\t\tlabel={ __( 'View' ) }\n\t\t\tdisableOpenOnArrowDown={ disabled }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\t\tchoices={ choices }\n\t\t\t\t\t\t\tvalue={ deviceType }\n\t\t\t\t\t\t\tonSelect={ handleDevicePreviewChange }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t{ isResponsiveEditingEnabled && (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\ticon={ isResponsiveEditing ? check : undefined }\n\t\t\t\t\t\t\t\tisSelected={ isResponsiveEditing }\n\t\t\t\t\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t\t\t\t\t\tonClick={ handleResponsiveEditingChange }\n\t\t\t\t\t\t\t\tinfo={ __(\n\t\t\t\t\t\t\t\t\t'Style changes apply only to the selected viewport.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Responsive styles' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isTemplate && (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\thref={ homeUrl }\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'View site' ) }\n\t\t\t\t\t\t\t\t<VisuallyHidden render={ <span /> }>\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t/* translators: accessibility text */\n\t\t\t\t\t\t\t\t\t\t__( '(opens in a new tab)' )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! isTemplate && !! templateId && (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\ticon={ ! isTemplateHidden ? check : undefined }\n\t\t\t\t\t\t\t\tisSelected={ ! isTemplateHidden }\n\t\t\t\t\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tconst newRenderingMode = isTemplateHidden\n\t\t\t\t\t\t\t\t\t\t? 'template-locked'\n\t\t\t\t\t\t\t\t\t\t: 'post-only';\n\t\t\t\t\t\t\t\t\tsetRenderingMode( newRenderingMode );\n\t\t\t\t\t\t\t\t\tsetDefaultRenderingMode( newRenderingMode );\n\t\t\t\t\t\t\t\t\tresetZoomLevel();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Show template' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isViewable && (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t<PostPreviewMenuItem\n\t\t\t\t\t\t\t\tforceIsAutosaveable={ forceIsAutosaveable }\n\t\t\t\t\t\t\t\tonPreview={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t\t<ActionItem.Slot\n\t\t\t\t\t\tname=\"core/plugin-preview-menu\"\n\t\t\t\t\t\tfillProps={ { onClick: onClose } }\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n"],
  "mappings": "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",
  "names": []
}
