@wordpress/editor 14.48.2-next.v.202606191442.0 → 14.49.1

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 (94) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +5 -13
  3. package/build/components/autosave-monitor/index.cjs +40 -83
  4. package/build/components/autosave-monitor/index.cjs.map +3 -3
  5. package/build/components/post-publish-panel/postpublish.cjs +0 -1
  6. package/build/components/post-publish-panel/postpublish.cjs.map +2 -2
  7. package/build/components/post-status/index.cjs +0 -1
  8. package/build/components/post-status/index.cjs.map +2 -2
  9. package/build/components/post-taxonomies/hierarchical-term-selector.cjs +0 -1
  10. package/build/components/post-taxonomies/hierarchical-term-selector.cjs.map +2 -2
  11. package/build/components/post-template/create-new-template-modal.cjs +0 -1
  12. package/build/components/post-template/create-new-template-modal.cjs.map +2 -2
  13. package/build/components/post-text-editor/utils.cjs +2 -2
  14. package/build/components/post-text-editor/utils.cjs.map +1 -1
  15. package/build/components/post-visibility/index.cjs +0 -1
  16. package/build/components/post-visibility/index.cjs.map +2 -2
  17. package/build/components/provider/disable-non-page-content-blocks.cjs +23 -3
  18. package/build/components/provider/disable-non-page-content-blocks.cjs.map +2 -2
  19. package/build/components/provider/navigation-block-editing-mode.cjs +9 -2
  20. package/build/components/provider/navigation-block-editing-mode.cjs.map +2 -2
  21. package/build/components/provider/use-block-editor-settings.cjs +2 -1
  22. package/build/components/provider/use-block-editor-settings.cjs.map +2 -2
  23. package/build/components/sidebar/dataform-post-summary.cjs +87 -32
  24. package/build/components/sidebar/dataform-post-summary.cjs.map +3 -3
  25. package/build/components/sidebar/post-summary.cjs +8 -6
  26. package/build/components/sidebar/post-summary.cjs.map +3 -3
  27. package/build/dataviews/store/private-actions.cjs +3 -1
  28. package/build/dataviews/store/private-actions.cjs.map +2 -2
  29. package/build/store/private-actions.cjs +2 -2
  30. package/build/store/private-actions.cjs.map +2 -2
  31. package/build-module/components/autosave-monitor/index.mjs +42 -81
  32. package/build-module/components/autosave-monitor/index.mjs.map +2 -2
  33. package/build-module/components/post-publish-panel/postpublish.mjs +0 -1
  34. package/build-module/components/post-publish-panel/postpublish.mjs.map +2 -2
  35. package/build-module/components/post-status/index.mjs +0 -1
  36. package/build-module/components/post-status/index.mjs.map +2 -2
  37. package/build-module/components/post-taxonomies/hierarchical-term-selector.mjs +0 -1
  38. package/build-module/components/post-taxonomies/hierarchical-term-selector.mjs.map +2 -2
  39. package/build-module/components/post-template/create-new-template-modal.mjs +0 -1
  40. package/build-module/components/post-template/create-new-template-modal.mjs.map +2 -2
  41. package/build-module/components/post-text-editor/utils.mjs +2 -2
  42. package/build-module/components/post-text-editor/utils.mjs.map +1 -1
  43. package/build-module/components/post-visibility/index.mjs +0 -1
  44. package/build-module/components/post-visibility/index.mjs.map +2 -2
  45. package/build-module/components/provider/disable-non-page-content-blocks.mjs +23 -3
  46. package/build-module/components/provider/disable-non-page-content-blocks.mjs.map +2 -2
  47. package/build-module/components/provider/navigation-block-editing-mode.mjs +10 -3
  48. package/build-module/components/provider/navigation-block-editing-mode.mjs.map +2 -2
  49. package/build-module/components/provider/use-block-editor-settings.mjs +2 -1
  50. package/build-module/components/provider/use-block-editor-settings.mjs.map +2 -2
  51. package/build-module/components/sidebar/dataform-post-summary.mjs +88 -33
  52. package/build-module/components/sidebar/dataform-post-summary.mjs.map +2 -2
  53. package/build-module/components/sidebar/post-summary.mjs +8 -6
  54. package/build-module/components/sidebar/post-summary.mjs.map +2 -2
  55. package/build-module/dataviews/store/private-actions.mjs +5 -1
  56. package/build-module/dataviews/store/private-actions.mjs.map +2 -2
  57. package/build-module/store/private-actions.mjs +2 -2
  58. package/build-module/store/private-actions.mjs.map +2 -2
  59. package/build-style/style-rtl.css +29 -33
  60. package/build-style/style.css +29 -33
  61. package/build-types/components/autosave-monitor/index.d.ts +11 -29
  62. package/build-types/components/autosave-monitor/index.d.ts.map +1 -1
  63. package/build-types/components/post-publish-panel/postpublish.d.ts.map +1 -1
  64. package/build-types/components/post-status/index.d.ts.map +1 -1
  65. package/build-types/components/post-taxonomies/hierarchical-term-selector.d.ts.map +1 -1
  66. package/build-types/components/post-template/create-new-template-modal.d.ts.map +1 -1
  67. package/build-types/components/post-visibility/index.d.ts.map +1 -1
  68. package/build-types/components/provider/disable-non-page-content-blocks.d.ts.map +1 -1
  69. package/build-types/components/provider/navigation-block-editing-mode.d.ts.map +1 -1
  70. package/build-types/components/provider/use-block-editor-settings.d.ts.map +1 -1
  71. package/build-types/components/sidebar/dataform-post-summary.d.ts.map +1 -1
  72. package/build-types/components/sidebar/post-summary.d.ts.map +1 -1
  73. package/build-types/dataviews/store/private-actions.d.ts.map +1 -1
  74. package/build-types/utils/get-template-part-icon.d.ts.map +1 -1
  75. package/package.json +46 -46
  76. package/src/components/autosave-monitor/index.js +69 -104
  77. package/src/components/autosave-monitor/test/index.js +137 -122
  78. package/src/components/plugin-post-publish-panel/test/__snapshots__/index.js.snap +1 -0
  79. package/src/components/post-publish-panel/postpublish.js +0 -1
  80. package/src/components/post-publish-panel/test/__snapshots__/index.js.snap +7 -2
  81. package/src/components/post-saved-state/test/__snapshots__/index.js.snap +1 -0
  82. package/src/components/post-status/index.js +0 -1
  83. package/src/components/post-taxonomies/hierarchical-term-selector.js +0 -1
  84. package/src/components/post-template/create-new-template-modal.js +0 -1
  85. package/src/components/post-text-editor/utils.js +2 -2
  86. package/src/components/post-visibility/index.js +0 -1
  87. package/src/components/provider/disable-non-page-content-blocks.js +23 -6
  88. package/src/components/provider/navigation-block-editing-mode.js +10 -4
  89. package/src/components/provider/use-block-editor-settings.js +3 -1
  90. package/src/components/sidebar/dataform-post-summary.js +133 -49
  91. package/src/components/sidebar/post-summary.js +12 -10
  92. package/src/dataviews/store/private-actions.ts +8 -1
  93. package/src/store/private-actions.js +2 -2
  94. package/src/store/test/actions.js +2 -2
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/autosave-monitor/index.js"],
4
- "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\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\n/**\n * Monitors the changes made to the edited post and triggers autosave if necessary.\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 *\n * @param {Object} props - The properties passed to the component.\n * @param {Function} props.autosave - The function to call when changes need to be saved.\n * @param {number} props.interval - The maximum time in seconds between an unsaved change and an autosave.\n * @param {boolean} props.isAutosaveable - If false, the check for changes is retried every second.\n * @param {boolean} props.disableIntervalChecks - If true, disables the timer and any change will immediately trigger `props.autosave()`.\n * @param {boolean} props.isDirty - Indicates if there are unsaved changes.\n *\n * @example\n * ```jsx\n * <AutosaveMonitor interval={30000} />\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"],
5
- "mappings": ";AAGA,SAAS,iBAAiB;AAC1B,SAAS,eAAe;AACxB,SAAS,YAAY,oBAAoB;AACzC,SAAS,SAAS,iBAAiB;AAKnC,SAAS,SAAS,mBAAmB;AAE9B,IAAM,kBAAN,cAA8B,UAAU;AAAA,EAC9C,YAAa,OAAQ;AACpB,UAAO,KAAM;AACb,SAAK,gBAAgB,CAAC,EAAI,MAAM,WAAW,MAAM;AAAA,EAClD;AAAA,EAEA,oBAAoB;AACnB,QAAK,CAAE,KAAK,MAAM,uBAAwB;AACzC,WAAK,iBAAiB;AAAA,IACvB;AAAA,EACD;AAAA,EAEA,mBAAoB,WAAY;AAC/B,QAAK,KAAK,MAAM,uBAAwB;AACvC,UAAK,KAAK,MAAM,mBAAmB,UAAU,gBAAiB;AAC7D,aAAK,MAAM,SAAS;AAAA,MACrB;AACA;AAAA,IACD;AAEA,QAAK,KAAK,MAAM,aAAa,UAAU,UAAW;AACjD,mBAAc,KAAK,OAAQ;AAC3B,WAAK,iBAAiB;AAAA,IACvB;AAEA,QAAK,CAAE,KAAK,MAAM,SAAU;AAC3B,WAAK,gBAAgB;AACrB;AAAA,IACD;AAEA,QAAK,KAAK,MAAM,gBAAgB,CAAE,UAAU,cAAe;AAC1D,WAAK,gBAAgB;AACrB;AAAA,IACD;AAEA,QAAK,KAAK,MAAM,mBAAmB,UAAU,gBAAiB;AAC7D,WAAK,gBAAgB;AAAA,IACtB;AAAA,EACD;AAAA,EAEA,uBAAuB;AACtB,iBAAc,KAAK,OAAQ;AAAA,EAC5B;AAAA,EAEA,iBAAkB,UAAU,KAAK,MAAM,WAAW,KAAO;AACxD,SAAK,UAAU,WAAY,MAAM;AAChC,WAAK,qBAAqB;AAAA,IAC3B,GAAG,OAAQ;AAAA,EACZ;AAAA,EAEA,uBAAuB;AACtB,QAAK,CAAE,KAAK,MAAM,gBAAiB;AAClC,WAAK,iBAAkB,GAAK;AAC5B;AAAA,IACD;AAEA,QAAK,KAAK,eAAgB;AACzB,WAAK,gBAAgB;AACrB,WAAK,MAAM,SAAS;AAAA,IACrB;AAEA,SAAK,iBAAiB;AAAA,EACvB;AAAA,EAEA,SAAS;AACR,WAAO;AAAA,EACR;AACD;AAyBA,IAAO,2BAAQ,QAAS;AAAA,EACvB,WAAY,CAAE,QAAQ,aAAc;AACnC,UAAM,EAAE,4BAA4B,IAAI,OAAQ,SAAU;AAE1D,UAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI,OAAQ,WAAY;AAExB,UAAM,EAAE,WAAW,kBAAkB,EAAE,iBAAiB,IAAI;AAE5D,WAAO;AAAA,MACN,gBAAgB,4BAA4B;AAAA,MAC5C,SAAS,kBAAkB;AAAA,MAC3B,gBAAgB,yBAAyB;AAAA,MACzC,cAAc,iBAAiB;AAAA,MAC/B;AAAA,IACD;AAAA,EACD,CAAE;AAAA,EACF,aAAc,CAAE,UAAU,cAAgB;AAAA,IACzC,WAAW;AACV,YAAM,EAAE,WAAW,SAAU,WAAY,EAAE,SAAS,IAAI;AACxD,eAAS;AAAA,IACV;AAAA,EACD,EAAI;AACL,CAAE,EAAG,eAAgB;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useEffect, useRef } from '@wordpress/element';\nimport { useSelect, useDispatch } 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 * Calls `callback` every `intervalInSeconds`. The latest `callback` is always\n * invoked without resetting the timer.\n *\n * @param {Function} callback Function to call on each tick.\n * @param {number} intervalInSeconds Seconds between ticks.\n */\nfunction useInterval( callback, intervalInSeconds ) {\n\tconst callbackRef = useRef( callback );\n\n\tuseEffect( () => {\n\t\tcallbackRef.current = callback;\n\t}, [ callback ] );\n\n\tuseEffect( () => {\n\t\t// Interval can be undefined before editor settings are populated.\n\t\tif ( ! intervalInSeconds ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst id = setInterval(\n\t\t\t() => callbackRef.current(),\n\t\t\tintervalInSeconds * 1000\n\t\t);\n\t\treturn () => clearInterval( id );\n\t}, [ intervalInSeconds ] );\n}\n\n/**\n * Monitors the changes made to the edited post and triggers autosave if necessary.\n *\n * The post is checked every `interval` seconds and autosaved when there is something new to save.\n *\n * @param {Object} props The component props.\n * @param {number} [props.interval] Time in seconds between checks. Defaults to the editor's\n * `autosaveInterval` setting.\n * @param {Function} [props.autosave] Function to call when changes need to be saved. Defaults to the\n * editor store's `autosave` action.\n *\n * @example\n * ```jsx\n * <AutosaveMonitor interval={ 30 } />\n * ```\n */\nexport default function AutosaveMonitor( { interval, autosave } ) {\n\tconst { autosave: autosaveAction } = useDispatch( editorStore );\n\tconst triggerAutosave = autosave ?? autosaveAction;\n\n\tconst { getReferenceByDistinctEdits } = useSelect( coreStore );\n\tconst { isEditedPostDirty, isEditedPostAutosaveable, isAutosavingPost } =\n\t\tuseSelect( editorStore );\n\n\tconst autosaveInterval = useSelect(\n\t\t( select ) => {\n\t\t\tif ( interval !== undefined ) {\n\t\t\t\treturn interval;\n\t\t\t}\n\n\t\t\treturn select( editorStore ).getEditorSettings().autosaveInterval;\n\t\t},\n\t\t[ interval ]\n\t);\n\n\t// Reference of the edits last considered for autosaving. Mutable state that\n\t// must not trigger a re-render, hence a ref.\n\tconst lastEditsReferenceRef = useRef();\n\n\tuseInterval( () => {\n\t\t// The post can't be autosaved yet (e.g. its existing autosave is still\n\t\t// loading). Keep any pending edits and try again on the next tick.\n\t\tif ( ! isEditedPostAutosaveable() ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst editsReference = getReferenceByDistinctEdits();\n\t\tconst hasNewEdits = editsReference !== lastEditsReferenceRef.current;\n\t\tif ( hasNewEdits && isEditedPostDirty() && ! isAutosavingPost() ) {\n\t\t\t// Only consume the edits reference when we autosave,\n\t\t\t// so edits made during an in-flight autosave aren't skipped.\n\t\t\tlastEditsReferenceRef.current = editsReference;\n\t\t\ttriggerAutosave();\n\t\t}\n\t}, autosaveInterval );\n\n\treturn null;\n}\n"],
5
+ "mappings": ";AAGA,SAAS,WAAW,cAAc;AAClC,SAAS,WAAW,mBAAmB;AACvC,SAAS,SAAS,iBAAiB;AAKnC,SAAS,SAAS,mBAAmB;AASrC,SAAS,YAAa,UAAU,mBAAoB;AACnD,QAAM,cAAc,OAAQ,QAAS;AAErC,YAAW,MAAM;AAChB,gBAAY,UAAU;AAAA,EACvB,GAAG,CAAE,QAAS,CAAE;AAEhB,YAAW,MAAM;AAEhB,QAAK,CAAE,mBAAoB;AAC1B;AAAA,IACD;AAEA,UAAM,KAAK;AAAA,MACV,MAAM,YAAY,QAAQ;AAAA,MAC1B,oBAAoB;AAAA,IACrB;AACA,WAAO,MAAM,cAAe,EAAG;AAAA,EAChC,GAAG,CAAE,iBAAkB,CAAE;AAC1B;AAkBe,SAAR,gBAAkC,EAAE,UAAU,SAAS,GAAI;AACjE,QAAM,EAAE,UAAU,eAAe,IAAI,YAAa,WAAY;AAC9D,QAAM,kBAAkB,YAAY;AAEpC,QAAM,EAAE,4BAA4B,IAAI,UAAW,SAAU;AAC7D,QAAM,EAAE,mBAAmB,0BAA0B,iBAAiB,IACrE,UAAW,WAAY;AAExB,QAAM,mBAAmB;AAAA,IACxB,CAAE,WAAY;AACb,UAAK,aAAa,QAAY;AAC7B,eAAO;AAAA,MACR;AAEA,aAAO,OAAQ,WAAY,EAAE,kBAAkB,EAAE;AAAA,IAClD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAIA,QAAM,wBAAwB,OAAO;AAErC,cAAa,MAAM;AAGlB,QAAK,CAAE,yBAAyB,GAAI;AACnC;AAAA,IACD;AAEA,UAAM,iBAAiB,4BAA4B;AACnD,UAAM,cAAc,mBAAmB,sBAAsB;AAC7D,QAAK,eAAe,kBAAkB,KAAK,CAAE,iBAAiB,GAAI;AAGjE,4BAAsB,UAAU;AAChC,sBAAgB;AAAA,IACjB;AAAA,EACD,GAAG,gBAAiB;AAEpB,SAAO;AACR;",
6
6
  "names": []
7
7
  }
