{
  "version": 3,
  "sources": ["../../src/screen-revisions/index.tsx"],
  "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\t__experimentalConfirmDialog as ConfirmDialog,\n\tSpinner,\n\tuseNavigator,\n} from '@wordpress/components';\nimport { useContext, useState, useMemo } from '@wordpress/element';\nimport { areGlobalStylesEqual } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { ScreenHeader } from '../screen-header';\nimport { GlobalStylesContext } from '../context';\nimport useGlobalStylesRevisions from './use-global-styles-revisions';\nimport RevisionsButtons from './revisions-buttons';\nimport Pagination from '../pagination';\n\nconst PAGE_SIZE = 10;\n\ninterface ScreenRevisionsProps {\n\tonClose?: () => void;\n}\n\nfunction ScreenRevisions( { onClose }: ScreenRevisionsProps = {} ) {\n\tconst { user: currentEditorGlobalStyles, onChange: setUserConfig } =\n\t\tuseContext( GlobalStylesContext );\n\tconst { params, goTo } = useNavigator();\n\tconst { revisionId } = params;\n\tconst [ currentPage, setCurrentPage ] = useState( 1 );\n\tconst { revisions, isLoading, hasUnsavedChanges, revisionsCount } =\n\t\tuseGlobalStylesRevisions( {\n\t\t\tquery: {\n\t\t\t\tper_page: PAGE_SIZE,\n\t\t\t\tpage: currentPage,\n\t\t\t},\n\t\t} );\n\n\tconst numPages = Math.ceil( revisionsCount / PAGE_SIZE );\n\n\tconst [\n\t\tisLoadingRevisionWithUnsavedChanges,\n\t\tsetIsLoadingRevisionWithUnsavedChanges,\n\t] = useState( false );\n\n\t// Derive the currently selected revision from the path parameter\n\tconst currentlySelectedRevision = useMemo( () => {\n\t\tif ( ! revisionId ) {\n\t\t\treturn currentEditorGlobalStyles;\n\t\t}\n\t\tconst revision = revisions.find(\n\t\t\t( rev ) => String( rev.id ) === String( revisionId )\n\t\t);\n\t\treturn revision || currentEditorGlobalStyles;\n\t}, [ revisionId, revisions, currentEditorGlobalStyles ] );\n\n\tconst selectedRevisionMatchesEditorStyles = areGlobalStylesEqual(\n\t\tcurrentlySelectedRevision,\n\t\tcurrentEditorGlobalStyles\n\t);\n\n\tconst onCloseRevisions = () => {\n\t\tif ( onClose ) {\n\t\t\tonClose();\n\t\t}\n\t};\n\n\tconst restoreRevision = ( revision: any ) => {\n\t\tsetUserConfig( revision );\n\t\tsetIsLoadingRevisionWithUnsavedChanges( false );\n\t\tonCloseRevisions();\n\t};\n\n\tconst handleRevisionSelect = ( revision: any ) => {\n\t\tgoTo( `/revisions/${ revision.id }` );\n\t};\n\n\tconst currentlySelectedRevisionId =\n\t\t// @ts-expect-error: revision id is not present in the fallback (default object).\n\t\tcurrentlySelectedRevision?.id ?? revisions[ 0 ]?.id;\n\n\t// Only display load button if there is a revision to load,\n\t// and it is different from the current editor styles.\n\tconst isLoadButtonEnabled =\n\t\t!! currentlySelectedRevisionId &&\n\t\tcurrentlySelectedRevisionId !== 'unsaved' &&\n\t\t! selectedRevisionMatchesEditorStyles;\n\tconst hasRevisions = !! revisions.length;\n\n\treturn (\n\t\t<>\n\t\t\t<ScreenHeader\n\t\t\t\ttitle={\n\t\t\t\t\trevisionsCount\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: %d: number of revisions.\n\t\t\t\t\t\t\t\t__( 'Revisions (%d)' ),\n\t\t\t\t\t\t\t\trevisionsCount\n\t\t\t\t\t\t  )\n\t\t\t\t\t\t: __( 'Revisions' )\n\t\t\t\t}\n\t\t\t\tdescription={ __(\n\t\t\t\t\t'Click on previously saved styles to preview them. To restore a selected version to the editor, hit \"Apply.\" When you\\'re ready, use the Save button to save your changes.'\n\t\t\t\t) }\n\t\t\t\tonBack={ onCloseRevisions }\n\t\t\t/>\n\t\t\t{ ! hasRevisions && (\n\t\t\t\t<Spinner className=\"global-styles-ui-screen-revisions__loading\" />\n\t\t\t) }\n\t\t\t<RevisionsButtons\n\t\t\t\tonChange={ handleRevisionSelect }\n\t\t\t\tselectedRevisionId={ currentlySelectedRevisionId }\n\t\t\t\tuserRevisions={ revisions }\n\t\t\t\tcanApplyRevision={ isLoadButtonEnabled }\n\t\t\t\tonApplyRevision={ () =>\n\t\t\t\t\thasUnsavedChanges\n\t\t\t\t\t\t? setIsLoadingRevisionWithUnsavedChanges( true )\n\t\t\t\t\t\t: restoreRevision( currentlySelectedRevision )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ numPages > 1 && (\n\t\t\t\t<div className=\"global-styles-ui-screen-revisions__footer\">\n\t\t\t\t\t<Pagination\n\t\t\t\t\t\tclassName=\"global-styles-ui-screen-revisions__pagination\"\n\t\t\t\t\t\tcurrentPage={ currentPage }\n\t\t\t\t\t\tnumPages={ numPages }\n\t\t\t\t\t\tchangePage={ setCurrentPage }\n\t\t\t\t\t\ttotalItems={ revisionsCount }\n\t\t\t\t\t\tdisabled={ isLoading }\n\t\t\t\t\t\tlabel={ __( 'Global Styles pagination' ) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isLoadingRevisionWithUnsavedChanges && (\n\t\t\t\t<ConfirmDialog\n\t\t\t\t\tisOpen={ isLoadingRevisionWithUnsavedChanges }\n\t\t\t\t\tconfirmButtonText={ __( 'Apply' ) }\n\t\t\t\t\tonConfirm={ () =>\n\t\t\t\t\t\trestoreRevision( currentlySelectedRevision )\n\t\t\t\t\t}\n\t\t\t\t\tonCancel={ () =>\n\t\t\t\t\t\tsetIsLoadingRevisionWithUnsavedChanges( false )\n\t\t\t\t\t}\n\t\t\t\t\tsize=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Are you sure you want to apply this revision? Any unsaved changes will be lost.'\n\t\t\t\t\t) }\n\t\t\t\t</ConfirmDialog>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default ScreenRevisions;\n"],
  "mappings": "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",
  "names": []
}
