@wordpress/editor 11.0.2 → 12.0.3

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.
Files changed (123) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +1 -1
  3. package/build/components/autosave-monitor/index.js +5 -0
  4. package/build/components/autosave-monitor/index.js.map +1 -1
  5. package/build/components/character-count/index.js +1 -1
  6. package/build/components/character-count/index.js.map +1 -1
  7. package/build/components/editor-help/help-get-support-button.native.js +46 -0
  8. package/build/components/editor-help/help-get-support-button.native.js.map +1 -0
  9. package/build/components/editor-help/index.native.js +24 -5
  10. package/build/components/editor-help/index.native.js.map +1 -1
  11. package/build/components/entities-saved-states/entity-type-list.js +22 -13
  12. package/build/components/entities-saved-states/entity-type-list.js.map +1 -1
  13. package/build/components/entities-saved-states/index.js +23 -4
  14. package/build/components/entities-saved-states/index.js.map +1 -1
  15. package/build/components/global-keyboard-shortcuts/save-shortcut.js +12 -14
  16. package/build/components/global-keyboard-shortcuts/save-shortcut.js.map +1 -1
  17. package/build/components/global-keyboard-shortcuts/visual-editor-shortcuts.js +0 -4
  18. package/build/components/global-keyboard-shortcuts/visual-editor-shortcuts.js.map +1 -1
  19. package/build/components/post-format/index.js +3 -1
  20. package/build/components/post-format/index.js.map +1 -1
  21. package/build/components/post-locked-modal/index.js +1 -1
  22. package/build/components/post-locked-modal/index.js.map +1 -1
  23. package/build/components/post-saved-state/index.js +37 -46
  24. package/build/components/post-saved-state/index.js.map +1 -1
  25. package/build/components/post-taxonomies/flat-term-selector.js +154 -211
  26. package/build/components/post-taxonomies/flat-term-selector.js.map +1 -1
  27. package/build/components/post-title/index.js +5 -3
  28. package/build/components/post-title/index.js.map +1 -1
  29. package/build/components/provider/index.native.js +3 -1
  30. package/build/components/provider/index.native.js.map +1 -1
  31. package/build/components/provider/use-block-editor-settings.js +32 -5
  32. package/build/components/provider/use-block-editor-settings.js.map +1 -1
  33. package/build/components/word-count/index.js +1 -1
  34. package/build/components/word-count/index.js.map +1 -1
  35. package/build/store/actions.js +0 -25
  36. package/build/store/actions.js.map +1 -1
  37. package/build/store/selectors.js +3 -84
  38. package/build/store/selectors.js.map +1 -1
  39. package/build/store/utils/notice-builder.js +15 -18
  40. package/build/store/utils/notice-builder.js.map +1 -1
  41. package/build/{store/utils → utils}/get-template-part-icon.js +1 -1
  42. package/build/utils/get-template-part-icon.js.map +1 -0
  43. package/build/utils/index.js +8 -0
  44. package/build/utils/index.js.map +1 -1
  45. package/build-module/components/autosave-monitor/index.js +5 -0
  46. package/build-module/components/autosave-monitor/index.js.map +1 -1
  47. package/build-module/components/character-count/index.js +1 -1
  48. package/build-module/components/character-count/index.js.map +1 -1
  49. package/build-module/components/editor-help/help-get-support-button.native.js +34 -0
  50. package/build-module/components/editor-help/help-get-support-button.native.js.map +1 -0
  51. package/build-module/components/editor-help/index.native.js +22 -6
  52. package/build-module/components/editor-help/index.native.js.map +1 -1
  53. package/build-module/components/entities-saved-states/entity-type-list.js +24 -13
  54. package/build-module/components/entities-saved-states/entity-type-list.js.map +1 -1
  55. package/build-module/components/entities-saved-states/index.js +23 -4
  56. package/build-module/components/entities-saved-states/index.js.map +1 -1
  57. package/build-module/components/global-keyboard-shortcuts/save-shortcut.js +12 -14
  58. package/build-module/components/global-keyboard-shortcuts/save-shortcut.js.map +1 -1
  59. package/build-module/components/global-keyboard-shortcuts/visual-editor-shortcuts.js +0 -4
  60. package/build-module/components/global-keyboard-shortcuts/visual-editor-shortcuts.js.map +1 -1
  61. package/build-module/components/post-format/index.js +4 -2
  62. package/build-module/components/post-format/index.js.map +1 -1
  63. package/build-module/components/post-locked-modal/index.js +1 -1
  64. package/build-module/components/post-locked-modal/index.js.map +1 -1
  65. package/build-module/components/post-saved-state/index.js +38 -46
  66. package/build-module/components/post-saved-state/index.js.map +1 -1
  67. package/build-module/components/post-taxonomies/flat-term-selector.js +156 -214
  68. package/build-module/components/post-taxonomies/flat-term-selector.js.map +1 -1
  69. package/build-module/components/post-title/index.js +5 -3
  70. package/build-module/components/post-title/index.js.map +1 -1
  71. package/build-module/components/provider/index.native.js +3 -1
  72. package/build-module/components/provider/index.native.js.map +1 -1
  73. package/build-module/components/provider/use-block-editor-settings.js +31 -5
  74. package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
  75. package/build-module/components/word-count/index.js +1 -1
  76. package/build-module/components/word-count/index.js.map +1 -1
  77. package/build-module/store/actions.js +0 -23
  78. package/build-module/store/actions.js.map +1 -1
  79. package/build-module/store/selectors.js +3 -80
  80. package/build-module/store/selectors.js.map +1 -1
  81. package/build-module/store/utils/notice-builder.js +15 -18
  82. package/build-module/store/utils/notice-builder.js.map +1 -1
  83. package/build-module/{store/utils → utils}/get-template-part-icon.js +2 -2
  84. package/build-module/utils/get-template-part-icon.js.map +1 -0
  85. package/build-module/utils/index.js +1 -0
  86. package/build-module/utils/index.js.map +1 -1
  87. package/build-style/style-rtl.css +6 -1
  88. package/build-style/style.css +6 -1
  89. package/package.json +28 -28
  90. package/src/components/autosave-monitor/index.js +5 -0
  91. package/src/components/autosave-monitor/test/index.js +10 -4
  92. package/src/components/character-count/index.js +3 -2
  93. package/src/components/editor-help/help-get-support-button.native.js +38 -0
  94. package/src/components/editor-help/index.native.js +130 -80
  95. package/src/components/editor-help/style.android.scss +6 -0
  96. package/src/components/editor-help/style.ios.scss +6 -0
  97. package/src/components/editor-help/style.scss +25 -0
  98. package/src/components/editor-help/test/index.native.js +80 -0
  99. package/src/components/entities-saved-states/entity-type-list.js +29 -10
  100. package/src/components/entities-saved-states/index.js +38 -8
  101. package/src/components/global-keyboard-shortcuts/save-shortcut.js +34 -42
  102. package/src/components/global-keyboard-shortcuts/visual-editor-shortcuts.js +8 -16
  103. package/src/components/post-format/index.js +6 -2
  104. package/src/components/post-format/style.scss +1 -0
  105. package/src/components/post-locked-modal/index.js +1 -1
  106. package/src/components/post-saved-state/index.js +41 -55
  107. package/src/components/post-saved-state/style.scss +10 -1
  108. package/src/components/post-saved-state/test/__snapshots__/index.js.snap +20 -0
  109. package/src/components/post-saved-state/test/index.js +2 -2
  110. package/src/components/post-taxonomies/flat-term-selector.js +220 -254
  111. package/src/components/post-title/index.js +5 -3
  112. package/src/components/provider/index.native.js +2 -0
  113. package/src/components/provider/use-block-editor-settings.js +24 -2
  114. package/src/components/word-count/index.js +3 -2
  115. package/src/store/actions.js +0 -28
  116. package/src/store/selectors.js +2 -105
  117. package/src/store/test/actions.js +4 -2
  118. package/src/store/utils/notice-builder.js +17 -19
  119. package/src/store/utils/test/notice-builder.js +1 -1
  120. package/src/{store/utils → utils}/get-template-part-icon.js +2 -2
  121. package/src/utils/index.js +1 -0
  122. package/build/store/utils/get-template-part-icon.js.map +0 -1
  123. package/build-module/store/utils/get-template-part-icon.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 12.0.0 (2021-10-12)
