@wordpress/editor 11.0.1 → 12.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/README.md +1 -1
- package/build/components/autosave-monitor/index.js +5 -0
- package/build/components/autosave-monitor/index.js.map +1 -1
- package/build/components/character-count/index.js +1 -1
- package/build/components/character-count/index.js.map +1 -1
- package/build/components/editor-help/add-blocks.native.js +6 -5
- package/build/components/editor-help/add-blocks.native.js.map +1 -1
- package/build/components/editor-help/customize-blocks.native.js +7 -6
- package/build/components/editor-help/customize-blocks.native.js.map +1 -1
- package/build/components/editor-help/help-detail-navigation-screen.native.js +29 -15
- package/build/components/editor-help/help-detail-navigation-screen.native.js.map +1 -1
- package/build/components/editor-help/help-get-support-button.native.js +46 -0
- package/build/components/editor-help/help-get-support-button.native.js.map +1 -0
- package/build/components/editor-help/help-topic-row.native.js +3 -2
- package/build/components/editor-help/help-topic-row.native.js.map +1 -1
- package/build/components/editor-help/index.native.js +87 -26
- package/build/components/editor-help/index.native.js.map +1 -1
- package/build/components/editor-help/intro-to-blocks.native.js +19 -9
- package/build/components/editor-help/intro-to-blocks.native.js.map +1 -1
- package/build/components/editor-help/move-blocks.native.js +6 -5
- package/build/components/editor-help/move-blocks.native.js.map +1 -1
- package/build/components/editor-help/remove-blocks.native.js +6 -5
- package/build/components/editor-help/remove-blocks.native.js.map +1 -1
- package/build/components/editor-help/view-sections.native.js +23 -5
- package/build/components/editor-help/view-sections.native.js.map +1 -1
- package/build/components/entities-saved-states/entity-type-list.js +22 -13
- package/build/components/entities-saved-states/entity-type-list.js.map +1 -1
- package/build/components/entities-saved-states/index.js +23 -4
- package/build/components/entities-saved-states/index.js.map +1 -1
- package/build/components/global-keyboard-shortcuts/save-shortcut.js +12 -14
- package/build/components/global-keyboard-shortcuts/save-shortcut.js.map +1 -1
- package/build/components/global-keyboard-shortcuts/visual-editor-shortcuts.js +0 -4
- package/build/components/global-keyboard-shortcuts/visual-editor-shortcuts.js.map +1 -1
- package/build/components/index.js +9 -0
- package/build/components/index.js.map +1 -1
- package/build/components/local-autosave-monitor/index.js +1 -2
- package/build/components/local-autosave-monitor/index.js.map +1 -1
- package/build/components/post-format/index.js +3 -1
- package/build/components/post-format/index.js.map +1 -1
- package/build/components/post-locked-modal/index.js +1 -1
- package/build/components/post-locked-modal/index.js.map +1 -1
- package/build/components/post-saved-state/index.js +37 -46
- package/build/components/post-saved-state/index.js.map +1 -1
- package/build/components/post-taxonomies/flat-term-selector.js +154 -211
- package/build/components/post-taxonomies/flat-term-selector.js.map +1 -1
- package/build/components/post-title/index.js +53 -25
- package/build/components/post-title/index.js.map +1 -1
- package/build/components/provider/index.native.js +18 -7
- package/build/components/provider/index.native.js.map +1 -1
- package/build/components/provider/use-block-editor-settings.js +32 -5
- package/build/components/provider/use-block-editor-settings.js.map +1 -1
- package/build/components/word-count/index.js +1 -1
- package/build/components/word-count/index.js.map +1 -1
- package/build/store/actions.js +13 -38
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.js +7 -2
- package/build/store/defaults.js.map +1 -1
- package/build/store/selectors.js +4 -93
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils/notice-builder.js +15 -18
- package/build/store/utils/notice-builder.js.map +1 -1
- package/build/{store/utils → utils}/get-template-part-icon.js +1 -1
- package/build/utils/get-template-part-icon.js.map +1 -0
- package/build/utils/index.js +8 -0
- package/build/utils/index.js.map +1 -1
- package/build-module/components/autosave-monitor/index.js +5 -0
- package/build-module/components/autosave-monitor/index.js.map +1 -1
- package/build-module/components/character-count/index.js +1 -1
- package/build-module/components/character-count/index.js.map +1 -1
- package/build-module/components/editor-help/add-blocks.native.js +7 -6
- package/build-module/components/editor-help/add-blocks.native.js.map +1 -1
- package/build-module/components/editor-help/customize-blocks.native.js +8 -7
- package/build-module/components/editor-help/customize-blocks.native.js.map +1 -1
- package/build-module/components/editor-help/help-detail-navigation-screen.native.js +31 -18
- package/build-module/components/editor-help/help-detail-navigation-screen.native.js.map +1 -1
- package/build-module/components/editor-help/help-get-support-button.native.js +34 -0
- package/build-module/components/editor-help/help-get-support-button.native.js.map +1 -0
- package/build-module/components/editor-help/help-topic-row.native.js +3 -2
- package/build-module/components/editor-help/help-topic-row.native.js.map +1 -1
- package/build-module/components/editor-help/index.native.js +81 -28
- package/build-module/components/editor-help/index.native.js.map +1 -1
- package/build-module/components/editor-help/intro-to-blocks.native.js +19 -10
- package/build-module/components/editor-help/intro-to-blocks.native.js.map +1 -1
- package/build-module/components/editor-help/move-blocks.native.js +7 -6
- package/build-module/components/editor-help/move-blocks.native.js.map +1 -1
- package/build-module/components/editor-help/remove-blocks.native.js +7 -6
- package/build-module/components/editor-help/remove-blocks.native.js.map +1 -1
- package/build-module/components/editor-help/view-sections.native.js +22 -5
- package/build-module/components/editor-help/view-sections.native.js.map +1 -1
- package/build-module/components/entities-saved-states/entity-type-list.js +24 -13
- package/build-module/components/entities-saved-states/entity-type-list.js.map +1 -1
- package/build-module/components/entities-saved-states/index.js +23 -4
- package/build-module/components/entities-saved-states/index.js.map +1 -1
- package/build-module/components/global-keyboard-shortcuts/save-shortcut.js +12 -14
- package/build-module/components/global-keyboard-shortcuts/save-shortcut.js.map +1 -1
- package/build-module/components/global-keyboard-shortcuts/visual-editor-shortcuts.js +0 -4
- package/build-module/components/global-keyboard-shortcuts/visual-editor-shortcuts.js.map +1 -1
- package/build-module/components/index.js +1 -0
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/local-autosave-monitor/index.js +1 -2
- package/build-module/components/local-autosave-monitor/index.js.map +1 -1
- package/build-module/components/post-format/index.js +4 -2
- package/build-module/components/post-format/index.js.map +1 -1
- package/build-module/components/post-locked-modal/index.js +1 -1
- package/build-module/components/post-locked-modal/index.js.map +1 -1
- package/build-module/components/post-saved-state/index.js +38 -46
- package/build-module/components/post-saved-state/index.js.map +1 -1
- package/build-module/components/post-taxonomies/flat-term-selector.js +156 -214
- package/build-module/components/post-taxonomies/flat-term-selector.js.map +1 -1
- package/build-module/components/post-title/index.js +53 -22
- package/build-module/components/post-title/index.js.map +1 -1
- package/build-module/components/provider/index.native.js +18 -7
- package/build-module/components/provider/index.native.js.map +1 -1
- package/build-module/components/provider/use-block-editor-settings.js +31 -5
- package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
- package/build-module/components/word-count/index.js +1 -1
- package/build-module/components/word-count/index.js.map +1 -1
- package/build-module/store/actions.js +13 -36
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.js +7 -2
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/selectors.js +3 -85
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/store/utils/notice-builder.js +15 -18
- package/build-module/store/utils/notice-builder.js.map +1 -1
- package/build-module/{store/utils → utils}/get-template-part-icon.js +2 -2
- package/build-module/utils/get-template-part-icon.js.map +1 -0
- package/build-module/utils/index.js +1 -0
- package/build-module/utils/index.js.map +1 -1
- package/build-style/style-rtl.css +9 -60
- package/build-style/style.css +9 -60
- package/package.json +28 -28
- package/src/components/autosave-monitor/index.js +5 -0
- package/src/components/autosave-monitor/test/index.js +10 -4
- package/src/components/character-count/index.js +3 -2
- package/src/components/editor-help/add-blocks.native.js +17 -12
- package/src/components/editor-help/customize-blocks.native.js +16 -13
- package/src/components/editor-help/help-detail-navigation-screen.native.js +45 -15
- package/src/components/editor-help/help-get-support-button.native.js +38 -0
- package/src/components/editor-help/help-topic-row.native.js +2 -2
- package/src/components/editor-help/images/add-dark.png +0 -0
- package/src/components/editor-help/images/add-dark@2x.png +0 -0
- package/src/components/editor-help/images/add-dark@3x.png +0 -0
- package/src/components/editor-help/images/add-light.png +0 -0
- package/src/components/editor-help/images/add-light@2x.png +0 -0
- package/src/components/editor-help/images/add-light@3x.png +0 -0
- package/src/components/editor-help/images/block-layout-collage.png +0 -0
- package/src/components/editor-help/images/block-layout-collage@2x.png +0 -0
- package/src/components/editor-help/images/block-layout-collage@3x.png +0 -0
- package/src/components/editor-help/images/build-layouts-dark.png +0 -0
- package/src/components/editor-help/images/build-layouts-dark@2x.png +0 -0
- package/src/components/editor-help/images/build-layouts-dark@3x.png +0 -0
- package/src/components/editor-help/images/build-layouts-light.png +0 -0
- package/src/components/editor-help/images/build-layouts-light@2x.png +0 -0
- package/src/components/editor-help/images/build-layouts-light@3x.png +0 -0
- package/src/components/editor-help/images/edit-media-dark.png +0 -0
- package/src/components/editor-help/images/edit-media-dark@2x.png +0 -0
- package/src/components/editor-help/images/edit-media-dark@3x.png +0 -0
- package/src/components/editor-help/images/edit-media-light.png +0 -0
- package/src/components/editor-help/images/edit-media-light@2x.png +0 -0
- package/src/components/editor-help/images/edit-media-light@3x.png +0 -0
- package/src/components/editor-help/images/embed-media-dark.png +0 -0
- package/src/components/editor-help/images/embed-media-dark@2x.png +0 -0
- package/src/components/editor-help/images/embed-media-dark@3x.png +0 -0
- package/src/components/editor-help/images/embed-media-light.png +0 -0
- package/src/components/editor-help/images/embed-media-light@2x.png +0 -0
- package/src/components/editor-help/images/embed-media-light@3x.png +0 -0
- package/src/components/editor-help/images/move-dark.png +0 -0
- package/src/components/editor-help/images/move-dark@2x.png +0 -0
- package/src/components/editor-help/images/move-dark@3x.png +0 -0
- package/src/components/editor-help/images/move-light.png +0 -0
- package/src/components/editor-help/images/move-light@2x.png +0 -0
- package/src/components/editor-help/images/move-light@3x.png +0 -0
- package/src/components/editor-help/images/options-dark.png +0 -0
- package/src/components/editor-help/images/options-dark@2x.png +0 -0
- package/src/components/editor-help/images/options-dark@3x.png +0 -0
- package/src/components/editor-help/images/options-light.png +0 -0
- package/src/components/editor-help/images/options-light@2x.png +0 -0
- package/src/components/editor-help/images/options-light@3x.png +0 -0
- package/src/components/editor-help/images/rich-text-dark.png +0 -0
- package/src/components/editor-help/images/rich-text-dark@2x.png +0 -0
- package/src/components/editor-help/images/rich-text-dark@3x.png +0 -0
- package/src/components/editor-help/images/rich-text-light.png +0 -0
- package/src/components/editor-help/images/rich-text-light@2x.png +0 -0
- package/src/components/editor-help/images/rich-text-light@3x.png +0 -0
- package/src/components/editor-help/images/settings-dark.png +0 -0
- package/src/components/editor-help/images/settings-dark@2x.png +0 -0
- package/src/components/editor-help/images/settings-dark@3x.png +0 -0
- package/src/components/editor-help/images/settings-light.png +0 -0
- package/src/components/editor-help/images/settings-light@2x.png +0 -0
- package/src/components/editor-help/images/settings-light@3x.png +0 -0
- package/src/components/editor-help/index.native.js +147 -43
- package/src/components/editor-help/intro-to-blocks.native.js +63 -43
- package/src/components/editor-help/move-blocks.native.js +12 -7
- package/src/components/editor-help/remove-blocks.native.js +11 -8
- package/src/components/editor-help/style.android.scss +6 -0
- package/src/components/editor-help/style.ios.scss +6 -0
- package/src/components/editor-help/style.scss +49 -32
- package/src/components/editor-help/test/index.native.js +80 -0
- package/src/components/editor-help/view-sections.native.js +47 -4
- package/src/components/entities-saved-states/entity-type-list.js +29 -10
- package/src/components/entities-saved-states/index.js +38 -8
- package/src/components/global-keyboard-shortcuts/save-shortcut.js +34 -42
- package/src/components/global-keyboard-shortcuts/visual-editor-shortcuts.js +8 -16
- package/src/components/index.js +1 -0
- package/src/components/local-autosave-monitor/index.js +1 -3
- package/src/components/post-format/index.js +6 -2
- package/src/components/post-format/style.scss +1 -0
- package/src/components/post-locked-modal/index.js +1 -1
- package/src/components/post-saved-state/index.js +41 -55
- package/src/components/post-saved-state/style.scss +10 -1
- package/src/components/post-saved-state/test/__snapshots__/index.js.snap +20 -0
- package/src/components/post-saved-state/test/index.js +2 -2
- package/src/components/post-taxonomies/flat-term-selector.js +220 -254
- package/src/components/post-title/index.js +47 -30
- package/src/components/post-title/style.scss +1 -70
- package/src/components/provider/index.native.js +17 -5
- package/src/components/provider/use-block-editor-settings.js +25 -2
- package/src/components/word-count/index.js +3 -2
- package/src/store/actions.js +13 -41
- package/src/store/defaults.js +7 -2
- package/src/store/selectors.js +2 -112
- package/src/store/test/actions.js +4 -2
- package/src/store/utils/notice-builder.js +17 -19
- package/src/store/utils/test/notice-builder.js +1 -1
- package/src/{store/utils → utils}/get-template-part-icon.js +2 -2
- package/src/utils/index.js +1 -0
- package/build/store/utils/get-template-part-icon.js.map +0 -1
- package/build-module/store/utils/get-template-part-icon.js.map +0 -1
- package/src/components/editor-help/images/add-blocks.png +0 -0
- package/src/components/editor-help/images/customize-blocks.png +0 -0
- package/src/components/editor-help/images/cut-copy-duplicate-blocks.png +0 -0
- package/src/components/editor-help/images/edit-or-replace-media.png +0 -0
- package/src/components/editor-help/images/intro-blocks-1.png +0 -0
- package/src/components/editor-help/images/intro-blocks-2.png +0 -0
- package/src/components/editor-help/images/intro-blocks-3.png +0 -0
- package/src/components/editor-help/images/intro-blocks-4.png +0 -0
- package/src/components/editor-help/images/move-blocks.png +0 -0
- package/src/components/editor-help/images/remove-blocks.png +0 -0
- package/src/components/editor-help/images/what-is-a-block.png +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/local-autosave-monitor/index.js"],"names":["requestIdleCallback","window","requestAnimationFrame","hasSessionStorageSupport","sessionStorage","setItem","removeItem","error","useAutosaveNotice","postId","isEditedPostNew","hasRemoteAutosave","select","editorStore","getCurrentPostId","getEditedPostAttribute","getEditorSettings","autosave","createWarningNotice","removeNotice","noticesStore","editPost","resetEditorBlocks","localAutosave","JSON","parse","post_title","title","content","excerpt","edits","hasDifference","Object","keys","some","key","noticeId","id","actions","label","onClick","useAutosavePurge","isDirty","isAutosaving","didError","isEditedPostDirty","isAutosavingPost","didPostSaveRequestFail","lastIsDirty","lastIsAutosaving","current","wasEditedPostNew","prevPostId","LocalAutosaveMonitor","deferredAutosave","local","localAutosaveInterval","__experimentalLocalAutosaveInterval"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { once, uniqueId, omit } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useCallback, useEffect, useRef } from '@wordpress/element';\nimport { ifCondition, usePrevious } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { parse } from '@wordpress/blocks';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport AutosaveMonitor from '../autosave-monitor';\nimport { localAutosaveGet, localAutosaveClear } from '../../store/controls';\nimport { store as editorStore } from '../../store';\n\nconst requestIdleCallback = window.requestIdleCallback\n\t? window.requestIdleCallback\n\t: window.requestAnimationFrame;\n\n/**\n * Function which returns true if the current environment supports browser\n * sessionStorage, or false otherwise. The result of this function is cached and\n * reused in subsequent invocations.\n */\nconst hasSessionStorageSupport = once( () => {\n\ttry {\n\t\t// Private Browsing in Safari 10 and earlier will throw an error when\n\t\t// attempting to set into sessionStorage. The test here is intentional in\n\t\t// causing a thrown error as condition bailing from local autosave.\n\t\twindow.sessionStorage.setItem( '__wpEditorTestSessionStorage', '' );\n\t\twindow.sessionStorage.removeItem( '__wpEditorTestSessionStorage' );\n\t\treturn true;\n\t} catch ( error ) {\n\t\treturn false;\n\t}\n} );\n\n/**\n * Custom hook which manages the creation of a notice prompting the user to\n * restore a local autosave, if one exists.\n */\nfunction useAutosaveNotice() {\n\tconst { postId, isEditedPostNew, hasRemoteAutosave } = useSelect(\n\t\t( select ) => ( {\n\t\t\tpostId: select( editorStore ).getCurrentPostId(),\n\t\t\tisEditedPostNew: select( editorStore ).isEditedPostNew(),\n\t\t\tgetEditedPostAttribute: select( editorStore )\n\t\t\t\t.getEditedPostAttribute,\n\t\t\thasRemoteAutosave: !! select( editorStore ).getEditorSettings()\n\t\t\t\t.autosave,\n\t\t} ),\n\t\t[]\n\t);\n\tconst { getEditedPostAttribute } = useSelect( 'core/editor' );\n\n\tconst { createWarningNotice, removeNotice } = useDispatch( noticesStore );\n\tconst { editPost, resetEditorBlocks } = useDispatch( editorStore );\n\n\tuseEffect( () => {\n\t\tlet localAutosave = localAutosaveGet( postId, isEditedPostNew );\n\t\tif ( ! localAutosave ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tlocalAutosave = JSON.parse( localAutosave );\n\t\t} catch ( error ) {\n\t\t\t// Not usable if it can't be parsed.\n\t\t\treturn;\n\t\t}\n\n\t\tconst { post_title: title, content, excerpt } = localAutosave;\n\t\tconst edits = { title, content, excerpt };\n\n\t\t{\n\t\t\t// Only display a notice if there is a difference between what has been\n\t\t\t// saved and that which is stored in sessionStorage.\n\t\t\tconst hasDifference = Object.keys( edits ).some( ( key ) => {\n\t\t\t\treturn edits[ key ] !== getEditedPostAttribute( key );\n\t\t\t} );\n\n\t\t\tif ( ! hasDifference ) {\n\t\t\t\t// If there is no difference, it can be safely ejected from storage.\n\t\t\t\tlocalAutosaveClear( postId, isEditedPostNew );\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif ( hasRemoteAutosave ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst noticeId = uniqueId( 'wpEditorAutosaveRestore' );\n\t\tcreateWarningNotice(\n\t\t\t__(\n\t\t\t\t'The backup of this post in your browser is different from the version below.'\n\t\t\t),\n\t\t\t{\n\t\t\t\tid: noticeId,\n\t\t\t\tactions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: __( 'Restore the backup' ),\n\t\t\t\t\t\tonClick() {\n\t\t\t\t\t\t\teditPost( omit( edits, [ 'content' ] ) );\n\t\t\t\t\t\t\tresetEditorBlocks( parse( edits.content ) );\n\t\t\t\t\t\t\tremoveNotice( noticeId );\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t);\n\t}, [ isEditedPostNew, postId ] );\n}\n\n/**\n * Custom hook which ejects a local autosave after a successful save occurs.\n */\nfunction useAutosavePurge() {\n\tconst {\n\t\tpostId,\n\t\tisEditedPostNew,\n\t\tisDirty,\n\t\tisAutosaving,\n\t\tdidError,\n\t} = useSelect(\n\t\t( select ) => ( {\n\t\t\tpostId: select( editorStore ).getCurrentPostId(),\n\t\t\tisEditedPostNew: select( editorStore ).isEditedPostNew(),\n\t\t\tisDirty: select( editorStore ).isEditedPostDirty(),\n\t\t\tisAutosaving: select( editorStore ).isAutosavingPost(),\n\t\t\tdidError: select( editorStore ).didPostSaveRequestFail(),\n\t\t} ),\n\t\t[]\n\t);\n\n\tconst lastIsDirty = useRef( isDirty );\n\tconst lastIsAutosaving = useRef( isAutosaving );\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\t! didError &&\n\t\t\t( ( lastIsAutosaving.current && ! isAutosaving ) ||\n\t\t\t\t( lastIsDirty.current && ! isDirty ) )\n\t\t) {\n\t\t\tlocalAutosaveClear( postId, isEditedPostNew );\n\t\t}\n\n\t\tlastIsDirty.current = isDirty;\n\t\tlastIsAutosaving.current = isAutosaving;\n\t}, [ isDirty, isAutosaving, didError ] );\n\n\t// Once the isEditedPostNew changes from true to false, let's clear the auto-draft autosave.\n\tconst wasEditedPostNew = usePrevious( isEditedPostNew );\n\tconst prevPostId = usePrevious( postId );\n\tuseEffect( () => {\n\t\tif ( prevPostId === postId && wasEditedPostNew && ! isEditedPostNew ) {\n\t\t\tlocalAutosaveClear( postId, true );\n\t\t}\n\t}, [ isEditedPostNew, postId ] );\n}\n\nfunction LocalAutosaveMonitor() {\n\tconst { autosave } = useDispatch( editorStore );\n\tconst deferredAutosave = useCallback( () => {\n\t\trequestIdleCallback( () => autosave( { local: true } ) );\n\t}, [] );\n\tuseAutosaveNotice();\n\tuseAutosavePurge();\n\n\tconst { localAutosaveInterval } = useSelect(\n\t\t( select ) => ( {\n\t\t\tlocalAutosaveInterval: select( editorStore ).getEditorSettings()\n\t\t\t\t.__experimentalLocalAutosaveInterval,\n\t\t} ),\n\t\t[]\n\t);\n\n\treturn (\n\t\t<AutosaveMonitor\n\t\t\tinterval={ localAutosaveInterval }\n\t\t\tautosave={ deferredAutosave }\n\t\t/>\n\t);\n}\n\nexport default ifCondition( hasSessionStorageSupport )( LocalAutosaveMonitor );\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/local-autosave-monitor/index.js"],"names":["requestIdleCallback","window","requestAnimationFrame","hasSessionStorageSupport","sessionStorage","setItem","removeItem","error","useAutosaveNotice","postId","isEditedPostNew","hasRemoteAutosave","select","editorStore","getCurrentPostId","getEditorSettings","autosave","getEditedPostAttribute","createWarningNotice","removeNotice","noticesStore","editPost","resetEditorBlocks","localAutosave","JSON","parse","post_title","title","content","excerpt","edits","hasDifference","Object","keys","some","key","noticeId","id","actions","label","onClick","useAutosavePurge","isDirty","isAutosaving","didError","isEditedPostDirty","isAutosavingPost","didPostSaveRequestFail","lastIsDirty","lastIsAutosaving","current","wasEditedPostNew","prevPostId","LocalAutosaveMonitor","deferredAutosave","local","localAutosaveInterval","__experimentalLocalAutosaveInterval"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { once, uniqueId, omit } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useCallback, useEffect, useRef } from '@wordpress/element';\nimport { ifCondition, usePrevious } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { parse } from '@wordpress/blocks';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport AutosaveMonitor from '../autosave-monitor';\nimport { localAutosaveGet, localAutosaveClear } from '../../store/controls';\nimport { store as editorStore } from '../../store';\n\nconst requestIdleCallback = window.requestIdleCallback\n\t? window.requestIdleCallback\n\t: window.requestAnimationFrame;\n\n/**\n * Function which returns true if the current environment supports browser\n * sessionStorage, or false otherwise. The result of this function is cached and\n * reused in subsequent invocations.\n */\nconst hasSessionStorageSupport = once( () => {\n\ttry {\n\t\t// Private Browsing in Safari 10 and earlier will throw an error when\n\t\t// attempting to set into sessionStorage. The test here is intentional in\n\t\t// causing a thrown error as condition bailing from local autosave.\n\t\twindow.sessionStorage.setItem( '__wpEditorTestSessionStorage', '' );\n\t\twindow.sessionStorage.removeItem( '__wpEditorTestSessionStorage' );\n\t\treturn true;\n\t} catch ( error ) {\n\t\treturn false;\n\t}\n} );\n\n/**\n * Custom hook which manages the creation of a notice prompting the user to\n * restore a local autosave, if one exists.\n */\nfunction useAutosaveNotice() {\n\tconst { postId, isEditedPostNew, hasRemoteAutosave } = useSelect(\n\t\t( select ) => ( {\n\t\t\tpostId: select( editorStore ).getCurrentPostId(),\n\t\t\tisEditedPostNew: select( editorStore ).isEditedPostNew(),\n\t\t\thasRemoteAutosave: !! select( editorStore ).getEditorSettings()\n\t\t\t\t.autosave,\n\t\t} ),\n\t\t[]\n\t);\n\tconst { getEditedPostAttribute } = useSelect( editorStore );\n\n\tconst { createWarningNotice, removeNotice } = useDispatch( noticesStore );\n\tconst { editPost, resetEditorBlocks } = useDispatch( editorStore );\n\n\tuseEffect( () => {\n\t\tlet localAutosave = localAutosaveGet( postId, isEditedPostNew );\n\t\tif ( ! localAutosave ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tlocalAutosave = JSON.parse( localAutosave );\n\t\t} catch ( error ) {\n\t\t\t// Not usable if it can't be parsed.\n\t\t\treturn;\n\t\t}\n\n\t\tconst { post_title: title, content, excerpt } = localAutosave;\n\t\tconst edits = { title, content, excerpt };\n\n\t\t{\n\t\t\t// Only display a notice if there is a difference between what has been\n\t\t\t// saved and that which is stored in sessionStorage.\n\t\t\tconst hasDifference = Object.keys( edits ).some( ( key ) => {\n\t\t\t\treturn edits[ key ] !== getEditedPostAttribute( key );\n\t\t\t} );\n\n\t\t\tif ( ! hasDifference ) {\n\t\t\t\t// If there is no difference, it can be safely ejected from storage.\n\t\t\t\tlocalAutosaveClear( postId, isEditedPostNew );\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif ( hasRemoteAutosave ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst noticeId = uniqueId( 'wpEditorAutosaveRestore' );\n\t\tcreateWarningNotice(\n\t\t\t__(\n\t\t\t\t'The backup of this post in your browser is different from the version below.'\n\t\t\t),\n\t\t\t{\n\t\t\t\tid: noticeId,\n\t\t\t\tactions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: __( 'Restore the backup' ),\n\t\t\t\t\t\tonClick() {\n\t\t\t\t\t\t\teditPost( omit( edits, [ 'content' ] ) );\n\t\t\t\t\t\t\tresetEditorBlocks( parse( edits.content ) );\n\t\t\t\t\t\t\tremoveNotice( noticeId );\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t);\n\t}, [ isEditedPostNew, postId ] );\n}\n\n/**\n * Custom hook which ejects a local autosave after a successful save occurs.\n */\nfunction useAutosavePurge() {\n\tconst {\n\t\tpostId,\n\t\tisEditedPostNew,\n\t\tisDirty,\n\t\tisAutosaving,\n\t\tdidError,\n\t} = useSelect(\n\t\t( select ) => ( {\n\t\t\tpostId: select( editorStore ).getCurrentPostId(),\n\t\t\tisEditedPostNew: select( editorStore ).isEditedPostNew(),\n\t\t\tisDirty: select( editorStore ).isEditedPostDirty(),\n\t\t\tisAutosaving: select( editorStore ).isAutosavingPost(),\n\t\t\tdidError: select( editorStore ).didPostSaveRequestFail(),\n\t\t} ),\n\t\t[]\n\t);\n\n\tconst lastIsDirty = useRef( isDirty );\n\tconst lastIsAutosaving = useRef( isAutosaving );\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\t! didError &&\n\t\t\t( ( lastIsAutosaving.current && ! isAutosaving ) ||\n\t\t\t\t( lastIsDirty.current && ! isDirty ) )\n\t\t) {\n\t\t\tlocalAutosaveClear( postId, isEditedPostNew );\n\t\t}\n\n\t\tlastIsDirty.current = isDirty;\n\t\tlastIsAutosaving.current = isAutosaving;\n\t}, [ isDirty, isAutosaving, didError ] );\n\n\t// Once the isEditedPostNew changes from true to false, let's clear the auto-draft autosave.\n\tconst wasEditedPostNew = usePrevious( isEditedPostNew );\n\tconst prevPostId = usePrevious( postId );\n\tuseEffect( () => {\n\t\tif ( prevPostId === postId && wasEditedPostNew && ! isEditedPostNew ) {\n\t\t\tlocalAutosaveClear( postId, true );\n\t\t}\n\t}, [ isEditedPostNew, postId ] );\n}\n\nfunction LocalAutosaveMonitor() {\n\tconst { autosave } = useDispatch( editorStore );\n\tconst deferredAutosave = useCallback( () => {\n\t\trequestIdleCallback( () => autosave( { local: true } ) );\n\t}, [] );\n\tuseAutosaveNotice();\n\tuseAutosavePurge();\n\n\tconst { localAutosaveInterval } = useSelect(\n\t\t( select ) => ( {\n\t\t\tlocalAutosaveInterval: select( editorStore ).getEditorSettings()\n\t\t\t\t.__experimentalLocalAutosaveInterval,\n\t\t} ),\n\t\t[]\n\t);\n\n\treturn (\n\t\t<AutosaveMonitor\n\t\t\tinterval={ localAutosaveInterval }\n\t\t\tautosave={ deferredAutosave }\n\t\t/>\n\t);\n}\n\nexport default ifCondition( hasSessionStorageSupport )( LocalAutosaveMonitor );\n"]}
|
|
@@ -137,6 +137,8 @@ function PostFormat() {
|
|
|
137
137
|
}, (0, _i18n.__)('Suggestion:'), ' ', (0, _element.createElement)(_components.Button, {
|
|
138
138
|
variant: "link",
|
|
139
139
|
onClick: () => onUpdatePostFormat(suggestion.id)
|
|
140
|
-
},
|
|
140
|
+
}, (0, _i18n.sprintf)(
|
|
141
|
+
/* translators: %s: post format */
|
|
142
|
+
(0, _i18n.__)('Apply format: %s'), suggestion.caption)))));
|
|
141
143
|
}
|
|
142
144
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-format/index.js"],"names":["POST_FORMATS","id","caption","sort","a","b","normalizedA","toUpperCase","normalizedB","PostFormat","instanceId","postFormatSelectorId","postFormat","suggestedFormat","supportedFormats","select","getEditedPostAttribute","getSuggestedPostFormat","editorStore","_postFormat","themeSupports","coreStore","getThemeSupports","formats","filter","format","suggestion","editPost","onUpdatePostFormat","map","label","value"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-format/index.js"],"names":["POST_FORMATS","id","caption","sort","a","b","normalizedA","toUpperCase","normalizedB","PostFormat","instanceId","postFormatSelectorId","postFormat","suggestedFormat","supportedFormats","select","getEditedPostAttribute","getSuggestedPostFormat","editorStore","_postFormat","themeSupports","coreStore","getThemeSupports","formats","filter","format","suggestion","editPost","onUpdatePostFormat","map","label","value"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { find, get, includes, union } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { Button, SelectControl } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useInstanceId } from '@wordpress/compose';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport PostFormatCheck from './check';\nimport { store as editorStore } from '../../store';\n\n// All WP post formats, sorted alphabetically by translated name.\nexport const POST_FORMATS = [\n\t{ id: 'aside', caption: __( 'Aside' ) },\n\t{ id: 'audio', caption: __( 'Audio' ) },\n\t{ id: 'chat', caption: __( 'Chat' ) },\n\t{ id: 'gallery', caption: __( 'Gallery' ) },\n\t{ id: 'image', caption: __( 'Image' ) },\n\t{ id: 'link', caption: __( 'Link' ) },\n\t{ id: 'quote', caption: __( 'Quote' ) },\n\t{ id: 'standard', caption: __( 'Standard' ) },\n\t{ id: 'status', caption: __( 'Status' ) },\n\t{ id: 'video', caption: __( 'Video' ) },\n].sort( ( a, b ) => {\n\tconst normalizedA = a.caption.toUpperCase();\n\tconst normalizedB = b.caption.toUpperCase();\n\n\tif ( normalizedA < normalizedB ) {\n\t\treturn -1;\n\t}\n\tif ( normalizedA > normalizedB ) {\n\t\treturn 1;\n\t}\n\treturn 0;\n} );\n\nexport default function PostFormat() {\n\tconst instanceId = useInstanceId( PostFormat );\n\tconst postFormatSelectorId = `post-format-selector-${ instanceId }`;\n\n\tconst { postFormat, suggestedFormat, supportedFormats } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedPostAttribute, getSuggestedPostFormat } = select(\n\t\t\t\teditorStore\n\t\t\t);\n\t\t\tconst _postFormat = getEditedPostAttribute( 'format' );\n\t\t\tconst themeSupports = select( coreStore ).getThemeSupports();\n\t\t\treturn {\n\t\t\t\tpostFormat: _postFormat ?? 'standard',\n\t\t\t\tsuggestedFormat: getSuggestedPostFormat(),\n\t\t\t\t// Ensure current format is always in the set.\n\t\t\t\t// The current format may not be a format supported by the theme.\n\t\t\t\tsupportedFormats: union(\n\t\t\t\t\t[ _postFormat ],\n\t\t\t\t\tget( themeSupports, [ 'formats' ], [] )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst formats = POST_FORMATS.filter( ( format ) =>\n\t\tincludes( supportedFormats, format.id )\n\t);\n\tconst suggestion = find(\n\t\tformats,\n\t\t( format ) => format.id === suggestedFormat\n\t);\n\n\tconst { editPost } = useDispatch( editorStore );\n\n\tconst onUpdatePostFormat = ( format ) => editPost( { format } );\n\n\treturn (\n\t\t<PostFormatCheck>\n\t\t\t<div className=\"editor-post-format\">\n\t\t\t\t<div className=\"editor-post-format__content\">\n\t\t\t\t\t<label htmlFor={ postFormatSelectorId }>\n\t\t\t\t\t\t{ __( 'Post Format' ) }\n\t\t\t\t\t</label>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\tvalue={ postFormat }\n\t\t\t\t\t\tonChange={ ( format ) => onUpdatePostFormat( format ) }\n\t\t\t\t\t\tid={ postFormatSelectorId }\n\t\t\t\t\t\toptions={ formats.map( ( format ) => ( {\n\t\t\t\t\t\t\tlabel: format.caption,\n\t\t\t\t\t\t\tvalue: format.id,\n\t\t\t\t\t\t} ) ) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t{ suggestion && suggestion.id !== postFormat && (\n\t\t\t\t\t<div className=\"editor-post-format__suggestion\">\n\t\t\t\t\t\t{ __( 'Suggestion:' ) }{ ' ' }\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\tonUpdatePostFormat( suggestion.id )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: post format */\n\t\t\t\t\t\t\t\t__( 'Apply format: %s' ),\n\t\t\t\t\t\t\t\tsuggestion.caption\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</PostFormatCheck>\n\t);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-locked-modal/index.js"],"names":["PostLockedModal","instanceId","hookName","autosave","updatePostLock","editorStore","isLocked","isTakeover","user","postId","postLockUtils","activePostLock","postType","select","isPostLocked","isPostLockTakeover","getPostLockUser","getCurrentPostId","getActivePostLock","getEditedPostAttribute","getEditorSettings","getPostType","coreStore","sendPostLock","data","lock","post_id","receivePostLock","received","lock_error","avatar","avatar_src","new_lock","releasePostLock","window","FormData","append","unlockNonce","navigator","sendBeacon","ajaxUrl","xhr","XMLHttpRequest","open","send","addEventListener","removeEventListener","userDisplayName","name","userAvatar","unlockUrl","lockKey","post","action","_wpnonce","nonce","allPostsUrl","post_type","allPostsLabel"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { Modal, Button } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { addQueryArgs } from '@wordpress/url';\nimport { useEffect } from '@wordpress/element';\nimport { addAction, removeAction } from '@wordpress/hooks';\nimport { useInstanceId } from '@wordpress/compose';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { getWPAdminURL } from '../../utils/url';\nimport PostPreviewButton from '../post-preview-button';\nimport { store as editorStore } from '../../store';\n\nexport default function PostLockedModal() {\n\tconst instanceId = useInstanceId( PostLockedModal );\n\tconst hookName = 'core/editor/post-locked-modal-' + instanceId;\n\tconst { autosave, updatePostLock } = useDispatch( editorStore );\n\tconst {\n\t\tisLocked,\n\t\tisTakeover,\n\t\tuser,\n\t\tpostId,\n\t\tpostLockUtils,\n\t\tactivePostLock,\n\t\tpostType,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tisPostLocked,\n\t\t\tisPostLockTakeover,\n\t\t\tgetPostLockUser,\n\t\t\tgetCurrentPostId,\n\t\t\tgetActivePostLock,\n\t\t\tgetEditedPostAttribute,\n\t\t\tgetEditorSettings,\n\t\t} = select( editorStore );\n\t\tconst { getPostType } = select( coreStore );\n\t\treturn {\n\t\t\tisLocked: isPostLocked(),\n\t\t\tisTakeover: isPostLockTakeover(),\n\t\t\tuser: getPostLockUser(),\n\t\t\tpostId: getCurrentPostId(),\n\t\t\tpostLockUtils: getEditorSettings().postLockUtils,\n\t\t\tactivePostLock: getActivePostLock(),\n\t\t\tpostType: getPostType( getEditedPostAttribute( 'type' ) ),\n\t\t};\n\t} );\n\n\tuseEffect( () => {\n\t\t/**\n\t\t * Keep the lock refreshed.\n\t\t *\n\t\t * When the user does not send a heartbeat in a heartbeat-tick\n\t\t * the user is no longer editing and another user can start editing.\n\t\t *\n\t\t * @param {Object} data Data to send in the heartbeat request.\n\t\t */\n\t\tfunction sendPostLock( data ) {\n\t\t\tif ( isLocked ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdata[ 'wp-refresh-post-lock' ] = {\n\t\t\t\tlock: activePostLock,\n\t\t\t\tpost_id: postId,\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Refresh post locks: update the lock string or show the dialog if somebody has taken over editing.\n\t\t *\n\t\t * @param {Object} data Data received in the heartbeat request\n\t\t */\n\t\tfunction receivePostLock( data ) {\n\t\t\tif ( ! data[ 'wp-refresh-post-lock' ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst received = data[ 'wp-refresh-post-lock' ];\n\t\t\tif ( received.lock_error ) {\n\t\t\t\t// Auto save and display the takeover modal.\n\t\t\t\tautosave();\n\t\t\t\tupdatePostLock( {\n\t\t\t\t\tisLocked: true,\n\t\t\t\t\tisTakeover: true,\n\t\t\t\t\tuser: {\n\t\t\t\t\t\tavatar: received.lock_error.avatar_src,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t} else if ( received.new_lock ) {\n\t\t\t\tupdatePostLock( {\n\t\t\t\t\tisLocked: false,\n\t\t\t\t\tactivePostLock: received.new_lock,\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Unlock the post before the window is exited.\n\t\t */\n\t\tfunction releasePostLock() {\n\t\t\tif ( isLocked || ! activePostLock ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst data = new window.FormData();\n\t\t\tdata.append( 'action', 'wp-remove-post-lock' );\n\t\t\tdata.append( '_wpnonce', postLockUtils.unlockNonce );\n\t\t\tdata.append( 'post_ID', postId );\n\t\t\tdata.append( 'active_post_lock', activePostLock );\n\n\t\t\tif ( window.navigator.sendBeacon ) {\n\t\t\t\twindow.navigator.sendBeacon( postLockUtils.ajaxUrl, data );\n\t\t\t} else {\n\t\t\t\tconst xhr = new window.XMLHttpRequest();\n\t\t\t\txhr.open( 'POST', postLockUtils.ajaxUrl, false );\n\t\t\t\txhr.send( data );\n\t\t\t}\n\t\t}\n\n\t\t// Details on these events on the Heartbeat API docs\n\t\t// https://developer.wordpress.org/plugins/javascript/heartbeat-api/\n\t\taddAction( 'heartbeat.send', hookName, sendPostLock );\n\t\taddAction( 'heartbeat.tick', hookName, receivePostLock );\n\t\twindow.addEventListener( 'beforeunload', releasePostLock );\n\n\t\treturn () => {\n\t\t\tremoveAction( 'heartbeat.send', hookName );\n\t\t\tremoveAction( 'heartbeat.tick', hookName );\n\t\t\twindow.removeEventListener( 'beforeunload', releasePostLock );\n\t\t};\n\t}, [] );\n\n\tif ( ! isLocked ) {\n\t\treturn null;\n\t}\n\n\tconst userDisplayName = user.name;\n\tconst userAvatar = user.avatar;\n\n\tconst unlockUrl = addQueryArgs( 'post.php', {\n\t\t'get-post-lock': '1',\n\t\tlockKey: true,\n\t\tpost: postId,\n\t\taction: 'edit',\n\t\t_wpnonce: postLockUtils.nonce,\n\t} );\n\tconst allPostsUrl = getWPAdminURL( 'edit.php', {\n\t\tpost_type: get( postType, [ 'slug' ] ),\n\t} );\n\tconst allPostsLabel = __( 'Exit the Editor' );\n\treturn (\n\t\t<Modal\n\t\t\ttitle={\n\t\t\t\tisTakeover\n\t\t\t\t\t? __( 'Someone else has taken over this post.' )\n\t\t\t\t\t: __( 'This post is already being edited.' )\n\t\t\t}\n\t\t\tfocusOnMount={ true }\n\t\t\tshouldCloseOnClickOutside={ false }\n\t\t\tshouldCloseOnEsc={ false }\n\t\t\tisDismissible={ false }\n\t\t\tclassName=\"editor-post-locked-modal\"\n\t\t>\n\t\t\t{ !! userAvatar && (\n\t\t\t\t<img\n\t\t\t\t\tsrc={ userAvatar }\n\t\t\t\t\talt={ __( 'Avatar' ) }\n\t\t\t\t\tclassName=\"editor-post-locked-modal__avatar\"\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ !! isTakeover && (\n\t\t\t\t<div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t{ userDisplayName\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: user's display name */\n\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t'%s now has editing control of this post. Don’t worry, your changes up to this moment have been saved.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tuserDisplayName\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t'Another user now has editing control of this post. Don’t worry, your changes up to this moment have been saved.'\n\t\t\t\t\t\t\t ) }\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"editor-post-locked-modal__buttons\">\n\t\t\t\t\t\t<Button variant=\"primary\" href={ allPostsUrl }>\n\t\t\t\t\t\t\t{ allPostsLabel }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ ! isTakeover && (\n\t\t\t\t<div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t{ userDisplayName\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: user's display name */\n\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t'%s is currently working on this post, which means you cannot make changes, unless you take over.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tuserDisplayName\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t'Another user is currently working on this post, which means you cannot make changes, unless you take over.'\n\t\t\t\t\t\t\t ) }\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"editor-post-locked-modal__buttons\">\n\t\t\t\t\t\t<Button variant=\"secondary\" href={ allPostsUrl }>\n\t\t\t\t\t\t\t{ allPostsLabel }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<PostPreviewButton />\n\t\t\t\t\t\t<Button variant=\"primary\" href={ unlockUrl }>\n\t\t\t\t\t\t\t{ __( 'Take Over' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</Modal>\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-locked-modal/index.js"],"names":["PostLockedModal","instanceId","hookName","autosave","updatePostLock","editorStore","isLocked","isTakeover","user","postId","postLockUtils","activePostLock","postType","select","isPostLocked","isPostLockTakeover","getPostLockUser","getCurrentPostId","getActivePostLock","getEditedPostAttribute","getEditorSettings","getPostType","coreStore","sendPostLock","data","lock","post_id","receivePostLock","received","lock_error","avatar","avatar_src","new_lock","releasePostLock","window","FormData","append","unlockNonce","navigator","sendBeacon","ajaxUrl","xhr","XMLHttpRequest","open","send","addEventListener","removeEventListener","userDisplayName","name","userAvatar","unlockUrl","lockKey","post","action","_wpnonce","nonce","allPostsUrl","post_type","allPostsLabel"],"mappings":";;;;;;;;;AAYA;;AATA;;AAKA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAKA;;AACA;;AACA;;AAtBA;AACA;AACA;;AAGA;AACA;AACA;;AAUA;AACA;AACA;AAKe,SAASA,eAAT,GAA2B;AACzC,QAAMC,UAAU,GAAG,4BAAeD,eAAf,CAAnB;AACA,QAAME,QAAQ,GAAG,mCAAmCD,UAApD;AACA,QAAM;AAAEE,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,MAA+B,uBAAaC,YAAb,CAArC;AACA,QAAM;AACLC,IAAAA,QADK;AAELC,IAAAA,UAFK;AAGLC,IAAAA,IAHK;AAILC,IAAAA,MAJK;AAKLC,IAAAA,aALK;AAMLC,IAAAA,cANK;AAOLC,IAAAA;AAPK,MAQF,qBAAaC,MAAF,IAAc;AAC5B,UAAM;AACLC,MAAAA,YADK;AAELC,MAAAA,kBAFK;AAGLC,MAAAA,eAHK;AAILC,MAAAA,gBAJK;AAKLC,MAAAA,iBALK;AAMLC,MAAAA,sBANK;AAOLC,MAAAA;AAPK,QAQFP,MAAM,CAAER,YAAF,CARV;AASA,UAAM;AAAEgB,MAAAA;AAAF,QAAkBR,MAAM,CAAES,eAAF,CAA9B;AACA,WAAO;AACNhB,MAAAA,QAAQ,EAAEQ,YAAY,EADhB;AAENP,MAAAA,UAAU,EAAEQ,kBAAkB,EAFxB;AAGNP,MAAAA,IAAI,EAAEQ,eAAe,EAHf;AAINP,MAAAA,MAAM,EAAEQ,gBAAgB,EAJlB;AAKNP,MAAAA,aAAa,EAAEU,iBAAiB,GAAGV,aAL7B;AAMNC,MAAAA,cAAc,EAAEO,iBAAiB,EAN3B;AAONN,MAAAA,QAAQ,EAAES,WAAW,CAAEF,sBAAsB,CAAE,MAAF,CAAxB;AAPf,KAAP;AASA,GApBG,EAoBD,EApBC,CARJ;AA8BA,0BAAW,MAAM;AAChB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,aAASI,YAAT,CAAuBC,IAAvB,EAA8B;AAC7B,UAAKlB,QAAL,EAAgB;AACf;AACA;;AAEDkB,MAAAA,IAAI,CAAE,sBAAF,CAAJ,GAAiC;AAChCC,QAAAA,IAAI,EAAEd,cAD0B;AAEhCe,QAAAA,OAAO,EAAEjB;AAFuB,OAAjC;AAIA;AAED;AACF;AACA;AACA;AACA;;;AACE,aAASkB,eAAT,CAA0BH,IAA1B,EAAiC;AAChC,UAAK,CAAEA,IAAI,CAAE,sBAAF,CAAX,EAAwC;AACvC;AACA;;AAED,YAAMI,QAAQ,GAAGJ,IAAI,CAAE,sBAAF,CAArB;;AACA,UAAKI,QAAQ,CAACC,UAAd,EAA2B;AAC1B;AACA1B,QAAAA,QAAQ;AACRC,QAAAA,cAAc,CAAE;AACfE,UAAAA,QAAQ,EAAE,IADK;AAEfC,UAAAA,UAAU,EAAE,IAFG;AAGfC,UAAAA,IAAI,EAAE;AACLsB,YAAAA,MAAM,EAAEF,QAAQ,CAACC,UAAT,CAAoBE;AADvB;AAHS,SAAF,CAAd;AAOA,OAVD,MAUO,IAAKH,QAAQ,CAACI,QAAd,EAAyB;AAC/B5B,QAAAA,cAAc,CAAE;AACfE,UAAAA,QAAQ,EAAE,KADK;AAEfK,UAAAA,cAAc,EAAEiB,QAAQ,CAACI;AAFV,SAAF,CAAd;AAIA;AACD;AAED;AACF;AACA;;;AACE,aAASC,eAAT,GAA2B;AAC1B,UAAK3B,QAAQ,IAAI,CAAEK,cAAnB,EAAoC;AACnC;AACA;;AAED,YAAMa,IAAI,GAAG,IAAIU,MAAM,CAACC,QAAX,EAAb;AACAX,MAAAA,IAAI,CAACY,MAAL,CAAa,QAAb,EAAuB,qBAAvB;AACAZ,MAAAA,IAAI,CAACY,MAAL,CAAa,UAAb,EAAyB1B,aAAa,CAAC2B,WAAvC;AACAb,MAAAA,IAAI,CAACY,MAAL,CAAa,SAAb,EAAwB3B,MAAxB;AACAe,MAAAA,IAAI,CAACY,MAAL,CAAa,kBAAb,EAAiCzB,cAAjC;;AAEA,UAAKuB,MAAM,CAACI,SAAP,CAAiBC,UAAtB,EAAmC;AAClCL,QAAAA,MAAM,CAACI,SAAP,CAAiBC,UAAjB,CAA6B7B,aAAa,CAAC8B,OAA3C,EAAoDhB,IAApD;AACA,OAFD,MAEO;AACN,cAAMiB,GAAG,GAAG,IAAIP,MAAM,CAACQ,cAAX,EAAZ;AACAD,QAAAA,GAAG,CAACE,IAAJ,CAAU,MAAV,EAAkBjC,aAAa,CAAC8B,OAAhC,EAAyC,KAAzC;AACAC,QAAAA,GAAG,CAACG,IAAJ,CAAUpB,IAAV;AACA;AACD,KAtEe,CAwEhB;AACA;;;AACA,0BAAW,gBAAX,EAA6BtB,QAA7B,EAAuCqB,YAAvC;AACA,0BAAW,gBAAX,EAA6BrB,QAA7B,EAAuCyB,eAAvC;AACAO,IAAAA,MAAM,CAACW,gBAAP,CAAyB,cAAzB,EAAyCZ,eAAzC;AAEA,WAAO,MAAM;AACZ,+BAAc,gBAAd,EAAgC/B,QAAhC;AACA,+BAAc,gBAAd,EAAgCA,QAAhC;AACAgC,MAAAA,MAAM,CAACY,mBAAP,CAA4B,cAA5B,EAA4Cb,eAA5C;AACA,KAJD;AAKA,GAnFD,EAmFG,EAnFH;;AAqFA,MAAK,CAAE3B,QAAP,EAAkB;AACjB,WAAO,IAAP;AACA;;AAED,QAAMyC,eAAe,GAAGvC,IAAI,CAACwC,IAA7B;AACA,QAAMC,UAAU,GAAGzC,IAAI,CAACsB,MAAxB;AAEA,QAAMoB,SAAS,GAAG,uBAAc,UAAd,EAA0B;AAC3C,qBAAiB,GAD0B;AAE3CC,IAAAA,OAAO,EAAE,IAFkC;AAG3CC,IAAAA,IAAI,EAAE3C,MAHqC;AAI3C4C,IAAAA,MAAM,EAAE,MAJmC;AAK3CC,IAAAA,QAAQ,EAAE5C,aAAa,CAAC6C;AALmB,GAA1B,CAAlB;AAOA,QAAMC,WAAW,GAAG,yBAAe,UAAf,EAA2B;AAC9CC,IAAAA,SAAS,EAAE,iBAAK7C,QAAL,EAAe,CAAE,MAAF,CAAf;AADmC,GAA3B,CAApB;AAGA,QAAM8C,aAAa,GAAG,cAAI,iBAAJ,CAAtB;AACA,SACC,4BAAC,iBAAD;AACC,IAAA,KAAK,EACJnD,UAAU,GACP,cAAI,wCAAJ,CADO,GAEP,cAAI,oCAAJ,CAJL;AAMC,IAAA,YAAY,EAAG,IANhB;AAOC,IAAA,yBAAyB,EAAG,KAP7B;AAQC,IAAA,gBAAgB,EAAG,KARpB;AASC,IAAA,aAAa,EAAG,KATjB;AAUC,IAAA,SAAS,EAAC;AAVX,KAYG,CAAC,CAAE0C,UAAH,IACD;AACC,IAAA,GAAG,EAAGA,UADP;AAEC,IAAA,GAAG,EAAG,cAAI,QAAJ,CAFP;AAGC,IAAA,SAAS,EAAC;AAHX,IAbF,EAmBG,CAAC,CAAE1C,UAAH,IACD,yCACC,yCACGwC,eAAe,GACd;AACA;AACA,gBACC,uGADD,CAFA,EAKAA,eALA,CADc,GAQd,cACA,iHADA,CATJ,CADD,EAeC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,4BAAC,kBAAD;AAAQ,IAAA,OAAO,EAAC,SAAhB;AAA0B,IAAA,IAAI,EAAGS;AAAjC,KACGE,aADH,CADD,CAfD,CApBF,EA0CG,CAAEnD,UAAF,IACD,yCACC,yCACGwC,eAAe,GACd;AACA;AACA,gBACC,kGADD,CAFA,EAKAA,eALA,CADc,GAQd,cACA,4GADA,CATJ,CADD,EAeC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,4BAAC,kBAAD;AAAQ,IAAA,OAAO,EAAC,WAAhB;AAA4B,IAAA,IAAI,EAAGS;AAAnC,KACGE,aADH,CADD,EAIC,4BAAC,0BAAD,OAJD,EAKC,4BAAC,kBAAD;AAAQ,IAAA,OAAO,EAAC,SAAhB;AAA0B,IAAA,IAAI,EAAGR;AAAjC,KACG,cAAI,WAAJ,CADH,CALD,CAfD,CA3CF,CADD;AAwEA","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { Modal, Button } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { addQueryArgs } from '@wordpress/url';\nimport { useEffect } from '@wordpress/element';\nimport { addAction, removeAction } from '@wordpress/hooks';\nimport { useInstanceId } from '@wordpress/compose';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { getWPAdminURL } from '../../utils/url';\nimport PostPreviewButton from '../post-preview-button';\nimport { store as editorStore } from '../../store';\n\nexport default function PostLockedModal() {\n\tconst instanceId = useInstanceId( PostLockedModal );\n\tconst hookName = 'core/editor/post-locked-modal-' + instanceId;\n\tconst { autosave, updatePostLock } = useDispatch( editorStore );\n\tconst {\n\t\tisLocked,\n\t\tisTakeover,\n\t\tuser,\n\t\tpostId,\n\t\tpostLockUtils,\n\t\tactivePostLock,\n\t\tpostType,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tisPostLocked,\n\t\t\tisPostLockTakeover,\n\t\t\tgetPostLockUser,\n\t\t\tgetCurrentPostId,\n\t\t\tgetActivePostLock,\n\t\t\tgetEditedPostAttribute,\n\t\t\tgetEditorSettings,\n\t\t} = select( editorStore );\n\t\tconst { getPostType } = select( coreStore );\n\t\treturn {\n\t\t\tisLocked: isPostLocked(),\n\t\t\tisTakeover: isPostLockTakeover(),\n\t\t\tuser: getPostLockUser(),\n\t\t\tpostId: getCurrentPostId(),\n\t\t\tpostLockUtils: getEditorSettings().postLockUtils,\n\t\t\tactivePostLock: getActivePostLock(),\n\t\t\tpostType: getPostType( getEditedPostAttribute( 'type' ) ),\n\t\t};\n\t}, [] );\n\n\tuseEffect( () => {\n\t\t/**\n\t\t * Keep the lock refreshed.\n\t\t *\n\t\t * When the user does not send a heartbeat in a heartbeat-tick\n\t\t * the user is no longer editing and another user can start editing.\n\t\t *\n\t\t * @param {Object} data Data to send in the heartbeat request.\n\t\t */\n\t\tfunction sendPostLock( data ) {\n\t\t\tif ( isLocked ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdata[ 'wp-refresh-post-lock' ] = {\n\t\t\t\tlock: activePostLock,\n\t\t\t\tpost_id: postId,\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Refresh post locks: update the lock string or show the dialog if somebody has taken over editing.\n\t\t *\n\t\t * @param {Object} data Data received in the heartbeat request\n\t\t */\n\t\tfunction receivePostLock( data ) {\n\t\t\tif ( ! data[ 'wp-refresh-post-lock' ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst received = data[ 'wp-refresh-post-lock' ];\n\t\t\tif ( received.lock_error ) {\n\t\t\t\t// Auto save and display the takeover modal.\n\t\t\t\tautosave();\n\t\t\t\tupdatePostLock( {\n\t\t\t\t\tisLocked: true,\n\t\t\t\t\tisTakeover: true,\n\t\t\t\t\tuser: {\n\t\t\t\t\t\tavatar: received.lock_error.avatar_src,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t} else if ( received.new_lock ) {\n\t\t\t\tupdatePostLock( {\n\t\t\t\t\tisLocked: false,\n\t\t\t\t\tactivePostLock: received.new_lock,\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Unlock the post before the window is exited.\n\t\t */\n\t\tfunction releasePostLock() {\n\t\t\tif ( isLocked || ! activePostLock ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst data = new window.FormData();\n\t\t\tdata.append( 'action', 'wp-remove-post-lock' );\n\t\t\tdata.append( '_wpnonce', postLockUtils.unlockNonce );\n\t\t\tdata.append( 'post_ID', postId );\n\t\t\tdata.append( 'active_post_lock', activePostLock );\n\n\t\t\tif ( window.navigator.sendBeacon ) {\n\t\t\t\twindow.navigator.sendBeacon( postLockUtils.ajaxUrl, data );\n\t\t\t} else {\n\t\t\t\tconst xhr = new window.XMLHttpRequest();\n\t\t\t\txhr.open( 'POST', postLockUtils.ajaxUrl, false );\n\t\t\t\txhr.send( data );\n\t\t\t}\n\t\t}\n\n\t\t// Details on these events on the Heartbeat API docs\n\t\t// https://developer.wordpress.org/plugins/javascript/heartbeat-api/\n\t\taddAction( 'heartbeat.send', hookName, sendPostLock );\n\t\taddAction( 'heartbeat.tick', hookName, receivePostLock );\n\t\twindow.addEventListener( 'beforeunload', releasePostLock );\n\n\t\treturn () => {\n\t\t\tremoveAction( 'heartbeat.send', hookName );\n\t\t\tremoveAction( 'heartbeat.tick', hookName );\n\t\t\twindow.removeEventListener( 'beforeunload', releasePostLock );\n\t\t};\n\t}, [] );\n\n\tif ( ! isLocked ) {\n\t\treturn null;\n\t}\n\n\tconst userDisplayName = user.name;\n\tconst userAvatar = user.avatar;\n\n\tconst unlockUrl = addQueryArgs( 'post.php', {\n\t\t'get-post-lock': '1',\n\t\tlockKey: true,\n\t\tpost: postId,\n\t\taction: 'edit',\n\t\t_wpnonce: postLockUtils.nonce,\n\t} );\n\tconst allPostsUrl = getWPAdminURL( 'edit.php', {\n\t\tpost_type: get( postType, [ 'slug' ] ),\n\t} );\n\tconst allPostsLabel = __( 'Exit the Editor' );\n\treturn (\n\t\t<Modal\n\t\t\ttitle={\n\t\t\t\tisTakeover\n\t\t\t\t\t? __( 'Someone else has taken over this post.' )\n\t\t\t\t\t: __( 'This post is already being edited.' )\n\t\t\t}\n\t\t\tfocusOnMount={ true }\n\t\t\tshouldCloseOnClickOutside={ false }\n\t\t\tshouldCloseOnEsc={ false }\n\t\t\tisDismissible={ false }\n\t\t\tclassName=\"editor-post-locked-modal\"\n\t\t>\n\t\t\t{ !! userAvatar && (\n\t\t\t\t<img\n\t\t\t\t\tsrc={ userAvatar }\n\t\t\t\t\talt={ __( 'Avatar' ) }\n\t\t\t\t\tclassName=\"editor-post-locked-modal__avatar\"\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ !! isTakeover && (\n\t\t\t\t<div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t{ userDisplayName\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: user's display name */\n\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t'%s now has editing control of this post. Don’t worry, your changes up to this moment have been saved.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tuserDisplayName\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t'Another user now has editing control of this post. Don’t worry, your changes up to this moment have been saved.'\n\t\t\t\t\t\t\t ) }\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"editor-post-locked-modal__buttons\">\n\t\t\t\t\t\t<Button variant=\"primary\" href={ allPostsUrl }>\n\t\t\t\t\t\t\t{ allPostsLabel }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ ! isTakeover && (\n\t\t\t\t<div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t{ userDisplayName\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: user's display name */\n\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t'%s is currently working on this post, which means you cannot make changes, unless you take over.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tuserDisplayName\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t'Another user is currently working on this post, which means you cannot make changes, unless you take over.'\n\t\t\t\t\t\t\t ) }\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"editor-post-locked-modal__buttons\">\n\t\t\t\t\t\t<Button variant=\"secondary\" href={ allPostsUrl }>\n\t\t\t\t\t\t\t{ allPostsLabel }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<PostPreviewButton />\n\t\t\t\t\t\t<Button variant=\"primary\" href={ unlockUrl }>\n\t\t\t\t\t\t\t{ __( 'Take Over' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</Modal>\n\t);\n}\n"]}
|
|
@@ -109,45 +109,16 @@ function PostSavedState({
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
return () => clearTimeout(timeoutId);
|
|
112
|
-
}, [isSaving]);
|
|
112
|
+
}, [isSaving]); // Once the post has been submitted for review this button
|
|
113
|
+
// is not needed for the contributor role.
|
|
113
114
|
|
|
114
|
-
if (
|
|
115
|
-
|
|
116
|
-
// paths of this function, including proper naming convention for
|
|
117
|
-
// the "Save Draft" button.
|
|
118
|
-
const classes = (0, _classnames.default)('editor-post-saved-state', 'is-saving', (0, _components.__unstableGetAnimateClassName)({
|
|
119
|
-
type: 'loading'
|
|
120
|
-
}), {
|
|
121
|
-
'is-autosaving': isAutosaving
|
|
122
|
-
});
|
|
123
|
-
return (0, _element.createElement)("span", {
|
|
124
|
-
className: classes
|
|
125
|
-
}, (0, _element.createElement)(_icons.Icon, {
|
|
126
|
-
icon: _icons.cloud
|
|
127
|
-
}), isAutosaving ? (0, _i18n.__)('Autosaving') : (0, _i18n.__)('Saving'));
|
|
115
|
+
if (!hasPublishAction && isPending) {
|
|
116
|
+
return null;
|
|
128
117
|
}
|
|
129
118
|
|
|
130
119
|
if (isPublished || isScheduled) {
|
|
131
120
|
return (0, _element.createElement)(_postSwitchToDraftButton.default, null);
|
|
132
121
|
}
|
|
133
|
-
|
|
134
|
-
if (!isSaveable) {
|
|
135
|
-
return null;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
if (forceSavedMessage || !isNew && !isDirty) {
|
|
139
|
-
return (0, _element.createElement)("span", {
|
|
140
|
-
className: "editor-post-saved-state is-saved"
|
|
141
|
-
}, (0, _element.createElement)(_icons.Icon, {
|
|
142
|
-
icon: _icons.check
|
|
143
|
-
}), (0, _i18n.__)('Saved'));
|
|
144
|
-
} // Once the post has been submitted for review this button
|
|
145
|
-
// is not needed for the contributor role.
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
if (!hasPublishAction && isPending) {
|
|
149
|
-
return null;
|
|
150
|
-
}
|
|
151
122
|
/* translators: button label text should, if possible, be under 16 characters. */
|
|
152
123
|
|
|
153
124
|
|
|
@@ -155,22 +126,42 @@ function PostSavedState({
|
|
|
155
126
|
/* translators: button label text should, if possible, be under 16 characters. */
|
|
156
127
|
|
|
157
128
|
const shortLabel = (0, _i18n.__)('Save');
|
|
129
|
+
const isSaved = forceSavedMessage || !isNew && !isDirty;
|
|
130
|
+
const isSavedState = isSaving || isSaved;
|
|
131
|
+
const isDisabled = isSaving || isSaved || !isSaveable;
|
|
132
|
+
let text;
|
|
133
|
+
|
|
134
|
+
if (isSaving) {
|
|
135
|
+
text = isAutosaving ? (0, _i18n.__)('Autosaving') : (0, _i18n.__)('Saving');
|
|
136
|
+
} else if (isSaved) {
|
|
137
|
+
text = (0, _i18n.__)('Saved');
|
|
138
|
+
} else if (isLargeViewport) {
|
|
139
|
+
text = label;
|
|
140
|
+
} else if (showIconLabels) {
|
|
141
|
+
text = shortLabel;
|
|
142
|
+
} // Use common Button instance for all saved states so that focus is not
|
|
143
|
+
// lost.
|
|
158
144
|
|
|
159
|
-
if (!isLargeViewport) {
|
|
160
|
-
return (0, _element.createElement)(_components.Button, {
|
|
161
|
-
className: "editor-post-save-draft",
|
|
162
|
-
label: label,
|
|
163
|
-
onClick: () => savePost(),
|
|
164
|
-
shortcut: _keycodes.displayShortcut.primary('s'),
|
|
165
|
-
icon: _icons.cloudUpload
|
|
166
|
-
}, showIconLabels && shortLabel);
|
|
167
|
-
}
|
|
168
145
|
|
|
169
146
|
return (0, _element.createElement)(_components.Button, {
|
|
170
|
-
className:
|
|
171
|
-
|
|
147
|
+
className: isSaveable || isSaving ? (0, _classnames.default)({
|
|
148
|
+
'editor-post-save-draft': !isSavedState,
|
|
149
|
+
'editor-post-saved-state': isSavedState,
|
|
150
|
+
'is-saving': isSaving,
|
|
151
|
+
'is-autosaving': isAutosaving,
|
|
152
|
+
'is-saved': isSaved,
|
|
153
|
+
[(0, _components.__unstableGetAnimateClassName)({
|
|
154
|
+
type: 'loading'
|
|
155
|
+
})]: isSaving
|
|
156
|
+
}) : undefined,
|
|
157
|
+
onClick: isDisabled ? undefined : () => savePost(),
|
|
172
158
|
shortcut: _keycodes.displayShortcut.primary('s'),
|
|
173
|
-
variant:
|
|
174
|
-
|
|
159
|
+
variant: isLargeViewport ? 'tertiary' : undefined,
|
|
160
|
+
icon: isLargeViewport ? undefined : _icons.cloudUpload,
|
|
161
|
+
label: label,
|
|
162
|
+
"aria-disabled": isDisabled
|
|
163
|
+
}, isSavedState && (0, _element.createElement)(_icons.Icon, {
|
|
164
|
+
icon: isSaved ? _icons.check : _icons.cloud
|
|
165
|
+
}), text);
|
|
175
166
|
}
|
|
176
167
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-saved-state/index.js"],"names":["PostSavedState","forceIsDirty","forceIsSaving","showIconLabels","forceSavedMessage","setForceSavedMessage","isLargeViewport","isAutosaving","isDirty","isNew","isPending","isPublished","isSaveable","isSaving","isScheduled","hasPublishAction","select","isEditedPostNew","isCurrentPostPublished","isCurrentPostScheduled","isEditedPostDirty","isSavingPost","isEditedPostSaveable","getCurrentPost","isAutosavingPost","getEditedPostAttribute","editorStore","_links","savePost","wasSaving","timeoutId","setTimeout","clearTimeout","
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-saved-state/index.js"],"names":["PostSavedState","forceIsDirty","forceIsSaving","showIconLabels","forceSavedMessage","setForceSavedMessage","isLargeViewport","isAutosaving","isDirty","isNew","isPending","isPublished","isSaveable","isSaving","isScheduled","hasPublishAction","select","isEditedPostNew","isCurrentPostPublished","isCurrentPostScheduled","isEditedPostDirty","isSavingPost","isEditedPostSaveable","getCurrentPost","isAutosavingPost","getEditedPostAttribute","editorStore","_links","savePost","wasSaving","timeoutId","setTimeout","clearTimeout","label","shortLabel","isSaved","isSavedState","isDisabled","text","type","undefined","displayShortcut","primary","cloudUpload","check","cloud"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__unstableGetAnimateClassName as getAnimateClassName,\n\tButton,\n} from '@wordpress/components';\nimport { usePrevious, useViewportMatch } from '@wordpress/compose';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useEffect, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { Icon, check, cloud, cloudUpload } from '@wordpress/icons';\nimport { displayShortcut } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport PostSwitchToDraftButton from '../post-switch-to-draft-button';\nimport { store as editorStore } from '../../store';\n\n/**\n * Component showing whether the post is saved or not and providing save\n * buttons.\n *\n * @param {Object} props Component props.\n * @param {?boolean} props.forceIsDirty Whether to force the post to be marked\n * as dirty.\n * @param {?boolean} props.forceIsSaving Whether to force the post to be marked\n * as being saved.\n * @param {?boolean} props.showIconLabels Whether interface buttons show labels instead of icons\n * @return {import('@wordpress/element').WPComponent} The component.\n */\nexport default function PostSavedState( {\n\tforceIsDirty,\n\tforceIsSaving,\n\tshowIconLabels = false,\n} ) {\n\tconst [ forceSavedMessage, setForceSavedMessage ] = useState( false );\n\tconst isLargeViewport = useViewportMatch( 'small' );\n\n\tconst {\n\t\tisAutosaving,\n\t\tisDirty,\n\t\tisNew,\n\t\tisPending,\n\t\tisPublished,\n\t\tisSaveable,\n\t\tisSaving,\n\t\tisScheduled,\n\t\thasPublishAction,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisEditedPostNew,\n\t\t\t\tisCurrentPostPublished,\n\t\t\t\tisCurrentPostScheduled,\n\t\t\t\tisEditedPostDirty,\n\t\t\t\tisSavingPost,\n\t\t\t\tisEditedPostSaveable,\n\t\t\t\tgetCurrentPost,\n\t\t\t\tisAutosavingPost,\n\t\t\t\tgetEditedPostAttribute,\n\t\t\t} = select( editorStore );\n\n\t\t\treturn {\n\t\t\t\tisAutosaving: isAutosavingPost(),\n\t\t\t\tisDirty: forceIsDirty || isEditedPostDirty(),\n\t\t\t\tisNew: isEditedPostNew(),\n\t\t\t\tisPending: 'pending' === getEditedPostAttribute( 'status' ),\n\t\t\t\tisPublished: isCurrentPostPublished(),\n\t\t\t\tisSaving: forceIsSaving || isSavingPost(),\n\t\t\t\tisSaveable: isEditedPostSaveable(),\n\t\t\t\tisScheduled: isCurrentPostScheduled(),\n\t\t\t\thasPublishAction:\n\t\t\t\t\tgetCurrentPost()?._links?.[ 'wp:action-publish' ] ?? false,\n\t\t\t};\n\t\t},\n\t\t[ forceIsDirty, forceIsSaving ]\n\t);\n\n\tconst { savePost } = useDispatch( editorStore );\n\n\tconst wasSaving = usePrevious( isSaving );\n\n\tuseEffect( () => {\n\t\tlet timeoutId;\n\n\t\tif ( wasSaving && ! isSaving ) {\n\t\t\tsetForceSavedMessage( true );\n\t\t\ttimeoutId = setTimeout( () => {\n\t\t\t\tsetForceSavedMessage( false );\n\t\t\t}, 1000 );\n\t\t}\n\n\t\treturn () => clearTimeout( timeoutId );\n\t}, [ isSaving ] );\n\n\t// Once the post has been submitted for review this button\n\t// is not needed for the contributor role.\n\tif ( ! hasPublishAction && isPending ) {\n\t\treturn null;\n\t}\n\n\tif ( isPublished || isScheduled ) {\n\t\treturn <PostSwitchToDraftButton />;\n\t}\n\n\t/* translators: button label text should, if possible, be under 16 characters. */\n\tconst label = isPending ? __( 'Save as pending' ) : __( 'Save draft' );\n\n\t/* translators: button label text should, if possible, be under 16 characters. */\n\tconst shortLabel = __( 'Save' );\n\n\tconst isSaved = forceSavedMessage || ( ! isNew && ! isDirty );\n\tconst isSavedState = isSaving || isSaved;\n\tconst isDisabled = isSaving || isSaved || ! isSaveable;\n\n\tlet text;\n\n\tif ( isSaving ) {\n\t\ttext = isAutosaving ? __( 'Autosaving' ) : __( 'Saving' );\n\t} else if ( isSaved ) {\n\t\ttext = __( 'Saved' );\n\t} else if ( isLargeViewport ) {\n\t\ttext = label;\n\t} else if ( showIconLabels ) {\n\t\ttext = shortLabel;\n\t}\n\n\t// Use common Button instance for all saved states so that focus is not\n\t// lost.\n\treturn (\n\t\t<Button\n\t\t\tclassName={\n\t\t\t\tisSaveable || isSaving\n\t\t\t\t\t? classnames( {\n\t\t\t\t\t\t\t'editor-post-save-draft': ! isSavedState,\n\t\t\t\t\t\t\t'editor-post-saved-state': isSavedState,\n\t\t\t\t\t\t\t'is-saving': isSaving,\n\t\t\t\t\t\t\t'is-autosaving': isAutosaving,\n\t\t\t\t\t\t\t'is-saved': isSaved,\n\t\t\t\t\t\t\t[ getAnimateClassName( {\n\t\t\t\t\t\t\t\ttype: 'loading',\n\t\t\t\t\t\t\t} ) ]: isSaving,\n\t\t\t\t\t } )\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tonClick={ isDisabled ? undefined : () => savePost() }\n\t\t\tshortcut={ displayShortcut.primary( 's' ) }\n\t\t\tvariant={ isLargeViewport ? 'tertiary' : undefined }\n\t\t\ticon={ isLargeViewport ? undefined : cloudUpload }\n\t\t\tlabel={ label }\n\t\t\taria-disabled={ isDisabled }\n\t\t>\n\t\t\t{ isSavedState && <Icon icon={ isSaved ? check : cloud } /> }\n\t\t\t{ text }\n\t\t</Button>\n\t);\n}\n"]}
|