@@ -100,7 +100,6 @@ function PostPublishPanelPostpublish({
100
100
  /* @__PURE__ */ jsx(
101
101
  TextControl,
102
102
  {
103
- __next40pxDefaultSize: true,
104
103
  className: "post-publish-panel__postpublish-post-address",
105
104
  readOnly: true,
106
105
  label: sprintf(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/post-publish-panel/postpublish.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tPanelBody,\n\tButton,\n\tTextControl,\n\tExternalLink,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useCallback, useEffect, useState, useRef } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { addQueryArgs, safeDecodeURIComponent } from '@wordpress/url';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useCopyToClipboard } from '@wordpress/compose';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { external } from '@wordpress/icons';\nimport { VisuallyHidden } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport PostScheduleLabel from '../post-schedule/label';\nimport { store as editorStore } from '../../store';\n\nconst POSTNAME = '%postname%';\nconst PAGENAME = '%pagename%';\n\n/**\n * Returns URL for a future post.\n *\n * @param {Object} post Post object.\n *\n * @return {string} PostPublish URL.\n */\n\nconst getFuturePostUrl = ( post ) => {\n\tconst { slug } = post;\n\n\tif ( post.permalink_template.includes( POSTNAME ) ) {\n\t\treturn post.permalink_template.replace( POSTNAME, slug );\n\t}\n\n\tif ( post.permalink_template.includes( PAGENAME ) ) {\n\t\treturn post.permalink_template.replace( PAGENAME, slug );\n\t}\n\n\treturn post.permalink_template;\n};\n\nfunction CopyButton( { text } ) {\n\tconst [ showCopyConfirmation, setShowCopyConfirmation ] = useState( false );\n\tconst timeoutIdRef = useRef();\n\tconst ref = useCopyToClipboard( text, () => {\n\t\tsetShowCopyConfirmation( true );\n\t\tif ( timeoutIdRef.current ) {\n\t\t\tclearTimeout( timeoutIdRef.current );\n\t\t}\n\t\ttimeoutIdRef.current = setTimeout( () => {\n\t\t\tsetShowCopyConfirmation( false );\n\t\t}, 4000 );\n\t} );\n\n\tuseEffect( () => {\n\t\treturn () => {\n\t\t\tif ( timeoutIdRef.current ) {\n\t\t\t\tclearTimeout( timeoutIdRef.current );\n\t\t\t}\n\t\t};\n\t}, [] );\n\n\treturn (\n\t\t<Button __next40pxDefaultSize variant=\"secondary\" ref={ ref }>\n\t\t\t{ showCopyConfirmation ? __( 'Copied!' ) : __( 'Copy' ) }\n\t\t</Button>\n\t);\n}\n\nexport default function PostPublishPanelPostpublish( {\n\tfocusOnMount,\n\tchildren,\n} ) {\n\tconst { post, postType, isScheduled } = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetEditedPostAttribute,\n\t\t\tgetCurrentPost,\n\t\t\tisCurrentPostScheduled,\n\t\t} = select( editorStore );\n\t\tconst { getPostType } = select( coreStore );\n\n\t\treturn {\n\t\t\tpost: getCurrentPost(),\n\t\t\tpostType: getPostType( getEditedPostAttribute( 'type' ) ),\n\t\t\tisScheduled: isCurrentPostScheduled(),\n\t\t};\n\t}, [] );\n\n\tconst postLabel = postType?.labels?.singular_name;\n\tconst viewPostLabel = postType?.labels?.view_item;\n\tconst addNewPostLabel = postType?.labels?.add_new_item;\n\tconst link =\n\t\tpost.status === 'future' ? getFuturePostUrl( post ) : post.link;\n\tconst addLink = addQueryArgs( 'post-new.php', {\n\t\tpost_type: post.type,\n\t} );\n\n\tconst postLinkRef = useCallback(\n\t\t( node ) => {\n\t\t\tif ( focusOnMount && node ) {\n\t\t\t\tnode.focus();\n\t\t\t}\n\t\t},\n\t\t[ focusOnMount ]\n\t);\n\n\tconst postPublishNonLinkHeader = isScheduled ? (\n\t\t<>\n\t\t\t{ __( 'is now scheduled. It will go live on' ) }{ ' ' }\n\t\t\t<PostScheduleLabel />.\n\t\t</>\n\t) : (\n\t\t__( 'is now live.' )\n\t);\n\n\treturn (\n\t\t<div className=\"post-publish-panel__postpublish\">\n\t\t\t<PanelBody className=\"post-publish-panel__postpublish-header\">\n\t\t\t\t<ExternalLink ref={ postLinkRef } href={ link }>\n\t\t\t\t\t{ decodeEntities( post.title ) || __( '(no title)' ) }\n\t\t\t\t</ExternalLink>{ ' ' }\n\t\t\t\t{ postPublishNonLinkHeader }\n\t\t\t</PanelBody>\n\t\t\t<PanelBody>\n\t\t\t\t<p className=\"post-publish-panel__postpublish-subheader\">\n\t\t\t\t\t<strong>{ __( 'What’s next?' ) }</strong>\n\t\t\t\t</p>\n\t\t\t\t<div className=\"post-publish-panel__postpublish-post-address-container\">\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tclassName=\"post-publish-panel__postpublish-post-address\"\n\t\t\t\t\t\treadOnly\n\t\t\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t\t\t/* translators: %s: post type singular name */\n\t\t\t\t\t\t\t__( '%s address' ),\n\t\t\t\t\t\t\tpostLabel\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tvalue={ safeDecodeURIComponent( link ) }\n\t\t\t\t\t\tonFocus={ ( event ) => event.target.select() }\n\t\t\t\t\t/>\n\n\t\t\t\t\t<div className=\"post-publish-panel__postpublish-post-address__copy-button-wrap\">\n\t\t\t\t\t\t<CopyButton text={ link } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"post-publish-panel__postpublish-buttons\">\n\t\t\t\t\t{ ! isScheduled && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\thref={ link }\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t\t\ticonPosition=\"right\"\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ viewPostLabel }\n\t\t\t\t\t\t\t<VisuallyHidden render={ <span /> }>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t/* translators: accessibility text */\n\t\t\t\t\t\t\t\t\t__( '(opens in a new tab)' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant={ isScheduled ? 'primary' : 'secondary' }\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\thref={ addLink }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ addNewPostLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t</PanelBody>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tPanelBody,\n\tButton,\n\tTextControl,\n\tExternalLink,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useCallback, useEffect, useState, useRef } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { addQueryArgs, safeDecodeURIComponent } from '@wordpress/url';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useCopyToClipboard } from '@wordpress/compose';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { external } from '@wordpress/icons';\nimport { VisuallyHidden } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport PostScheduleLabel from '../post-schedule/label';\nimport { store as editorStore } from '../../store';\n\nconst POSTNAME = '%postname%';\nconst PAGENAME = '%pagename%';\n\n/**\n * Returns URL for a future post.\n *\n * @param {Object} post Post object.\n *\n * @return {string} PostPublish URL.\n */\n\nconst getFuturePostUrl = ( post ) => {\n\tconst { slug } = post;\n\n\tif ( post.permalink_template.includes( POSTNAME ) ) {\n\t\treturn post.permalink_template.replace( POSTNAME, slug );\n\t}\n\n\tif ( post.permalink_template.includes( PAGENAME ) ) {\n\t\treturn post.permalink_template.replace( PAGENAME, slug );\n\t}\n\n\treturn post.permalink_template;\n};\n\nfunction CopyButton( { text } ) {\n\tconst [ showCopyConfirmation, setShowCopyConfirmation ] = useState( false );\n\tconst timeoutIdRef = useRef();\n\tconst ref = useCopyToClipboard( text, () => {\n\t\tsetShowCopyConfirmation( true );\n\t\tif ( timeoutIdRef.current ) {\n\t\t\tclearTimeout( timeoutIdRef.current );\n\t\t}\n\t\ttimeoutIdRef.current = setTimeout( () => {\n\t\t\tsetShowCopyConfirmation( false );\n\t\t}, 4000 );\n\t} );\n\n\tuseEffect( () => {\n\t\treturn () => {\n\t\t\tif ( timeoutIdRef.current ) {\n\t\t\t\tclearTimeout( timeoutIdRef.current );\n\t\t\t}\n\t\t};\n\t}, [] );\n\n\treturn (\n\t\t<Button __next40pxDefaultSize variant=\"secondary\" ref={ ref }>\n\t\t\t{ showCopyConfirmation ? __( 'Copied!' ) : __( 'Copy' ) }\n\t\t</Button>\n\t);\n}\n\nexport default function PostPublishPanelPostpublish( {\n\tfocusOnMount,\n\tchildren,\n} ) {\n\tconst { post, postType, isScheduled } = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetEditedPostAttribute,\n\t\t\tgetCurrentPost,\n\t\t\tisCurrentPostScheduled,\n\t\t} = select( editorStore );\n\t\tconst { getPostType } = select( coreStore );\n\n\t\treturn {\n\t\t\tpost: getCurrentPost(),\n\t\t\tpostType: getPostType( getEditedPostAttribute( 'type' ) ),\n\t\t\tisScheduled: isCurrentPostScheduled(),\n\t\t};\n\t}, [] );\n\n\tconst postLabel = postType?.labels?.singular_name;\n\tconst viewPostLabel = postType?.labels?.view_item;\n\tconst addNewPostLabel = postType?.labels?.add_new_item;\n\tconst link =\n\t\tpost.status === 'future' ? getFuturePostUrl( post ) : post.link;\n\tconst addLink = addQueryArgs( 'post-new.php', {\n\t\tpost_type: post.type,\n\t} );\n\n\tconst postLinkRef = useCallback(\n\t\t( node ) => {\n\t\t\tif ( focusOnMount && node ) {\n\t\t\t\tnode.focus();\n\t\t\t}\n\t\t},\n\t\t[ focusOnMount ]\n\t);\n\n\tconst postPublishNonLinkHeader = isScheduled ? (\n\t\t<>\n\t\t\t{ __( 'is now scheduled. It will go live on' ) }{ ' ' }\n\t\t\t<PostScheduleLabel />.\n\t\t</>\n\t) : (\n\t\t__( 'is now live.' )\n\t);\n\n\treturn (\n\t\t<div className=\"post-publish-panel__postpublish\">\n\t\t\t<PanelBody className=\"post-publish-panel__postpublish-header\">\n\t\t\t\t<ExternalLink ref={ postLinkRef } href={ link }>\n\t\t\t\t\t{ decodeEntities( post.title ) || __( '(no title)' ) }\n\t\t\t\t</ExternalLink>{ ' ' }\n\t\t\t\t{ postPublishNonLinkHeader }\n\t\t\t</PanelBody>\n\t\t\t<PanelBody>\n\t\t\t\t<p className=\"post-publish-panel__postpublish-subheader\">\n\t\t\t\t\t<strong>{ __( 'What’s next?' ) }</strong>\n\t\t\t\t</p>\n\t\t\t\t<div className=\"post-publish-panel__postpublish-post-address-container\">\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tclassName=\"post-publish-panel__postpublish-post-address\"\n\t\t\t\t\t\treadOnly\n\t\t\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t\t\t/* translators: %s: post type singular name */\n\t\t\t\t\t\t\t__( '%s address' ),\n\t\t\t\t\t\t\tpostLabel\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tvalue={ safeDecodeURIComponent( link ) }\n\t\t\t\t\t\tonFocus={ ( event ) => event.target.select() }\n\t\t\t\t\t/>\n\n\t\t\t\t\t<div className=\"post-publish-panel__postpublish-post-address__copy-button-wrap\">\n\t\t\t\t\t\t<CopyButton text={ link } />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"post-publish-panel__postpublish-buttons\">\n\t\t\t\t\t{ ! isScheduled && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\thref={ link }\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t\t\ticonPosition=\"right\"\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ viewPostLabel }\n\t\t\t\t\t\t\t<VisuallyHidden render={ <span /> }>\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t/* translators: accessibility text */\n\t\t\t\t\t\t\t\t\t__( '(opens in a new tab)' )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant={ isScheduled ? 'primary' : 'secondary' }\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\thref={ addLink }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ addNewPostLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t</PanelBody>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -229,7 +229,6 @@ function PostStatus() {
229
229
  ),
230
230
  type: "text",
231
231
  id: passwordInputId,
232
- __next40pxDefaultSize: true,
233
232
  maxLength: 255
234
233
  }
235
234
  ) })
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/post-status/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tCheckboxControl,\n\tDropdown,\n\t__experimentalVStack as VStack,\n\tTextControl,\n\tRadioControl,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useState, useMemo } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __experimentalInspectorPopoverHeader as InspectorPopoverHeader } from '@wordpress/block-editor';\nimport { useInstanceId } from '@wordpress/compose';\nimport {\n\tdrafts,\n\tpublished,\n\tscheduled,\n\tpending,\n\tnotAllowed,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { DESIGN_POST_TYPES } from '../../store/constants';\nimport PostPanelRow from '../post-panel-row';\nimport PostSticky from '../post-sticky';\nimport { PrivatePostSchedule } from '../post-schedule';\nimport { store as editorStore } from '../../store';\n\nconst postStatusesInfo = {\n\t'auto-draft': { label: __( 'Draft' ), icon: drafts },\n\tdraft: { label: __( 'Draft' ), icon: drafts },\n\tpending: { label: __( 'Pending' ), icon: pending },\n\tprivate: { label: __( 'Private' ), icon: notAllowed },\n\tfuture: { label: __( 'Scheduled' ), icon: scheduled },\n\tpublish: { label: __( 'Published' ), icon: published },\n};\n\nexport const STATUS_OPTIONS = [\n\t{\n\t\tlabel: __( 'Draft' ),\n\t\tvalue: 'draft',\n\t\tdescription: __( 'Not ready to publish.' ),\n\t},\n\t{\n\t\tlabel: __( 'Pending' ),\n\t\tvalue: 'pending',\n\t\tdescription: __( 'Waiting for review before publishing.' ),\n\t},\n\t{\n\t\tlabel: __( 'Private' ),\n\t\tvalue: 'private',\n\t\tdescription: __( 'Only visible to site admins and editors.' ),\n\t},\n\t{\n\t\tlabel: __( 'Scheduled' ),\n\t\tvalue: 'future',\n\t\tdescription: __( 'Publish automatically on a chosen date.' ),\n\t},\n\t{\n\t\tlabel: __( 'Published' ),\n\t\tvalue: 'publish',\n\t\tdescription: __( 'Visible to everyone.' ),\n\t},\n];\n\nexport default function PostStatus() {\n\tconst { status, date, password, postId, postType, canEdit } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetEditedPostAttribute,\n\t\t\t\tgetCurrentPostId,\n\t\t\t\tgetCurrentPostType,\n\t\t\t\tgetCurrentPost,\n\t\t\t} = select( editorStore );\n\t\t\treturn {\n\t\t\t\tstatus: getEditedPostAttribute( 'status' ),\n\t\t\t\tdate: getEditedPostAttribute( 'date' ),\n\t\t\t\tpassword: getEditedPostAttribute( 'password' ),\n\t\t\t\tpostId: getCurrentPostId(),\n\t\t\t\tpostType: getCurrentPostType(),\n\t\t\t\tcanEdit:\n\t\t\t\t\tgetCurrentPost()._links?.[ 'wp:action-publish' ] ?? false,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst [ showPassword, setShowPassword ] = useState( !! password );\n\tconst passwordInputId = useInstanceId(\n\t\tPostStatus,\n\t\t'editor-change-status__password-input'\n\t);\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\t// Memoize popoverProps to avoid returning a new object every time.\n\tconst popoverProps = useMemo(\n\t\t() => ( {\n\t\t\t// Anchor the popover to the middle of the entire row so that it doesn't\n\t\t\t// move around when the label changes.\n\t\t\tanchor: popoverAnchor,\n\t\t\t'aria-label': __( 'Status & visibility' ),\n\t\t\theaderTitle: __( 'Status & visibility' ),\n\t\t\tplacement: 'left-start',\n\t\t\toffset: 36,\n\t\t\tshift: true,\n\t\t} ),\n\t\t[ popoverAnchor ]\n\t);\n\n\tif ( DESIGN_POST_TYPES.includes( postType ) ) {\n\t\treturn null;\n\t}\n\n\tconst updatePost = ( {\n\t\tstatus: newStatus = status,\n\t\tpassword: newPassword = password,\n\t\tdate: newDate = date,\n\t} ) => {\n\t\teditEntityRecord( 'postType', postType, postId, {\n\t\t\tstatus: newStatus,\n\t\t\tdate: newDate,\n\t\t\tpassword: newPassword,\n\t\t} );\n\t};\n\n\tconst handleTogglePassword = ( value ) => {\n\t\tsetShowPassword( value );\n\t\tif ( ! value ) {\n\t\t\tupdatePost( { password: '' } );\n\t\t}\n\t};\n\n\tconst handleStatus = ( value ) => {\n\t\tlet newDate = date;\n\t\tlet newPassword = password;\n\t\tif ( status === 'future' && new Date( date ) > new Date() ) {\n\t\t\tnewDate = null;\n\t\t}\n\t\tif ( value === 'private' && password ) {\n\t\t\tnewPassword = '';\n\t\t}\n\t\tupdatePost( {\n\t\t\tstatus: value,\n\t\t\tdate: newDate,\n\t\t\tpassword: newPassword,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<PostPanelRow label={ __( 'Status' ) } ref={ setPopoverAnchor }>\n\t\t\t{ canEdit ? (\n\t\t\t\t<Dropdown\n\t\t\t\t\tclassName=\"editor-post-status\"\n\t\t\t\t\tcontentClassName=\"editor-change-status__content\"\n\t\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\t\tfocusOnMount\n\t\t\t\t\trenderToggle={ ( { onToggle, isOpen } ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"editor-post-status__toggle\"\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\ticon={ postStatusesInfo[ status ]?.icon }\n\t\t\t\t\t\t\taria-label={ sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Current post status.\n\t\t\t\t\t\t\t\t__( 'Change status: %s' ),\n\t\t\t\t\t\t\t\tpostStatusesInfo[ status ]?.label\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ postStatusesInfo[ status ]?.label }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<InspectorPopoverHeader\n\t\t\t\t\t\t\t\ttitle={ __( 'Status & visibility' ) }\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<form\n\t\t\t\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t\t\t\t\t\t<RadioControl\n\t\t\t\t\t\t\t\t\t\tclassName=\"editor-change-status__options\"\n\t\t\t\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Status' ) }\n\t\t\t\t\t\t\t\t\t\toptions={ STATUS_OPTIONS }\n\t\t\t\t\t\t\t\t\t\tonChange={ handleStatus }\n\t\t\t\t\t\t\t\t\t\tselected={\n\t\t\t\t\t\t\t\t\t\t\tstatus === 'auto-draft'\n\t\t\t\t\t\t\t\t\t\t\t\t? 'draft'\n\t\t\t\t\t\t\t\t\t\t\t\t: status\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{ status === 'future' && (\n\t\t\t\t\t\t\t\t\t\t<div className=\"editor-change-status__publish-date-wrapper\">\n\t\t\t\t\t\t\t\t\t\t\t<PrivatePostSchedule\n\t\t\t\t\t\t\t\t\t\t\t\tshowPopoverHeaderActions={\n\t\t\t\t\t\t\t\t\t\t\t\t\tfalse\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\tisCompact\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ status !== 'private' && (\n\t\t\t\t\t\t\t\t\t\t<VStack\n\t\t\t\t\t\t\t\t\t\t\tas=\"fieldset\"\n\t\t\t\t\t\t\t\t\t\t\tspacing={ 4 }\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"editor-change-status__password-fieldset\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<CheckboxControl\n\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'Password protected'\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\thelp={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Only visible to those who know the password.'\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\tchecked={ showPassword }\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={\n\t\t\t\t\t\t\t\t\t\t\t\t\thandleTogglePassword\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\t{ showPassword && (\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"editor-change-status__password-input\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TextControl\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\t\t'Password'\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\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tupdatePost( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpassword: value,\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\tvalue={ password }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tplaceholder={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'Use a secure password'\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\ttype=\"text\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid={ passwordInputId }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaxLength={ 255 }\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</div>\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t<PostSticky />\n\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t</form>\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\t\t<div className=\"editor-post-status is-read-only\">\n\t\t\t\t\t{ postStatusesInfo[ status ]?.label }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</PostPanelRow>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tCheckboxControl,\n\tDropdown,\n\t__experimentalVStack as VStack,\n\tTextControl,\n\tRadioControl,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useState, useMemo } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __experimentalInspectorPopoverHeader as InspectorPopoverHeader } from '@wordpress/block-editor';\nimport { useInstanceId } from '@wordpress/compose';\nimport {\n\tdrafts,\n\tpublished,\n\tscheduled,\n\tpending,\n\tnotAllowed,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { DESIGN_POST_TYPES } from '../../store/constants';\nimport PostPanelRow from '../post-panel-row';\nimport PostSticky from '../post-sticky';\nimport { PrivatePostSchedule } from '../post-schedule';\nimport { store as editorStore } from '../../store';\n\nconst postStatusesInfo = {\n\t'auto-draft': { label: __( 'Draft' ), icon: drafts },\n\tdraft: { label: __( 'Draft' ), icon: drafts },\n\tpending: { label: __( 'Pending' ), icon: pending },\n\tprivate: { label: __( 'Private' ), icon: notAllowed },\n\tfuture: { label: __( 'Scheduled' ), icon: scheduled },\n\tpublish: { label: __( 'Published' ), icon: published },\n};\n\nexport const STATUS_OPTIONS = [\n\t{\n\t\tlabel: __( 'Draft' ),\n\t\tvalue: 'draft',\n\t\tdescription: __( 'Not ready to publish.' ),\n\t},\n\t{\n\t\tlabel: __( 'Pending' ),\n\t\tvalue: 'pending',\n\t\tdescription: __( 'Waiting for review before publishing.' ),\n\t},\n\t{\n\t\tlabel: __( 'Private' ),\n\t\tvalue: 'private',\n\t\tdescription: __( 'Only visible to site admins and editors.' ),\n\t},\n\t{\n\t\tlabel: __( 'Scheduled' ),\n\t\tvalue: 'future',\n\t\tdescription: __( 'Publish automatically on a chosen date.' ),\n\t},\n\t{\n\t\tlabel: __( 'Published' ),\n\t\tvalue: 'publish',\n\t\tdescription: __( 'Visible to everyone.' ),\n\t},\n];\n\nexport default function PostStatus() {\n\tconst { status, date, password, postId, postType, canEdit } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetEditedPostAttribute,\n\t\t\t\tgetCurrentPostId,\n\t\t\t\tgetCurrentPostType,\n\t\t\t\tgetCurrentPost,\n\t\t\t} = select( editorStore );\n\t\t\treturn {\n\t\t\t\tstatus: getEditedPostAttribute( 'status' ),\n\t\t\t\tdate: getEditedPostAttribute( 'date' ),\n\t\t\t\tpassword: getEditedPostAttribute( 'password' ),\n\t\t\t\tpostId: getCurrentPostId(),\n\t\t\t\tpostType: getCurrentPostType(),\n\t\t\t\tcanEdit:\n\t\t\t\t\tgetCurrentPost()._links?.[ 'wp:action-publish' ] ?? false,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst [ showPassword, setShowPassword ] = useState( !! password );\n\tconst passwordInputId = useInstanceId(\n\t\tPostStatus,\n\t\t'editor-change-status__password-input'\n\t);\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\t// Memoize popoverProps to avoid returning a new object every time.\n\tconst popoverProps = useMemo(\n\t\t() => ( {\n\t\t\t// Anchor the popover to the middle of the entire row so that it doesn't\n\t\t\t// move around when the label changes.\n\t\t\tanchor: popoverAnchor,\n\t\t\t'aria-label': __( 'Status & visibility' ),\n\t\t\theaderTitle: __( 'Status & visibility' ),\n\t\t\tplacement: 'left-start',\n\t\t\toffset: 36,\n\t\t\tshift: true,\n\t\t} ),\n\t\t[ popoverAnchor ]\n\t);\n\n\tif ( DESIGN_POST_TYPES.includes( postType ) ) {\n\t\treturn null;\n\t}\n\n\tconst updatePost = ( {\n\t\tstatus: newStatus = status,\n\t\tpassword: newPassword = password,\n\t\tdate: newDate = date,\n\t} ) => {\n\t\teditEntityRecord( 'postType', postType, postId, {\n\t\t\tstatus: newStatus,\n\t\t\tdate: newDate,\n\t\t\tpassword: newPassword,\n\t\t} );\n\t};\n\n\tconst handleTogglePassword = ( value ) => {\n\t\tsetShowPassword( value );\n\t\tif ( ! value ) {\n\t\t\tupdatePost( { password: '' } );\n\t\t}\n\t};\n\n\tconst handleStatus = ( value ) => {\n\t\tlet newDate = date;\n\t\tlet newPassword = password;\n\t\tif ( status === 'future' && new Date( date ) > new Date() ) {\n\t\t\tnewDate = null;\n\t\t}\n\t\tif ( value === 'private' && password ) {\n\t\t\tnewPassword = '';\n\t\t}\n\t\tupdatePost( {\n\t\t\tstatus: value,\n\t\t\tdate: newDate,\n\t\t\tpassword: newPassword,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<PostPanelRow label={ __( 'Status' ) } ref={ setPopoverAnchor }>\n\t\t\t{ canEdit ? (\n\t\t\t\t<Dropdown\n\t\t\t\t\tclassName=\"editor-post-status\"\n\t\t\t\t\tcontentClassName=\"editor-change-status__content\"\n\t\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\t\tfocusOnMount\n\t\t\t\t\trenderToggle={ ( { onToggle, isOpen } ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"editor-post-status__toggle\"\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\ticon={ postStatusesInfo[ status ]?.icon }\n\t\t\t\t\t\t\taria-label={ sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Current post status.\n\t\t\t\t\t\t\t\t__( 'Change status: %s' ),\n\t\t\t\t\t\t\t\tpostStatusesInfo[ status ]?.label\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ postStatusesInfo[ status ]?.label }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<InspectorPopoverHeader\n\t\t\t\t\t\t\t\ttitle={ __( 'Status & visibility' ) }\n\t\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<form\n\t\t\t\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t\t\t\t\t\t<RadioControl\n\t\t\t\t\t\t\t\t\t\tclassName=\"editor-change-status__options\"\n\t\t\t\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\t\t\t\tlabel={ __( 'Status' ) }\n\t\t\t\t\t\t\t\t\t\toptions={ STATUS_OPTIONS }\n\t\t\t\t\t\t\t\t\t\tonChange={ handleStatus }\n\t\t\t\t\t\t\t\t\t\tselected={\n\t\t\t\t\t\t\t\t\t\t\tstatus === 'auto-draft'\n\t\t\t\t\t\t\t\t\t\t\t\t? 'draft'\n\t\t\t\t\t\t\t\t\t\t\t\t: status\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{ status === 'future' && (\n\t\t\t\t\t\t\t\t\t\t<div className=\"editor-change-status__publish-date-wrapper\">\n\t\t\t\t\t\t\t\t\t\t\t<PrivatePostSchedule\n\t\t\t\t\t\t\t\t\t\t\t\tshowPopoverHeaderActions={\n\t\t\t\t\t\t\t\t\t\t\t\t\tfalse\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\tisCompact\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ status !== 'private' && (\n\t\t\t\t\t\t\t\t\t\t<VStack\n\t\t\t\t\t\t\t\t\t\t\tas=\"fieldset\"\n\t\t\t\t\t\t\t\t\t\t\tspacing={ 4 }\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"editor-change-status__password-fieldset\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<CheckboxControl\n\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'Password protected'\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\thelp={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Only visible to those who know the password.'\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\tchecked={ showPassword }\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={\n\t\t\t\t\t\t\t\t\t\t\t\t\thandleTogglePassword\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\t{ showPassword && (\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"editor-change-status__password-input\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TextControl\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\t\t'Password'\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\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tupdatePost( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpassword: value,\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\tvalue={ password }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tplaceholder={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'Use a secure password'\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\ttype=\"text\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tid={ passwordInputId }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaxLength={ 255 }\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</div>\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t<PostSticky />\n\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t</form>\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\t\t<div className=\"editor-post-status is-read-only\">\n\t\t\t\t\t{ postStatusesInfo[ status ]?.label }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</PostPanelRow>\n\t);\n}\n"],
5
+ "mappings": ";AAGA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA,wBAAwB;AAAA,EACxB;AAAA,EACA;AAAA,OACM;AACP,SAAS,IAAI,eAAe;AAC5B,SAAS,aAAa,iBAAiB;AACvC,SAAS,UAAU,eAAe;AAClC,SAAS,SAAS,iBAAiB;AACnC,SAAS,wCAAwC,8BAA8B;AAC/E,SAAS,qBAAqB;AAC9B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAKP,SAAS,yBAAyB;AAClC,OAAO,kBAAkB;AACzB,OAAO,gBAAgB;AACvB,SAAS,2BAA2B;AACpC,SAAS,SAAS,mBAAmB;AAkI/B,SAiBA,UAjBA,KAoDI,YApDJ;AAhIN,IAAM,mBAAmB;AAAA,EACxB,cAAc,EAAE,OAAO,GAAI,OAAQ,GAAG,MAAM,OAAO;AAAA,EACnD,OAAO,EAAE,OAAO,GAAI,OAAQ,GAAG,MAAM,OAAO;AAAA,EAC5C,SAAS,EAAE,OAAO,GAAI,SAAU,GAAG,MAAM,QAAQ;AAAA,EACjD,SAAS,EAAE,OAAO,GAAI,SAAU,GAAG,MAAM,WAAW;AAAA,EACpD,QAAQ,EAAE,OAAO,GAAI,WAAY,GAAG,MAAM,UAAU;AAAA,EACpD,SAAS,EAAE,OAAO,GAAI,WAAY,GAAG,MAAM,UAAU;AACtD;AAEO,IAAM,iBAAiB;AAAA,EAC7B;AAAA,IACC,OAAO,GAAI,OAAQ;AAAA,IACnB,OAAO;AAAA,IACP,aAAa,GAAI,uBAAwB;AAAA,EAC1C;AAAA,EACA;AAAA,IACC,OAAO,GAAI,SAAU;AAAA,IACrB,OAAO;AAAA,IACP,aAAa,GAAI,uCAAwC;AAAA,EAC1D;AAAA,EACA;AAAA,IACC,OAAO,GAAI,SAAU;AAAA,IACrB,OAAO;AAAA,IACP,aAAa,GAAI,0CAA2C;AAAA,EAC7D;AAAA,EACA;AAAA,IACC,OAAO,GAAI,WAAY;AAAA,IACvB,OAAO;AAAA,IACP,aAAa,GAAI,yCAA0C;AAAA,EAC5D;AAAA,EACA;AAAA,IACC,OAAO,GAAI,WAAY;AAAA,IACvB,OAAO;AAAA,IACP,aAAa,GAAI,sBAAuB;AAAA,EACzC;AACD;AAEe,SAAR,aAA8B;AACpC,QAAM,EAAE,QAAQ,MAAM,UAAU,QAAQ,UAAU,QAAQ,IAAI;AAAA,IAC7D,CAAE,WAAY;AACb,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,IAAI,OAAQ,WAAY;AACxB,aAAO;AAAA,QACN,QAAQ,uBAAwB,QAAS;AAAA,QACzC,MAAM,uBAAwB,MAAO;AAAA,QACrC,UAAU,uBAAwB,UAAW;AAAA,QAC7C,QAAQ,iBAAiB;AAAA,QACzB,UAAU,mBAAmB;AAAA,QAC7B,SACC,eAAe,EAAE,SAAU,mBAAoB,KAAK;AAAA,MACtD;AAAA,IACD;AAAA,IACA,CAAC;AAAA,EACF;AACA,QAAM,CAAE,cAAc,eAAgB,IAAI,SAAU,CAAC,CAAE,QAAS;AAChE,QAAM,kBAAkB;AAAA,IACvB;AAAA,IACA;AAAA,EACD;AACA,QAAM,EAAE,iBAAiB,IAAI,YAAa,SAAU;AACpD,QAAM,CAAE,eAAe,gBAAiB,IAAI,SAAU,IAAK;AAE3D,QAAM,eAAe;AAAA,IACpB,OAAQ;AAAA;AAAA;AAAA,MAGP,QAAQ;AAAA,MACR,cAAc,GAAI,qBAAsB;AAAA,MACxC,aAAa,GAAI,qBAAsB;AAAA,MACvC,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,OAAO;AAAA,IACR;AAAA,IACA,CAAE,aAAc;AAAA,EACjB;AAEA,MAAK,kBAAkB,SAAU,QAAS,GAAI;AAC7C,WAAO;AAAA,EACR;AAEA,QAAM,aAAa,CAAE;AAAA,IACpB,QAAQ,YAAY;AAAA,IACpB,UAAU,cAAc;AAAA,IACxB,MAAM,UAAU;AAAA,EACjB,MAAO;AACN,qBAAkB,YAAY,UAAU,QAAQ;AAAA,MAC/C,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,UAAU;AAAA,IACX,CAAE;AAAA,EACH;AAEA,QAAM,uBAAuB,CAAE,UAAW;AACzC,oBAAiB,KAAM;AACvB,QAAK,CAAE,OAAQ;AACd,iBAAY,EAAE,UAAU,GAAG,CAAE;AAAA,IAC9B;AAAA,EACD;AAEA,QAAM,eAAe,CAAE,UAAW;AACjC,QAAI,UAAU;AACd,QAAI,cAAc;AAClB,QAAK,WAAW,YAAY,IAAI,KAAM,IAAK,IAAI,oBAAI,KAAK,GAAI;AAC3D,gBAAU;AAAA,IACX;AACA,QAAK,UAAU,aAAa,UAAW;AACtC,oBAAc;AAAA,IACf;AACA,eAAY;AAAA,MACX,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,UAAU;AAAA,IACX,CAAE;AAAA,EACH;AAEA,SACC,oBAAC,gBAAa,OAAQ,GAAI,QAAS,GAAI,KAAM,kBAC1C,oBACD;AAAA,IAAC;AAAA;AAAA,MACA,WAAU;AAAA,MACV,kBAAiB;AAAA,MACjB;AAAA,MACA,cAAY;AAAA,MACZ,cAAe,CAAE,EAAE,UAAU,OAAO,MACnC;AAAA,QAAC;AAAA;AAAA,UACA,WAAU;AAAA,UACV,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,SAAU;AAAA,UACV,MAAO,iBAAkB,MAAO,GAAG;AAAA,UACnC,cAAa;AAAA;AAAA,YAEZ,GAAI,mBAAoB;AAAA,YACxB,iBAAkB,MAAO,GAAG;AAAA,UAC7B;AAAA,UACA,iBAAgB;AAAA,UAEd,2BAAkB,MAAO,GAAG;AAAA;AAAA,MAC/B;AAAA,MAED,eAAgB,CAAE,EAAE,QAAQ,MAC3B,iCACC;AAAA;AAAA,UAAC;AAAA;AAAA,YACA,OAAQ,GAAI,qBAAsB;AAAA,YAClC;AAAA;AAAA,QACD;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACA,UAAW,CAAE,UAAW;AACvB,oBAAM,eAAe;AACrB,sBAAQ;AAAA,YACT;AAAA,YAEA,+BAAC,UAAO,SAAU,GACjB;AAAA;AAAA,gBAAC;AAAA;AAAA,kBACA,WAAU;AAAA,kBACV,qBAAmB;AAAA,kBACnB,OAAQ,GAAI,QAAS;AAAA,kBACrB,SAAU;AAAA,kBACV,UAAW;AAAA,kBACX,UACC,WAAW,eACR,UACA;AAAA;AAAA,cAEL;AAAA,cACE,WAAW,YACZ,oBAAC,SAAI,WAAU,8CACd;AAAA,gBAAC;AAAA;AAAA,kBACA,0BACC;AAAA,kBAED,WAAS;AAAA;AAAA,cACV,GACD;AAAA,cAEC,WAAW,aACZ;AAAA,gBAAC;AAAA;AAAA,kBACA,IAAG;AAAA,kBACH,SAAU;AAAA,kBACV,WAAU;AAAA,kBAEV;AAAA;AAAA,sBAAC;AAAA;AAAA,wBACA,OAAQ;AAAA,0BACP;AAAA,wBACD;AAAA,wBACA,MAAO;AAAA,0BACN;AAAA,wBACD;AAAA,wBACA,SAAU;AAAA,wBACV,UACC;AAAA;AAAA,oBAEF;AAAA,oBACE,gBACD,oBAAC,SAAI,WAAU,wCACd;AAAA,sBAAC;AAAA;AAAA,wBACA,OAAQ;AAAA,0BACP;AAAA,wBACD;AAAA,wBACA,UAAW,CAAE,UACZ,WAAY;AAAA,0BACX,UAAU;AAAA,wBACX,CAAE;AAAA,wBAEH,OAAQ;AAAA,wBACR,aAAc;AAAA,0BACb;AAAA,wBACD;AAAA,wBACA,MAAK;AAAA,wBACL,IAAK;AAAA,wBACL,WAAY;AAAA;AAAA,oBACb,GACD;AAAA;AAAA;AAAA,cAEF;AAAA,cAED,oBAAC,cAAW;AAAA,eACb;AAAA;AAAA,QACD;AAAA,SACD;AAAA;AAAA,EAEF,IAEA,oBAAC,SAAI,WAAU,mCACZ,2BAAkB,MAAO,GAAG,OAC/B,GAEF;AAEF;",
6
6
  "names": []
7
7
  }
@@ -315,7 +315,6 @@ function HierarchicalTermSelector({ slug }) {
315
315
  /* @__PURE__ */ jsx(
316
316
  TextControl,
317
317
  {
318
- __next40pxDefaultSize: true,
319
318
  className: "editor-post-taxonomies__hierarchical-terms-input",
320
319
  label: newTermLabel,
321
320
  value: formName,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/post-taxonomies/hierarchical-term-selector.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, _n, _x, sprintf } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\nimport {\n\tButton,\n\tCheckboxControl,\n\tTextControl,\n\tTreeSelect,\n\twithFilters,\n\tFlex,\n\tFlexItem,\n\tSearchControl,\n\tSpinner,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useDebounce } from '@wordpress/compose';\nimport {\n\tstore as coreStore,\n\tprivateApis as coreDataPrivateApis,\n} from '@wordpress/core-data';\nimport { speak } from '@wordpress/a11y';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { buildTermsTree } from '../../utils/terms';\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nconst { normalizeTextString } = unlock( componentsPrivateApis );\nconst { RECEIVE_INTERMEDIATE_RESULTS } = unlock( coreDataPrivateApis );\n\n/**\n * Module Constants\n */\nconst DEFAULT_QUERY = {\n\tper_page: -1,\n\torderby: 'name',\n\torder: 'asc',\n\t_fields: 'id,name,parent',\n\tcontext: 'view',\n\t[ RECEIVE_INTERMEDIATE_RESULTS ]: true,\n};\nconst MIN_TERMS_COUNT_FOR_FILTER = 8;\nconst EMPTY_ARRAY = [];\n\n/**\n * Sort Terms by Selected.\n *\n * @param {Object[]} termsTree Array of terms in tree format.\n * @param {number[]} terms Selected terms.\n *\n * @return {Object[]} Sorted array of terms.\n */\nexport function sortBySelected( termsTree, terms ) {\n\tconst treeHasSelection = ( termTree ) => {\n\t\tif ( terms.indexOf( termTree.id ) !== -1 ) {\n\t\t\treturn true;\n\t\t}\n\t\tif ( undefined === termTree.children ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn (\n\t\t\ttermTree.children\n\t\t\t\t.map( treeHasSelection )\n\t\t\t\t.filter( ( child ) => child ).length > 0\n\t\t);\n\t};\n\tconst termOrChildIsSelected = ( termA, termB ) => {\n\t\tconst termASelected = treeHasSelection( termA );\n\t\tconst termBSelected = treeHasSelection( termB );\n\n\t\tif ( termASelected === termBSelected ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( termASelected && ! termBSelected ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif ( ! termASelected && termBSelected ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t};\n\tconst newTermTree = [ ...termsTree ];\n\tnewTermTree.sort( termOrChildIsSelected );\n\treturn newTermTree;\n}\n\n/**\n * Find term by parent id or name.\n *\n * @param {Object[]} terms Array of Terms.\n * @param {number|string} parent id.\n * @param {string} name Term name.\n * @return {Object} Term object.\n */\nexport function findTerm( terms, parent, name ) {\n\treturn terms.find( ( term ) => {\n\t\treturn (\n\t\t\t( ( ! term.parent && ! parent ) ||\n\t\t\t\tparseInt( term.parent ) === parseInt( parent ) ) &&\n\t\t\tterm.name.toLowerCase() === name.toLowerCase()\n\t\t);\n\t} );\n}\n\n/**\n * Get filter matcher function.\n *\n * @param {string} filterValue Filter value.\n * @return {(function(Object): (Object|boolean))} Matcher function.\n */\nexport function getFilterMatcher( filterValue ) {\n\tconst matchTermsForFilter = ( originalTerm ) => {\n\t\tif ( '' === filterValue ) {\n\t\t\treturn originalTerm;\n\t\t}\n\n\t\t// Shallow clone, because we'll be filtering the term's children and\n\t\t// don't want to modify the original term.\n\t\tconst term = { ...originalTerm };\n\n\t\t// Map and filter the children, recursive so we deal with grandchildren\n\t\t// and any deeper levels.\n\t\tif ( term.children.length > 0 ) {\n\t\t\tterm.children = term.children\n\t\t\t\t.map( matchTermsForFilter )\n\t\t\t\t.filter( ( child ) => child );\n\t\t}\n\n\t\t// If the term's name contains the filterValue, or it has children\n\t\t// (i.e. some child matched at some point in the tree) then return it.\n\t\tif (\n\t\t\t-1 !==\n\t\t\t\tnormalizeTextString( term.name ).indexOf(\n\t\t\t\t\tnormalizeTextString( filterValue )\n\t\t\t\t) ||\n\t\t\tterm.children.length > 0\n\t\t) {\n\t\t\treturn term;\n\t\t}\n\n\t\t// Otherwise, return false. After mapping, the list of terms will need\n\t\t// to have false values filtered out.\n\t\treturn false;\n\t};\n\treturn matchTermsForFilter;\n}\n\n/**\n * Hierarchical term selector.\n *\n * @param {Object} props Component props.\n * @param {string} props.slug Taxonomy slug.\n * @return {Element} Hierarchical term selector component.\n */\nexport function HierarchicalTermSelector( { slug } ) {\n\tconst [ adding, setAdding ] = useState( false );\n\tconst [ formName, setFormName ] = useState( '' );\n\t/**\n\t * @type {[number|'', Function]}\n\t */\n\tconst [ formParent, setFormParent ] = useState( '' );\n\tconst [ showForm, setShowForm ] = useState( false );\n\tconst [ filterValue, setFilterValue ] = useState( '' );\n\tconst [ filteredTermsTree, setFilteredTermsTree ] = useState( [] );\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\n\tconst {\n\t\thasCreateAction,\n\t\thasAssignAction,\n\t\tterms,\n\t\tloading,\n\t\tavailableTerms,\n\t\ttaxonomy,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCurrentPost, getEditedPostAttribute } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { getEntityRecord, getEntityRecords, isResolving } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst _taxonomy = getEntityRecord( 'root', 'taxonomy', slug );\n\t\t\tconst post = getCurrentPost();\n\n\t\t\treturn {\n\t\t\t\thasCreateAction: _taxonomy\n\t\t\t\t\t? !! post._links?.[\n\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base\n\t\t\t\t\t ]\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? !! post._links?.[\n\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base\n\t\t\t\t\t ]\n\t\t\t\t\t: false,\n\t\t\t\tterms: _taxonomy\n\t\t\t\t\t? getEditedPostAttribute( _taxonomy.rest_base )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\tloading: isResolving( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tDEFAULT_QUERY,\n\t\t\t\t] ),\n\t\t\t\tavailableTerms:\n\t\t\t\t\tgetEntityRecords( 'taxonomy', slug, DEFAULT_QUERY ) ||\n\t\t\t\t\tEMPTY_ARRAY,\n\t\t\t\ttaxonomy: _taxonomy,\n\t\t\t};\n\t\t},\n\t\t[ slug ]\n\t);\n\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\tconst availableTermsTree = useMemo(\n\t\t() => sortBySelected( buildTermsTree( availableTerms ), terms ),\n\t\t// Remove `terms` from the dependency list to avoid reordering every time\n\t\t// checking or unchecking a term.\n\t\t[ availableTerms ]\n\t);\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Append new term.\n\t *\n\t * @param {Object} term Term object.\n\t * @return {Promise} A promise that resolves to save term object.\n\t */\n\tconst addTerm = ( term ) => {\n\t\treturn saveEntityRecord( 'taxonomy', slug, term, {\n\t\t\tthrowOnError: true,\n\t\t} );\n\t};\n\n\t/**\n\t * Update terms for post.\n\t *\n\t * @param {number[]} termIds Term ids.\n\t */\n\tconst onUpdateTerms = ( termIds ) => {\n\t\teditPost( { [ taxonomy.rest_base ]: termIds } );\n\t};\n\n\t/**\n\t * Handler for checking term.\n\t *\n\t * @param {number} termId\n\t */\n\tconst onChange = ( termId ) => {\n\t\tconst hasTerm = terms.includes( termId );\n\t\tconst newTerms = hasTerm\n\t\t\t? terms.filter( ( id ) => id !== termId )\n\t\t\t: [ ...terms, termId ];\n\t\tonUpdateTerms( newTerms );\n\t};\n\n\tconst onChangeFormName = ( value ) => {\n\t\tsetFormName( value );\n\t};\n\n\t/**\n\t * Handler for changing form parent.\n\t *\n\t * @param {number|''} parentId Parent post id.\n\t */\n\tconst onChangeFormParent = ( parentId ) => {\n\t\tsetFormParent( parentId );\n\t};\n\n\tconst onToggleForm = () => {\n\t\tsetShowForm( ! showForm );\n\t};\n\n\tconst onAddTerm = async ( event ) => {\n\t\tevent.preventDefault();\n\t\tif ( formName === '' || adding ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if the term we are adding already exists.\n\t\tconst existingTerm = findTerm( availableTerms, formParent, formName );\n\t\tif ( existingTerm ) {\n\t\t\t// If the term we are adding exists but is not selected select it.\n\t\t\tif ( ! terms.some( ( term ) => term === existingTerm.id ) ) {\n\t\t\t\tonUpdateTerms( [ ...terms, existingTerm.id ] );\n\t\t\t}\n\n\t\t\tsetFormName( '' );\n\t\t\tsetFormParent( '' );\n\n\t\t\treturn;\n\t\t}\n\t\tsetAdding( true );\n\t\tlet newTerm;\n\t\ttry {\n\t\t\tnewTerm = await addTerm( {\n\t\t\t\tname: formName,\n\t\t\t\tparent: formParent ? formParent : undefined,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\t\tconst defaultName =\n\t\t\tslug === 'category' ? __( 'Category' ) : __( 'Term' );\n\t\tconst termAddedMessage = sprintf(\n\t\t\t/* translators: %s: term name. */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\ttaxonomy?.labels?.singular_name ?? defaultName\n\t\t);\n\t\tspeak( termAddedMessage, 'assertive' );\n\t\tsetAdding( false );\n\t\tsetFormName( '' );\n\t\tsetFormParent( '' );\n\t\tonUpdateTerms( [ ...terms, newTerm.id ] );\n\t};\n\n\tconst setFilter = ( value ) => {\n\t\tconst newFilteredTermsTree = availableTermsTree\n\t\t\t.map( getFilterMatcher( value ) )\n\t\t\t.filter( ( term ) => term );\n\t\tconst getResultCount = ( termsTree ) => {\n\t\t\tlet count = 0;\n\t\t\tfor ( let i = 0; i < termsTree.length; i++ ) {\n\t\t\t\tcount++;\n\t\t\t\tif ( undefined !== termsTree[ i ].children ) {\n\t\t\t\t\tcount += getResultCount( termsTree[ i ].children );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t};\n\n\t\tsetFilterValue( value );\n\t\tsetFilteredTermsTree( newFilteredTermsTree );\n\n\t\tconst resultCount = getResultCount( newFilteredTermsTree );\n\t\tconst resultsFoundMessage = sprintf(\n\t\t\t/* translators: %d: number of results. */\n\t\t\t_n( '%d result found.', '%d results found.', resultCount ),\n\t\t\tresultCount\n\t\t);\n\n\t\tdebouncedSpeak( resultsFoundMessage, 'assertive' );\n\t};\n\n\tconst renderTerms = ( renderedTerms ) => {\n\t\treturn renderedTerms.map( ( term ) => {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tkey={ term.id }\n\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-choice\"\n\t\t\t\t>\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\tchecked={ terms.indexOf( term.id ) !== -1 }\n\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\tconst termId = parseInt( term.id, 10 );\n\t\t\t\t\t\t\tonChange( termId );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ decodeEntities( term.name ) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ !! term.children.length && (\n\t\t\t\t\t\t<div className=\"editor-post-taxonomies__hierarchical-terms-subchoices\">\n\t\t\t\t\t\t\t{ renderTerms( term.children ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t);\n\t\t} );\n\t};\n\n\tconst labelWithFallback = (\n\t\tlabelProperty,\n\t\tfallbackIsCategory,\n\t\tfallbackIsNotCategory\n\t) =>\n\t\ttaxonomy?.labels?.[ labelProperty ] ??\n\t\t( slug === 'category' ? fallbackIsCategory : fallbackIsNotCategory );\n\n\tconst newTermButtonLabel = labelWithFallback(\n\t\t'add_new_item',\n\t\t__( 'Add Category' ),\n\t\t__( 'Add Term' )\n\t);\n\tconst newTermLabel = labelWithFallback(\n\t\t'new_item_name',\n\t\t__( 'Add Category' ),\n\t\t__( 'Add Term' )\n\t);\n\tconst parentSelectLabel = labelWithFallback(\n\t\t'parent_item',\n\t\t__( 'Parent Category' ),\n\t\t__( 'Parent Term' )\n\t);\n\tconst noParentOption = `— ${ parentSelectLabel } —`;\n\tconst newTermSubmitLabel = newTermButtonLabel;\n\tconst filterLabel = taxonomy?.labels?.search_items ?? __( 'Search Terms' );\n\tconst groupLabel = taxonomy?.name ?? __( 'Terms' );\n\tconst showFilter = availableTerms.length >= MIN_TERMS_COUNT_FOR_FILTER;\n\n\treturn (\n\t\t<Flex direction=\"column\" gap=\"4\">\n\t\t\t{ showFilter && ! loading && (\n\t\t\t\t<SearchControl\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tlabel={ filterLabel }\n\t\t\t\t\tplaceholder={ filterLabel }\n\t\t\t\t\tvalue={ filterValue }\n\t\t\t\t\tonChange={ setFilter }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ loading && (\n\t\t\t\t<Flex\n\t\t\t\t\tjustify=\"center\"\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t// Match SearchControl height to prevent layout shift.\n\t\t\t\t\t\theight: '40px',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<Spinner />\n\t\t\t\t</Flex>\n\t\t\t) }\n\t\t\t<div\n\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-list\"\n\t\t\t\ttabIndex=\"0\"\n\t\t\t\trole=\"group\"\n\t\t\t\taria-label={ groupLabel }\n\t\t\t>\n\t\t\t\t{ renderTerms(\n\t\t\t\t\t'' !== filterValue ? filteredTermsTree : availableTermsTree\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ ! loading && hasCreateAction && (\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tonClick={ onToggleForm }\n\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-add\"\n\t\t\t\t\t\taria-expanded={ showForm }\n\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ newTermButtonLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t) }\n\t\t\t{ showForm && (\n\t\t\t\t<form onSubmit={ onAddTerm }>\n\t\t\t\t\t<Flex direction=\"column\" gap=\"4\">\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-input\"\n\t\t\t\t\t\t\tlabel={ newTermLabel }\n\t\t\t\t\t\t\tvalue={ formName }\n\t\t\t\t\t\t\tonChange={ onChangeFormName }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ !! availableTerms.length && (\n\t\t\t\t\t\t\t<TreeSelect\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tlabel={ parentSelectLabel }\n\t\t\t\t\t\t\t\tnoOptionLabel={ noParentOption }\n\t\t\t\t\t\t\t\tonChange={ onChangeFormParent }\n\t\t\t\t\t\t\t\tselectedId={ formParent }\n\t\t\t\t\t\t\t\ttree={ availableTermsTree }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-submit\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ newTermSubmitLabel }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t</Flex>\n\t\t\t\t</form>\n\t\t\t) }\n\t\t</Flex>\n\t);\n}\n\nexport default withFilters( 'editor.PostTaxonomyType' )(\n\tHierarchicalTermSelector\n);\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __, _n, _x, sprintf } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\nimport {\n\tButton,\n\tCheckboxControl,\n\tTextControl,\n\tTreeSelect,\n\twithFilters,\n\tFlex,\n\tFlexItem,\n\tSearchControl,\n\tSpinner,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useDebounce } from '@wordpress/compose';\nimport {\n\tstore as coreStore,\n\tprivateApis as coreDataPrivateApis,\n} from '@wordpress/core-data';\nimport { speak } from '@wordpress/a11y';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { buildTermsTree } from '../../utils/terms';\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nconst { normalizeTextString } = unlock( componentsPrivateApis );\nconst { RECEIVE_INTERMEDIATE_RESULTS } = unlock( coreDataPrivateApis );\n\n/**\n * Module Constants\n */\nconst DEFAULT_QUERY = {\n\tper_page: -1,\n\torderby: 'name',\n\torder: 'asc',\n\t_fields: 'id,name,parent',\n\tcontext: 'view',\n\t[ RECEIVE_INTERMEDIATE_RESULTS ]: true,\n};\nconst MIN_TERMS_COUNT_FOR_FILTER = 8;\nconst EMPTY_ARRAY = [];\n\n/**\n * Sort Terms by Selected.\n *\n * @param {Object[]} termsTree Array of terms in tree format.\n * @param {number[]} terms Selected terms.\n *\n * @return {Object[]} Sorted array of terms.\n */\nexport function sortBySelected( termsTree, terms ) {\n\tconst treeHasSelection = ( termTree ) => {\n\t\tif ( terms.indexOf( termTree.id ) !== -1 ) {\n\t\t\treturn true;\n\t\t}\n\t\tif ( undefined === termTree.children ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn (\n\t\t\ttermTree.children\n\t\t\t\t.map( treeHasSelection )\n\t\t\t\t.filter( ( child ) => child ).length > 0\n\t\t);\n\t};\n\tconst termOrChildIsSelected = ( termA, termB ) => {\n\t\tconst termASelected = treeHasSelection( termA );\n\t\tconst termBSelected = treeHasSelection( termB );\n\n\t\tif ( termASelected === termBSelected ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tif ( termASelected && ! termBSelected ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif ( ! termASelected && termBSelected ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t};\n\tconst newTermTree = [ ...termsTree ];\n\tnewTermTree.sort( termOrChildIsSelected );\n\treturn newTermTree;\n}\n\n/**\n * Find term by parent id or name.\n *\n * @param {Object[]} terms Array of Terms.\n * @param {number|string} parent id.\n * @param {string} name Term name.\n * @return {Object} Term object.\n */\nexport function findTerm( terms, parent, name ) {\n\treturn terms.find( ( term ) => {\n\t\treturn (\n\t\t\t( ( ! term.parent && ! parent ) ||\n\t\t\t\tparseInt( term.parent ) === parseInt( parent ) ) &&\n\t\t\tterm.name.toLowerCase() === name.toLowerCase()\n\t\t);\n\t} );\n}\n\n/**\n * Get filter matcher function.\n *\n * @param {string} filterValue Filter value.\n * @return {(function(Object): (Object|boolean))} Matcher function.\n */\nexport function getFilterMatcher( filterValue ) {\n\tconst matchTermsForFilter = ( originalTerm ) => {\n\t\tif ( '' === filterValue ) {\n\t\t\treturn originalTerm;\n\t\t}\n\n\t\t// Shallow clone, because we'll be filtering the term's children and\n\t\t// don't want to modify the original term.\n\t\tconst term = { ...originalTerm };\n\n\t\t// Map and filter the children, recursive so we deal with grandchildren\n\t\t// and any deeper levels.\n\t\tif ( term.children.length > 0 ) {\n\t\t\tterm.children = term.children\n\t\t\t\t.map( matchTermsForFilter )\n\t\t\t\t.filter( ( child ) => child );\n\t\t}\n\n\t\t// If the term's name contains the filterValue, or it has children\n\t\t// (i.e. some child matched at some point in the tree) then return it.\n\t\tif (\n\t\t\t-1 !==\n\t\t\t\tnormalizeTextString( term.name ).indexOf(\n\t\t\t\t\tnormalizeTextString( filterValue )\n\t\t\t\t) ||\n\t\t\tterm.children.length > 0\n\t\t) {\n\t\t\treturn term;\n\t\t}\n\n\t\t// Otherwise, return false. After mapping, the list of terms will need\n\t\t// to have false values filtered out.\n\t\treturn false;\n\t};\n\treturn matchTermsForFilter;\n}\n\n/**\n * Hierarchical term selector.\n *\n * @param {Object} props Component props.\n * @param {string} props.slug Taxonomy slug.\n * @return {Element} Hierarchical term selector component.\n */\nexport function HierarchicalTermSelector( { slug } ) {\n\tconst [ adding, setAdding ] = useState( false );\n\tconst [ formName, setFormName ] = useState( '' );\n\t/**\n\t * @type {[number|'', Function]}\n\t */\n\tconst [ formParent, setFormParent ] = useState( '' );\n\tconst [ showForm, setShowForm ] = useState( false );\n\tconst [ filterValue, setFilterValue ] = useState( '' );\n\tconst [ filteredTermsTree, setFilteredTermsTree ] = useState( [] );\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\n\tconst {\n\t\thasCreateAction,\n\t\thasAssignAction,\n\t\tterms,\n\t\tloading,\n\t\tavailableTerms,\n\t\ttaxonomy,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCurrentPost, getEditedPostAttribute } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst { getEntityRecord, getEntityRecords, isResolving } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst _taxonomy = getEntityRecord( 'root', 'taxonomy', slug );\n\t\t\tconst post = getCurrentPost();\n\n\t\t\treturn {\n\t\t\t\thasCreateAction: _taxonomy\n\t\t\t\t\t? !! post._links?.[\n\t\t\t\t\t\t\t'wp:action-create-' + _taxonomy.rest_base\n\t\t\t\t\t ]\n\t\t\t\t\t: false,\n\t\t\t\thasAssignAction: _taxonomy\n\t\t\t\t\t? !! post._links?.[\n\t\t\t\t\t\t\t'wp:action-assign-' + _taxonomy.rest_base\n\t\t\t\t\t ]\n\t\t\t\t\t: false,\n\t\t\t\tterms: _taxonomy\n\t\t\t\t\t? getEditedPostAttribute( _taxonomy.rest_base )\n\t\t\t\t\t: EMPTY_ARRAY,\n\t\t\t\tloading: isResolving( 'getEntityRecords', [\n\t\t\t\t\t'taxonomy',\n\t\t\t\t\tslug,\n\t\t\t\t\tDEFAULT_QUERY,\n\t\t\t\t] ),\n\t\t\t\tavailableTerms:\n\t\t\t\t\tgetEntityRecords( 'taxonomy', slug, DEFAULT_QUERY ) ||\n\t\t\t\t\tEMPTY_ARRAY,\n\t\t\t\ttaxonomy: _taxonomy,\n\t\t\t};\n\t\t},\n\t\t[ slug ]\n\t);\n\n\tconst { editPost } = useDispatch( editorStore );\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\n\tconst availableTermsTree = useMemo(\n\t\t() => sortBySelected( buildTermsTree( availableTerms ), terms ),\n\t\t// Remove `terms` from the dependency list to avoid reordering every time\n\t\t// checking or unchecking a term.\n\t\t[ availableTerms ]\n\t);\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tif ( ! hasAssignAction ) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Append new term.\n\t *\n\t * @param {Object} term Term object.\n\t * @return {Promise} A promise that resolves to save term object.\n\t */\n\tconst addTerm = ( term ) => {\n\t\treturn saveEntityRecord( 'taxonomy', slug, term, {\n\t\t\tthrowOnError: true,\n\t\t} );\n\t};\n\n\t/**\n\t * Update terms for post.\n\t *\n\t * @param {number[]} termIds Term ids.\n\t */\n\tconst onUpdateTerms = ( termIds ) => {\n\t\teditPost( { [ taxonomy.rest_base ]: termIds } );\n\t};\n\n\t/**\n\t * Handler for checking term.\n\t *\n\t * @param {number} termId\n\t */\n\tconst onChange = ( termId ) => {\n\t\tconst hasTerm = terms.includes( termId );\n\t\tconst newTerms = hasTerm\n\t\t\t? terms.filter( ( id ) => id !== termId )\n\t\t\t: [ ...terms, termId ];\n\t\tonUpdateTerms( newTerms );\n\t};\n\n\tconst onChangeFormName = ( value ) => {\n\t\tsetFormName( value );\n\t};\n\n\t/**\n\t * Handler for changing form parent.\n\t *\n\t * @param {number|''} parentId Parent post id.\n\t */\n\tconst onChangeFormParent = ( parentId ) => {\n\t\tsetFormParent( parentId );\n\t};\n\n\tconst onToggleForm = () => {\n\t\tsetShowForm( ! showForm );\n\t};\n\n\tconst onAddTerm = async ( event ) => {\n\t\tevent.preventDefault();\n\t\tif ( formName === '' || adding ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if the term we are adding already exists.\n\t\tconst existingTerm = findTerm( availableTerms, formParent, formName );\n\t\tif ( existingTerm ) {\n\t\t\t// If the term we are adding exists but is not selected select it.\n\t\t\tif ( ! terms.some( ( term ) => term === existingTerm.id ) ) {\n\t\t\t\tonUpdateTerms( [ ...terms, existingTerm.id ] );\n\t\t\t}\n\n\t\t\tsetFormName( '' );\n\t\t\tsetFormParent( '' );\n\n\t\t\treturn;\n\t\t}\n\t\tsetAdding( true );\n\t\tlet newTerm;\n\t\ttry {\n\t\t\tnewTerm = await addTerm( {\n\t\t\t\tname: formName,\n\t\t\t\tparent: formParent ? formParent : undefined,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\t\tconst defaultName =\n\t\t\tslug === 'category' ? __( 'Category' ) : __( 'Term' );\n\t\tconst termAddedMessage = sprintf(\n\t\t\t/* translators: %s: term name. */\n\t\t\t_x( '%s added', 'term' ),\n\t\t\ttaxonomy?.labels?.singular_name ?? defaultName\n\t\t);\n\t\tspeak( termAddedMessage, 'assertive' );\n\t\tsetAdding( false );\n\t\tsetFormName( '' );\n\t\tsetFormParent( '' );\n\t\tonUpdateTerms( [ ...terms, newTerm.id ] );\n\t};\n\n\tconst setFilter = ( value ) => {\n\t\tconst newFilteredTermsTree = availableTermsTree\n\t\t\t.map( getFilterMatcher( value ) )\n\t\t\t.filter( ( term ) => term );\n\t\tconst getResultCount = ( termsTree ) => {\n\t\t\tlet count = 0;\n\t\t\tfor ( let i = 0; i < termsTree.length; i++ ) {\n\t\t\t\tcount++;\n\t\t\t\tif ( undefined !== termsTree[ i ].children ) {\n\t\t\t\t\tcount += getResultCount( termsTree[ i ].children );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t};\n\n\t\tsetFilterValue( value );\n\t\tsetFilteredTermsTree( newFilteredTermsTree );\n\n\t\tconst resultCount = getResultCount( newFilteredTermsTree );\n\t\tconst resultsFoundMessage = sprintf(\n\t\t\t/* translators: %d: number of results. */\n\t\t\t_n( '%d result found.', '%d results found.', resultCount ),\n\t\t\tresultCount\n\t\t);\n\n\t\tdebouncedSpeak( resultsFoundMessage, 'assertive' );\n\t};\n\n\tconst renderTerms = ( renderedTerms ) => {\n\t\treturn renderedTerms.map( ( term ) => {\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tkey={ term.id }\n\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-choice\"\n\t\t\t\t>\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\tchecked={ terms.indexOf( term.id ) !== -1 }\n\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\tconst termId = parseInt( term.id, 10 );\n\t\t\t\t\t\t\tonChange( termId );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tlabel={ decodeEntities( term.name ) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ !! term.children.length && (\n\t\t\t\t\t\t<div className=\"editor-post-taxonomies__hierarchical-terms-subchoices\">\n\t\t\t\t\t\t\t{ renderTerms( term.children ) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t);\n\t\t} );\n\t};\n\n\tconst labelWithFallback = (\n\t\tlabelProperty,\n\t\tfallbackIsCategory,\n\t\tfallbackIsNotCategory\n\t) =>\n\t\ttaxonomy?.labels?.[ labelProperty ] ??\n\t\t( slug === 'category' ? fallbackIsCategory : fallbackIsNotCategory );\n\n\tconst newTermButtonLabel = labelWithFallback(\n\t\t'add_new_item',\n\t\t__( 'Add Category' ),\n\t\t__( 'Add Term' )\n\t);\n\tconst newTermLabel = labelWithFallback(\n\t\t'new_item_name',\n\t\t__( 'Add Category' ),\n\t\t__( 'Add Term' )\n\t);\n\tconst parentSelectLabel = labelWithFallback(\n\t\t'parent_item',\n\t\t__( 'Parent Category' ),\n\t\t__( 'Parent Term' )\n\t);\n\tconst noParentOption = `— ${ parentSelectLabel } —`;\n\tconst newTermSubmitLabel = newTermButtonLabel;\n\tconst filterLabel = taxonomy?.labels?.search_items ?? __( 'Search Terms' );\n\tconst groupLabel = taxonomy?.name ?? __( 'Terms' );\n\tconst showFilter = availableTerms.length >= MIN_TERMS_COUNT_FOR_FILTER;\n\n\treturn (\n\t\t<Flex direction=\"column\" gap=\"4\">\n\t\t\t{ showFilter && ! loading && (\n\t\t\t\t<SearchControl\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tlabel={ filterLabel }\n\t\t\t\t\tplaceholder={ filterLabel }\n\t\t\t\t\tvalue={ filterValue }\n\t\t\t\t\tonChange={ setFilter }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ loading && (\n\t\t\t\t<Flex\n\t\t\t\t\tjustify=\"center\"\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t// Match SearchControl height to prevent layout shift.\n\t\t\t\t\t\theight: '40px',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<Spinner />\n\t\t\t\t</Flex>\n\t\t\t) }\n\t\t\t<div\n\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-list\"\n\t\t\t\ttabIndex=\"0\"\n\t\t\t\trole=\"group\"\n\t\t\t\taria-label={ groupLabel }\n\t\t\t>\n\t\t\t\t{ renderTerms(\n\t\t\t\t\t'' !== filterValue ? filteredTermsTree : availableTermsTree\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ ! loading && hasCreateAction && (\n\t\t\t\t<FlexItem>\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tonClick={ onToggleForm }\n\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-add\"\n\t\t\t\t\t\taria-expanded={ showForm }\n\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ newTermButtonLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t) }\n\t\t\t{ showForm && (\n\t\t\t\t<form onSubmit={ onAddTerm }>\n\t\t\t\t\t<Flex direction=\"column\" gap=\"4\">\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-input\"\n\t\t\t\t\t\t\tlabel={ newTermLabel }\n\t\t\t\t\t\t\tvalue={ formName }\n\t\t\t\t\t\t\tonChange={ onChangeFormName }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ !! availableTerms.length && (\n\t\t\t\t\t\t\t<TreeSelect\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tlabel={ parentSelectLabel }\n\t\t\t\t\t\t\t\tnoOptionLabel={ noParentOption }\n\t\t\t\t\t\t\t\tonChange={ onChangeFormParent }\n\t\t\t\t\t\t\t\tselectedId={ formParent }\n\t\t\t\t\t\t\t\ttree={ availableTermsTree }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\tclassName=\"editor-post-taxonomies__hierarchical-terms-submit\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ newTermSubmitLabel }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t</Flex>\n\t\t\t\t</form>\n\t\t\t) }\n\t\t</Flex>\n\t);\n}\n\nexport default withFilters( 'editor.PostTaxonomyType' )(\n\tHierarchicalTermSelector\n);\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -96,7 +96,6 @@ function CreateNewTemplateModal({ onClose }) {
96
96
  /* @__PURE__ */ jsx(
97
97
  TextControl,
98
98
  {
99
- __next40pxDefaultSize: true,
100
99
  label: __("Name"),
101
100
  value: title,
102
101
  onChange: setTitle,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/post-template/create-new-template-modal.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport { paramCase as kebabCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { serialize, createBlock } from '@wordpress/blocks';\nimport {\n\tModal,\n\tTextControl,\n\tButton,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as editorStore } from '../../store';\n\nconst DEFAULT_TITLE = __( 'Custom Template' );\n\nexport default function CreateNewTemplateModal( { onClose } ) {\n\tconst { defaultBlockTemplate, onNavigateToEntityRecord } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditorSettings, getCurrentTemplateId } =\n\t\t\t\tselect( editorStore );\n\t\t\treturn {\n\t\t\t\tdefaultBlockTemplate: getEditorSettings().defaultBlockTemplate,\n\t\t\t\tonNavigateToEntityRecord:\n\t\t\t\t\tgetEditorSettings().onNavigateToEntityRecord,\n\t\t\t\tgetTemplateId: getCurrentTemplateId,\n\t\t\t};\n\t\t}\n\t);\n\n\tconst { createTemplate } = unlock( useDispatch( editorStore ) );\n\n\tconst [ title, setTitle ] = useState( '' );\n\n\tconst [ isBusy, setIsBusy ] = useState( false );\n\n\tconst cancel = () => {\n\t\tsetTitle( '' );\n\t\tonClose();\n\t};\n\n\tconst submit = async ( event ) => {\n\t\tevent.preventDefault();\n\n\t\tif ( isBusy ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetIsBusy( true );\n\n\t\tconst newTemplateContent =\n\t\t\tdefaultBlockTemplate ??\n\t\t\tserialize( [\n\t\t\t\tcreateBlock(\n\t\t\t\t\t'core/group',\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: 'header',\n\t\t\t\t\t\tlayout: { inherit: true },\n\t\t\t\t\t},\n\t\t\t\t\t[\n\t\t\t\t\t\tcreateBlock( 'core/site-title' ),\n\t\t\t\t\t\tcreateBlock( 'core/site-tagline' ),\n\t\t\t\t\t]\n\t\t\t\t),\n\t\t\t\tcreateBlock( 'core/separator' ),\n\t\t\t\tcreateBlock(\n\t\t\t\t\t'core/group',\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: 'main',\n\t\t\t\t\t},\n\t\t\t\t\t[\n\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t'core/group',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlayout: { inherit: true },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t[ createBlock( 'core/post-title' ) ]\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcreateBlock( 'core/post-content', {\n\t\t\t\t\t\t\tlayout: { inherit: true },\n\t\t\t\t\t\t} ),\n\t\t\t\t\t]\n\t\t\t\t),\n\t\t\t] );\n\n\t\tconst newTemplate = await createTemplate( {\n\t\t\tslug: kebabCase( title || DEFAULT_TITLE ) || 'wp-custom-template',\n\t\t\tcontent: newTemplateContent,\n\t\t\ttitle: title || DEFAULT_TITLE,\n\t\t\tstatus: 'publish',\n\t\t} );\n\n\t\tsetIsBusy( false );\n\t\tonNavigateToEntityRecord( {\n\t\t\tpostId: newTemplate.id,\n\t\t\tpostType: 'wp_template',\n\t\t} );\n\t\tcancel();\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Create custom template' ) }\n\t\t\tonRequestClose={ cancel }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"small\"\n\t\t\toverlayClassName=\"editor-post-template__create-template-modal\"\n\t\t>\n\t\t\t<form onSubmit={ submit }>\n\t\t\t\t<VStack spacing=\"3\">\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\tplaceholder={ DEFAULT_TITLE }\n\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax -- 'sidebar' is a common web design term for layouts\n\t\t\t\t\t\t\t'Describe the template, e.g. \"Post with sidebar\". A custom template can be manually applied to any post or page.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ cancel }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tisBusy={ isBusy }\n\t\t\t\t\t\t\taria-disabled={ isBusy }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Create' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</VStack>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport { paramCase as kebabCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { serialize, createBlock } from '@wordpress/blocks';\nimport {\n\tModal,\n\tTextControl,\n\tButton,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { store as editorStore } from '../../store';\n\nconst DEFAULT_TITLE = __( 'Custom Template' );\n\nexport default function CreateNewTemplateModal( { onClose } ) {\n\tconst { defaultBlockTemplate, onNavigateToEntityRecord } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditorSettings, getCurrentTemplateId } =\n\t\t\t\tselect( editorStore );\n\t\t\treturn {\n\t\t\t\tdefaultBlockTemplate: getEditorSettings().defaultBlockTemplate,\n\t\t\t\tonNavigateToEntityRecord:\n\t\t\t\t\tgetEditorSettings().onNavigateToEntityRecord,\n\t\t\t\tgetTemplateId: getCurrentTemplateId,\n\t\t\t};\n\t\t}\n\t);\n\n\tconst { createTemplate } = unlock( useDispatch( editorStore ) );\n\n\tconst [ title, setTitle ] = useState( '' );\n\n\tconst [ isBusy, setIsBusy ] = useState( false );\n\n\tconst cancel = () => {\n\t\tsetTitle( '' );\n\t\tonClose();\n\t};\n\n\tconst submit = async ( event ) => {\n\t\tevent.preventDefault();\n\n\t\tif ( isBusy ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetIsBusy( true );\n\n\t\tconst newTemplateContent =\n\t\t\tdefaultBlockTemplate ??\n\t\t\tserialize( [\n\t\t\t\tcreateBlock(\n\t\t\t\t\t'core/group',\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: 'header',\n\t\t\t\t\t\tlayout: { inherit: true },\n\t\t\t\t\t},\n\t\t\t\t\t[\n\t\t\t\t\t\tcreateBlock( 'core/site-title' ),\n\t\t\t\t\t\tcreateBlock( 'core/site-tagline' ),\n\t\t\t\t\t]\n\t\t\t\t),\n\t\t\t\tcreateBlock( 'core/separator' ),\n\t\t\t\tcreateBlock(\n\t\t\t\t\t'core/group',\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: 'main',\n\t\t\t\t\t},\n\t\t\t\t\t[\n\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t'core/group',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlayout: { inherit: true },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t[ createBlock( 'core/post-title' ) ]\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcreateBlock( 'core/post-content', {\n\t\t\t\t\t\t\tlayout: { inherit: true },\n\t\t\t\t\t\t} ),\n\t\t\t\t\t]\n\t\t\t\t),\n\t\t\t] );\n\n\t\tconst newTemplate = await createTemplate( {\n\t\t\tslug: kebabCase( title || DEFAULT_TITLE ) || 'wp-custom-template',\n\t\t\tcontent: newTemplateContent,\n\t\t\ttitle: title || DEFAULT_TITLE,\n\t\t\tstatus: 'publish',\n\t\t} );\n\n\t\tsetIsBusy( false );\n\t\tonNavigateToEntityRecord( {\n\t\t\tpostId: newTemplate.id,\n\t\t\tpostType: 'wp_template',\n\t\t} );\n\t\tcancel();\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Create custom template' ) }\n\t\t\tonRequestClose={ cancel }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"small\"\n\t\t\toverlayClassName=\"editor-post-template__create-template-modal\"\n\t\t>\n\t\t\t<form onSubmit={ submit }>\n\t\t\t\t<VStack spacing=\"3\">\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\tplaceholder={ DEFAULT_TITLE }\n\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax -- 'sidebar' is a common web design term for layouts\n\t\t\t\t\t\t\t'Describe the template, e.g. \"Post with sidebar\". A custom template can be manually applied to any post or page.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ cancel }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tisBusy={ isBusy }\n\t\t\t\t\t\t\taria-disabled={ isBusy }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Create' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</VStack>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,6 +1,6 @@
1
1
  // packages/editor/src/components/post-text-editor/utils.js
2
- import { diffChars } from "diff/lib/diff/character";
3
- import { diffLines } from "diff/lib/diff/line";
2
+ import { diffChars } from "diff/lib/diff/character.js";
3
+ import { diffLines } from "diff/lib/diff/line.js";
4
4
  var STRING_TOO_LARGE_THRESHOLD = 1e3;
5
5
  function getDiff(oldValue, newValue) {
6
6
  const maxStringLength = Math.max(oldValue.length, newValue.length);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/post-text-editor/utils.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport { diffChars } from 'diff/lib/diff/character';\nimport { diffLines } from 'diff/lib/diff/line';\n\n// Character diffing (Myers) is cheap when the edit distance is small but\n// degrades toward O(n^2) as the two strings diverge: a full replacement of\n// ~10k differing chars blocks the main thread for seconds. Cap the input handed\n// to diffChars so the worst case stays small (~100ms); larger windows fall back\n// to a line diff, with the cursor remapped by getCursorOffsetFromCommonText...\nconst STRING_TOO_LARGE_THRESHOLD = 1000;\n\n/**\n * Diffs two strings into a list of `{ value, added?, removed? }` change parts.\n *\n * @param {string} oldValue The previous string.\n * @param {string} newValue The next string.\n * @return {Array<Object>} The diff change parts.\n */\nexport function getDiff( oldValue, newValue ) {\n\tconst maxStringLength = Math.max( oldValue.length, newValue.length );\n\n\tif ( maxStringLength <= STRING_TOO_LARGE_THRESHOLD ) {\n\t\treturn diffChars( oldValue, newValue );\n\t}\n\n\tlet start = 0;\n\tconst minStringLength = Math.min( oldValue.length, newValue.length );\n\n\twhile (\n\t\tstart < minStringLength &&\n\t\toldValue[ start ] === newValue[ start ]\n\t) {\n\t\tstart++;\n\t}\n\n\tlet oldEnd = oldValue.length;\n\tlet newEnd = newValue.length;\n\n\twhile (\n\t\toldEnd > start &&\n\t\tnewEnd > start &&\n\t\toldValue[ oldEnd - 1 ] === newValue[ newEnd - 1 ]\n\t) {\n\t\toldEnd--;\n\t\tnewEnd--;\n\t}\n\n\tconst oldChangedValue = oldValue.slice( start, oldEnd );\n\tconst newChangedValue = newValue.slice( start, newEnd );\n\tconst maxChangedStringLength = Math.max(\n\t\toldChangedValue.length,\n\t\tnewChangedValue.length\n\t);\n\tlet changes;\n\n\tif ( maxChangedStringLength <= STRING_TOO_LARGE_THRESHOLD ) {\n\t\tchanges = diffChars( oldChangedValue, newChangedValue );\n\t} else {\n\t\tchanges = diffLines( oldChangedValue, newChangedValue );\n\t}\n\n\tif ( start > 0 ) {\n\t\tchanges.unshift( { value: oldValue.slice( 0, start ) } );\n\t}\n\n\tif ( oldEnd < oldValue.length ) {\n\t\tchanges.push( { value: oldValue.slice( oldEnd ) } );\n\t}\n\n\treturn changes;\n}\n\nfunction clampCursorPosition( position, value ) {\n\treturn Math.max( 0, Math.min( value.length, position ) );\n}\n\n// A coarse (line-level) diff reports a whole changed region as one replacement,\n// which would otherwise snap the cursor to the region's end. Recover a precise\n// position by finding the longest run of text ending at the cursor that is\n// preserved in the replacement, then placing the cursor just past where that\n// run starts in the new text. This uses indexOf (near-linear in V8) rather than\n// a character diff, so it stays cheap even across a large single-line region.\nfunction getCursorOffsetFromCommonTextBeforeCursor(\n\toldValue,\n\tnewValue,\n\tposition\n) {\n\tconst oldValueBeforeCursor = oldValue.slice( 0, position );\n\tlet low = 1;\n\tlet high = oldValueBeforeCursor.length;\n\tlet cursorOffset;\n\n\twhile ( low <= high ) {\n\t\tconst length = Math.floor( ( low + high ) / 2 );\n\t\tconst index = newValue.indexOf(\n\t\t\toldValueBeforeCursor.slice( oldValueBeforeCursor.length - length )\n\t\t);\n\n\t\tif ( index === -1 ) {\n\t\t\thigh = length - 1;\n\t\t} else {\n\t\t\tcursorOffset = index + length;\n\t\t\tlow = length + 1;\n\t\t}\n\t}\n\n\treturn cursorOffset;\n}\n\n/**\n * Maps a cursor position from the old string to the new string given a diff.\n *\n * @param {number} position The cursor position in the old string.\n * @param {Array<Object>} changes The diff returned by `getDiff`.\n * @param {string} oldValue The previous string.\n * @param {string} newValue The next string.\n * @return {number} The adjusted cursor position in the new string.\n */\nexport function adjustPosition( position, changes, oldValue, newValue ) {\n\tlet oldIndex = 0;\n\tlet newIndex = 0;\n\tlet adjustedPosition = position;\n\n\tfor ( let i = 0; i < changes.length; i++ ) {\n\t\tconst change = changes[ i ];\n\t\tif ( ! change.added && ! change.removed ) {\n\t\t\toldIndex += change.value.length;\n\t\t\tnewIndex += change.value.length;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst oldStart = oldIndex;\n\t\tconst newStart = newIndex;\n\t\tlet oldLength = 0;\n\t\tlet newLength = 0;\n\n\t\twhile (\n\t\t\ti < changes.length &&\n\t\t\t( changes[ i ].added || changes[ i ].removed )\n\t\t) {\n\t\t\tif ( changes[ i ].removed ) {\n\t\t\t\toldLength += changes[ i ].value.length;\n\t\t\t} else {\n\t\t\t\tnewLength += changes[ i ].value.length;\n\t\t\t}\n\t\t\ti++;\n\t\t}\n\t\ti--;\n\n\t\tconst oldEnd = oldStart + oldLength;\n\t\tconst newEnd = newStart + newLength;\n\n\t\tif ( position < oldStart ) {\n\t\t\t// The cursor is before this change, so nothing here can move it.\n\t\t\tbreak;\n\t\t}\n\n\t\tif ( oldLength === 0 ) {\n\t\t\t// Pure insertion at or before the cursor: shift it right by the\n\t\t\t// inserted length.\n\t\t\tadjustedPosition += newLength;\n\t\t} else if ( position <= oldEnd ) {\n\t\t\t// The cursor falls inside a replaced region; recover its precise\n\t\t\t// spot from the text preserved around it.\n\t\t\tconst cursorOffset = getCursorOffsetFromCommonTextBeforeCursor(\n\t\t\t\toldValue.slice( oldStart, oldEnd ),\n\t\t\t\tnewValue.slice( newStart, newEnd ),\n\t\t\t\tposition - oldStart\n\t\t\t);\n\n\t\t\tadjustedPosition =\n\t\t\t\tcursorOffset === undefined ? newEnd : newStart + cursorOffset;\n\t\t\tbreak;\n\t\t} else {\n\t\t\t// The cursor is after this change: shift it by the net length delta.\n\t\t\tadjustedPosition += newLength - oldLength;\n\t\t}\n\n\t\toldIndex += oldLength;\n\t\tnewIndex += newLength;\n\t}\n\n\treturn clampCursorPosition( adjustedPosition, newValue );\n}\n\n/**\n * Diffs `oldValue` against `newValue` and maps a cursor `position` from the old\n * string to the new one.\n *\n * @param {number} position The cursor position in the old string.\n * @param {string} oldValue The previous string.\n * @param {string} newValue The next string.\n * @return {number} The adjusted cursor position in the new string.\n */\nexport function getAdjustedCursorPosition( position, oldValue, newValue ) {\n\treturn adjustPosition(\n\t\tposition,\n\t\tgetDiff( oldValue, newValue ),\n\t\toldValue,\n\t\tnewValue\n\t);\n}\n"],
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport { diffChars } from 'diff/lib/diff/character.js';\nimport { diffLines } from 'diff/lib/diff/line.js';\n\n// Character diffing (Myers) is cheap when the edit distance is small but\n// degrades toward O(n^2) as the two strings diverge: a full replacement of\n// ~10k differing chars blocks the main thread for seconds. Cap the input handed\n// to diffChars so the worst case stays small (~100ms); larger windows fall back\n// to a line diff, with the cursor remapped by getCursorOffsetFromCommonText...\nconst STRING_TOO_LARGE_THRESHOLD = 1000;\n\n/**\n * Diffs two strings into a list of `{ value, added?, removed? }` change parts.\n *\n * @param {string} oldValue The previous string.\n * @param {string} newValue The next string.\n * @return {Array<Object>} The diff change parts.\n */\nexport function getDiff( oldValue, newValue ) {\n\tconst maxStringLength = Math.max( oldValue.length, newValue.length );\n\n\tif ( maxStringLength <= STRING_TOO_LARGE_THRESHOLD ) {\n\t\treturn diffChars( oldValue, newValue );\n\t}\n\n\tlet start = 0;\n\tconst minStringLength = Math.min( oldValue.length, newValue.length );\n\n\twhile (\n\t\tstart < minStringLength &&\n\t\toldValue[ start ] === newValue[ start ]\n\t) {\n\t\tstart++;\n\t}\n\n\tlet oldEnd = oldValue.length;\n\tlet newEnd = newValue.length;\n\n\twhile (\n\t\toldEnd > start &&\n\t\tnewEnd > start &&\n\t\toldValue[ oldEnd - 1 ] === newValue[ newEnd - 1 ]\n\t) {\n\t\toldEnd--;\n\t\tnewEnd--;\n\t}\n\n\tconst oldChangedValue = oldValue.slice( start, oldEnd );\n\tconst newChangedValue = newValue.slice( start, newEnd );\n\tconst maxChangedStringLength = Math.max(\n\t\toldChangedValue.length,\n\t\tnewChangedValue.length\n\t);\n\tlet changes;\n\n\tif ( maxChangedStringLength <= STRING_TOO_LARGE_THRESHOLD ) {\n\t\tchanges = diffChars( oldChangedValue, newChangedValue );\n\t} else {\n\t\tchanges = diffLines( oldChangedValue, newChangedValue );\n\t}\n\n\tif ( start > 0 ) {\n\t\tchanges.unshift( { value: oldValue.slice( 0, start ) } );\n\t}\n\n\tif ( oldEnd < oldValue.length ) {\n\t\tchanges.push( { value: oldValue.slice( oldEnd ) } );\n\t}\n\n\treturn changes;\n}\n\nfunction clampCursorPosition( position, value ) {\n\treturn Math.max( 0, Math.min( value.length, position ) );\n}\n\n// A coarse (line-level) diff reports a whole changed region as one replacement,\n// which would otherwise snap the cursor to the region's end. Recover a precise\n// position by finding the longest run of text ending at the cursor that is\n// preserved in the replacement, then placing the cursor just past where that\n// run starts in the new text. This uses indexOf (near-linear in V8) rather than\n// a character diff, so it stays cheap even across a large single-line region.\nfunction getCursorOffsetFromCommonTextBeforeCursor(\n\toldValue,\n\tnewValue,\n\tposition\n) {\n\tconst oldValueBeforeCursor = oldValue.slice( 0, position );\n\tlet low = 1;\n\tlet high = oldValueBeforeCursor.length;\n\tlet cursorOffset;\n\n\twhile ( low <= high ) {\n\t\tconst length = Math.floor( ( low + high ) / 2 );\n\t\tconst index = newValue.indexOf(\n\t\t\toldValueBeforeCursor.slice( oldValueBeforeCursor.length - length )\n\t\t);\n\n\t\tif ( index === -1 ) {\n\t\t\thigh = length - 1;\n\t\t} else {\n\t\t\tcursorOffset = index + length;\n\t\t\tlow = length + 1;\n\t\t}\n\t}\n\n\treturn cursorOffset;\n}\n\n/**\n * Maps a cursor position from the old string to the new string given a diff.\n *\n * @param {number} position The cursor position in the old string.\n * @param {Array<Object>} changes The diff returned by `getDiff`.\n * @param {string} oldValue The previous string.\n * @param {string} newValue The next string.\n * @return {number} The adjusted cursor position in the new string.\n */\nexport function adjustPosition( position, changes, oldValue, newValue ) {\n\tlet oldIndex = 0;\n\tlet newIndex = 0;\n\tlet adjustedPosition = position;\n\n\tfor ( let i = 0; i < changes.length; i++ ) {\n\t\tconst change = changes[ i ];\n\t\tif ( ! change.added && ! change.removed ) {\n\t\t\toldIndex += change.value.length;\n\t\t\tnewIndex += change.value.length;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst oldStart = oldIndex;\n\t\tconst newStart = newIndex;\n\t\tlet oldLength = 0;\n\t\tlet newLength = 0;\n\n\t\twhile (\n\t\t\ti < changes.length &&\n\t\t\t( changes[ i ].added || changes[ i ].removed )\n\t\t) {\n\t\t\tif ( changes[ i ].removed ) {\n\t\t\t\toldLength += changes[ i ].value.length;\n\t\t\t} else {\n\t\t\t\tnewLength += changes[ i ].value.length;\n\t\t\t}\n\t\t\ti++;\n\t\t}\n\t\ti--;\n\n\t\tconst oldEnd = oldStart + oldLength;\n\t\tconst newEnd = newStart + newLength;\n\n\t\tif ( position < oldStart ) {\n\t\t\t// The cursor is before this change, so nothing here can move it.\n\t\t\tbreak;\n\t\t}\n\n\t\tif ( oldLength === 0 ) {\n\t\t\t// Pure insertion at or before the cursor: shift it right by the\n\t\t\t// inserted length.\n\t\t\tadjustedPosition += newLength;\n\t\t} else if ( position <= oldEnd ) {\n\t\t\t// The cursor falls inside a replaced region; recover its precise\n\t\t\t// spot from the text preserved around it.\n\t\t\tconst cursorOffset = getCursorOffsetFromCommonTextBeforeCursor(\n\t\t\t\toldValue.slice( oldStart, oldEnd ),\n\t\t\t\tnewValue.slice( newStart, newEnd ),\n\t\t\t\tposition - oldStart\n\t\t\t);\n\n\t\t\tadjustedPosition =\n\t\t\t\tcursorOffset === undefined ? newEnd : newStart + cursorOffset;\n\t\t\tbreak;\n\t\t} else {\n\t\t\t// The cursor is after this change: shift it by the net length delta.\n\t\t\tadjustedPosition += newLength - oldLength;\n\t\t}\n\n\t\toldIndex += oldLength;\n\t\tnewIndex += newLength;\n\t}\n\n\treturn clampCursorPosition( adjustedPosition, newValue );\n}\n\n/**\n * Diffs `oldValue` against `newValue` and maps a cursor `position` from the old\n * string to the new one.\n *\n * @param {number} position The cursor position in the old string.\n * @param {string} oldValue The previous string.\n * @param {string} newValue The next string.\n * @return {number} The adjusted cursor position in the new string.\n */\nexport function getAdjustedCursorPosition( position, oldValue, newValue ) {\n\treturn adjustPosition(\n\t\tposition,\n\t\tgetDiff( oldValue, newValue ),\n\t\toldValue,\n\t\tnewValue\n\t);\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -68,7 +68,6 @@ function PostVisibility({ onClose }) {
68
68
  placeholder: __("Use a secure password"),
69
69
  type: "text",
70
70
  id: `editor-post-visibility__password-input-${instanceId}`,
71
- __next40pxDefaultSize: true,
72
71
  maxLength: 255
73
72
  }
74
73
  )
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/post-visibility/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport {\n\tTextControl,\n\tRadioControl,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __experimentalInspectorPopoverHeader as InspectorPopoverHeader } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { VISIBILITY_OPTIONS } from './utils';\nimport { store as editorStore } from '../../store';\n\n/**\n * Allows users to set the visibility of a post.\n *\n * @param {Object} props The component props.\n * @param {Function} props.onClose Function to call when the popover is closed.\n * @return {React.ReactNode} The rendered component.\n */\nexport default function PostVisibility( { onClose } ) {\n\tconst instanceId = useInstanceId( PostVisibility );\n\n\tconst { status, visibility, password } = useSelect( ( select ) => ( {\n\t\tstatus: select( editorStore ).getEditedPostAttribute( 'status' ),\n\t\tvisibility: select( editorStore ).getEditedPostVisibility(),\n\t\tpassword: select( editorStore ).getEditedPostAttribute( 'password' ),\n\t} ) );\n\n\tconst { editPost } = useDispatch( editorStore );\n\n\tconst [ hasPassword, setHasPassword ] = useState( !! password );\n\n\tfunction updateVisibility( value ) {\n\t\tconst nextValues = {\n\t\t\tpublic: {\n\t\t\t\tstatus: visibility === 'private' ? 'draft' : status,\n\t\t\t\tpassword: '',\n\t\t\t},\n\t\t\tprivate: { status: 'private', password: '' },\n\t\t\tpassword: {\n\t\t\t\tstatus: visibility === 'private' ? 'draft' : status,\n\t\t\t\tpassword: password || '',\n\t\t\t},\n\t\t};\n\n\t\teditPost( nextValues[ value ] );\n\t\tsetHasPassword( value === 'password' );\n\t}\n\n\tconst updatePassword = ( value ) => {\n\t\teditPost( { password: value } );\n\t};\n\n\treturn (\n\t\t<div className=\"editor-post-visibility\">\n\t\t\t<InspectorPopoverHeader\n\t\t\t\ttitle={ __( 'Visibility' ) }\n\t\t\t\thelp={ __( 'Control how this post is viewed.' ) }\n\t\t\t\tonClose={ onClose }\n\t\t\t/>\n\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t<RadioControl\n\t\t\t\t\tlabel={ __( 'Visibility' ) }\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t\toptions={ VISIBILITY_OPTIONS }\n\t\t\t\t\tselected={ hasPassword ? 'password' : visibility }\n\t\t\t\t\tonChange={ updateVisibility }\n\t\t\t\t/>\n\t\t\t\t{ hasPassword && (\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Password' ) }\n\t\t\t\t\t\tonChange={ updatePassword }\n\t\t\t\t\t\tvalue={ password }\n\t\t\t\t\t\tplaceholder={ __( 'Use a secure password' ) }\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tid={ `editor-post-visibility__password-input-${ instanceId }` }\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tmaxLength={ 255 }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n"],
5
- "mappings": ";AAGA,SAAS,UAAU;AACnB,SAAS,gBAAgB;AACzB;AAAA,EACC;AAAA,EACA;AAAA,EACA,wBAAwB;AAAA,OAClB;AACP,SAAS,qBAAqB;AAC9B,SAAS,WAAW,mBAAmB;AACvC,SAAS,wCAAwC,8BAA8B;AAK/E,SAAS,0BAA0B;AACnC,SAAS,SAAS,mBAAmB;AA6ClC,cAKA,YALA;AApCY,SAAR,eAAiC,EAAE,QAAQ,GAAI;AACrD,QAAM,aAAa,cAAe,cAAe;AAEjD,QAAM,EAAE,QAAQ,YAAY,SAAS,IAAI,UAAW,CAAE,YAAc;AAAA,IACnE,QAAQ,OAAQ,WAAY,EAAE,uBAAwB,QAAS;AAAA,IAC/D,YAAY,OAAQ,WAAY,EAAE,wBAAwB;AAAA,IAC1D,UAAU,OAAQ,WAAY,EAAE,uBAAwB,UAAW;AAAA,EACpE,EAAI;AAEJ,QAAM,EAAE,SAAS,IAAI,YAAa,WAAY;AAE9C,QAAM,CAAE,aAAa,cAAe,IAAI,SAAU,CAAC,CAAE,QAAS;AAE9D,WAAS,iBAAkB,OAAQ;AAClC,UAAM,aAAa;AAAA,MAClB,QAAQ;AAAA,QACP,QAAQ,eAAe,YAAY,UAAU;AAAA,QAC7C,UAAU;AAAA,MACX;AAAA,MACA,SAAS,EAAE,QAAQ,WAAW,UAAU,GAAG;AAAA,MAC3C,UAAU;AAAA,QACT,QAAQ,eAAe,YAAY,UAAU;AAAA,QAC7C,UAAU,YAAY;AAAA,MACvB;AAAA,IACD;AAEA,aAAU,WAAY,KAAM,CAAE;AAC9B,mBAAgB,UAAU,UAAW;AAAA,EACtC;AAEA,QAAM,iBAAiB,CAAE,UAAW;AACnC,aAAU,EAAE,UAAU,MAAM,CAAE;AAAA,EAC/B;AAEA,SACC,qBAAC,SAAI,WAAU,0BACd;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,OAAQ,GAAI,YAAa;AAAA,QACzB,MAAO,GAAI,kCAAmC;AAAA,QAC9C;AAAA;AAAA,IACD;AAAA,IACA,qBAAC,UAAO,SAAU,GACjB;AAAA;AAAA,QAAC;AAAA;AAAA,UACA,OAAQ,GAAI,YAAa;AAAA,UACzB,qBAAmB;AAAA,UACnB,SAAU;AAAA,UACV,UAAW,cAAc,aAAa;AAAA,UACtC,UAAW;AAAA;AAAA,MACZ;AAAA,MACE,eACD;AAAA,QAAC;AAAA;AAAA,UACA,OAAQ,GAAI,UAAW;AAAA,UACvB,UAAW;AAAA,UACX,OAAQ;AAAA,UACR,aAAc,GAAI,uBAAwB;AAAA,UAC1C,MAAK;AAAA,UACL,IAAK,0CAA2C,UAAW;AAAA,UAC3D,uBAAqB;AAAA,UACrB,WAAY;AAAA;AAAA,MACb;AAAA,OAEF;AAAA,KACD;AAEF;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport {\n\tTextControl,\n\tRadioControl,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __experimentalInspectorPopoverHeader as InspectorPopoverHeader } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { VISIBILITY_OPTIONS } from './utils';\nimport { store as editorStore } from '../../store';\n\n/**\n * Allows users to set the visibility of a post.\n *\n * @param {Object} props The component props.\n * @param {Function} props.onClose Function to call when the popover is closed.\n * @return {React.ReactNode} The rendered component.\n */\nexport default function PostVisibility( { onClose } ) {\n\tconst instanceId = useInstanceId( PostVisibility );\n\n\tconst { status, visibility, password } = useSelect( ( select ) => ( {\n\t\tstatus: select( editorStore ).getEditedPostAttribute( 'status' ),\n\t\tvisibility: select( editorStore ).getEditedPostVisibility(),\n\t\tpassword: select( editorStore ).getEditedPostAttribute( 'password' ),\n\t} ) );\n\n\tconst { editPost } = useDispatch( editorStore );\n\n\tconst [ hasPassword, setHasPassword ] = useState( !! password );\n\n\tfunction updateVisibility( value ) {\n\t\tconst nextValues = {\n\t\t\tpublic: {\n\t\t\t\tstatus: visibility === 'private' ? 'draft' : status,\n\t\t\t\tpassword: '',\n\t\t\t},\n\t\t\tprivate: { status: 'private', password: '' },\n\t\t\tpassword: {\n\t\t\t\tstatus: visibility === 'private' ? 'draft' : status,\n\t\t\t\tpassword: password || '',\n\t\t\t},\n\t\t};\n\n\t\teditPost( nextValues[ value ] );\n\t\tsetHasPassword( value === 'password' );\n\t}\n\n\tconst updatePassword = ( value ) => {\n\t\teditPost( { password: value } );\n\t};\n\n\treturn (\n\t\t<div className=\"editor-post-visibility\">\n\t\t\t<InspectorPopoverHeader\n\t\t\t\ttitle={ __( 'Visibility' ) }\n\t\t\t\thelp={ __( 'Control how this post is viewed.' ) }\n\t\t\t\tonClose={ onClose }\n\t\t\t/>\n\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t<RadioControl\n\t\t\t\t\tlabel={ __( 'Visibility' ) }\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t\toptions={ VISIBILITY_OPTIONS }\n\t\t\t\t\tselected={ hasPassword ? 'password' : visibility }\n\t\t\t\t\tonChange={ updateVisibility }\n\t\t\t\t/>\n\t\t\t\t{ hasPassword && (\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Password' ) }\n\t\t\t\t\t\tonChange={ updatePassword }\n\t\t\t\t\t\tvalue={ password }\n\t\t\t\t\t\tplaceholder={ __( 'Use a secure password' ) }\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tid={ `editor-post-visibility__password-input-${ instanceId }` }\n\t\t\t\t\t\tmaxLength={ 255 }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n"],
5
+ "mappings": ";AAGA,SAAS,UAAU;AACnB,SAAS,gBAAgB;AACzB;AAAA,EACC;AAAA,EACA;AAAA,EACA,wBAAwB;AAAA,OAClB;AACP,SAAS,qBAAqB;AAC9B,SAAS,WAAW,mBAAmB;AACvC,SAAS,wCAAwC,8BAA8B;AAK/E,SAAS,0BAA0B;AACnC,SAAS,SAAS,mBAAmB;AA6ClC,cAKA,YALA;AApCY,SAAR,eAAiC,EAAE,QAAQ,GAAI;AACrD,QAAM,aAAa,cAAe,cAAe;AAEjD,QAAM,EAAE,QAAQ,YAAY,SAAS,IAAI,UAAW,CAAE,YAAc;AAAA,IACnE,QAAQ,OAAQ,WAAY,EAAE,uBAAwB,QAAS;AAAA,IAC/D,YAAY,OAAQ,WAAY,EAAE,wBAAwB;AAAA,IAC1D,UAAU,OAAQ,WAAY,EAAE,uBAAwB,UAAW;AAAA,EACpE,EAAI;AAEJ,QAAM,EAAE,SAAS,IAAI,YAAa,WAAY;AAE9C,QAAM,CAAE,aAAa,cAAe,IAAI,SAAU,CAAC,CAAE,QAAS;AAE9D,WAAS,iBAAkB,OAAQ;AAClC,UAAM,aAAa;AAAA,MAClB,QAAQ;AAAA,QACP,QAAQ,eAAe,YAAY,UAAU;AAAA,QAC7C,UAAU;AAAA,MACX;AAAA,MACA,SAAS,EAAE,QAAQ,WAAW,UAAU,GAAG;AAAA,MAC3C,UAAU;AAAA,QACT,QAAQ,eAAe,YAAY,UAAU;AAAA,QAC7C,UAAU,YAAY;AAAA,MACvB;AAAA,IACD;AAEA,aAAU,WAAY,KAAM,CAAE;AAC9B,mBAAgB,UAAU,UAAW;AAAA,EACtC;AAEA,QAAM,iBAAiB,CAAE,UAAW;AACnC,aAAU,EAAE,UAAU,MAAM,CAAE;AAAA,EAC/B;AAEA,SACC,qBAAC,SAAI,WAAU,0BACd;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,OAAQ,GAAI,YAAa;AAAA,QACzB,MAAO,GAAI,kCAAmC;AAAA,QAC9C;AAAA;AAAA,IACD;AAAA,IACA,qBAAC,UAAO,SAAU,GACjB;AAAA;AAAA,QAAC;AAAA;AAAA,UACA,OAAQ,GAAI,YAAa;AAAA,UACzB,qBAAmB;AAAA,UACnB,SAAU;AAAA,UACV,UAAW,cAAc,aAAa;AAAA,UACtC,UAAW;AAAA;AAAA,MACZ;AAAA,MACE,eACD;AAAA,QAAC;AAAA;AAAA,UACA,OAAQ,GAAI,UAAW;AAAA,UACvB,UAAW;AAAA,UACX,OAAQ;AAAA,UACR,aAAc,GAAI,uBAAwB;AAAA,UAC1C,MAAK;AAAA,UACL,IAAK,0CAA2C,UAAW;AAAA,UAC3D,WAAY;AAAA;AAAA,MACb;AAAA,OAEF;AAAA,KACD;AAEF;",
6
6
  "names": []
7
7
  }
@@ -29,36 +29,54 @@ function DisableNonPageContentBlocks() {
29
29
  );
30
30
  const registry = useRegistry();
31
31
  useEffect(() => {
32
- const { setBlockEditingMode, unsetBlockEditingMode } = registry.dispatch(blockEditorStore);
32
+ const {
33
+ setBlockEditingMode,
34
+ unsetBlockEditingMode,
35
+ __unstableMarkNextChangeAsNotPersistent
36
+ } = registry.dispatch(blockEditorStore);
37
+ __unstableMarkNextChangeAsNotPersistent();
33
38
  setBlockEditingMode("", "disabled");
34
39
  return () => {
40
+ __unstableMarkNextChangeAsNotPersistent();
35
41
  unsetBlockEditingMode("");
36
42
  };
37
43
  }, [registry]);
38
44
  useEffect(() => {
39
- const { setBlockEditingMode, unsetBlockEditingMode } = registry.dispatch(blockEditorStore);
45
+ const {
46
+ setBlockEditingMode,
47
+ unsetBlockEditingMode,
48
+ __unstableMarkNextChangeAsNotPersistent
49
+ } = registry.dispatch(blockEditorStore);
40
50
  registry.batch(() => {
41
51
  for (const clientId of templateParts) {
52
+ __unstableMarkNextChangeAsNotPersistent();
42
53
  setBlockEditingMode(clientId, "contentOnly");
43
54
  }
44
55
  });
45
56
  return () => {
46
57
  registry.batch(() => {
47
58
  for (const clientId of templateParts) {
59
+ __unstableMarkNextChangeAsNotPersistent();
48
60
  unsetBlockEditingMode(clientId);
49
61
  }
50
62
  });
51
63
  };
52
64
  }, [templateParts, registry]);
53
65
  useEffect(() => {
54
- const { setBlockEditingMode, unsetBlockEditingMode } = registry.dispatch(blockEditorStore);
66
+ const {
67
+ setBlockEditingMode,
68
+ unsetBlockEditingMode,
69
+ __unstableMarkNextChangeAsNotPersistent
70
+ } = registry.dispatch(blockEditorStore);
55
71
  const contentOnlySet = new Set(contentOnlyIds);
56
72
  registry.batch(() => {
57
73
  for (const clientId of contentOnlyIds) {
74
+ __unstableMarkNextChangeAsNotPersistent();
58
75
  setBlockEditingMode(clientId, "contentOnly");
59
76
  }
60
77
  for (const clientId of templatePartChildren) {
61
78
  if (!contentOnlySet.has(clientId)) {
79
+ __unstableMarkNextChangeAsNotPersistent();
62
80
  setBlockEditingMode(clientId, "disabled");
63
81
  }
64
82
  }
@@ -66,10 +84,12 @@ function DisableNonPageContentBlocks() {
66
84
  return () => {
67
85
  registry.batch(() => {
68
86
  for (const clientId of contentOnlyIds) {
87
+ __unstableMarkNextChangeAsNotPersistent();
69
88
  unsetBlockEditingMode(clientId);
70
89
  }
71
90
  for (const clientId of templatePartChildren) {
72
91
  if (!contentOnlySet.has(clientId)) {
92
+ __unstableMarkNextChangeAsNotPersistent();
73
93
  unsetBlockEditingMode(clientId);
74
94
  }
75
95
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/provider/disable-non-page-content-blocks.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect, useRegistry } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport usePostContentBlockTypes from './use-post-content-block-types';\n\n/**\n * Component that when rendered, makes it so that the site editor allows only\n * page content to be edited.\n */\nexport default function DisableNonPageContentBlocks() {\n\tconst postContentBlockTypes = usePostContentBlockTypes();\n\tconst { contentOnlyIds, templateParts } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getPostBlocksByName } = unlock( select( editorStore ) );\n\t\t\tconst { getBlocksByName } = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tcontentOnlyIds: getPostBlocksByName( postContentBlockTypes ),\n\t\t\t\ttemplateParts: getBlocksByName( 'core/template-part' ),\n\t\t\t};\n\t\t},\n\t\t[ postContentBlockTypes ]\n\t);\n\t// This is a separate `useSelect` because `templatePartChildren` is\n\t// derived via flatMap, which always produces a new array. Combining it\n\t// with the above subscription causes an infinite render loop: the new\n\t// array fails useSelect's shallow equality check → re-render → effect\n\t// fires setBlockEditingMode → store changes → useSelect re-runs → …\n\tconst templatePartChildren = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockOrder } = select( blockEditorStore );\n\t\t\treturn templateParts.flatMap( ( clientId ) =>\n\t\t\t\tgetBlockOrder( clientId )\n\t\t\t);\n\t\t},\n\t\t[ templateParts ]\n\t);\n\n\tconst registry = useRegistry();\n\n\t// The effects below are split so that changes to one group of blocks\n\t// don't cause unnecessary set/unset cycles for the others. For example,\n\t// the root block ('') editing mode only needs to be set once.\n\t// Child blocks of templates and templateParts are also loaded separately,\n\t// so these are kept in separate effects.\n\tuseEffect( () => {\n\t\tconst { setBlockEditingMode, unsetBlockEditingMode } =\n\t\t\tregistry.dispatch( blockEditorStore );\n\n\t\tsetBlockEditingMode( '', 'disabled' );\n\n\t\treturn () => {\n\t\t\tunsetBlockEditingMode( '' );\n\t\t};\n\t}, [ registry ] );\n\n\tuseEffect( () => {\n\t\tconst { setBlockEditingMode, unsetBlockEditingMode } =\n\t\t\tregistry.dispatch( blockEditorStore );\n\n\t\tregistry.batch( () => {\n\t\t\tfor ( const clientId of templateParts ) {\n\t\t\t\tsetBlockEditingMode( clientId, 'contentOnly' );\n\t\t\t}\n\t\t} );\n\n\t\treturn () => {\n\t\t\tregistry.batch( () => {\n\t\t\t\tfor ( const clientId of templateParts ) {\n\t\t\t\t\tunsetBlockEditingMode( clientId );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t}, [ templateParts, registry ] );\n\n\tuseEffect( () => {\n\t\tconst { setBlockEditingMode, unsetBlockEditingMode } =\n\t\t\tregistry.dispatch( blockEditorStore );\n\n\t\tconst contentOnlySet = new Set( contentOnlyIds );\n\n\t\tregistry.batch( () => {\n\t\t\tfor ( const clientId of contentOnlyIds ) {\n\t\t\t\tsetBlockEditingMode( clientId, 'contentOnly' );\n\t\t\t}\n\t\t\tfor ( const clientId of templatePartChildren ) {\n\t\t\t\tif ( ! contentOnlySet.has( clientId ) ) {\n\t\t\t\t\tsetBlockEditingMode( clientId, 'disabled' );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\treturn () => {\n\t\t\tregistry.batch( () => {\n\t\t\t\tfor ( const clientId of contentOnlyIds ) {\n\t\t\t\t\tunsetBlockEditingMode( clientId );\n\t\t\t\t}\n\t\t\t\tfor ( const clientId of templatePartChildren ) {\n\t\t\t\t\tif ( ! contentOnlySet.has( clientId ) ) {\n\t\t\t\t\t\tunsetBlockEditingMode( clientId );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t}, [ contentOnlyIds, templatePartChildren, registry ] );\n\n\treturn null;\n}\n"],
5
- "mappings": ";AAGA,SAAS,WAAW,mBAAmB;AACvC,SAAS,SAAS,wBAAwB;AAC1C,SAAS,iBAAiB;AAK1B,SAAS,SAAS,mBAAmB;AACrC,SAAS,cAAc;AACvB,OAAO,8BAA8B;AAMtB,SAAR,8BAA+C;AACrD,QAAM,wBAAwB,yBAAyB;AACvD,QAAM,EAAE,gBAAgB,cAAc,IAAI;AAAA,IACzC,CAAE,WAAY;AACb,YAAM,EAAE,oBAAoB,IAAI,OAAQ,OAAQ,WAAY,CAAE;AAC9D,YAAM,EAAE,gBAAgB,IAAI,OAAQ,gBAAiB;AACrD,aAAO;AAAA,QACN,gBAAgB,oBAAqB,qBAAsB;AAAA,QAC3D,eAAe,gBAAiB,oBAAqB;AAAA,MACtD;AAAA,IACD;AAAA,IACA,CAAE,qBAAsB;AAAA,EACzB;AAMA,QAAM,uBAAuB;AAAA,IAC5B,CAAE,WAAY;AACb,YAAM,EAAE,cAAc,IAAI,OAAQ,gBAAiB;AACnD,aAAO,cAAc;AAAA,QAAS,CAAE,aAC/B,cAAe,QAAS;AAAA,MACzB;AAAA,IACD;AAAA,IACA,CAAE,aAAc;AAAA,EACjB;AAEA,QAAM,WAAW,YAAY;AAO7B,YAAW,MAAM;AAChB,UAAM,EAAE,qBAAqB,sBAAsB,IAClD,SAAS,SAAU,gBAAiB;AAErC,wBAAqB,IAAI,UAAW;AAEpC,WAAO,MAAM;AACZ,4BAAuB,EAAG;AAAA,IAC3B;AAAA,EACD,GAAG,CAAE,QAAS,CAAE;AAEhB,YAAW,MAAM;AAChB,UAAM,EAAE,qBAAqB,sBAAsB,IAClD,SAAS,SAAU,gBAAiB;AAErC,aAAS,MAAO,MAAM;AACrB,iBAAY,YAAY,eAAgB;AACvC,4BAAqB,UAAU,aAAc;AAAA,MAC9C;AAAA,IACD,CAAE;AAEF,WAAO,MAAM;AACZ,eAAS,MAAO,MAAM;AACrB,mBAAY,YAAY,eAAgB;AACvC,gCAAuB,QAAS;AAAA,QACjC;AAAA,MACD,CAAE;AAAA,IACH;AAAA,EACD,GAAG,CAAE,eAAe,QAAS,CAAE;AAE/B,YAAW,MAAM;AAChB,UAAM,EAAE,qBAAqB,sBAAsB,IAClD,SAAS,SAAU,gBAAiB;AAErC,UAAM,iBAAiB,IAAI,IAAK,cAAe;AAE/C,aAAS,MAAO,MAAM;AACrB,iBAAY,YAAY,gBAAiB;AACxC,4BAAqB,UAAU,aAAc;AAAA,MAC9C;AACA,iBAAY,YAAY,sBAAuB;AAC9C,YAAK,CAAE,eAAe,IAAK,QAAS,GAAI;AACvC,8BAAqB,UAAU,UAAW;AAAA,QAC3C;AAAA,MACD;AAAA,IACD,CAAE;AAEF,WAAO,MAAM;AACZ,eAAS,MAAO,MAAM;AACrB,mBAAY,YAAY,gBAAiB;AACxC,gCAAuB,QAAS;AAAA,QACjC;AACA,mBAAY,YAAY,sBAAuB;AAC9C,cAAK,CAAE,eAAe,IAAK,QAAS,GAAI;AACvC,kCAAuB,QAAS;AAAA,UACjC;AAAA,QACD;AAAA,MACD,CAAE;AAAA,IACH;AAAA,EACD,GAAG,CAAE,gBAAgB,sBAAsB,QAAS,CAAE;AAEtD,SAAO;AACR;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useSelect, useRegistry } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\nimport usePostContentBlockTypes from './use-post-content-block-types';\n\n/**\n * Component that when rendered, makes it so that the site editor allows only\n * page content to be edited.\n */\nexport default function DisableNonPageContentBlocks() {\n\tconst postContentBlockTypes = usePostContentBlockTypes();\n\tconst { contentOnlyIds, templateParts } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getPostBlocksByName } = unlock( select( editorStore ) );\n\t\t\tconst { getBlocksByName } = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tcontentOnlyIds: getPostBlocksByName( postContentBlockTypes ),\n\t\t\t\ttemplateParts: getBlocksByName( 'core/template-part' ),\n\t\t\t};\n\t\t},\n\t\t[ postContentBlockTypes ]\n\t);\n\t// This is a separate `useSelect` because `templatePartChildren` is\n\t// derived via flatMap, which always produces a new array. Combining it\n\t// with the above subscription causes an infinite render loop: the new\n\t// array fails useSelect's shallow equality check → re-render → effect\n\t// fires setBlockEditingMode → store changes → useSelect re-runs → …\n\tconst templatePartChildren = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockOrder } = select( blockEditorStore );\n\t\t\treturn templateParts.flatMap( ( clientId ) =>\n\t\t\t\tgetBlockOrder( clientId )\n\t\t\t);\n\t\t},\n\t\t[ templateParts ]\n\t);\n\n\tconst registry = useRegistry();\n\n\t// The effects below are split so that changes to one group of blocks\n\t// don't cause unnecessary set/unset cycles for the others. For example,\n\t// the root block ('') editing mode only needs to be set once.\n\t// Child blocks of templates and templateParts are also loaded separately,\n\t// so these are kept in separate effects.\n\tuseEffect( () => {\n\t\tconst {\n\t\t\tsetBlockEditingMode,\n\t\t\tunsetBlockEditingMode,\n\t\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\t} = registry.dispatch( blockEditorStore );\n\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tsetBlockEditingMode( '', 'disabled' );\n\n\t\treturn () => {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tunsetBlockEditingMode( '' );\n\t\t};\n\t}, [ registry ] );\n\n\tuseEffect( () => {\n\t\tconst {\n\t\t\tsetBlockEditingMode,\n\t\t\tunsetBlockEditingMode,\n\t\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\t} = registry.dispatch( blockEditorStore );\n\n\t\tregistry.batch( () => {\n\t\t\tfor ( const clientId of templateParts ) {\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tsetBlockEditingMode( clientId, 'contentOnly' );\n\t\t\t}\n\t\t} );\n\n\t\treturn () => {\n\t\t\tregistry.batch( () => {\n\t\t\t\tfor ( const clientId of templateParts ) {\n\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\tunsetBlockEditingMode( clientId );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t}, [ templateParts, registry ] );\n\n\tuseEffect( () => {\n\t\tconst {\n\t\t\tsetBlockEditingMode,\n\t\t\tunsetBlockEditingMode,\n\t\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\t} = registry.dispatch( blockEditorStore );\n\n\t\tconst contentOnlySet = new Set( contentOnlyIds );\n\n\t\tregistry.batch( () => {\n\t\t\tfor ( const clientId of contentOnlyIds ) {\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tsetBlockEditingMode( clientId, 'contentOnly' );\n\t\t\t}\n\t\t\tfor ( const clientId of templatePartChildren ) {\n\t\t\t\tif ( ! contentOnlySet.has( clientId ) ) {\n\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\tsetBlockEditingMode( clientId, 'disabled' );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\treturn () => {\n\t\t\tregistry.batch( () => {\n\t\t\t\tfor ( const clientId of contentOnlyIds ) {\n\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\tunsetBlockEditingMode( clientId );\n\t\t\t\t}\n\t\t\t\tfor ( const clientId of templatePartChildren ) {\n\t\t\t\t\tif ( ! contentOnlySet.has( clientId ) ) {\n\t\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\t\tunsetBlockEditingMode( clientId );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t}, [ contentOnlyIds, templatePartChildren, registry ] );\n\n\treturn null;\n}\n"],
5
+ "mappings": ";AAGA,SAAS,WAAW,mBAAmB;AACvC,SAAS,SAAS,wBAAwB;AAC1C,SAAS,iBAAiB;AAK1B,SAAS,SAAS,mBAAmB;AACrC,SAAS,cAAc;AACvB,OAAO,8BAA8B;AAMtB,SAAR,8BAA+C;AACrD,QAAM,wBAAwB,yBAAyB;AACvD,QAAM,EAAE,gBAAgB,cAAc,IAAI;AAAA,IACzC,CAAE,WAAY;AACb,YAAM,EAAE,oBAAoB,IAAI,OAAQ,OAAQ,WAAY,CAAE;AAC9D,YAAM,EAAE,gBAAgB,IAAI,OAAQ,gBAAiB;AACrD,aAAO;AAAA,QACN,gBAAgB,oBAAqB,qBAAsB;AAAA,QAC3D,eAAe,gBAAiB,oBAAqB;AAAA,MACtD;AAAA,IACD;AAAA,IACA,CAAE,qBAAsB;AAAA,EACzB;AAMA,QAAM,uBAAuB;AAAA,IAC5B,CAAE,WAAY;AACb,YAAM,EAAE,cAAc,IAAI,OAAQ,gBAAiB;AACnD,aAAO,cAAc;AAAA,QAAS,CAAE,aAC/B,cAAe,QAAS;AAAA,MACzB;AAAA,IACD;AAAA,IACA,CAAE,aAAc;AAAA,EACjB;AAEA,QAAM,WAAW,YAAY;AAO7B,YAAW,MAAM;AAChB,UAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI,SAAS,SAAU,gBAAiB;AAExC,4CAAwC;AACxC,wBAAqB,IAAI,UAAW;AAEpC,WAAO,MAAM;AACZ,8CAAwC;AACxC,4BAAuB,EAAG;AAAA,IAC3B;AAAA,EACD,GAAG,CAAE,QAAS,CAAE;AAEhB,YAAW,MAAM;AAChB,UAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI,SAAS,SAAU,gBAAiB;AAExC,aAAS,MAAO,MAAM;AACrB,iBAAY,YAAY,eAAgB;AACvC,gDAAwC;AACxC,4BAAqB,UAAU,aAAc;AAAA,MAC9C;AAAA,IACD,CAAE;AAEF,WAAO,MAAM;AACZ,eAAS,MAAO,MAAM;AACrB,mBAAY,YAAY,eAAgB;AACvC,kDAAwC;AACxC,gCAAuB,QAAS;AAAA,QACjC;AAAA,MACD,CAAE;AAAA,IACH;AAAA,EACD,GAAG,CAAE,eAAe,QAAS,CAAE;AAE/B,YAAW,MAAM;AAChB,UAAM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACD,IAAI,SAAS,SAAU,gBAAiB;AAExC,UAAM,iBAAiB,IAAI,IAAK,cAAe;AAE/C,aAAS,MAAO,MAAM;AACrB,iBAAY,YAAY,gBAAiB;AACxC,gDAAwC;AACxC,4BAAqB,UAAU,aAAc;AAAA,MAC9C;AACA,iBAAY,YAAY,sBAAuB;AAC9C,YAAK,CAAE,eAAe,IAAK,QAAS,GAAI;AACvC,kDAAwC;AACxC,8BAAqB,UAAU,UAAW;AAAA,QAC3C;AAAA,MACD;AAAA,IACD,CAAE;AAEF,WAAO,MAAM;AACZ,eAAS,MAAO,MAAM;AACrB,mBAAY,YAAY,gBAAiB;AACxC,kDAAwC;AACxC,gCAAuB,QAAS;AAAA,QACjC;AACA,mBAAY,YAAY,sBAAuB;AAC9C,cAAK,CAAE,eAAe,IAAK,QAAS,GAAI;AACvC,oDAAwC;AACxC,kCAAuB,QAAS;AAAA,UACjC;AAAA,QACD;AAAA,MACD,CAAE;AAAA,IACH;AAAA,EACD,GAAG,CAAE,gBAAgB,sBAAsB,QAAS,CAAE;AAEtD,SAAO;AACR;",
6
6
  "names": []
7
7
  }