6
+
7
+ ### Breaking changes
8
+
9
+ - Removed the deprecated `resetAutosave` action ([#34537](https://github.com/WordPress/gutenberg/pull/34537)).
10
+ - Removed the deprecated `getAutosave`, `hasAutosave` and `getBlockForSerialization` selectors ([#34537](https://github.com/WordPress/gutenberg/pull/34537)).
11
+
5
12
  ## 11.0.0 (2021-07-29)
6
13
 
7
14
  ### Breaking Change
package/README.md CHANGED
@@ -10,7 +10,7 @@ Install the module
10
10
  npm install @wordpress/editor --save
11
11
  ```
12
12
 
13
- _This package assumes that your code will run in an **ES2015+** environment. If you're using an environment that has limited or no support for ES2015+ such as IE browsers then using [core-js](https://github.com/zloirock/core-js) will add polyfills for these methods._
13
+ _This package assumes that your code will run in an **ES2015+** environment. If you're using an environment that has limited or no support for such language features and APIs, you should include [the polyfill shipped in `@wordpress/babel-preset-default`](https://github.com/WordPress/gutenberg/tree/HEAD/packages/babel-preset-default#polyfill) in your code._
14
14
 
15
15
  ## How it works
16
16
 
@@ -55,6 +55,11 @@ class AutosaveMonitor extends _element.Component {
55
55
  return;
56
56
  }
57
57
 
58
+ if (this.props.interval !== prevProps.interval) {
59
+ clearTimeout(this.timerId);
60
+ this.setAutosaveTimer();
61
+ }
62
+
58
63
  if (!this.props.isDirty) {
59
64
  this.needsAutosave = false;
60
65
  return;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/editor/src/components/autosave-monitor/index.js"],"names":["AutosaveMonitor","Component","constructor","props","needsAutosave","isDirty","isAutosaveable","componentDidMount","disableIntervalChecks","setAutosaveTimer","componentDidUpdate","prevProps","editsReference","autosave","isAutosaving","componentWillUnmount","clearTimeout","timerId","timeout","interval","setTimeout","autosaveTimerHandler","render","select","ownProps","getReferenceByDistinctEdits","coreStore","isEditedPostDirty","isEditedPostAutosaveable","isAutosavingPost","getEditorSettings","editorStore","autosaveInterval","dispatch"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { compose } from '@wordpress/compose';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\n/**\n * AutosaveMonitor invokes `props.autosave()` within at most `interval` seconds after an unsaved change is detected.\n *\n * The logic is straightforward: a check is performed every `props.interval` seconds. If any changes are detected, `props.autosave()` is called.\n * The time between the change and the autosave varies but is no larger than `props.interval` seconds. Refer to the code below for more details, such as\n * the specific way of detecting changes.\n *\n * There are two caveats:\n * * If `props.isAutosaveable` happens to be false at a time of checking for changes, the check is retried every second.\n * * The timer may be disabled by setting `props.disableIntervalChecks` to `true`. In that mode, any change will immediately trigger `props.autosave()`.\n */\nexport class AutosaveMonitor extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\t\tthis.needsAutosave = !! ( props.isDirty && props.isAutosaveable );\n\t}\n\n\tcomponentDidMount() {\n\t\tif ( ! this.props.disableIntervalChecks ) {\n\t\t\tthis.setAutosaveTimer();\n\t\t}\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tif ( this.props.disableIntervalChecks ) {\n\t\t\tif ( this.props.editsReference !== prevProps.editsReference ) {\n\t\t\t\tthis.props.autosave();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! this.props.isDirty ) {\n\t\t\tthis.needsAutosave = false;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.props.isAutosaving && ! prevProps.isAutosaving ) {\n\t\t\tthis.needsAutosave = false;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.props.editsReference !== prevProps.editsReference ) {\n\t\t\tthis.needsAutosave = true;\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tclearTimeout( this.timerId );\n\t}\n\n\tsetAutosaveTimer( timeout = this.props.interval * 1000 ) {\n\t\tthis.timerId = setTimeout( () => {\n\t\t\tthis.autosaveTimerHandler();\n\t\t}, timeout );\n\t}\n\n\tautosaveTimerHandler() {\n\t\tif ( ! this.props.isAutosaveable ) {\n\t\t\tthis.setAutosaveTimer( 1000 );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.needsAutosave ) {\n\t\t\tthis.needsAutosave = false;\n\t\t\tthis.props.autosave();\n\t\t}\n\n\t\tthis.setAutosaveTimer();\n\t}\n\n\trender() {\n\t\treturn null;\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select, ownProps ) => {\n\t\tconst { getReferenceByDistinctEdits } = select( coreStore );\n\n\t\tconst {\n\t\t\tisEditedPostDirty,\n\t\t\tisEditedPostAutosaveable,\n\t\t\tisAutosavingPost,\n\t\t\tgetEditorSettings,\n\t\t} = select( editorStore );\n\n\t\tconst { interval = getEditorSettings().autosaveInterval } = ownProps;\n\n\t\treturn {\n\t\t\teditsReference: getReferenceByDistinctEdits(),\n\t\t\tisDirty: isEditedPostDirty(),\n\t\t\tisAutosaveable: isEditedPostAutosaveable(),\n\t\t\tisAutosaving: isAutosavingPost(),\n\t\t\tinterval,\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, ownProps ) => ( {\n\t\tautosave() {\n\t\t\tconst { autosave = dispatch( editorStore ).autosave } = ownProps;\n\t\t\tautosave();\n\t\t},\n\t} ) ),\n] )( AutosaveMonitor );\n"]}
1
+ {"version":3,"sources":["@wordpress/editor/src/components/autosave-monitor/index.js"],"names":["AutosaveMonitor","Component","constructor","props","needsAutosave","isDirty","isAutosaveable","componentDidMount","disableIntervalChecks","setAutosaveTimer","componentDidUpdate","prevProps","editsReference","autosave","interval","clearTimeout","timerId","isAutosaving","componentWillUnmount","timeout","setTimeout","autosaveTimerHandler","render","select","ownProps","getReferenceByDistinctEdits","coreStore","isEditedPostDirty","isEditedPostAutosaveable","isAutosavingPost","getEditorSettings","editorStore","autosaveInterval","dispatch"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { compose } from '@wordpress/compose';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\n/**\n * AutosaveMonitor invokes `props.autosave()` within at most `interval` seconds after an unsaved change is detected.\n *\n * The logic is straightforward: a check is performed every `props.interval` seconds. If any changes are detected, `props.autosave()` is called.\n * The time between the change and the autosave varies but is no larger than `props.interval` seconds. Refer to the code below for more details, such as\n * the specific way of detecting changes.\n *\n * There are two caveats:\n * * If `props.isAutosaveable` happens to be false at a time of checking for changes, the check is retried every second.\n * * The timer may be disabled by setting `props.disableIntervalChecks` to `true`. In that mode, any change will immediately trigger `props.autosave()`.\n */\nexport class AutosaveMonitor extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\t\tthis.needsAutosave = !! ( props.isDirty && props.isAutosaveable );\n\t}\n\n\tcomponentDidMount() {\n\t\tif ( ! this.props.disableIntervalChecks ) {\n\t\t\tthis.setAutosaveTimer();\n\t\t}\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tif ( this.props.disableIntervalChecks ) {\n\t\t\tif ( this.props.editsReference !== prevProps.editsReference ) {\n\t\t\t\tthis.props.autosave();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.props.interval !== prevProps.interval ) {\n\t\t\tclearTimeout( this.timerId );\n\t\t\tthis.setAutosaveTimer();\n\t\t}\n\n\t\tif ( ! this.props.isDirty ) {\n\t\t\tthis.needsAutosave = false;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.props.isAutosaving && ! prevProps.isAutosaving ) {\n\t\t\tthis.needsAutosave = false;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.props.editsReference !== prevProps.editsReference ) {\n\t\t\tthis.needsAutosave = true;\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tclearTimeout( this.timerId );\n\t}\n\n\tsetAutosaveTimer( timeout = this.props.interval * 1000 ) {\n\t\tthis.timerId = setTimeout( () => {\n\t\t\tthis.autosaveTimerHandler();\n\t\t}, timeout );\n\t}\n\n\tautosaveTimerHandler() {\n\t\tif ( ! this.props.isAutosaveable ) {\n\t\t\tthis.setAutosaveTimer( 1000 );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.needsAutosave ) {\n\t\t\tthis.needsAutosave = false;\n\t\t\tthis.props.autosave();\n\t\t}\n\n\t\tthis.setAutosaveTimer();\n\t}\n\n\trender() {\n\t\treturn null;\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select, ownProps ) => {\n\t\tconst { getReferenceByDistinctEdits } = select( coreStore );\n\n\t\tconst {\n\t\t\tisEditedPostDirty,\n\t\t\tisEditedPostAutosaveable,\n\t\t\tisAutosavingPost,\n\t\t\tgetEditorSettings,\n\t\t} = select( editorStore );\n\n\t\tconst { interval = getEditorSettings().autosaveInterval } = ownProps;\n\n\t\treturn {\n\t\t\teditsReference: getReferenceByDistinctEdits(),\n\t\t\tisDirty: isEditedPostDirty(),\n\t\t\tisAutosaveable: isEditedPostAutosaveable(),\n\t\t\tisAutosaving: isAutosavingPost(),\n\t\t\tinterval,\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch, ownProps ) => ( {\n\t\tautosave() {\n\t\t\tconst { autosave = dispatch( editorStore ).autosave } = ownProps;\n\t\t\tautosave();\n\t\t},\n\t} ) ),\n] )( AutosaveMonitor );\n"]}
@@ -19,7 +19,7 @@ var _store = require("../../store");
19
19
  * Internal dependencies
20
20
  */
21
21
  function CharacterCount() {
22
- const content = (0, _data.useSelect)(select => select(_store.store).getEditedPostAttribute('content'));
22
+ const content = (0, _data.useSelect)(select => select(_store.store).getEditedPostAttribute('content'), []);
23
23
  return (0, _wordcount.count)(content, 'characters_including_spaces');
24
24
  }
25
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/editor/src/components/character-count/index.js"],"names":["CharacterCount","content","select","editorStore","getEditedPostAttribute"],"mappings":";;;;;;;AAGA;;AACA;;AAKA;;AATA;AACA;AACA;;AAIA;AACA;AACA;AAGe,SAASA,cAAT,GAA0B;AACxC,QAAMC,OAAO,GAAG,qBAAaC,MAAF,IAC1BA,MAAM,CAAEC,YAAF,CAAN,CAAsBC,sBAAtB,CAA8C,SAA9C,CADe,CAAhB;AAIA,SAAO,sBAAgBH,OAAhB,EAAyB,6BAAzB,CAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { count as characterCount } from '@wordpress/wordcount';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nexport default function CharacterCount() {\n\tconst content = useSelect( ( select ) =>\n\t\tselect( editorStore ).getEditedPostAttribute( 'content' )\n\t);\n\n\treturn characterCount( content, 'characters_including_spaces' );\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/editor/src/components/character-count/index.js"],"names":["CharacterCount","content","select","editorStore","getEditedPostAttribute"],"mappings":";;;;;;;AAGA;;AACA;;AAKA;;AATA;AACA;AACA;;AAIA;AACA;AACA;AAGe,SAASA,cAAT,GAA0B;AACxC,QAAMC,OAAO,GAAG,qBACbC,MAAF,IAAcA,MAAM,CAAEC,YAAF,CAAN,CAAsBC,sBAAtB,CAA8C,SAA9C,CADC,EAEf,EAFe,CAAhB;AAKA,SAAO,sBAAgBH,OAAhB,EAAyB,6BAAzB,CAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { count as characterCount } from '@wordpress/wordcount';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nexport default function CharacterCount() {\n\tconst content = useSelect(\n\t\t( select ) => select( editorStore ).getEditedPostAttribute( 'content' ),\n\t\t[]\n\t);\n\n\treturn characterCount( content, 'characters_including_spaces' );\n}\n"]}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _element = require("@wordpress/element");
11
+
12
+ var _reactNative = require("react-native");
13
+
14
+ var _compose = require("@wordpress/compose");
15
+
16
+ var _style = _interopRequireDefault(require("./style.scss"));
17
+
18
+ /**
19
+ * External dependencies
20
+ */
21
+
22
+ /**
23
+ * WordPress dependencies
24
+ */
25
+
26
+ /**
27
+ * Internal dependencies
28
+ */
29
+ const HelpGetSupportButton = ({
30
+ onPress,
31
+ title
32
+ }) => {
33
+ const buttonStyle = (0, _compose.usePreferredColorSchemeStyle)(_style.default.button, _style.default.buttonDark);
34
+ const textStyle = (0, _compose.usePreferredColorSchemeStyle)(_style.default.buttonText, _style.default.buttonTextDark);
35
+ return (0, _element.createElement)(_reactNative.Pressable, {
36
+ style: buttonStyle,
37
+ onPress: onPress,
38
+ accessibilityRole: 'button'
39
+ }, (0, _element.createElement)(_reactNative.Text, {
40
+ style: textStyle
41
+ }, title));
42
+ };
43
+
44
+ var _default = HelpGetSupportButton;
45
+ exports.default = _default;
46
+ //# sourceMappingURL=help-get-support-button.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/editor/src/components/editor-help/help-get-support-button.native.js"],"names":["HelpGetSupportButton","onPress","title","buttonStyle","styles","button","buttonDark","textStyle","buttonText","buttonTextDark"],"mappings":";;;;;;;;;;;AAGA;;AAKA;;AAKA;;AAbA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;AAGA,MAAMA,oBAAoB,GAAG,CAAE;AAAEC,EAAAA,OAAF;AAAWC,EAAAA;AAAX,CAAF,KAA0B;AACtD,QAAMC,WAAW,GAAG,2CACnBC,eAAOC,MADY,EAEnBD,eAAOE,UAFY,CAApB;AAKA,QAAMC,SAAS,GAAG,2CACjBH,eAAOI,UADU,EAEjBJ,eAAOK,cAFU,CAAlB;AAKA,SACC,4BAAC,sBAAD;AACC,IAAA,KAAK,EAAGN,WADT;AAEC,IAAA,OAAO,EAAGF,OAFX;AAGC,IAAA,iBAAiB,EAAG;AAHrB,KAKC,4BAAC,iBAAD;AAAM,IAAA,KAAK,EAAGM;AAAd,KAA4BL,KAA5B,CALD,CADD;AASA,CApBD;;eAsBeF,oB","sourcesContent":["/**\n * External dependencies\n */\nimport { Pressable, Text } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\n\nconst HelpGetSupportButton = ( { onPress, title } ) => {\n\tconst buttonStyle = usePreferredColorSchemeStyle(\n\t\tstyles.button,\n\t\tstyles.buttonDark\n\t);\n\n\tconst textStyle = usePreferredColorSchemeStyle(\n\t\tstyles.buttonText,\n\t\tstyles.buttonTextDark\n\t);\n\n\treturn (\n\t\t<Pressable\n\t\t\tstyle={ buttonStyle }\n\t\t\tonPress={ onPress }\n\t\t\taccessibilityRole={ 'button' }\n\t\t>\n\t\t\t<Text style={ textStyle }>{ title }</Text>\n\t\t</Pressable>\n\t);\n};\n\nexport default HelpGetSupportButton;\n"]}
@@ -27,12 +27,18 @@ var _data = require("@wordpress/data");
27
27
 
28
28
  var _editor = require("@wordpress/editor");
29
29
 
30
+ var _compose = require("@wordpress/compose");
31
+
32
+ var _reactNativeBridge = require("@wordpress/react-native-bridge");
33
+
30
34
  var _style = _interopRequireDefault(require("./style.scss"));
31
35
 
32
36
  var _helpDetailNavigationScreen = _interopRequireDefault(require("./help-detail-navigation-screen"));
33
37
 
34
38
  var _helpTopicRow = _interopRequireDefault(require("./help-topic-row"));
35
39
 
40
+ var _helpGetSupportButton = _interopRequireDefault(require("./help-get-support-button"));
41
+
36
42
  var _introToBlocks = _interopRequireDefault(require("./intro-to-blocks"));
37
43
 
38
44
  var _addBlocks = _interopRequireDefault(require("./add-blocks"));
@@ -86,16 +92,19 @@ function EditorHelpTopics({
86
92
  } = (0, _data.useSelect)(select => ({
87
93
  postType: select(_editor.store).getEditedPostAttribute('type')
88
94
  }));
95
+ const sectionTitle = (0, _compose.usePreferredColorSchemeStyle)(_style.default.helpDetailSectionHeading, _style.default.helpDetailSectionHeadingDark);
89
96
  const title = postType === 'page' ? (0, _i18n.__)('How to edit your page') : (0, _i18n.__)('How to edit your post');
90
97
  return (0, _element.createElement)(_components.BottomSheet, {
91
98
  isVisible: isVisible,
92
99
  onClose: onClose,
93
100
  hideHeader: true,
94
101
  hasNavigation: true,
95
- contentStyle: _style.default.contentContainer
96
- }, (0, _element.createElement)(_components.BottomSheet.NavigationContainer, {
102
+ contentStyle: _style.default.contentContainer,
103
+ testID: "editor-help-modal"
104
+ }, (0, _element.createElement)(_reactNative.SafeAreaView, null, (0, _element.createElement)(_components.BottomSheet.NavigationContainer, {
97
105
  animate: true,
98
- main: true
106
+ main: true,
107
+ style: _style.default.navigationContainer
99
108
  }, (0, _element.createElement)(_components.BottomSheet.NavigationScreen, {
100
109
  isScrollable: true,
101
110
  fullScreen: true,
@@ -121,7 +130,9 @@ function EditorHelpTopics({
121
130
  */
122
131
  marginTop: 0
123
132
  }
124
- }), (0, _element.createElement)(_components.PanelBody, null, HELP_TOPICS.map(({
133
+ }), (0, _element.createElement)(_components.PanelBody, null, (0, _element.createElement)(_reactNative.Text, {
134
+ style: sectionTitle
135
+ }, (0, _i18n.__)('The basics')), HELP_TOPICS.map(({
125
136
  label,
126
137
  icon
127
138
  }) => {
@@ -132,6 +143,14 @@ function EditorHelpTopics({
132
143
  icon: icon,
133
144
  screenName: labelSlug
134
145
  });
146
+ }), (0, _element.createElement)(_reactNative.Text, {
147
+ style: sectionTitle
148
+ }, (0, _i18n.__)('Get support')), (0, _element.createElement)(_helpGetSupportButton.default, {
149
+ title: (0, _i18n.__)('Contact support'),
150
+ onPress: _reactNativeBridge.requestContactCustomerSupport
151
+ }), (0, _element.createElement)(_helpGetSupportButton.default, {
152
+ title: (0, _i18n.__)('More support options'),
153
+ onPress: _reactNativeBridge.requestGotoCustomerSupportOptions
135
154
  })));
136
155
  }))), HELP_TOPICS.map(({
137
156
  view,
@@ -148,7 +167,7 @@ function EditorHelpTopics({
148
167
  ..._stack.TransitionPresets.DefaultTransition
149
168
  }
150
169
  });
151
- })));
170
+ }))));
152
171
  }
153
172
 
154
173
  var _default = EditorHelpTopics;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/editor/src/components/editor-help/index.native.js"],"names":["HELP_TOPICS","label","icon","helpFilled","view","plusCircleFilled","alignJustifyAlt","trashFilled","cogAlt","EditorHelpTopics","close","isVisible","onClose","postType","select","editorStore","getEditedPostAttribute","title","styles","contentContainer","container","listProps","contentContainerStyle","StyleSheet","flatten","paddingBottom","Math","max","safeAreaBottomInset","marginTop","map","labelSlug","gestureEnabled","TransitionPresets","DefaultTransition"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { kebabCase } from 'lodash';\nimport { ScrollView, StyleSheet, View } from 'react-native';\nimport { TransitionPresets } from '@react-navigation/stack';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBottomSheet,\n\tBottomSheetConsumer,\n\tPanelBody,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\thelpFilled,\n\tplusCircleFilled,\n\talignJustifyAlt,\n\ttrashFilled,\n\tcogAlt,\n} from '@wordpress/icons';\nimport { useSelect } from '@wordpress/data';\nimport { store as editorStore } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\nimport HelpDetailNavigationScreen from './help-detail-navigation-screen';\nimport HelpTopicRow from './help-topic-row';\nimport IntroToBlocks from './intro-to-blocks';\nimport AddBlocks from './add-blocks';\nimport MoveBlocks from './move-blocks';\nimport RemoveBlocks from './remove-blocks';\nimport CustomizeBlocks from './customize-blocks';\n\nconst HELP_TOPICS = [\n\t{\n\t\tlabel: __( 'What is a block?' ),\n\t\ticon: helpFilled,\n\t\tview: <IntroToBlocks />,\n\t},\n\t{\n\t\tlabel: __( 'Add blocks' ),\n\t\ticon: plusCircleFilled,\n\t\tview: <AddBlocks />,\n\t},\n\t{ label: __( 'Move blocks' ), icon: alignJustifyAlt, view: <MoveBlocks /> },\n\t{ label: __( 'Remove blocks' ), icon: trashFilled, view: <RemoveBlocks /> },\n\t{\n\t\tlabel: __( 'Customize blocks' ),\n\t\ticon: cogAlt,\n\t\tview: <CustomizeBlocks />,\n\t},\n];\n\nfunction EditorHelpTopics( { close, isVisible, onClose } ) {\n\tconst { postType } = useSelect( ( select ) => ( {\n\t\tpostType: select( editorStore ).getEditedPostAttribute( 'type' ),\n\t} ) );\n\n\tconst title =\n\t\tpostType === 'page'\n\t\t\t? __( 'How to edit your page' )\n\t\t\t: __( 'How to edit your post' );\n\n\treturn (\n\t\t<BottomSheet\n\t\t\tisVisible={ isVisible }\n\t\t\tonClose={ onClose }\n\t\t\thideHeader\n\t\t\thasNavigation\n\t\t\tcontentStyle={ styles.contentContainer }\n\t\t>\n\t\t\t<BottomSheet.NavigationContainer animate main>\n\t\t\t\t<BottomSheet.NavigationScreen\n\t\t\t\t\tisScrollable\n\t\t\t\t\tfullScreen\n\t\t\t\t\tname=\"help-topics\"\n\t\t\t\t>\n\t\t\t\t\t<View style={ styles.container }>\n\t\t\t\t\t\t<BottomSheet.NavBar>\n\t\t\t\t\t\t\t<BottomSheet.NavBar.DismissButton\n\t\t\t\t\t\t\t\tonPress={ close }\n\t\t\t\t\t\t\t\tiosText={ __( 'Close' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<BottomSheet.NavBar.Heading>\n\t\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t\t</BottomSheet.NavBar.Heading>\n\t\t\t\t\t\t</BottomSheet.NavBar>\n\t\t\t\t\t\t<BottomSheetConsumer>\n\t\t\t\t\t\t\t{ ( { listProps } ) => {\n\t\t\t\t\t\t\t\tconst contentContainerStyle = StyleSheet.flatten(\n\t\t\t\t\t\t\t\t\tlistProps.contentContainerStyle\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<ScrollView\n\t\t\t\t\t\t\t\t\t\t{ ...listProps }\n\t\t\t\t\t\t\t\t\t\tcontentContainerStyle={ {\n\t\t\t\t\t\t\t\t\t\t\t...contentContainerStyle,\n\t\t\t\t\t\t\t\t\t\t\tpaddingBottom: Math.max(\n\t\t\t\t\t\t\t\t\t\t\t\tlistProps.safeAreaBottomInset,\n\t\t\t\t\t\t\t\t\t\t\t\tcontentContainerStyle.paddingBottom\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t\t\t\t * Remove margin set via `hideHeader`. Combining a header\n\t\t\t\t\t\t\t\t\t\t\t * and navigation in this bottom sheet is at odds with the\n\t\t\t\t\t\t\t\t\t\t\t * current `BottomSheet` implementation.\n\t\t\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\t\t\tmarginTop: 0,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<PanelBody>\n\t\t\t\t\t\t\t\t\t\t\t{ /* Print out help topics */ }\n\t\t\t\t\t\t\t\t\t\t\t{ HELP_TOPICS.map(\n\t\t\t\t\t\t\t\t\t\t\t\t( { label, icon } ) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst labelSlug = kebabCase(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<HelpTopicRow\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ labelSlug }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tscreenName={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabelSlug\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t\t\t\t\t</ScrollView>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t</BottomSheetConsumer>\n\t\t\t\t\t</View>\n\t\t\t\t</BottomSheet.NavigationScreen>\n\t\t\t\t{ /* Print out help detail screens */ }\n\t\t\t\t{ HELP_TOPICS.map( ( { view, label } ) => {\n\t\t\t\t\tconst labelSlug = kebabCase( label );\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<HelpDetailNavigationScreen\n\t\t\t\t\t\t\tkey={ labelSlug }\n\t\t\t\t\t\t\tname={ labelSlug }\n\t\t\t\t\t\t\tcontent={ view }\n\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\toptions={ {\n\t\t\t\t\t\t\t\tgestureEnabled: true,\n\t\t\t\t\t\t\t\t...TransitionPresets.DefaultTransition,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</BottomSheet.NavigationContainer>\n\t\t</BottomSheet>\n\t);\n}\n\nexport default EditorHelpTopics;\n"]}
1
+ {"version":3,"sources":["@wordpress/editor/src/components/editor-help/index.native.js"],"names":["HELP_TOPICS","label","icon","helpFilled","view","plusCircleFilled","alignJustifyAlt","trashFilled","cogAlt","EditorHelpTopics","close","isVisible","onClose","postType","select","editorStore","getEditedPostAttribute","sectionTitle","styles","helpDetailSectionHeading","helpDetailSectionHeadingDark","title","contentContainer","navigationContainer","container","listProps","contentContainerStyle","StyleSheet","flatten","paddingBottom","Math","max","safeAreaBottomInset","marginTop","map","labelSlug","requestContactCustomerSupport","requestGotoCustomerSupportOptions","gestureEnabled","TransitionPresets","DefaultTransition"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { kebabCase } from 'lodash';\nimport { Text, SafeAreaView, ScrollView, StyleSheet, View } from 'react-native';\nimport { TransitionPresets } from '@react-navigation/stack';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tBottomSheet,\n\tBottomSheetConsumer,\n\tPanelBody,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\thelpFilled,\n\tplusCircleFilled,\n\talignJustifyAlt,\n\ttrashFilled,\n\tcogAlt,\n} from '@wordpress/icons';\nimport { useSelect } from '@wordpress/data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\nimport {\n\trequestContactCustomerSupport,\n\trequestGotoCustomerSupportOptions,\n} from '@wordpress/react-native-bridge';\n\n/**\n * Internal dependencies\n */\nimport styles from './style.scss';\nimport HelpDetailNavigationScreen from './help-detail-navigation-screen';\nimport HelpTopicRow from './help-topic-row';\nimport HelpGetSupportButton from './help-get-support-button';\nimport IntroToBlocks from './intro-to-blocks';\nimport AddBlocks from './add-blocks';\nimport MoveBlocks from './move-blocks';\nimport RemoveBlocks from './remove-blocks';\nimport CustomizeBlocks from './customize-blocks';\n\nconst HELP_TOPICS = [\n\t{\n\t\tlabel: __( 'What is a block?' ),\n\t\ticon: helpFilled,\n\t\tview: <IntroToBlocks />,\n\t},\n\t{\n\t\tlabel: __( 'Add blocks' ),\n\t\ticon: plusCircleFilled,\n\t\tview: <AddBlocks />,\n\t},\n\t{ label: __( 'Move blocks' ), icon: alignJustifyAlt, view: <MoveBlocks /> },\n\t{ label: __( 'Remove blocks' ), icon: trashFilled, view: <RemoveBlocks /> },\n\t{\n\t\tlabel: __( 'Customize blocks' ),\n\t\ticon: cogAlt,\n\t\tview: <CustomizeBlocks />,\n\t},\n];\n\nfunction EditorHelpTopics( { close, isVisible, onClose } ) {\n\tconst { postType } = useSelect( ( select ) => ( {\n\t\tpostType: select( editorStore ).getEditedPostAttribute( 'type' ),\n\t} ) );\n\n\tconst sectionTitle = usePreferredColorSchemeStyle(\n\t\tstyles.helpDetailSectionHeading,\n\t\tstyles.helpDetailSectionHeadingDark\n\t);\n\n\tconst title =\n\t\tpostType === 'page'\n\t\t\t? __( 'How to edit your page' )\n\t\t\t: __( 'How to edit your post' );\n\n\treturn (\n\t\t<BottomSheet\n\t\t\tisVisible={ isVisible }\n\t\t\tonClose={ onClose }\n\t\t\thideHeader\n\t\t\thasNavigation\n\t\t\tcontentStyle={ styles.contentContainer }\n\t\t\ttestID=\"editor-help-modal\"\n\t\t>\n\t\t\t<SafeAreaView>\n\t\t\t\t<BottomSheet.NavigationContainer\n\t\t\t\t\tanimate\n\t\t\t\t\tmain\n\t\t\t\t\tstyle={ styles.navigationContainer }\n\t\t\t\t>\n\t\t\t\t\t<BottomSheet.NavigationScreen\n\t\t\t\t\t\tisScrollable\n\t\t\t\t\t\tfullScreen\n\t\t\t\t\t\tname=\"help-topics\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<View style={ styles.container }>\n\t\t\t\t\t\t\t<BottomSheet.NavBar>\n\t\t\t\t\t\t\t\t<BottomSheet.NavBar.DismissButton\n\t\t\t\t\t\t\t\t\tonPress={ close }\n\t\t\t\t\t\t\t\t\tiosText={ __( 'Close' ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<BottomSheet.NavBar.Heading>\n\t\t\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t\t\t</BottomSheet.NavBar.Heading>\n\t\t\t\t\t\t\t</BottomSheet.NavBar>\n\t\t\t\t\t\t\t<BottomSheetConsumer>\n\t\t\t\t\t\t\t\t{ ( { listProps } ) => {\n\t\t\t\t\t\t\t\t\tconst contentContainerStyle = StyleSheet.flatten(\n\t\t\t\t\t\t\t\t\t\tlistProps.contentContainerStyle\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<ScrollView\n\t\t\t\t\t\t\t\t\t\t\t{ ...listProps }\n\t\t\t\t\t\t\t\t\t\t\tcontentContainerStyle={ {\n\t\t\t\t\t\t\t\t\t\t\t\t...contentContainerStyle,\n\t\t\t\t\t\t\t\t\t\t\t\tpaddingBottom: Math.max(\n\t\t\t\t\t\t\t\t\t\t\t\t\tlistProps.safeAreaBottomInset,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontentContainerStyle.paddingBottom\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t\t\t\t\t\t * Remove margin set via `hideHeader`. Combining a header\n\t\t\t\t\t\t\t\t\t\t\t\t * and navigation in this bottom sheet is at odds with the\n\t\t\t\t\t\t\t\t\t\t\t\t * current `BottomSheet` implementation.\n\t\t\t\t\t\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t\t\t\t\t\tmarginTop: 0,\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<PanelBody>\n\t\t\t\t\t\t\t\t\t\t\t\t<Text style={ sectionTitle }>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ __( 'The basics' ) }\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t{ /* Print out help topics */ }\n\t\t\t\t\t\t\t\t\t\t\t\t{ HELP_TOPICS.map(\n\t\t\t\t\t\t\t\t\t\t\t\t\t( { label, icon } ) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst labelSlug = kebabCase(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<HelpTopicRow\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabelSlug\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tscreenName={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabelSlug\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={ sectionTitle }\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ __( 'Get support' ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t<HelpGetSupportButton\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'Contact support'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonPress={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trequestContactCustomerSupport\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t<HelpGetSupportButton\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'More support options'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonPress={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trequestGotoCustomerSupportOptions\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t\t\t\t\t\t</ScrollView>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t</BottomSheetConsumer>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</BottomSheet.NavigationScreen>\n\t\t\t\t\t{ /* Print out help detail screens */ }\n\t\t\t\t\t{ HELP_TOPICS.map( ( { view, label } ) => {\n\t\t\t\t\t\tconst labelSlug = kebabCase( label );\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<HelpDetailNavigationScreen\n\t\t\t\t\t\t\t\tkey={ labelSlug }\n\t\t\t\t\t\t\t\tname={ labelSlug }\n\t\t\t\t\t\t\t\tcontent={ view }\n\t\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\t\toptions={ {\n\t\t\t\t\t\t\t\t\tgestureEnabled: true,\n\t\t\t\t\t\t\t\t\t...TransitionPresets.DefaultTransition,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</BottomSheet.NavigationContainer>\n\t\t\t</SafeAreaView>\n\t\t</BottomSheet>\n\t);\n}\n\nexport default EditorHelpTopics;\n"]}
@@ -11,12 +11,12 @@ var _element = require("@wordpress/element");
11
11
 
12
12
  var _lodash = require("lodash");
13
13
 
14
+ var _i18n = require("@wordpress/i18n");
15
+
14
16
  var _data = require("@wordpress/data");
15
17
 
16
18
  var _components = require("@wordpress/components");
17
19
 
18
- var _icons = require("@wordpress/icons");
19
-
20
20
  var _coreData = require("@wordpress/core-data");
21
21
 
22
22
  var _entityRecordItem = _interopRequireDefault(require("./entity-record-item"));
@@ -32,10 +32,19 @@ var _entityRecordItem = _interopRequireDefault(require("./entity-record-item"));
32
32
  /**
33
33
  * Internal dependencies
34
34
  */
35
- const ENTITY_NAME_ICONS = {
36
- site: _icons.layout,
37
- page: _icons.page
38
- };
35
+ function getEntityDescription(entity, length) {
36
+ switch (entity) {
37
+ case 'site':
38
+ return (0, _i18n._n)('This change will affect your whole site.', 'These changes will affect your whole site.', length);
39
+
40
+ case 'wp_template':
41
+ return (0, _i18n._n)('This change will affect pages and posts that use this template.', 'These changes will affect pages and posts that use these templates.', length);
42
+
43
+ case 'page':
44
+ case 'post':
45
+ return (0, _i18n.__)('The following content has been modified.');
46
+ }
47
+ }
39
48
 
40
49
  function EntityTypeList({
41
50
  list,
@@ -44,17 +53,17 @@ function EntityTypeList({
44
53
  closePanel
45
54
  }) {
46
55
  const firstRecord = list[0];
47
- const entity = (0, _data.useSelect)(select => select(_coreData.store).getEntity(firstRecord.kind, firstRecord.name), [firstRecord.kind, firstRecord.name]); // Set icon based on type of entity.
48
-
56
+ const entity = (0, _data.useSelect)(select => select(_coreData.store).getEntity(firstRecord.kind, firstRecord.name), [firstRecord.kind, firstRecord.name]);
49
57
  const {
50
58
  name
51
59
  } = firstRecord;
52
- const icon = ENTITY_NAME_ICONS[name];
60
+ const entityLabel = name === 'wp_template_part' ? (0, _i18n._n)('Template Part', 'Template Parts', list.length) : entity.label; // Set description based on type of entity.
61
+
62
+ const description = getEntityDescription(name, list.length);
53
63
  return (0, _element.createElement)(_components.PanelBody, {
54
- title: entity.label,
55
- initialOpen: true,
56
- icon: icon
57
- }, list.map(record => {
64
+ title: entityLabel,
65
+ initialOpen: true
66
+ }, description && (0, _element.createElement)(_components.PanelRow, null, description), list.map(record => {
58
67
  return (0, _element.createElement)(_entityRecordItem.default, {
59
68
  key: record.key || record.property,
60
69
  record: record,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/editor/src/components/entities-saved-states/entity-type-list.js"],"names":["ENTITY_NAME_ICONS","site","layout","page","EntityTypeList","list","unselectedEntities","setUnselectedEntities","closePanel","firstRecord","entity","select","coreStore","getEntity","kind","name","icon","label","map","record","key","property","elt","value"],"mappings":";;;;;;;;;;;AAGA;;AAKA;;AACA;;AACA;;AACA;;AAKA;;AAhBA;AACA;AACA;;AAGA;AACA;AACA;;AAMA;AACA;AACA;AAGA,MAAMA,iBAAiB,GAAG;AACzBC,EAAAA,IAAI,EAAEC,aADmB;AAEzBC,EAAAA,IAAI,EAAJA;AAFyB,CAA1B;;AAKe,SAASC,cAAT,CAAyB;AACvCC,EAAAA,IADuC;AAEvCC,EAAAA,kBAFuC;AAGvCC,EAAAA,qBAHuC;AAIvCC,EAAAA;AAJuC,CAAzB,EAKX;AACH,QAAMC,WAAW,GAAGJ,IAAI,CAAE,CAAF,CAAxB;AACA,QAAMK,MAAM,GAAG,qBACZC,MAAF,IACCA,MAAM,CAAEC,eAAF,CAAN,CAAoBC,SAApB,CAA+BJ,WAAW,CAACK,IAA3C,EAAiDL,WAAW,CAACM,IAA7D,CAFa,EAGd,CAAEN,WAAW,CAACK,IAAd,EAAoBL,WAAW,CAACM,IAAhC,CAHc,CAAf,CAFG,CAQH;;AACA,QAAM;AAAEA,IAAAA;AAAF,MAAWN,WAAjB;AACA,QAAMO,IAAI,GAAGhB,iBAAiB,CAAEe,IAAF,CAA9B;AAEA,SACC,4BAAC,qBAAD;AAAW,IAAA,KAAK,EAAGL,MAAM,CAACO,KAA1B;AAAkC,IAAA,WAAW,EAAG,IAAhD;AAAuD,IAAA,IAAI,EAAGD;AAA9D,KACGX,IAAI,CAACa,GAAL,CAAYC,MAAF,IAAc;AACzB,WACC,4BAAC,yBAAD;AACC,MAAA,GAAG,EAAGA,MAAM,CAACC,GAAP,IAAcD,MAAM,CAACE,QAD5B;AAEC,MAAA,MAAM,EAAGF,MAFV;AAGC,MAAA,OAAO,EACN,CAAE,kBACDb,kBADC,EAECgB,GAAF,IACCA,GAAG,CAACR,IAAJ,KAAaK,MAAM,CAACL,IAApB,IACAQ,GAAG,CAACP,IAAJ,KAAaI,MAAM,CAACJ,IADpB,IAEAO,GAAG,CAACF,GAAJ,KAAYD,MAAM,CAACC,GAFnB,IAGAE,GAAG,CAACD,QAAJ,KAAiBF,MAAM,CAACE,QANxB,CAJJ;AAaC,MAAA,QAAQ,EAAKE,KAAF,IACVhB,qBAAqB,CAAEY,MAAF,EAAUI,KAAV,CAdvB;AAgBC,MAAA,UAAU,EAAGf;AAhBd,MADD;AAoBA,GArBC,CADH,CADD;AA0BA","sourcesContent":["/**\n * External dependencies\n */\nimport { some } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { PanelBody } from '@wordpress/components';\nimport { page, layout } from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport EntityRecordItem from './entity-record-item';\n\nconst ENTITY_NAME_ICONS = {\n\tsite: layout,\n\tpage,\n};\n\nexport default function EntityTypeList( {\n\tlist,\n\tunselectedEntities,\n\tsetUnselectedEntities,\n\tclosePanel,\n} ) {\n\tconst firstRecord = list[ 0 ];\n\tconst entity = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getEntity( firstRecord.kind, firstRecord.name ),\n\t\t[ firstRecord.kind, firstRecord.name ]\n\t);\n\n\t// Set icon based on type of entity.\n\tconst { name } = firstRecord;\n\tconst icon = ENTITY_NAME_ICONS[ name ];\n\n\treturn (\n\t\t<PanelBody title={ entity.label } initialOpen={ true } icon={ icon }>\n\t\t\t{ list.map( ( record ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<EntityRecordItem\n\t\t\t\t\t\tkey={ record.key || record.property }\n\t\t\t\t\t\trecord={ record }\n\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t! some(\n\t\t\t\t\t\t\t\tunselectedEntities,\n\t\t\t\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\t\t\t\telt.kind === record.kind &&\n\t\t\t\t\t\t\t\t\telt.name === record.name &&\n\t\t\t\t\t\t\t\t\telt.key === record.key &&\n\t\t\t\t\t\t\t\t\telt.property === record.property\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetUnselectedEntities( record, value )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclosePanel={ closePanel }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</PanelBody>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/editor/src/components/entities-saved-states/entity-type-list.js"],"names":["getEntityDescription","entity","length","EntityTypeList","list","unselectedEntities","setUnselectedEntities","closePanel","firstRecord","select","coreStore","getEntity","kind","name","entityLabel","label","description","map","record","key","property","elt","value"],"mappings":";;;;;;;;;;;AAGA;;AAKA;;AACA;;AACA;;AACA;;AAKA;;AAhBA;AACA;AACA;;AAGA;AACA;AACA;;AAMA;AACA;AACA;AAGA,SAASA,oBAAT,CAA+BC,MAA/B,EAAuCC,MAAvC,EAAgD;AAC/C,UAASD,MAAT;AACC,SAAK,MAAL;AACC,aAAO,cACN,0CADM,EAEN,4CAFM,EAGNC,MAHM,CAAP;;AAKD,SAAK,aAAL;AACC,aAAO,cACN,iEADM,EAEN,qEAFM,EAGNA,MAHM,CAAP;;AAKD,SAAK,MAAL;AACA,SAAK,MAAL;AACC,aAAO,cAAI,0CAAJ,CAAP;AAfF;AAiBA;;AAEc,SAASC,cAAT,CAAyB;AACvCC,EAAAA,IADuC;AAEvCC,EAAAA,kBAFuC;AAGvCC,EAAAA,qBAHuC;AAIvCC,EAAAA;AAJuC,CAAzB,EAKX;AACH,QAAMC,WAAW,GAAGJ,IAAI,CAAE,CAAF,CAAxB;AACA,QAAMH,MAAM,GAAG,qBACZQ,MAAF,IACCA,MAAM,CAAEC,eAAF,CAAN,CAAoBC,SAApB,CAA+BH,WAAW,CAACI,IAA3C,EAAiDJ,WAAW,CAACK,IAA7D,CAFa,EAGd,CAAEL,WAAW,CAACI,IAAd,EAAoBJ,WAAW,CAACK,IAAhC,CAHc,CAAf;AAKA,QAAM;AAAEA,IAAAA;AAAF,MAAWL,WAAjB;AACA,QAAMM,WAAW,GAChBD,IAAI,KAAK,kBAAT,GACG,cAAI,eAAJ,EAAqB,gBAArB,EAAuCT,IAAI,CAACF,MAA5C,CADH,GAEGD,MAAM,CAACc,KAHX,CARG,CAYH;;AACA,QAAMC,WAAW,GAAGhB,oBAAoB,CAAEa,IAAF,EAAQT,IAAI,CAACF,MAAb,CAAxC;AAEA,SACC,4BAAC,qBAAD;AAAW,IAAA,KAAK,EAAGY,WAAnB;AAAiC,IAAA,WAAW,EAAG;AAA/C,KACGE,WAAW,IAAI,4BAAC,oBAAD,QAAYA,WAAZ,CADlB,EAEGZ,IAAI,CAACa,GAAL,CAAYC,MAAF,IAAc;AACzB,WACC,4BAAC,yBAAD;AACC,MAAA,GAAG,EAAGA,MAAM,CAACC,GAAP,IAAcD,MAAM,CAACE,QAD5B;AAEC,MAAA,MAAM,EAAGF,MAFV;AAGC,MAAA,OAAO,EACN,CAAE,kBACDb,kBADC,EAECgB,GAAF,IACCA,GAAG,CAACT,IAAJ,KAAaM,MAAM,CAACN,IAApB,IACAS,GAAG,CAACR,IAAJ,KAAaK,MAAM,CAACL,IADpB,IAEAQ,GAAG,CAACF,GAAJ,KAAYD,MAAM,CAACC,GAFnB,IAGAE,GAAG,CAACD,QAAJ,KAAiBF,MAAM,CAACE,QANxB,CAJJ;AAaC,MAAA,QAAQ,EAAKE,KAAF,IACVhB,qBAAqB,CAAEY,MAAF,EAAUI,KAAV,CAdvB;AAgBC,MAAA,UAAU,EAAGf;AAhBd,MADD;AAoBA,GArBC,CAFH,CADD;AA2BA","sourcesContent":["/**\n * External dependencies\n */\nimport { some } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, _n } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { PanelBody, PanelRow } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport EntityRecordItem from './entity-record-item';\n\nfunction getEntityDescription( entity, length ) {\n\tswitch ( entity ) {\n\t\tcase 'site':\n\t\t\treturn _n(\n\t\t\t\t'This change will affect your whole site.',\n\t\t\t\t'These changes will affect your whole site.',\n\t\t\t\tlength\n\t\t\t);\n\t\tcase 'wp_template':\n\t\t\treturn _n(\n\t\t\t\t'This change will affect pages and posts that use this template.',\n\t\t\t\t'These changes will affect pages and posts that use these templates.',\n\t\t\t\tlength\n\t\t\t);\n\t\tcase 'page':\n\t\tcase 'post':\n\t\t\treturn __( 'The following content has been modified.' );\n\t}\n}\n\nexport default function EntityTypeList( {\n\tlist,\n\tunselectedEntities,\n\tsetUnselectedEntities,\n\tclosePanel,\n} ) {\n\tconst firstRecord = list[ 0 ];\n\tconst entity = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getEntity( firstRecord.kind, firstRecord.name ),\n\t\t[ firstRecord.kind, firstRecord.name ]\n\t);\n\tconst { name } = firstRecord;\n\tconst entityLabel =\n\t\tname === 'wp_template_part'\n\t\t\t? _n( 'Template Part', 'Template Parts', list.length )\n\t\t\t: entity.label;\n\t// Set description based on type of entity.\n\tconst description = getEntityDescription( name, list.length );\n\n\treturn (\n\t\t<PanelBody title={ entityLabel } initialOpen={ true }>\n\t\t\t{ description && <PanelRow>{ description }</PanelRow> }\n\t\t\t{ list.map( ( record ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<EntityRecordItem\n\t\t\t\t\t\tkey={ record.key || record.property }\n\t\t\t\t\t\trecord={ record }\n\t\t\t\t\t\tchecked={\n\t\t\t\t\t\t\t! some(\n\t\t\t\t\t\t\t\tunselectedEntities,\n\t\t\t\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\t\t\t\telt.kind === record.kind &&\n\t\t\t\t\t\t\t\t\telt.name === record.name &&\n\t\t\t\t\t\t\t\t\telt.key === record.key &&\n\t\t\t\t\t\t\t\t\telt.property === record.property\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetUnselectedEntities( record, value )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclosePanel={ closePanel }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</PanelBody>\n\t);\n}\n"]}
@@ -38,13 +38,17 @@ var _entityTypeList = _interopRequireDefault(require("./entity-type-list"));
38
38
  /**
39
39
  * Internal dependencies
40
40
  */
41
- const TRANSLATED_SITE_PROTPERTIES = {
41
+ const TRANSLATED_SITE_PROPERTIES = {
42
42
  title: (0, _i18n.__)('Title'),
43
43
  description: (0, _i18n.__)('Tagline'),
44
44
  site_logo: (0, _i18n.__)('Logo'),
45
45
  show_on_front: (0, _i18n.__)('Show on front'),
46
46
  page_on_front: (0, _i18n.__)('Page on front')
47
47
  };
48
+ const PUBLISH_ON_SAVE_ENTITIES = [{
49
+ kind: 'postType',
50
+ name: 'wp_navigation'
51
+ }];
48
52
 
49
53
  function EntitiesSavedStates({
50
54
  close
@@ -64,7 +68,7 @@ function EntitiesSavedStates({
64
68
  siteEditsAsEntities.push({
65
69
  kind: 'root',
66
70
  name: 'site',
67
- title: TRANSLATED_SITE_PROTPERTIES[property] || property,
71
+ title: TRANSLATED_SITE_PROPERTIES[property] || property,
68
72
  property
69
73
  });
70
74
  }
@@ -75,11 +79,20 @@ function EntitiesSavedStates({
75
79
  };
76
80
  }, []);
77
81
  const {
82
+ editEntityRecord,
78
83
  saveEditedEntityRecord,
79
84
  __experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits
80
85
  } = (0, _data.useDispatch)(_coreData.store); // To group entities by type.
81
86
 
82
- const partitionedSavables = Object.values((0, _lodash.groupBy)(dirtyEntityRecords, 'name')); // Unchecked entities to be ignored by save function.
87
+ const partitionedSavables = (0, _lodash.groupBy)(dirtyEntityRecords, 'name'); // Sort entity groups.
88
+
89
+ const {
90
+ site: siteSavables,
91
+ wp_template: templateSavables,
92
+ wp_template_part: templatePartSavables,
93
+ ...contentSavables
94
+ } = partitionedSavables;
95
+ const sortedPartitionedSavables = [siteSavables, templateSavables, templatePartSavables, ...Object.values(contentSavables)].filter(Array.isArray); // Unchecked entities to be ignored by save function.
83
96
 
84
97
  const [unselectedEntities, _setUnselectedEntities] = (0, _element.useState)([]);
85
98
 
@@ -121,6 +134,12 @@ function EntitiesSavedStates({
121
134
  if ('root' === kind && 'site' === name) {
122
135
  siteItemsToSave.push(property);
123
136
  } else {
137
+ if (PUBLISH_ON_SAVE_ENTITIES.some(typeToPublish => typeToPublish.kind === kind && typeToPublish.name === name)) {
138
+ editEntityRecord(kind, name, key, {
139
+ status: 'publish'
140
+ });
141
+ }
142
+
124
143
  saveEditedEntityRecord(kind, name, key);
125
144
  }
126
145
  });
@@ -151,7 +170,7 @@ function EntitiesSavedStates({
151
170
  label: (0, _i18n.__)('Close panel')
152
171
  })), (0, _element.createElement)("div", {
153
172
  className: "entities-saved-states__text-prompt"
154
- }, (0, _element.createElement)("strong", null, (0, _i18n.__)('Select the changes you want to save')), (0, _element.createElement)("p", null, (0, _i18n.__)('Some changes may affect other areas of your site.'))), partitionedSavables.map(list => {
173
+ }, (0, _element.createElement)("strong", null, (0, _i18n.__)('Are you ready to save?')), (0, _element.createElement)("p", null, (0, _i18n.__)('The following changes have been made to your site, templates, and content.'))), sortedPartitionedSavables.map(list => {
155
174
  return (0, _element.createElement)(_entityTypeList.default, {
156
175
  key: list[0].name,
157
176
  list: list,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/editor/src/components/entities-saved-states/index.js"],"names":["TRANSLATED_SITE_PROTPERTIES","title","description","site_logo","show_on_front","page_on_front","EntitiesSavedStates","close","saveButtonRef","dirtyEntityRecords","select","dirtyRecords","coreStore","__experimentalGetDirtyEntityRecords","dirtyRecordsWithoutSite","filter","record","kind","name","siteEdits","getEntityRecordEdits","siteEditsAsEntities","property","push","dirtyRecordsWithSiteItems","saveEditedEntityRecord","__experimentalSaveSpecifiedEntityEdits","saveSpecifiedEntityEdits","partitionedSavables","Object","values","unselectedEntities","_setUnselectedEntities","setUnselectedEntities","key","checked","elt","saveCheckedEntities","entitiesToSave","siteItemsToSave","forEach","undefined","dismissPanel","saveDialogRef","saveDialogProps","onClose","length","closeIcon","map","list"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { some, groupBy } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useState, useCallback, useRef } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __experimentalUseDialog as useDialog } from '@wordpress/compose';\nimport { close as closeIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport EntityTypeList from './entity-type-list';\n\nconst TRANSLATED_SITE_PROTPERTIES = {\n\ttitle: __( 'Title' ),\n\tdescription: __( 'Tagline' ),\n\tsite_logo: __( 'Logo' ),\n\tshow_on_front: __( 'Show on front' ),\n\tpage_on_front: __( 'Page on front' ),\n};\n\nexport default function EntitiesSavedStates( { close } ) {\n\tconst saveButtonRef = useRef();\n\tconst { dirtyEntityRecords } = useSelect( ( select ) => {\n\t\tconst dirtyRecords = select(\n\t\t\tcoreStore\n\t\t).__experimentalGetDirtyEntityRecords();\n\n\t\t// Remove site object and decouple into its edited pieces.\n\t\tconst dirtyRecordsWithoutSite = dirtyRecords.filter(\n\t\t\t( record ) => ! ( record.kind === 'root' && record.name === 'site' )\n\t\t);\n\n\t\tconst siteEdits = select( coreStore ).getEntityRecordEdits(\n\t\t\t'root',\n\t\t\t'site'\n\t\t);\n\n\t\tconst siteEditsAsEntities = [];\n\t\tfor ( const property in siteEdits ) {\n\t\t\tsiteEditsAsEntities.push( {\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'site',\n\t\t\t\ttitle: TRANSLATED_SITE_PROTPERTIES[ property ] || property,\n\t\t\t\tproperty,\n\t\t\t} );\n\t\t}\n\t\tconst dirtyRecordsWithSiteItems = [\n\t\t\t...dirtyRecordsWithoutSite,\n\t\t\t...siteEditsAsEntities,\n\t\t];\n\n\t\treturn {\n\t\t\tdirtyEntityRecords: dirtyRecordsWithSiteItems,\n\t\t};\n\t}, [] );\n\tconst {\n\t\tsaveEditedEntityRecord,\n\t\t__experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits,\n\t} = useDispatch( coreStore );\n\n\t// To group entities by type.\n\tconst partitionedSavables = Object.values(\n\t\tgroupBy( dirtyEntityRecords, 'name' )\n\t);\n\n\t// Unchecked entities to be ignored by save function.\n\tconst [ unselectedEntities, _setUnselectedEntities ] = useState( [] );\n\n\tconst setUnselectedEntities = (\n\t\t{ kind, name, key, property },\n\t\tchecked\n\t) => {\n\t\tif ( checked ) {\n\t\t\t_setUnselectedEntities(\n\t\t\t\tunselectedEntities.filter(\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind !== kind ||\n\t\t\t\t\t\telt.name !== name ||\n\t\t\t\t\t\telt.key !== key ||\n\t\t\t\t\t\telt.property !== property\n\t\t\t\t)\n\t\t\t);\n\t\t} else {\n\t\t\t_setUnselectedEntities( [\n\t\t\t\t...unselectedEntities,\n\t\t\t\t{ kind, name, key, property },\n\t\t\t] );\n\t\t}\n\t};\n\n\tconst saveCheckedEntities = () => {\n\t\tconst entitiesToSave = dirtyEntityRecords.filter(\n\t\t\t( { kind, name, key, property } ) => {\n\t\t\t\treturn ! some(\n\t\t\t\t\tunselectedEntities,\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind === kind &&\n\t\t\t\t\t\telt.name === name &&\n\t\t\t\t\t\telt.key === key &&\n\t\t\t\t\t\telt.property === property\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\n\t\tclose( entitiesToSave );\n\n\t\tconst siteItemsToSave = [];\n\t\tentitiesToSave.forEach( ( { kind, name, key, property } ) => {\n\t\t\tif ( 'root' === kind && 'site' === name ) {\n\t\t\t\tsiteItemsToSave.push( property );\n\t\t\t} else {\n\t\t\t\tsaveEditedEntityRecord( kind, name, key );\n\t\t\t}\n\t\t} );\n\t\tsaveSpecifiedEntityEdits( 'root', 'site', undefined, siteItemsToSave );\n\t};\n\n\t// Explicitly define this with no argument passed. Using `close` on\n\t// its own will use the event object in place of the expected saved entities.\n\tconst dismissPanel = useCallback( () => close(), [ close ] );\n\n\tconst [ saveDialogRef, saveDialogProps ] = useDialog( {\n\t\tonClose: () => dismissPanel(),\n\t} );\n\n\treturn (\n\t\t<div\n\t\t\tref={ saveDialogRef }\n\t\t\t{ ...saveDialogProps }\n\t\t\tclassName=\"entities-saved-states__panel\"\n\t\t>\n\t\t\t<div className=\"entities-saved-states__panel-header\">\n\t\t\t\t<Button\n\t\t\t\t\tref={ saveButtonRef }\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\tdirtyEntityRecords.length -\n\t\t\t\t\t\t\tunselectedEntities.length ===\n\t\t\t\t\t\t0\n\t\t\t\t\t}\n\t\t\t\t\tonClick={ saveCheckedEntities }\n\t\t\t\t\tclassName=\"editor-entities-saved-states__save-button\"\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t</Button>\n\t\t\t\t<Button\n\t\t\t\t\ticon={ closeIcon }\n\t\t\t\t\tonClick={ dismissPanel }\n\t\t\t\t\tlabel={ __( 'Close panel' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<div className=\"entities-saved-states__text-prompt\">\n\t\t\t\t<strong>{ __( 'Select the changes you want to save' ) }</strong>\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Some changes may affect other areas of your site.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t{ partitionedSavables.map( ( list ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<EntityTypeList\n\t\t\t\t\t\tkey={ list[ 0 ].name }\n\t\t\t\t\t\tlist={ list }\n\t\t\t\t\t\tclosePanel={ dismissPanel }\n\t\t\t\t\t\tunselectedEntities={ unselectedEntities }\n\t\t\t\t\t\tsetUnselectedEntities={ setUnselectedEntities }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/editor/src/components/entities-saved-states/index.js"],"names":["TRANSLATED_SITE_PROPERTIES","title","description","site_logo","show_on_front","page_on_front","PUBLISH_ON_SAVE_ENTITIES","kind","name","EntitiesSavedStates","close","saveButtonRef","dirtyEntityRecords","select","dirtyRecords","coreStore","__experimentalGetDirtyEntityRecords","dirtyRecordsWithoutSite","filter","record","siteEdits","getEntityRecordEdits","siteEditsAsEntities","property","push","dirtyRecordsWithSiteItems","editEntityRecord","saveEditedEntityRecord","__experimentalSaveSpecifiedEntityEdits","saveSpecifiedEntityEdits","partitionedSavables","site","siteSavables","wp_template","templateSavables","wp_template_part","templatePartSavables","contentSavables","sortedPartitionedSavables","Object","values","Array","isArray","unselectedEntities","_setUnselectedEntities","setUnselectedEntities","key","checked","elt","saveCheckedEntities","entitiesToSave","siteItemsToSave","forEach","some","typeToPublish","status","undefined","dismissPanel","saveDialogRef","saveDialogProps","onClose","length","closeIcon","map","list"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { some, groupBy } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useState, useCallback, useRef } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __experimentalUseDialog as useDialog } from '@wordpress/compose';\nimport { close as closeIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport EntityTypeList from './entity-type-list';\n\nconst TRANSLATED_SITE_PROPERTIES = {\n\ttitle: __( 'Title' ),\n\tdescription: __( 'Tagline' ),\n\tsite_logo: __( 'Logo' ),\n\tshow_on_front: __( 'Show on front' ),\n\tpage_on_front: __( 'Page on front' ),\n};\n\nconst PUBLISH_ON_SAVE_ENTITIES = [\n\t{\n\t\tkind: 'postType',\n\t\tname: 'wp_navigation',\n\t},\n];\n\nexport default function EntitiesSavedStates( { close } ) {\n\tconst saveButtonRef = useRef();\n\tconst { dirtyEntityRecords } = useSelect( ( select ) => {\n\t\tconst dirtyRecords = select(\n\t\t\tcoreStore\n\t\t).__experimentalGetDirtyEntityRecords();\n\n\t\t// Remove site object and decouple into its edited pieces.\n\t\tconst dirtyRecordsWithoutSite = dirtyRecords.filter(\n\t\t\t( record ) => ! ( record.kind === 'root' && record.name === 'site' )\n\t\t);\n\n\t\tconst siteEdits = select( coreStore ).getEntityRecordEdits(\n\t\t\t'root',\n\t\t\t'site'\n\t\t);\n\n\t\tconst siteEditsAsEntities = [];\n\t\tfor ( const property in siteEdits ) {\n\t\t\tsiteEditsAsEntities.push( {\n\t\t\t\tkind: 'root',\n\t\t\t\tname: 'site',\n\t\t\t\ttitle: TRANSLATED_SITE_PROPERTIES[ property ] || property,\n\t\t\t\tproperty,\n\t\t\t} );\n\t\t}\n\t\tconst dirtyRecordsWithSiteItems = [\n\t\t\t...dirtyRecordsWithoutSite,\n\t\t\t...siteEditsAsEntities,\n\t\t];\n\n\t\treturn {\n\t\t\tdirtyEntityRecords: dirtyRecordsWithSiteItems,\n\t\t};\n\t}, [] );\n\tconst {\n\t\teditEntityRecord,\n\t\tsaveEditedEntityRecord,\n\t\t__experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits,\n\t} = useDispatch( coreStore );\n\n\t// To group entities by type.\n\tconst partitionedSavables = groupBy( dirtyEntityRecords, 'name' );\n\n\t// Sort entity groups.\n\tconst {\n\t\tsite: siteSavables,\n\t\twp_template: templateSavables,\n\t\twp_template_part: templatePartSavables,\n\t\t...contentSavables\n\t} = partitionedSavables;\n\tconst sortedPartitionedSavables = [\n\t\tsiteSavables,\n\t\ttemplateSavables,\n\t\ttemplatePartSavables,\n\t\t...Object.values( contentSavables ),\n\t].filter( Array.isArray );\n\n\t// Unchecked entities to be ignored by save function.\n\tconst [ unselectedEntities, _setUnselectedEntities ] = useState( [] );\n\n\tconst setUnselectedEntities = (\n\t\t{ kind, name, key, property },\n\t\tchecked\n\t) => {\n\t\tif ( checked ) {\n\t\t\t_setUnselectedEntities(\n\t\t\t\tunselectedEntities.filter(\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind !== kind ||\n\t\t\t\t\t\telt.name !== name ||\n\t\t\t\t\t\telt.key !== key ||\n\t\t\t\t\t\telt.property !== property\n\t\t\t\t)\n\t\t\t);\n\t\t} else {\n\t\t\t_setUnselectedEntities( [\n\t\t\t\t...unselectedEntities,\n\t\t\t\t{ kind, name, key, property },\n\t\t\t] );\n\t\t}\n\t};\n\n\tconst saveCheckedEntities = () => {\n\t\tconst entitiesToSave = dirtyEntityRecords.filter(\n\t\t\t( { kind, name, key, property } ) => {\n\t\t\t\treturn ! some(\n\t\t\t\t\tunselectedEntities,\n\t\t\t\t\t( elt ) =>\n\t\t\t\t\t\telt.kind === kind &&\n\t\t\t\t\t\telt.name === name &&\n\t\t\t\t\t\telt.key === key &&\n\t\t\t\t\t\telt.property === property\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\n\t\tclose( entitiesToSave );\n\n\t\tconst siteItemsToSave = [];\n\t\tentitiesToSave.forEach( ( { kind, name, key, property } ) => {\n\t\t\tif ( 'root' === kind && 'site' === name ) {\n\t\t\t\tsiteItemsToSave.push( property );\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tPUBLISH_ON_SAVE_ENTITIES.some(\n\t\t\t\t\t\t( typeToPublish ) =>\n\t\t\t\t\t\t\ttypeToPublish.kind === kind &&\n\t\t\t\t\t\t\ttypeToPublish.name === name\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\teditEntityRecord( kind, name, key, { status: 'publish' } );\n\t\t\t\t}\n\n\t\t\t\tsaveEditedEntityRecord( kind, name, key );\n\t\t\t}\n\t\t} );\n\t\tsaveSpecifiedEntityEdits( 'root', 'site', undefined, siteItemsToSave );\n\t};\n\n\t// Explicitly define this with no argument passed. Using `close` on\n\t// its own will use the event object in place of the expected saved entities.\n\tconst dismissPanel = useCallback( () => close(), [ close ] );\n\n\tconst [ saveDialogRef, saveDialogProps ] = useDialog( {\n\t\tonClose: () => dismissPanel(),\n\t} );\n\n\treturn (\n\t\t<div\n\t\t\tref={ saveDialogRef }\n\t\t\t{ ...saveDialogProps }\n\t\t\tclassName=\"entities-saved-states__panel\"\n\t\t>\n\t\t\t<div className=\"entities-saved-states__panel-header\">\n\t\t\t\t<Button\n\t\t\t\t\tref={ saveButtonRef }\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\tdirtyEntityRecords.length -\n\t\t\t\t\t\t\tunselectedEntities.length ===\n\t\t\t\t\t\t0\n\t\t\t\t\t}\n\t\t\t\t\tonClick={ saveCheckedEntities }\n\t\t\t\t\tclassName=\"editor-entities-saved-states__save-button\"\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t</Button>\n\t\t\t\t<Button\n\t\t\t\t\ticon={ closeIcon }\n\t\t\t\t\tonClick={ dismissPanel }\n\t\t\t\t\tlabel={ __( 'Close panel' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<div className=\"entities-saved-states__text-prompt\">\n\t\t\t\t<strong>{ __( 'Are you ready to save?' ) }</strong>\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'The following changes have been made to your site, templates, and content.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t{ sortedPartitionedSavables.map( ( list ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<EntityTypeList\n\t\t\t\t\t\tkey={ list[ 0 ].name }\n\t\t\t\t\t\tlist={ list }\n\t\t\t\t\t\tclosePanel={ dismissPanel }\n\t\t\t\t\t\tunselectedEntities={ unselectedEntities }\n\t\t\t\t\t\tsetUnselectedEntities={ setUnselectedEntities }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</div>\n\t);\n}\n"]}
@@ -29,24 +29,24 @@ function SaveShortcut({
29
29
  } = (0, _data.useDispatch)(_store.store);
30
30
  const {
31
31
  isEditedPostDirty,
32
- getPostEdits
33
- } = (0, _data.useSelect)(select => {
34
- const {
35
- isEditedPostDirty: _isEditedPostDirty,
36
- getPostEdits: _getPostEdits
37
- } = select(_store.store);
38
- return {
39
- isEditedPostDirty: _isEditedPostDirty,
40
- getPostEdits: _getPostEdits
41
- };
42
- }, []);
32
+ getPostEdits,
33
+ isPostSavingLocked
34
+ } = (0, _data.useSelect)(_store.store);
43
35
  (0, _keyboardShortcuts.useShortcut)('core/editor/save', event => {
44
- event.preventDefault(); // TODO: This should be handled in the `savePost` effect in
36
+ event.preventDefault();
37
+ /**
38
+ * Do not save the post if post saving is locked.
39
+ */
40
+
41
+ if (isPostSavingLocked()) {
42
+ return;
43
+ } // TODO: This should be handled in the `savePost` effect in
45
44
  // considering `isSaveable`. See note on `isEditedPostSaveable`
46
45
  // selector about dirtiness and meta-boxes.
47
46
  //
48
47
  // See: `isEditedPostSaveable`
49
48
 
49
+
50
50
  if (!isEditedPostDirty()) {
51
51
  return;
52
52
  } // The text editor requires that editor blocks are updated for a
@@ -65,8 +65,6 @@ function SaveShortcut({
65
65
  }
66
66
 
67
67
  savePost();
68
- }, {
69
- bindGlobal: true
70
68
  });
71
69
  return null;
72
70
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/editor/src/components/global-keyboard-shortcuts/save-shortcut.js"],"names":["SaveShortcut","resetBlocksOnSave","resetEditorBlocks","savePost","editorStore","isEditedPostDirty","getPostEdits","select","_isEditedPostDirty","_getPostEdits","event","preventDefault","postEdits","content","blocks","bindGlobal"],"mappings":";;;;;;;AAGA;;AACA;;AACA;;AAKA;;AAVA;AACA;AACA;;AAKA;AACA;AACA;AAGA,SAASA,YAAT,CAAuB;AAAEC,EAAAA;AAAF,CAAvB,EAA+C;AAC9C,QAAM;AAAEC,IAAAA,iBAAF;AAAqBC,IAAAA;AAArB,MAAkC,uBAAaC,YAAb,CAAxC;AACA,QAAM;AAAEC,IAAAA,iBAAF;AAAqBC,IAAAA;AAArB,MAAsC,qBAAaC,MAAF,IAAc;AACpE,UAAM;AACLF,MAAAA,iBAAiB,EAAEG,kBADd;AAELF,MAAAA,YAAY,EAAEG;AAFT,QAGFF,MAAM,CAAEH,YAAF,CAHV;AAKA,WAAO;AACNC,MAAAA,iBAAiB,EAAEG,kBADb;AAENF,MAAAA,YAAY,EAAEG;AAFR,KAAP;AAIA,GAV2C,EAUzC,EAVyC,CAA5C;AAYA,sCACC,kBADD,EAEGC,KAAF,IAAa;AACZA,IAAAA,KAAK,CAACC,cAAN,GADY,CAGZ;AACA;AACA;AACA;AACA;;AACA,QAAK,CAAEN,iBAAiB,EAAxB,EAA6B;AAC5B;AACA,KAVW,CAYZ;AACA;AACA;AACA;;;AACA,QAAKJ,iBAAL,EAAyB;AACxB,YAAMW,SAAS,GAAGN,YAAY,EAA9B;;AACA,UACCM,SAAS,CAACC,OAAV,IACA,OAAOD,SAAS,CAACC,OAAjB,KAA6B,QAF9B,EAGE;AACD,cAAMC,MAAM,GAAG,mBAAOF,SAAS,CAACC,OAAjB,CAAf;AACAX,QAAAA,iBAAiB,CAAEY,MAAF,CAAjB;AACA;AACD;;AAEDX,IAAAA,QAAQ;AACR,GA9BF,EA+BC;AAAEY,IAAAA,UAAU,EAAE;AAAd,GA/BD;AAkCA,SAAO,IAAP;AACA;;eAEcf,Y","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useShortcut } from '@wordpress/keyboard-shortcuts';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { parse } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nfunction SaveShortcut( { resetBlocksOnSave } ) {\n\tconst { resetEditorBlocks, savePost } = useDispatch( editorStore );\n\tconst { isEditedPostDirty, getPostEdits } = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tisEditedPostDirty: _isEditedPostDirty,\n\t\t\tgetPostEdits: _getPostEdits,\n\t\t} = select( editorStore );\n\n\t\treturn {\n\t\t\tisEditedPostDirty: _isEditedPostDirty,\n\t\t\tgetPostEdits: _getPostEdits,\n\t\t};\n\t}, [] );\n\n\tuseShortcut(\n\t\t'core/editor/save',\n\t\t( event ) => {\n\t\t\tevent.preventDefault();\n\n\t\t\t// TODO: This should be handled in the `savePost` effect in\n\t\t\t// considering `isSaveable`. See note on `isEditedPostSaveable`\n\t\t\t// selector about dirtiness and meta-boxes.\n\t\t\t//\n\t\t\t// See: `isEditedPostSaveable`\n\t\t\tif ( ! isEditedPostDirty() ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// The text editor requires that editor blocks are updated for a\n\t\t\t// save to work correctly. Usually this happens when the textarea\n\t\t\t// for the code editors blurs, but the shortcut can be used without\n\t\t\t// blurring the textarea.\n\t\t\tif ( resetBlocksOnSave ) {\n\t\t\t\tconst postEdits = getPostEdits();\n\t\t\t\tif (\n\t\t\t\t\tpostEdits.content &&\n\t\t\t\t\ttypeof postEdits.content === 'string'\n\t\t\t\t) {\n\t\t\t\t\tconst blocks = parse( postEdits.content );\n\t\t\t\t\tresetEditorBlocks( blocks );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsavePost();\n\t\t},\n\t\t{ bindGlobal: true }\n\t);\n\n\treturn null;\n}\n\nexport default SaveShortcut;\n"]}
1
+ {"version":3,"sources":["@wordpress/editor/src/components/global-keyboard-shortcuts/save-shortcut.js"],"names":["SaveShortcut","resetBlocksOnSave","resetEditorBlocks","savePost","editorStore","isEditedPostDirty","getPostEdits","isPostSavingLocked","event","preventDefault","postEdits","content","blocks"],"mappings":";;;;;;;AAGA;;AACA;;AACA;;AAKA;;AAVA;AACA;AACA;;AAKA;AACA;AACA;AAGA,SAASA,YAAT,CAAuB;AAAEC,EAAAA;AAAF,CAAvB,EAA+C;AAC9C,QAAM;AAAEC,IAAAA,iBAAF;AAAqBC,IAAAA;AAArB,MAAkC,uBAAaC,YAAb,CAAxC;AACA,QAAM;AAAEC,IAAAA,iBAAF;AAAqBC,IAAAA,YAArB;AAAmCC,IAAAA;AAAnC,MAA0D,qBAC/DH,YAD+D,CAAhE;AAIA,sCAAa,kBAAb,EAAmCI,KAAF,IAAa;AAC7CA,IAAAA,KAAK,CAACC,cAAN;AAEA;AACF;AACA;;AACE,QAAKF,kBAAkB,EAAvB,EAA4B;AAC3B;AACA,KAR4C,CAU7C;AACA;AACA;AACA;AACA;;;AACA,QAAK,CAAEF,iBAAiB,EAAxB,EAA6B;AAC5B;AACA,KAjB4C,CAmB7C;AACA;AACA;AACA;;;AACA,QAAKJ,iBAAL,EAAyB;AACxB,YAAMS,SAAS,GAAGJ,YAAY,EAA9B;;AACA,UAAKI,SAAS,CAACC,OAAV,IAAqB,OAAOD,SAAS,CAACC,OAAjB,KAA6B,QAAvD,EAAkE;AACjE,cAAMC,MAAM,GAAG,mBAAOF,SAAS,CAACC,OAAjB,CAAf;AACAT,QAAAA,iBAAiB,CAAEU,MAAF,CAAjB;AACA;AACD;;AAEDT,IAAAA,QAAQ;AACR,GAhCD;AAkCA,SAAO,IAAP;AACA;;eAEcH,Y","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useShortcut } from '@wordpress/keyboard-shortcuts';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { parse } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nfunction SaveShortcut( { resetBlocksOnSave } ) {\n\tconst { resetEditorBlocks, savePost } = useDispatch( editorStore );\n\tconst { isEditedPostDirty, getPostEdits, isPostSavingLocked } = useSelect(\n\t\teditorStore\n\t);\n\n\tuseShortcut( 'core/editor/save', ( event ) => {\n\t\tevent.preventDefault();\n\n\t\t/**\n\t\t * Do not save the post if post saving is locked.\n\t\t */\n\t\tif ( isPostSavingLocked() ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// TODO: This should be handled in the `savePost` effect in\n\t\t// considering `isSaveable`. See note on `isEditedPostSaveable`\n\t\t// selector about dirtiness and meta-boxes.\n\t\t//\n\t\t// See: `isEditedPostSaveable`\n\t\tif ( ! isEditedPostDirty() ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// The text editor requires that editor blocks are updated for a\n\t\t// save to work correctly. Usually this happens when the textarea\n\t\t// for the code editors blurs, but the shortcut can be used without\n\t\t// blurring the textarea.\n\t\tif ( resetBlocksOnSave ) {\n\t\t\tconst postEdits = getPostEdits();\n\t\t\tif ( postEdits.content && typeof postEdits.content === 'string' ) {\n\t\t\t\tconst blocks = parse( postEdits.content );\n\t\t\t\tresetEditorBlocks( blocks );\n\t\t\t}\n\t\t}\n\n\t\tsavePost();\n\t} );\n\n\treturn null;\n}\n\nexport default SaveShortcut;\n"]}
@@ -32,14 +32,10 @@ function VisualEditorGlobalKeyboardShortcuts() {
32
32
  (0, _keyboardShortcuts.useShortcut)('core/editor/undo', event => {
33
33
  undo();
34
34
  event.preventDefault();
35
- }, {
36
- bindGlobal: true
37
35
  });
38
36
  (0, _keyboardShortcuts.useShortcut)('core/editor/redo', event => {
39
37
  redo();
40
38
  event.preventDefault();
41
- }, {
42
- bindGlobal: true
43
39
  });
44
40
  return (0, _element.createElement)(_saveShortcut.default, null);
45
41
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/editor/src/components/global-keyboard-shortcuts/visual-editor-shortcuts.js"],"names":["VisualEditorGlobalKeyboardShortcuts","redo","undo","editorStore","event","preventDefault","bindGlobal"],"mappings":";;;;;;;;;;;AAGA;;AACA;;AAKA;;AACA;;AAVA;AACA;AACA;;AAIA;AACA;AACA;AAIA,SAASA,mCAAT,GAA+C;AAC9C,QAAM;AAAEC,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAiB,uBAAaC,YAAb,CAAvB;AAEA,sCACC,kBADD,EAEGC,KAAF,IAAa;AACZF,IAAAA,IAAI;AACJE,IAAAA,KAAK,CAACC,cAAN;AACA,GALF,EAMC;AAAEC,IAAAA,UAAU,EAAE;AAAd,GAND;AASA,sCACC,kBADD,EAEGF,KAAF,IAAa;AACZH,IAAAA,IAAI;AACJG,IAAAA,KAAK,CAACC,cAAN;AACA,GALF,EAMC;AAAEC,IAAAA,UAAU,EAAE;AAAd,GAND;AASA,SAAO,4BAAC,qBAAD,OAAP;AACA;;eAEcN,mC","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useShortcut } from '@wordpress/keyboard-shortcuts';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport SaveShortcut from './save-shortcut';\nimport { store as editorStore } from '../../store';\n\nfunction VisualEditorGlobalKeyboardShortcuts() {\n\tconst { redo, undo } = useDispatch( editorStore );\n\n\tuseShortcut(\n\t\t'core/editor/undo',\n\t\t( event ) => {\n\t\t\tundo();\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t{ bindGlobal: true }\n\t);\n\n\tuseShortcut(\n\t\t'core/editor/redo',\n\t\t( event ) => {\n\t\t\tredo();\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t{ bindGlobal: true }\n\t);\n\n\treturn <SaveShortcut />;\n}\n\nexport default VisualEditorGlobalKeyboardShortcuts;\n"]}
1
+ {"version":3,"sources":["@wordpress/editor/src/components/global-keyboard-shortcuts/visual-editor-shortcuts.js"],"names":["VisualEditorGlobalKeyboardShortcuts","redo","undo","editorStore","event","preventDefault"],"mappings":";;;;;;;;;;;AAGA;;AACA;;AAKA;;AACA;;AAVA;AACA;AACA;;AAIA;AACA;AACA;AAIA,SAASA,mCAAT,GAA+C;AAC9C,QAAM;AAAEC,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAiB,uBAAaC,YAAb,CAAvB;AAEA,sCAAa,kBAAb,EAAmCC,KAAF,IAAa;AAC7CF,IAAAA,IAAI;AACJE,IAAAA,KAAK,CAACC,cAAN;AACA,GAHD;AAKA,sCAAa,kBAAb,EAAmCD,KAAF,IAAa;AAC7CH,IAAAA,IAAI;AACJG,IAAAA,KAAK,CAACC,cAAN;AACA,GAHD;AAKA,SAAO,4BAAC,qBAAD,OAAP;AACA;;eAEcL,mC","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useShortcut } from '@wordpress/keyboard-shortcuts';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport SaveShortcut from './save-shortcut';\nimport { store as editorStore } from '../../store';\n\nfunction VisualEditorGlobalKeyboardShortcuts() {\n\tconst { redo, undo } = useDispatch( editorStore );\n\n\tuseShortcut( 'core/editor/undo', ( event ) => {\n\t\tundo();\n\t\tevent.preventDefault();\n\t} );\n\n\tuseShortcut( 'core/editor/redo', ( event ) => {\n\t\tredo();\n\t\tevent.preventDefault();\n\t} );\n\n\treturn <SaveShortcut />;\n}\n\nexport default VisualEditorGlobalKeyboardShortcuts;\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
- }, suggestion.caption))));
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