@wordpress/editor 14.8.4 → 14.8.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bindings/api.js +2 -5
- package/build/bindings/api.js.map +1 -1
- package/build/bindings/pattern-overrides.js +7 -6
- package/build/bindings/pattern-overrides.js.map +1 -1
- package/build/bindings/post-meta.js +65 -43
- package/build/bindings/post-meta.js.map +1 -1
- package/build/components/entities-saved-states/index.js +8 -6
- package/build/components/entities-saved-states/index.js.map +1 -1
- package/build/components/post-publish-panel/maybe-upload-media.js +3 -3
- package/build/components/post-publish-panel/maybe-upload-media.js.map +1 -1
- package/build/components/preview-dropdown/index.js +5 -0
- package/build/components/preview-dropdown/index.js.map +1 -1
- package/build/components/provider/index.js +10 -14
- package/build/components/provider/index.js.map +1 -1
- package/build/components/zoom-out-toggle/index.js +7 -3
- package/build/components/zoom-out-toggle/index.js.map +1 -1
- package/build/hooks/pattern-overrides.js +1 -4
- package/build/hooks/pattern-overrides.js.map +1 -1
- package/build/store/actions.js +15 -4
- package/build/store/actions.js.map +1 -1
- package/build-module/bindings/api.js +1 -4
- package/build-module/bindings/api.js.map +1 -1
- package/build-module/bindings/pattern-overrides.js +7 -6
- package/build-module/bindings/pattern-overrides.js.map +1 -1
- package/build-module/bindings/post-meta.js +66 -43
- package/build-module/bindings/post-meta.js.map +1 -1
- package/build-module/components/entities-saved-states/index.js +8 -6
- package/build-module/components/entities-saved-states/index.js.map +1 -1
- package/build-module/components/post-publish-panel/maybe-upload-media.js +3 -3
- package/build-module/components/post-publish-panel/maybe-upload-media.js.map +1 -1
- package/build-module/components/preview-dropdown/index.js +5 -0
- package/build-module/components/preview-dropdown/index.js.map +1 -1
- package/build-module/components/provider/index.js +10 -14
- package/build-module/components/provider/index.js.map +1 -1
- package/build-module/components/zoom-out-toggle/index.js +7 -3
- package/build-module/components/zoom-out-toggle/index.js.map +1 -1
- package/build-module/hooks/pattern-overrides.js +1 -4
- package/build-module/hooks/pattern-overrides.js.map +1 -1
- package/build-module/store/actions.js +16 -5
- package/build-module/store/actions.js.map +1 -1
- package/build-style/style-rtl.css +2 -2
- package/build-style/style.css +2 -2
- package/build-types/bindings/api.d.ts.map +1 -1
- package/build-types/bindings/pattern-overrides.d.ts +5 -4
- package/build-types/bindings/pattern-overrides.d.ts.map +1 -1
- package/build-types/bindings/post-meta.d.ts +7 -12
- package/build-types/bindings/post-meta.d.ts.map +1 -1
- package/build-types/components/entities-saved-states/index.d.ts.map +1 -1
- package/build-types/components/preview-dropdown/index.d.ts.map +1 -1
- package/build-types/components/provider/index.d.ts.map +1 -1
- package/build-types/components/zoom-out-toggle/index.d.ts.map +1 -1
- package/build-types/store/actions.d.ts.map +1 -1
- package/package.json +30 -30
- package/src/bindings/api.js +1 -2
- package/src/bindings/pattern-overrides.js +27 -30
- package/src/bindings/post-meta.js +70 -64
- package/src/components/entities-saved-states/index.js +10 -8
- package/src/components/entities-saved-states/style.scss +2 -2
- package/src/components/post-publish-panel/maybe-upload-media.js +3 -3
- package/src/components/preview-dropdown/index.js +3 -0
- package/src/components/provider/index.js +13 -20
- package/src/components/zoom-out-toggle/index.js +7 -1
- package/src/hooks/pattern-overrides.js +1 -2
- package/src/store/actions.js +26 -11
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -114,10 +114,18 @@ export function EntitiesSavedStatesExtensible({
|
|
|
114
114
|
className: "entities-saved-states__panel-header",
|
|
115
115
|
gap: 2,
|
|
116
116
|
children: [/*#__PURE__*/_jsx(FlexItem, {
|
|
117
|
+
isBlock: true,
|
|
118
|
+
as: Button,
|
|
119
|
+
variant: "secondary",
|
|
120
|
+
size: "compact",
|
|
121
|
+
onClick: dismissPanel,
|
|
122
|
+
children: __('Cancel')
|
|
123
|
+
}), /*#__PURE__*/_jsx(FlexItem, {
|
|
117
124
|
isBlock: true,
|
|
118
125
|
as: Button,
|
|
119
126
|
ref: saveButtonRef,
|
|
120
127
|
variant: "primary",
|
|
128
|
+
size: "compact",
|
|
121
129
|
disabled: !saveEnabled,
|
|
122
130
|
accessibleWhenDisabled: true,
|
|
123
131
|
onClick: () => saveDirtyEntities({
|
|
@@ -128,12 +136,6 @@ export function EntitiesSavedStatesExtensible({
|
|
|
128
136
|
}),
|
|
129
137
|
className: "editor-entities-saved-states__save-button",
|
|
130
138
|
children: saveLabel
|
|
131
|
-
}), /*#__PURE__*/_jsx(FlexItem, {
|
|
132
|
-
isBlock: true,
|
|
133
|
-
as: Button,
|
|
134
|
-
variant: "secondary",
|
|
135
|
-
onClick: dismissPanel,
|
|
136
|
-
children: __('Cancel')
|
|
137
139
|
})]
|
|
138
140
|
}), /*#__PURE__*/_jsxs("div", {
|
|
139
141
|
className: "entities-saved-states__text-prompt",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Button","Flex","FlexItem","__","_n","sprintf","useCallback","useRef","createInterpolateElement","__experimentalUseDialog","useDialog","useInstanceId","useDispatch","EntityTypeList","useIsDirty","store","editorStore","unlock","jsx","_jsx","jsxs","_jsxs","identity","values","EntitiesSavedStates","close","renderDialog","undefined","isDirtyProps","EntitiesSavedStatesExtensible","additionalPrompt","onSave","saveEnabled","saveEnabledProp","saveLabel","dirtyEntityRecords","isDirty","setUnselectedEntities","unselectedEntities","saveButtonRef","saveDirtyEntities","partitionedSavables","reduce","acc","record","name","push","site","siteSavables","wp_template","templateSavables","wp_template_part","templatePartSavables","contentSavables","sortedPartitionedSavables","Object","filter","Array","isArray","dismissPanel","saveDialogRef","saveDialogProps","onClose","dialogLabel","dialogDescription","ref","className","role","children","gap","isBlock","as","variant","disabled","accessibleWhenDisabled","onClick","entitiesToSkip","id","length","strong","map","list"],"sources":["@wordpress/editor/src/components/entities-saved-states/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button, Flex, FlexItem } from '@wordpress/components';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport {\n\tuseCallback,\n\tuseRef,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport {\n\t__experimentalUseDialog as useDialog,\n\tuseInstanceId,\n} from '@wordpress/compose';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport EntityTypeList from './entity-type-list';\nimport { useIsDirty } from './hooks/use-is-dirty';\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nfunction identity( values ) {\n\treturn values;\n}\n\n/**\n * Renders the component for managing saved states of entities.\n *\n * @param {Object} props The component props.\n * @param {Function} props.close The function to close the dialog.\n * @param {Function} props.renderDialog The function to render the dialog.\n *\n * @return {JSX.Element} The rendered component.\n */\nexport default function EntitiesSavedStates( {\n\tclose,\n\trenderDialog = undefined,\n} ) {\n\tconst isDirtyProps = useIsDirty();\n\treturn (\n\t\t<EntitiesSavedStatesExtensible\n\t\t\tclose={ close }\n\t\t\trenderDialog={ renderDialog }\n\t\t\t{ ...isDirtyProps }\n\t\t/>\n\t);\n}\n\n/**\n * Renders a panel for saving entities with dirty records.\n *\n * @param {Object} props The component props.\n * @param {string} props.additionalPrompt Additional prompt to display.\n * @param {Function} props.close Function to close the panel.\n * @param {Function} props.onSave Function to call when saving entities.\n * @param {boolean} props.saveEnabled Flag indicating if save is enabled.\n * @param {string} props.saveLabel Label for the save button.\n * @param {Function} props.renderDialog Function to render a custom dialog.\n * @param {Array} props.dirtyEntityRecords Array of dirty entity records.\n * @param {boolean} props.isDirty Flag indicating if there are dirty entities.\n * @param {Function} props.setUnselectedEntities Function to set unselected entities.\n * @param {Array} props.unselectedEntities Array of unselected entities.\n *\n * @return {JSX.Element} The rendered component.\n */\nexport function EntitiesSavedStatesExtensible( {\n\tadditionalPrompt = undefined,\n\tclose,\n\tonSave = identity,\n\tsaveEnabled: saveEnabledProp = undefined,\n\tsaveLabel = __( 'Save' ),\n\trenderDialog = undefined,\n\tdirtyEntityRecords,\n\tisDirty,\n\tsetUnselectedEntities,\n\tunselectedEntities,\n} ) {\n\tconst saveButtonRef = useRef();\n\tconst { saveDirtyEntities } = unlock( useDispatch( editorStore ) );\n\t// To group entities by type.\n\tconst partitionedSavables = dirtyEntityRecords.reduce( ( acc, record ) => {\n\t\tconst { name } = record;\n\t\tif ( ! acc[ name ] ) {\n\t\t\tacc[ name ] = [];\n\t\t}\n\t\tacc[ name ].push( record );\n\t\treturn acc;\n\t}, {} );\n\n\t// Sort entity groups.\n\tconst {\n\t\tsite: siteSavables,\n\t\twp_template: templateSavables,\n\t\twp_template_part: templatePartSavables,\n\t\t...contentSavables\n\t} = partitionedSavables;\n\tconst sortedPartitionedSavables = [\n\t\tsiteSavables,\n\t\ttemplateSavables,\n\t\ttemplatePartSavables,\n\t\t...Object.values( contentSavables ),\n\t].filter( Array.isArray );\n\n\tconst saveEnabled = saveEnabledProp ?? isDirty;\n\t// Explicitly define this with no argument passed. Using `close` on\n\t// its own will use the event object in place of the expected saved entities.\n\tconst dismissPanel = useCallback( () => close(), [ close ] );\n\n\tconst [ saveDialogRef, saveDialogProps ] = useDialog( {\n\t\tonClose: () => dismissPanel(),\n\t} );\n\tconst dialogLabel = useInstanceId( EntitiesSavedStatesExtensible, 'label' );\n\tconst dialogDescription = useInstanceId(\n\t\tEntitiesSavedStatesExtensible,\n\t\t'description'\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={ saveDialogRef }\n\t\t\t{ ...saveDialogProps }\n\t\t\tclassName=\"entities-saved-states__panel\"\n\t\t\trole={ renderDialog ? 'dialog' : undefined }\n\t\t\taria-labelledby={ renderDialog ? dialogLabel : undefined }\n\t\t\taria-describedby={ renderDialog ? dialogDescription : undefined }\n\t\t>\n\t\t\t<Flex className=\"entities-saved-states__panel-header\" gap={ 2 }>\n\t\t\t\t<FlexItem\n\t\t\t\t\tisBlock\n\t\t\t\t\tas={ Button }\n\t\t\t\t\tref={ saveButtonRef }\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tdisabled={ ! saveEnabled }\n\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\tsaveDirtyEntities( {\n\t\t\t\t\t\t\tonSave,\n\t\t\t\t\t\t\tdirtyEntityRecords,\n\t\t\t\t\t\t\tentitiesToSkip: unselectedEntities,\n\t\t\t\t\t\t\tclose,\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\tclassName=\"editor-entities-saved-states__save-button\"\n\t\t\t\t>\n\t\t\t\t\t{ saveLabel }\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem\n\t\t\t\t\tisBlock\n\t\t\t\t\tas={ Button }\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tonClick={ dismissPanel }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\n\t\t\t<div className=\"entities-saved-states__text-prompt\">\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"entities-saved-states__text-prompt--header-wrapper\"\n\t\t\t\t\tid={ renderDialog ? dialogLabel : undefined }\n\t\t\t\t>\n\t\t\t\t\t<strong className=\"entities-saved-states__text-prompt--header\">\n\t\t\t\t\t\t{ __( 'Are you ready to save?' ) }\n\t\t\t\t\t</strong>\n\t\t\t\t\t{ additionalPrompt }\n\t\t\t\t</div>\n\t\t\t\t<p id={ renderDialog ? dialogDescription : undefined }>\n\t\t\t\t\t{ isDirty\n\t\t\t\t\t\t? createInterpolateElement(\n\t\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %d: number of site changes waiting to be saved. */\n\t\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t\t'There is <strong>%d site change</strong> waiting to be saved.',\n\t\t\t\t\t\t\t\t\t\t'There are <strong>%d site changes</strong> waiting to be saved.',\n\t\t\t\t\t\t\t\t\t\tsortedPartitionedSavables.length\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tsortedPartitionedSavables.length\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t{ strong: <strong /> }\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: __( 'Select the items you want to save.' ) }\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t{ sortedPartitionedSavables.map( ( list ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<EntityTypeList\n\t\t\t\t\t\tkey={ list[ 0 ].name }\n\t\t\t\t\t\tlist={ list }\n\t\t\t\t\t\tunselectedEntities={ unselectedEntities }\n\t\t\t\t\t\tsetUnselectedEntities={ setUnselectedEntities }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Button","Flex","FlexItem","__","_n","sprintf","useCallback","useRef","createInterpolateElement","__experimentalUseDialog","useDialog","useInstanceId","useDispatch","EntityTypeList","useIsDirty","store","editorStore","unlock","jsx","_jsx","jsxs","_jsxs","identity","values","EntitiesSavedStates","close","renderDialog","undefined","isDirtyProps","EntitiesSavedStatesExtensible","additionalPrompt","onSave","saveEnabled","saveEnabledProp","saveLabel","dirtyEntityRecords","isDirty","setUnselectedEntities","unselectedEntities","saveButtonRef","saveDirtyEntities","partitionedSavables","reduce","acc","record","name","push","site","siteSavables","wp_template","templateSavables","wp_template_part","templatePartSavables","contentSavables","sortedPartitionedSavables","Object","filter","Array","isArray","dismissPanel","saveDialogRef","saveDialogProps","onClose","dialogLabel","dialogDescription","ref","className","role","children","gap","isBlock","as","variant","size","onClick","disabled","accessibleWhenDisabled","entitiesToSkip","id","length","strong","map","list"],"sources":["@wordpress/editor/src/components/entities-saved-states/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button, Flex, FlexItem } from '@wordpress/components';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport {\n\tuseCallback,\n\tuseRef,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport {\n\t__experimentalUseDialog as useDialog,\n\tuseInstanceId,\n} from '@wordpress/compose';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport EntityTypeList from './entity-type-list';\nimport { useIsDirty } from './hooks/use-is-dirty';\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nfunction identity( values ) {\n\treturn values;\n}\n\n/**\n * Renders the component for managing saved states of entities.\n *\n * @param {Object} props The component props.\n * @param {Function} props.close The function to close the dialog.\n * @param {Function} props.renderDialog The function to render the dialog.\n *\n * @return {JSX.Element} The rendered component.\n */\nexport default function EntitiesSavedStates( {\n\tclose,\n\trenderDialog = undefined,\n} ) {\n\tconst isDirtyProps = useIsDirty();\n\treturn (\n\t\t<EntitiesSavedStatesExtensible\n\t\t\tclose={ close }\n\t\t\trenderDialog={ renderDialog }\n\t\t\t{ ...isDirtyProps }\n\t\t/>\n\t);\n}\n\n/**\n * Renders a panel for saving entities with dirty records.\n *\n * @param {Object} props The component props.\n * @param {string} props.additionalPrompt Additional prompt to display.\n * @param {Function} props.close Function to close the panel.\n * @param {Function} props.onSave Function to call when saving entities.\n * @param {boolean} props.saveEnabled Flag indicating if save is enabled.\n * @param {string} props.saveLabel Label for the save button.\n * @param {Function} props.renderDialog Function to render a custom dialog.\n * @param {Array} props.dirtyEntityRecords Array of dirty entity records.\n * @param {boolean} props.isDirty Flag indicating if there are dirty entities.\n * @param {Function} props.setUnselectedEntities Function to set unselected entities.\n * @param {Array} props.unselectedEntities Array of unselected entities.\n *\n * @return {JSX.Element} The rendered component.\n */\nexport function EntitiesSavedStatesExtensible( {\n\tadditionalPrompt = undefined,\n\tclose,\n\tonSave = identity,\n\tsaveEnabled: saveEnabledProp = undefined,\n\tsaveLabel = __( 'Save' ),\n\trenderDialog = undefined,\n\tdirtyEntityRecords,\n\tisDirty,\n\tsetUnselectedEntities,\n\tunselectedEntities,\n} ) {\n\tconst saveButtonRef = useRef();\n\tconst { saveDirtyEntities } = unlock( useDispatch( editorStore ) );\n\t// To group entities by type.\n\tconst partitionedSavables = dirtyEntityRecords.reduce( ( acc, record ) => {\n\t\tconst { name } = record;\n\t\tif ( ! acc[ name ] ) {\n\t\t\tacc[ name ] = [];\n\t\t}\n\t\tacc[ name ].push( record );\n\t\treturn acc;\n\t}, {} );\n\n\t// Sort entity groups.\n\tconst {\n\t\tsite: siteSavables,\n\t\twp_template: templateSavables,\n\t\twp_template_part: templatePartSavables,\n\t\t...contentSavables\n\t} = partitionedSavables;\n\tconst sortedPartitionedSavables = [\n\t\tsiteSavables,\n\t\ttemplateSavables,\n\t\ttemplatePartSavables,\n\t\t...Object.values( contentSavables ),\n\t].filter( Array.isArray );\n\n\tconst saveEnabled = saveEnabledProp ?? isDirty;\n\t// Explicitly define this with no argument passed. Using `close` on\n\t// its own will use the event object in place of the expected saved entities.\n\tconst dismissPanel = useCallback( () => close(), [ close ] );\n\n\tconst [ saveDialogRef, saveDialogProps ] = useDialog( {\n\t\tonClose: () => dismissPanel(),\n\t} );\n\tconst dialogLabel = useInstanceId( EntitiesSavedStatesExtensible, 'label' );\n\tconst dialogDescription = useInstanceId(\n\t\tEntitiesSavedStatesExtensible,\n\t\t'description'\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={ saveDialogRef }\n\t\t\t{ ...saveDialogProps }\n\t\t\tclassName=\"entities-saved-states__panel\"\n\t\t\trole={ renderDialog ? 'dialog' : undefined }\n\t\t\taria-labelledby={ renderDialog ? dialogLabel : undefined }\n\t\t\taria-describedby={ renderDialog ? dialogDescription : undefined }\n\t\t>\n\t\t\t<Flex className=\"entities-saved-states__panel-header\" gap={ 2 }>\n\t\t\t\t<FlexItem\n\t\t\t\t\tisBlock\n\t\t\t\t\tas={ Button }\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\tonClick={ dismissPanel }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem\n\t\t\t\t\tisBlock\n\t\t\t\t\tas={ Button }\n\t\t\t\t\tref={ saveButtonRef }\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\tdisabled={ ! saveEnabled }\n\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\tsaveDirtyEntities( {\n\t\t\t\t\t\t\tonSave,\n\t\t\t\t\t\t\tdirtyEntityRecords,\n\t\t\t\t\t\t\tentitiesToSkip: unselectedEntities,\n\t\t\t\t\t\t\tclose,\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\tclassName=\"editor-entities-saved-states__save-button\"\n\t\t\t\t>\n\t\t\t\t\t{ saveLabel }\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\n\t\t\t<div className=\"entities-saved-states__text-prompt\">\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"entities-saved-states__text-prompt--header-wrapper\"\n\t\t\t\t\tid={ renderDialog ? dialogLabel : undefined }\n\t\t\t\t>\n\t\t\t\t\t<strong className=\"entities-saved-states__text-prompt--header\">\n\t\t\t\t\t\t{ __( 'Are you ready to save?' ) }\n\t\t\t\t\t</strong>\n\t\t\t\t\t{ additionalPrompt }\n\t\t\t\t</div>\n\t\t\t\t<p id={ renderDialog ? dialogDescription : undefined }>\n\t\t\t\t\t{ isDirty\n\t\t\t\t\t\t? createInterpolateElement(\n\t\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %d: number of site changes waiting to be saved. */\n\t\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t\t'There is <strong>%d site change</strong> waiting to be saved.',\n\t\t\t\t\t\t\t\t\t\t'There are <strong>%d site changes</strong> waiting to be saved.',\n\t\t\t\t\t\t\t\t\t\tsortedPartitionedSavables.length\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\tsortedPartitionedSavables.length\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t{ strong: <strong /> }\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: __( 'Select the items you want to save.' ) }\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t{ sortedPartitionedSavables.map( ( list ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<EntityTypeList\n\t\t\t\t\t\tkey={ list[ 0 ].name }\n\t\t\t\t\t\tlist={ list }\n\t\t\t\t\t\tunselectedEntities={ unselectedEntities }\n\t\t\t\t\t\tsetUnselectedEntities={ setUnselectedEntities }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -112,8 +112,8 @@ function Image({
|
|
|
112
112
|
scale: 0
|
|
113
113
|
},
|
|
114
114
|
style: {
|
|
115
|
-
width: '
|
|
116
|
-
height: '
|
|
115
|
+
width: '32px',
|
|
116
|
+
height: '32px',
|
|
117
117
|
objectFit: 'cover',
|
|
118
118
|
borderRadius: '2px',
|
|
119
119
|
cursor: 'pointer'
|
|
@@ -241,7 +241,7 @@ export default function MaybeUploadMediaPanel() {
|
|
|
241
241
|
}, block.clientId);
|
|
242
242
|
})
|
|
243
243
|
}), isUploading || isAnimating ? /*#__PURE__*/_jsx(Spinner, {}) : /*#__PURE__*/_jsx(Button, {
|
|
244
|
-
|
|
244
|
+
size: "compact",
|
|
245
245
|
variant: "primary",
|
|
246
246
|
onClick: uploadImages,
|
|
247
247
|
children: __('Upload')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PanelBody","Button","Spinner","__unstableMotion","motion","__unstableAnimatePresence","AnimatePresence","useSelect","useDispatch","__","store","blockEditorStore","useState","isBlobURL","fetchMedia","jsx","_jsx","jsxs","_jsxs","flattenBlocks","blocks","result","forEach","block","push","innerBlocks","hasExternalMedia","name","attributes","url","id","mediaUrl","mediaId","undefined","getMediaInfo","alt","mediaAlt","Image","clientId","selectBlock","img","tabIndex","role","onClick","onKeyDown","event","key","preventDefault","src","animate","opacity","exit","scale","style","width","height","objectFit","borderRadius","cursor","whileHover","MaybeUploadMediaPanel","isUploading","setIsUploading","isAnimating","setIsAnimating","hadUploadError","setHadUploadError","editorBlocks","mediaUpload","select","getBlocks","getSettings","blocksWithExternalMedia","filter","updateBlockAttributes","length","panelBodyTitle","className","children","updateBlockWithUploadedMedia","media","uploadImages","mediaUrls","Set","map","uploadPromises","Object","fromEntries","entries","filePromise","uploadPromise","then","blob","Promise","resolve","reject","filesList","onFileChange","onError","allSettled","catch","finally","initialOpen","title","display","flexWrap","gap","onExitComplete","__next40pxDefaultSize","variant"],"sources":["@wordpress/editor/src/components/post-publish-panel/maybe-upload-media.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tPanelBody,\n\tButton,\n\tSpinner,\n\t__unstableMotion as motion,\n\t__unstableAnimatePresence as AnimatePresence,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useState } from '@wordpress/element';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport { fetchMedia } from './media-util';\n\nfunction flattenBlocks( blocks ) {\n\tconst result = [];\n\n\tblocks.forEach( ( block ) => {\n\t\tresult.push( block );\n\t\tresult.push( ...flattenBlocks( block.innerBlocks ) );\n\t} );\n\n\treturn result;\n}\n\n/**\n * Determine whether a block has external media.\n *\n * Different blocks use different attribute names (and potentially\n * different logic as well) in determining whether the media is\n * present, and whether it's external.\n *\n * @param {{name: string, attributes: Object}} block The block.\n * @return {boolean?} Whether the block has external media\n */\nfunction hasExternalMedia( block ) {\n\tif ( block.name === 'core/image' || block.name === 'core/cover' ) {\n\t\treturn block.attributes.url && ! block.attributes.id;\n\t}\n\n\tif ( block.name === 'core/media-text' ) {\n\t\treturn block.attributes.mediaUrl && ! block.attributes.mediaId;\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Retrieve media info from a block.\n *\n * Different blocks use different attribute names, so we need this\n * function to normalize things into a consistent naming scheme.\n *\n * @param {{name: string, attributes: Object}} block The block.\n * @return {{url: ?string, alt: ?string, id: ?number}} The media info for the block.\n */\nfunction getMediaInfo( block ) {\n\tif ( block.name === 'core/image' || block.name === 'core/cover' ) {\n\t\tconst { url, alt, id } = block.attributes;\n\t\treturn { url, alt, id };\n\t}\n\n\tif ( block.name === 'core/media-text' ) {\n\t\tconst { mediaUrl: url, mediaAlt: alt, mediaId: id } = block.attributes;\n\t\treturn { url, alt, id };\n\t}\n\n\treturn {};\n}\n\n// Image component to represent a single image in the upload dialog.\nfunction Image( { clientId, alt, url } ) {\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\treturn (\n\t\t<motion.img\n\t\t\ttabIndex={ 0 }\n\t\t\trole=\"button\"\n\t\t\taria-label={ __( 'Select image block.' ) }\n\t\t\tonClick={ () => {\n\t\t\t\tselectBlock( clientId );\n\t\t\t} }\n\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\tif ( event.key === 'Enter' || event.key === ' ' ) {\n\t\t\t\t\tselectBlock( clientId );\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t} }\n\t\t\tkey={ clientId }\n\t\t\talt={ alt }\n\t\t\tsrc={ url }\n\t\t\tanimate={ { opacity: 1 } }\n\t\t\texit={ { opacity: 0, scale: 0 } }\n\t\t\tstyle={ {\n\t\t\t\twidth: '36px',\n\t\t\t\theight: '36px',\n\t\t\t\tobjectFit: 'cover',\n\t\t\t\tborderRadius: '2px',\n\t\t\t\tcursor: 'pointer',\n\t\t\t} }\n\t\t\twhileHover={ { scale: 1.08 } }\n\t\t/>\n\t);\n}\n\nexport default function MaybeUploadMediaPanel() {\n\tconst [ isUploading, setIsUploading ] = useState( false );\n\tconst [ isAnimating, setIsAnimating ] = useState( false );\n\tconst [ hadUploadError, setHadUploadError ] = useState( false );\n\tconst { editorBlocks, mediaUpload } = useSelect(\n\t\t( select ) => ( {\n\t\t\teditorBlocks: select( blockEditorStore ).getBlocks(),\n\t\t\tmediaUpload: select( blockEditorStore ).getSettings().mediaUpload,\n\t\t} ),\n\t\t[]\n\t);\n\n\t// Get a list of blocks with external media.\n\tconst blocksWithExternalMedia = flattenBlocks( editorBlocks ).filter(\n\t\t( block ) => hasExternalMedia( block )\n\t);\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\tif ( ! mediaUpload || ! blocksWithExternalMedia.length ) {\n\t\treturn null;\n\t}\n\n\tconst panelBodyTitle = [\n\t\t__( 'Suggestion:' ),\n\t\t<span className=\"editor-post-publish-panel__link\" key=\"label\">\n\t\t\t{ __( 'External media' ) }\n\t\t</span>,\n\t];\n\n\t/**\n\t * Update an individual block to point to newly-added library media.\n\t *\n\t * Different blocks use different attribute names, so we need this\n\t * function to ensure we modify the correct attributes for each type.\n\t *\n\t * @param {{name: string, attributes: Object}} block The block.\n\t * @param {{id: number, url: string}} media Media library file info.\n\t */\n\tfunction updateBlockWithUploadedMedia( block, media ) {\n\t\tif ( block.name === 'core/image' || block.name === 'core/cover' ) {\n\t\t\tupdateBlockAttributes( block.clientId, {\n\t\t\t\tid: media.id,\n\t\t\t\turl: media.url,\n\t\t\t} );\n\t\t}\n\n\t\tif ( block.name === 'core/media-text' ) {\n\t\t\tupdateBlockAttributes( block.clientId, {\n\t\t\t\tmediaId: media.id,\n\t\t\t\tmediaUrl: media.url,\n\t\t\t} );\n\t\t}\n\t}\n\n\t// Handle fetching and uploading all external media in the post.\n\tfunction uploadImages() {\n\t\tsetIsUploading( true );\n\t\tsetHadUploadError( false );\n\n\t\t// Multiple blocks can be using the same URL, so we\n\t\t// should ensure we only fetch and upload each of them once.\n\t\tconst mediaUrls = new Set(\n\t\t\tblocksWithExternalMedia.map( ( block ) => {\n\t\t\t\tconst { url } = getMediaInfo( block );\n\t\t\t\treturn url;\n\t\t\t} )\n\t\t);\n\n\t\t// Create an upload promise for each URL, that we can wait for in all\n\t\t// blocks that make use of that media.\n\t\tconst uploadPromises = Object.fromEntries(\n\t\t\tObject.entries( fetchMedia( [ ...mediaUrls ] ) ).map(\n\t\t\t\t( [ url, filePromise ] ) => {\n\t\t\t\t\tconst uploadPromise = filePromise.then(\n\t\t\t\t\t\t( blob ) =>\n\t\t\t\t\t\t\tnew Promise( ( resolve, reject ) => {\n\t\t\t\t\t\t\t\tmediaUpload( {\n\t\t\t\t\t\t\t\t\tfilesList: [ blob ],\n\t\t\t\t\t\t\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\t\t\t\t\t\t\tif ( isBlobURL( media.url ) ) {\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tresolve( media );\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tonError() {\n\t\t\t\t\t\t\t\t\t\treject();\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\n\t\t\t\t\treturn [ url, uploadPromise ];\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\n\t\t// Wait for all blocks to be updated with library media.\n\t\tPromise.allSettled(\n\t\t\tblocksWithExternalMedia.map( ( block ) => {\n\t\t\t\tconst { url } = getMediaInfo( block );\n\n\t\t\t\treturn uploadPromises[ url ]\n\t\t\t\t\t.then( ( media ) =>\n\t\t\t\t\t\tupdateBlockWithUploadedMedia( block, media )\n\t\t\t\t\t)\n\t\t\t\t\t.then( () => setIsAnimating( true ) )\n\t\t\t\t\t.catch( () => setHadUploadError( true ) );\n\t\t\t} )\n\t\t).finally( () => {\n\t\t\tsetIsUploading( false );\n\t\t} );\n\t}\n\n\treturn (\n\t\t<PanelBody initialOpen title={ panelBodyTitle }>\n\t\t\t<p>\n\t\t\t\t{ __(\n\t\t\t\t\t'Upload external images to the Media Library. Images from different domains may load slowly, display incorrectly, or be removed unexpectedly.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<div\n\t\t\t\tstyle={ {\n\t\t\t\t\tdisplay: 'inline-flex',\n\t\t\t\t\tflexWrap: 'wrap',\n\t\t\t\t\tgap: '8px',\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<AnimatePresence\n\t\t\t\t\tonExitComplete={ () => setIsAnimating( false ) }\n\t\t\t\t>\n\t\t\t\t\t{ blocksWithExternalMedia.map( ( block ) => {\n\t\t\t\t\t\tconst { url, alt } = getMediaInfo( block );\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\tkey={ block.clientId }\n\t\t\t\t\t\t\t\tclientId={ block.clientId }\n\t\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t\t\talt={ alt }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</AnimatePresence>\n\t\t\t\t{ isUploading || isAnimating ? (\n\t\t\t\t\t<Spinner />\n\t\t\t\t) : (\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ uploadImages }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ hadUploadError && <p>{ __( 'Upload failed, try again.' ) }</p> }\n\t\t</PanelBody>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["PanelBody","Button","Spinner","__unstableMotion","motion","__unstableAnimatePresence","AnimatePresence","useSelect","useDispatch","__","store","blockEditorStore","useState","isBlobURL","fetchMedia","jsx","_jsx","jsxs","_jsxs","flattenBlocks","blocks","result","forEach","block","push","innerBlocks","hasExternalMedia","name","attributes","url","id","mediaUrl","mediaId","undefined","getMediaInfo","alt","mediaAlt","Image","clientId","selectBlock","img","tabIndex","role","onClick","onKeyDown","event","key","preventDefault","src","animate","opacity","exit","scale","style","width","height","objectFit","borderRadius","cursor","whileHover","MaybeUploadMediaPanel","isUploading","setIsUploading","isAnimating","setIsAnimating","hadUploadError","setHadUploadError","editorBlocks","mediaUpload","select","getBlocks","getSettings","blocksWithExternalMedia","filter","updateBlockAttributes","length","panelBodyTitle","className","children","updateBlockWithUploadedMedia","media","uploadImages","mediaUrls","Set","map","uploadPromises","Object","fromEntries","entries","filePromise","uploadPromise","then","blob","Promise","resolve","reject","filesList","onFileChange","onError","allSettled","catch","finally","initialOpen","title","display","flexWrap","gap","onExitComplete","size","variant"],"sources":["@wordpress/editor/src/components/post-publish-panel/maybe-upload-media.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tPanelBody,\n\tButton,\n\tSpinner,\n\t__unstableMotion as motion,\n\t__unstableAnimatePresence as AnimatePresence,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useState } from '@wordpress/element';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport { fetchMedia } from './media-util';\n\nfunction flattenBlocks( blocks ) {\n\tconst result = [];\n\n\tblocks.forEach( ( block ) => {\n\t\tresult.push( block );\n\t\tresult.push( ...flattenBlocks( block.innerBlocks ) );\n\t} );\n\n\treturn result;\n}\n\n/**\n * Determine whether a block has external media.\n *\n * Different blocks use different attribute names (and potentially\n * different logic as well) in determining whether the media is\n * present, and whether it's external.\n *\n * @param {{name: string, attributes: Object}} block The block.\n * @return {boolean?} Whether the block has external media\n */\nfunction hasExternalMedia( block ) {\n\tif ( block.name === 'core/image' || block.name === 'core/cover' ) {\n\t\treturn block.attributes.url && ! block.attributes.id;\n\t}\n\n\tif ( block.name === 'core/media-text' ) {\n\t\treturn block.attributes.mediaUrl && ! block.attributes.mediaId;\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Retrieve media info from a block.\n *\n * Different blocks use different attribute names, so we need this\n * function to normalize things into a consistent naming scheme.\n *\n * @param {{name: string, attributes: Object}} block The block.\n * @return {{url: ?string, alt: ?string, id: ?number}} The media info for the block.\n */\nfunction getMediaInfo( block ) {\n\tif ( block.name === 'core/image' || block.name === 'core/cover' ) {\n\t\tconst { url, alt, id } = block.attributes;\n\t\treturn { url, alt, id };\n\t}\n\n\tif ( block.name === 'core/media-text' ) {\n\t\tconst { mediaUrl: url, mediaAlt: alt, mediaId: id } = block.attributes;\n\t\treturn { url, alt, id };\n\t}\n\n\treturn {};\n}\n\n// Image component to represent a single image in the upload dialog.\nfunction Image( { clientId, alt, url } ) {\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\treturn (\n\t\t<motion.img\n\t\t\ttabIndex={ 0 }\n\t\t\trole=\"button\"\n\t\t\taria-label={ __( 'Select image block.' ) }\n\t\t\tonClick={ () => {\n\t\t\t\tselectBlock( clientId );\n\t\t\t} }\n\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\tif ( event.key === 'Enter' || event.key === ' ' ) {\n\t\t\t\t\tselectBlock( clientId );\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t} }\n\t\t\tkey={ clientId }\n\t\t\talt={ alt }\n\t\t\tsrc={ url }\n\t\t\tanimate={ { opacity: 1 } }\n\t\t\texit={ { opacity: 0, scale: 0 } }\n\t\t\tstyle={ {\n\t\t\t\twidth: '32px',\n\t\t\t\theight: '32px',\n\t\t\t\tobjectFit: 'cover',\n\t\t\t\tborderRadius: '2px',\n\t\t\t\tcursor: 'pointer',\n\t\t\t} }\n\t\t\twhileHover={ { scale: 1.08 } }\n\t\t/>\n\t);\n}\n\nexport default function MaybeUploadMediaPanel() {\n\tconst [ isUploading, setIsUploading ] = useState( false );\n\tconst [ isAnimating, setIsAnimating ] = useState( false );\n\tconst [ hadUploadError, setHadUploadError ] = useState( false );\n\tconst { editorBlocks, mediaUpload } = useSelect(\n\t\t( select ) => ( {\n\t\t\teditorBlocks: select( blockEditorStore ).getBlocks(),\n\t\t\tmediaUpload: select( blockEditorStore ).getSettings().mediaUpload,\n\t\t} ),\n\t\t[]\n\t);\n\n\t// Get a list of blocks with external media.\n\tconst blocksWithExternalMedia = flattenBlocks( editorBlocks ).filter(\n\t\t( block ) => hasExternalMedia( block )\n\t);\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\tif ( ! mediaUpload || ! blocksWithExternalMedia.length ) {\n\t\treturn null;\n\t}\n\n\tconst panelBodyTitle = [\n\t\t__( 'Suggestion:' ),\n\t\t<span className=\"editor-post-publish-panel__link\" key=\"label\">\n\t\t\t{ __( 'External media' ) }\n\t\t</span>,\n\t];\n\n\t/**\n\t * Update an individual block to point to newly-added library media.\n\t *\n\t * Different blocks use different attribute names, so we need this\n\t * function to ensure we modify the correct attributes for each type.\n\t *\n\t * @param {{name: string, attributes: Object}} block The block.\n\t * @param {{id: number, url: string}} media Media library file info.\n\t */\n\tfunction updateBlockWithUploadedMedia( block, media ) {\n\t\tif ( block.name === 'core/image' || block.name === 'core/cover' ) {\n\t\t\tupdateBlockAttributes( block.clientId, {\n\t\t\t\tid: media.id,\n\t\t\t\turl: media.url,\n\t\t\t} );\n\t\t}\n\n\t\tif ( block.name === 'core/media-text' ) {\n\t\t\tupdateBlockAttributes( block.clientId, {\n\t\t\t\tmediaId: media.id,\n\t\t\t\tmediaUrl: media.url,\n\t\t\t} );\n\t\t}\n\t}\n\n\t// Handle fetching and uploading all external media in the post.\n\tfunction uploadImages() {\n\t\tsetIsUploading( true );\n\t\tsetHadUploadError( false );\n\n\t\t// Multiple blocks can be using the same URL, so we\n\t\t// should ensure we only fetch and upload each of them once.\n\t\tconst mediaUrls = new Set(\n\t\t\tblocksWithExternalMedia.map( ( block ) => {\n\t\t\t\tconst { url } = getMediaInfo( block );\n\t\t\t\treturn url;\n\t\t\t} )\n\t\t);\n\n\t\t// Create an upload promise for each URL, that we can wait for in all\n\t\t// blocks that make use of that media.\n\t\tconst uploadPromises = Object.fromEntries(\n\t\t\tObject.entries( fetchMedia( [ ...mediaUrls ] ) ).map(\n\t\t\t\t( [ url, filePromise ] ) => {\n\t\t\t\t\tconst uploadPromise = filePromise.then(\n\t\t\t\t\t\t( blob ) =>\n\t\t\t\t\t\t\tnew Promise( ( resolve, reject ) => {\n\t\t\t\t\t\t\t\tmediaUpload( {\n\t\t\t\t\t\t\t\t\tfilesList: [ blob ],\n\t\t\t\t\t\t\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\t\t\t\t\t\t\tif ( isBlobURL( media.url ) ) {\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tresolve( media );\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tonError() {\n\t\t\t\t\t\t\t\t\t\treject();\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\n\t\t\t\t\treturn [ url, uploadPromise ];\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\n\t\t// Wait for all blocks to be updated with library media.\n\t\tPromise.allSettled(\n\t\t\tblocksWithExternalMedia.map( ( block ) => {\n\t\t\t\tconst { url } = getMediaInfo( block );\n\n\t\t\t\treturn uploadPromises[ url ]\n\t\t\t\t\t.then( ( media ) =>\n\t\t\t\t\t\tupdateBlockWithUploadedMedia( block, media )\n\t\t\t\t\t)\n\t\t\t\t\t.then( () => setIsAnimating( true ) )\n\t\t\t\t\t.catch( () => setHadUploadError( true ) );\n\t\t\t} )\n\t\t).finally( () => {\n\t\t\tsetIsUploading( false );\n\t\t} );\n\t}\n\n\treturn (\n\t\t<PanelBody initialOpen title={ panelBodyTitle }>\n\t\t\t<p>\n\t\t\t\t{ __(\n\t\t\t\t\t'Upload external images to the Media Library. Images from different domains may load slowly, display incorrectly, or be removed unexpectedly.'\n\t\t\t\t) }\n\t\t\t</p>\n\t\t\t<div\n\t\t\t\tstyle={ {\n\t\t\t\t\tdisplay: 'inline-flex',\n\t\t\t\t\tflexWrap: 'wrap',\n\t\t\t\t\tgap: '8px',\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<AnimatePresence\n\t\t\t\t\tonExitComplete={ () => setIsAnimating( false ) }\n\t\t\t\t>\n\t\t\t\t\t{ blocksWithExternalMedia.map( ( block ) => {\n\t\t\t\t\t\tconst { url, alt } = getMediaInfo( block );\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\tkey={ block.clientId }\n\t\t\t\t\t\t\t\tclientId={ block.clientId }\n\t\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t\t\talt={ alt }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</AnimatePresence>\n\t\t\t\t{ isUploading || isAnimating ? (\n\t\t\t\t\t<Spinner />\n\t\t\t\t) : (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ uploadImages }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ hadUploadError && <p>{ __( 'Upload failed, try again.' ) }</p> }\n\t\t</PanelBody>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -21,6 +21,7 @@ import { ActionItem } from '@wordpress/interface';
|
|
|
21
21
|
import { store as editorStore } from '../../store';
|
|
22
22
|
import { store as blockEditorStore } from '@wordpress/block-editor';
|
|
23
23
|
import PostPreviewButton from '../post-preview-button';
|
|
24
|
+
import { unlock } from '../../lock-unlock';
|
|
24
25
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
25
26
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
26
27
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
@@ -62,9 +63,13 @@ export default function PreviewDropdown({
|
|
|
62
63
|
const {
|
|
63
64
|
__unstableSetEditorMode
|
|
64
65
|
} = useDispatch(blockEditorStore);
|
|
66
|
+
const {
|
|
67
|
+
resetZoomLevel
|
|
68
|
+
} = unlock(useDispatch(blockEditorStore));
|
|
65
69
|
const handleDevicePreviewChange = newDeviceType => {
|
|
66
70
|
setDeviceType(newDeviceType);
|
|
67
71
|
__unstableSetEditorMode('edit');
|
|
72
|
+
resetZoomLevel();
|
|
68
73
|
};
|
|
69
74
|
const isMobile = useViewportMatch('medium', '<');
|
|
70
75
|
if (isMobile) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clsx","useViewportMatch","DropdownMenu","MenuGroup","MenuItem","MenuItemsChoice","VisuallyHidden","Icon","__","desktop","mobile","tablet","external","useSelect","useDispatch","store","coreStore","preferencesStore","ActionItem","editorStore","blockEditorStore","PostPreviewButton","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","PreviewDropdown","forceIsAutosaveable","disabled","deviceType","homeUrl","isTemplate","isViewable","showIconLabels","select","_getPostType$viewable","getDeviceType","getCurrentPostType","getEntityRecord","getPostType","get","_currentPostType","home","viewable","setDeviceType","__unstableSetEditorMode","handleDevicePreviewChange","newDeviceType","isMobile","popoverProps","placement","toggleProps","className","iconPosition","size","showTooltip","accessibleWhenDisabled","menuProps","deviceIcons","choices","value","label","icon","toLowerCase","disableOpenOnArrowDown","children","onClose","onSelect","href","target","onClick","as","role","textContent","onPreview","Slot","name","fillProps"],"sources":["@wordpress/editor/src/components/preview-dropdown/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\tMenuItemsChoice,\n\tVisuallyHidden,\n\tIcon,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { desktop, mobile, tablet, external } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { ActionItem } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport PostPreviewButton from '../post-preview-button';\n\nexport default function PreviewDropdown( { forceIsAutosaveable, disabled } ) {\n\tconst { deviceType, homeUrl, isTemplate, isViewable, showIconLabels } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst { getDeviceType, getCurrentPostType } = select( editorStore );\n\t\t\tconst { getEntityRecord, getPostType } = select( coreStore );\n\t\t\tconst { get } = select( preferencesStore );\n\t\t\tconst _currentPostType = getCurrentPostType();\n\t\t\treturn {\n\t\t\t\tdeviceType: getDeviceType(),\n\t\t\t\thomeUrl: getEntityRecord( 'root', '__unstableBase' )?.home,\n\t\t\t\tisTemplate: _currentPostType === 'wp_template',\n\t\t\t\tisViewable: getPostType( _currentPostType )?.viewable ?? false,\n\t\t\t\tshowIconLabels: get( 'core', 'showIconLabels' ),\n\t\t\t};\n\t\t}, [] );\n\tconst { setDeviceType } = useDispatch( editorStore );\n\tconst { __unstableSetEditorMode } = useDispatch( blockEditorStore );\n\n\tconst handleDevicePreviewChange = ( newDeviceType ) => {\n\t\tsetDeviceType( newDeviceType );\n\t\t__unstableSetEditorMode( 'edit' );\n\t};\n\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\tif ( isMobile ) {\n\t\treturn null;\n\t}\n\n\tconst popoverProps = {\n\t\tplacement: 'bottom-end',\n\t};\n\tconst toggleProps = {\n\t\tclassName: 'editor-preview-dropdown__toggle',\n\t\ticonPosition: 'right',\n\t\tsize: 'compact',\n\t\tshowTooltip: ! showIconLabels,\n\t\tdisabled,\n\t\taccessibleWhenDisabled: disabled,\n\t};\n\tconst menuProps = {\n\t\t'aria-label': __( 'View options' ),\n\t};\n\n\tconst deviceIcons = {\n\t\tdesktop,\n\t\tmobile,\n\t\ttablet,\n\t};\n\n\t/**\n\t * The choices for the device type.\n\t *\n\t * @type {Array}\n\t */\n\tconst choices = [\n\t\t{\n\t\t\tvalue: 'Desktop',\n\t\t\tlabel: __( 'Desktop' ),\n\t\t\ticon: desktop,\n\t\t},\n\t\t{\n\t\t\tvalue: 'Tablet',\n\t\t\tlabel: __( 'Tablet' ),\n\t\t\ticon: tablet,\n\t\t},\n\t\t{\n\t\t\tvalue: 'Mobile',\n\t\t\tlabel: __( 'Mobile' ),\n\t\t\ticon: mobile,\n\t\t},\n\t];\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\tclassName={ clsx(\n\t\t\t\t'editor-preview-dropdown',\n\t\t\t\t`editor-preview-dropdown--${ deviceType.toLowerCase() }`\n\t\t\t) }\n\t\t\tpopoverProps={ popoverProps }\n\t\t\ttoggleProps={ toggleProps }\n\t\t\tmenuProps={ menuProps }\n\t\t\ticon={ deviceIcons[ deviceType.toLowerCase() ] }\n\t\t\tlabel={ __( 'View' ) }\n\t\t\tdisableOpenOnArrowDown={ disabled }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\t\tchoices={ choices }\n\t\t\t\t\t\t\tvalue={ deviceType }\n\t\t\t\t\t\t\tonSelect={ handleDevicePreviewChange }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t{ isTemplate && (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\thref={ homeUrl }\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'View site' ) }\n\t\t\t\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t/* translators: accessibility text */\n\t\t\t\t\t\t\t\t\t\t__( '(opens in a new tab)' )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isViewable && (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t<PostPreviewButton\n\t\t\t\t\t\t\t\tclassName=\"editor-preview-dropdown__button-external\"\n\t\t\t\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\t\t\t\tforceIsAutosaveable={ forceIsAutosaveable }\n\t\t\t\t\t\t\t\taria-label={ __( 'Preview in new tab' ) }\n\t\t\t\t\t\t\t\ttextContent={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Preview in new tab' ) }\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ external } />\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonPreview={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t\t<ActionItem.Slot\n\t\t\t\t\t\tname=\"core/plugin-preview-menu\"\n\t\t\t\t\t\tas={ MenuGroup }\n\t\t\t\t\t\tfillProps={ { onClick: onClose } }\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["clsx","useViewportMatch","DropdownMenu","MenuGroup","MenuItem","MenuItemsChoice","VisuallyHidden","Icon","__","desktop","mobile","tablet","external","useSelect","useDispatch","store","coreStore","preferencesStore","ActionItem","editorStore","blockEditorStore","PostPreviewButton","unlock","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","PreviewDropdown","forceIsAutosaveable","disabled","deviceType","homeUrl","isTemplate","isViewable","showIconLabels","select","_getPostType$viewable","getDeviceType","getCurrentPostType","getEntityRecord","getPostType","get","_currentPostType","home","viewable","setDeviceType","__unstableSetEditorMode","resetZoomLevel","handleDevicePreviewChange","newDeviceType","isMobile","popoverProps","placement","toggleProps","className","iconPosition","size","showTooltip","accessibleWhenDisabled","menuProps","deviceIcons","choices","value","label","icon","toLowerCase","disableOpenOnArrowDown","children","onClose","onSelect","href","target","onClick","as","role","textContent","onPreview","Slot","name","fillProps"],"sources":["@wordpress/editor/src/components/preview-dropdown/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItem,\n\tMenuItemsChoice,\n\tVisuallyHidden,\n\tIcon,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { desktop, mobile, tablet, external } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as preferencesStore } from '@wordpress/preferences';\nimport { ActionItem } from '@wordpress/interface';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport PostPreviewButton from '../post-preview-button';\nimport { unlock } from '../../lock-unlock';\n\nexport default function PreviewDropdown( { forceIsAutosaveable, disabled } ) {\n\tconst { deviceType, homeUrl, isTemplate, isViewable, showIconLabels } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst { getDeviceType, getCurrentPostType } = select( editorStore );\n\t\t\tconst { getEntityRecord, getPostType } = select( coreStore );\n\t\t\tconst { get } = select( preferencesStore );\n\t\t\tconst _currentPostType = getCurrentPostType();\n\t\t\treturn {\n\t\t\t\tdeviceType: getDeviceType(),\n\t\t\t\thomeUrl: getEntityRecord( 'root', '__unstableBase' )?.home,\n\t\t\t\tisTemplate: _currentPostType === 'wp_template',\n\t\t\t\tisViewable: getPostType( _currentPostType )?.viewable ?? false,\n\t\t\t\tshowIconLabels: get( 'core', 'showIconLabels' ),\n\t\t\t};\n\t\t}, [] );\n\tconst { setDeviceType } = useDispatch( editorStore );\n\tconst { __unstableSetEditorMode } = useDispatch( blockEditorStore );\n\tconst { resetZoomLevel } = unlock( useDispatch( blockEditorStore ) );\n\n\tconst handleDevicePreviewChange = ( newDeviceType ) => {\n\t\tsetDeviceType( newDeviceType );\n\t\t__unstableSetEditorMode( 'edit' );\n\t\tresetZoomLevel();\n\t};\n\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\tif ( isMobile ) {\n\t\treturn null;\n\t}\n\n\tconst popoverProps = {\n\t\tplacement: 'bottom-end',\n\t};\n\tconst toggleProps = {\n\t\tclassName: 'editor-preview-dropdown__toggle',\n\t\ticonPosition: 'right',\n\t\tsize: 'compact',\n\t\tshowTooltip: ! showIconLabels,\n\t\tdisabled,\n\t\taccessibleWhenDisabled: disabled,\n\t};\n\tconst menuProps = {\n\t\t'aria-label': __( 'View options' ),\n\t};\n\n\tconst deviceIcons = {\n\t\tdesktop,\n\t\tmobile,\n\t\ttablet,\n\t};\n\n\t/**\n\t * The choices for the device type.\n\t *\n\t * @type {Array}\n\t */\n\tconst choices = [\n\t\t{\n\t\t\tvalue: 'Desktop',\n\t\t\tlabel: __( 'Desktop' ),\n\t\t\ticon: desktop,\n\t\t},\n\t\t{\n\t\t\tvalue: 'Tablet',\n\t\t\tlabel: __( 'Tablet' ),\n\t\t\ticon: tablet,\n\t\t},\n\t\t{\n\t\t\tvalue: 'Mobile',\n\t\t\tlabel: __( 'Mobile' ),\n\t\t\ticon: mobile,\n\t\t},\n\t];\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\tclassName={ clsx(\n\t\t\t\t'editor-preview-dropdown',\n\t\t\t\t`editor-preview-dropdown--${ deviceType.toLowerCase() }`\n\t\t\t) }\n\t\t\tpopoverProps={ popoverProps }\n\t\t\ttoggleProps={ toggleProps }\n\t\t\tmenuProps={ menuProps }\n\t\t\ticon={ deviceIcons[ deviceType.toLowerCase() ] }\n\t\t\tlabel={ __( 'View' ) }\n\t\t\tdisableOpenOnArrowDown={ disabled }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\t\tchoices={ choices }\n\t\t\t\t\t\t\tvalue={ deviceType }\n\t\t\t\t\t\t\tonSelect={ handleDevicePreviewChange }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t{ isTemplate && (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\thref={ homeUrl }\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'View site' ) }\n\t\t\t\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t/* translators: accessibility text */\n\t\t\t\t\t\t\t\t\t\t__( '(opens in a new tab)' )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isViewable && (\n\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t<PostPreviewButton\n\t\t\t\t\t\t\t\tclassName=\"editor-preview-dropdown__button-external\"\n\t\t\t\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\t\t\t\tforceIsAutosaveable={ forceIsAutosaveable }\n\t\t\t\t\t\t\t\taria-label={ __( 'Preview in new tab' ) }\n\t\t\t\t\t\t\t\ttextContent={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Preview in new tab' ) }\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ external } />\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonPreview={ onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t\t<ActionItem.Slot\n\t\t\t\t\t\tname=\"core/plugin-preview-menu\"\n\t\t\t\t\t\tas={ MenuGroup }\n\t\t\t\t\t\tfillProps={ { onClick: onClose } }\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -173,20 +173,16 @@ export const ExperimentalEditorProvider = withRegistryProvider(({
|
|
|
173
173
|
const postContext = {};
|
|
174
174
|
// If it is a template, try to inherit the post type from the slug.
|
|
175
175
|
if (post.type === 'wp_template') {
|
|
176
|
-
if (
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
if (match) {
|
|
187
|
-
postContext.postType = match[1];
|
|
188
|
-
}
|
|
189
|
-
break;
|
|
176
|
+
if (post.slug === 'page') {
|
|
177
|
+
postContext.postType = 'page';
|
|
178
|
+
} else if (post.slug === 'single') {
|
|
179
|
+
postContext.postType = 'post';
|
|
180
|
+
} else if (post.slug.split('-')[0] === 'single') {
|
|
181
|
+
// If the slug is single-{postType}, infer the post type from the slug.
|
|
182
|
+
const postTypesSlugs = postTypes?.map(entity => entity.slug) || [];
|
|
183
|
+
const match = post.slug.match(`^single-(${postTypesSlugs.join('|')})(?:-.+)?$`);
|
|
184
|
+
if (match) {
|
|
185
|
+
postContext.postType = match[1];
|
|
190
186
|
}
|
|
191
187
|
}
|
|
192
188
|
} else if (!NON_CONTEXTUAL_POST_TYPES.includes(rootLevelPost.type) || shouldRenderTemplate) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useLayoutEffect","useMemo","useDispatch","useSelect","__","EntityProvider","useEntityBlockEditor","store","coreStore","BlockEditorProvider","BlockContextProvider","privateApis","blockEditorPrivateApis","noticesStore","editPatternsPrivateApis","createBlock","withRegistryProvider","editorStore","useBlockEditorSettings","unlock","DisableNonPageContentBlocks","NavigationBlockEditingMode","useHideBlocksFromInserter","useCommands","BlockRemovalWarnings","StartPageOptions","KeyboardShortcutHelpModal","ContentOnlySettingsMenu","StartTemplateOptions","EditorKeyboardShortcuts","PatternRenameModal","PatternDuplicateModal","TemplatePartMenuItems","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","ExperimentalBlockEditorProvider","PatternsMenuItems","noop","NON_CONTEXTUAL_POST_TYPES","useBlockEditorProps","post","template","mode","rootLevelPost","postBlocks","onInput","onChange","type","id","templateBlocks","onInputTemplate","onChangeTemplate","maybeNavigationBlocks","ref","templateLock","blocks","disableRootLevelChanges","ExperimentalEditorProvider","settings","recovery","initialEdits","children","BlockEditorProviderComponent","__unstableTemplate","editorSettings","selection","isReady","postTypes","select","getEditorSettings","getEditorSelection","getRenderingMode","__unstableIsEditorReady","getPostTypes","per_page","shouldRenderTemplate","defaultBlockContext","postContext","is_custom","kind","slug","split","postType","postTypesSlugs","map","entity","match","join","includes","postId","templateSlug","undefined","blockEditorSettings","updatePostLock","setupEditor","updateEditorSettings","setCurrentTemplateId","setEditedPost","setRenderingMode","createWarningNotice","postLock","autosave","actions","label","url","editLink","_settings$defaultRend","defaultRenderingMode","value","useSubRegistry","__unstableIsPreviewMode","EditorProvider","props"],"sources":["@wordpress/editor/src/components/provider/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useLayoutEffect, useMemo } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tEntityProvider,\n\tuseEntityBlockEditor,\n\tstore as coreStore,\n} from '@wordpress/core-data';\nimport {\n\tBlockEditorProvider,\n\tBlockContextProvider,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as editPatternsPrivateApis } from '@wordpress/patterns';\nimport { createBlock } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport withRegistryProvider from './with-registry-provider';\nimport { store as editorStore } from '../../store';\nimport useBlockEditorSettings from './use-block-editor-settings';\nimport { unlock } from '../../lock-unlock';\nimport DisableNonPageContentBlocks from './disable-non-page-content-blocks';\nimport NavigationBlockEditingMode from './navigation-block-editing-mode';\nimport { useHideBlocksFromInserter } from './use-hide-blocks-from-inserter';\nimport useCommands from '../commands';\nimport BlockRemovalWarnings from '../block-removal-warnings';\nimport StartPageOptions from '../start-page-options';\nimport KeyboardShortcutHelpModal from '../keyboard-shortcut-help-modal';\nimport ContentOnlySettingsMenu from '../block-settings-menu/content-only-settings-menu';\nimport StartTemplateOptions from '../start-template-options';\nimport EditorKeyboardShortcuts from '../global-keyboard-shortcuts';\nimport PatternRenameModal from '../pattern-rename-modal';\nimport PatternDuplicateModal from '../pattern-duplicate-modal';\nimport TemplatePartMenuItems from '../template-part-menu-items';\n\nconst { ExperimentalBlockEditorProvider } = unlock( blockEditorPrivateApis );\nconst { PatternsMenuItems } = unlock( editPatternsPrivateApis );\n\nconst noop = () => {};\n\n/**\n * These are global entities that are only there to split blocks into logical units\n * They don't provide a \"context\" for the current post/page being rendered.\n * So we should not use their ids as post context. This is important to allow post blocks\n * (post content, post title) to be used within them without issues.\n */\nconst NON_CONTEXTUAL_POST_TYPES = [\n\t'wp_block',\n\t'wp_navigation',\n\t'wp_template_part',\n];\n\n/**\n * Depending on the post, template and template mode,\n * returns the appropriate blocks and change handlers for the block editor provider.\n *\n * @param {Array} post Block list.\n * @param {boolean} template Whether the page content has focus (and the surrounding template is inert). If `true` return page content blocks. Default `false`.\n * @param {string} mode Rendering mode.\n *\n * @example\n * ```jsx\n * const [ blocks, onInput, onChange ] = useBlockEditorProps( post, template, mode );\n * ```\n *\n * @return {Array} Block editor props.\n */\nfunction useBlockEditorProps( post, template, mode ) {\n\tconst rootLevelPost =\n\t\tmode === 'post-only' || ! template ? 'post' : 'template';\n\tconst [ postBlocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\tpost.type,\n\t\t{ id: post.id }\n\t);\n\tconst [ templateBlocks, onInputTemplate, onChangeTemplate ] =\n\t\tuseEntityBlockEditor( 'postType', template?.type, {\n\t\t\tid: template?.id,\n\t\t} );\n\tconst maybeNavigationBlocks = useMemo( () => {\n\t\tif ( post.type === 'wp_navigation' ) {\n\t\t\treturn [\n\t\t\t\tcreateBlock( 'core/navigation', {\n\t\t\t\t\tref: post.id,\n\t\t\t\t\t// As the parent editor is locked with `templateLock`, the template locking\n\t\t\t\t\t// must be explicitly \"unset\" on the block itself to allow the user to modify\n\t\t\t\t\t// the block's content.\n\t\t\t\t\ttemplateLock: false,\n\t\t\t\t} ),\n\t\t\t];\n\t\t}\n\t}, [ post.type, post.id ] );\n\n\t// It is important that we don't create a new instance of blocks on every change\n\t// We should only create a new instance if the blocks them selves change, not a dependency of them.\n\tconst blocks = useMemo( () => {\n\t\tif ( maybeNavigationBlocks ) {\n\t\t\treturn maybeNavigationBlocks;\n\t\t}\n\n\t\tif ( rootLevelPost === 'template' ) {\n\t\t\treturn templateBlocks;\n\t\t}\n\n\t\treturn postBlocks;\n\t}, [ maybeNavigationBlocks, rootLevelPost, templateBlocks, postBlocks ] );\n\n\t// Handle fallback to postBlocks outside of the above useMemo, to ensure\n\t// that constructed block templates that call `createBlock` are not generated\n\t// too frequently. This ensures that clientIds are stable.\n\tconst disableRootLevelChanges =\n\t\t( !! template && mode === 'template-locked' ) ||\n\t\tpost.type === 'wp_navigation';\n\tif ( disableRootLevelChanges ) {\n\t\treturn [ blocks, noop, noop ];\n\t}\n\n\treturn [\n\t\tblocks,\n\t\trootLevelPost === 'post' ? onInput : onInputTemplate,\n\t\trootLevelPost === 'post' ? onChange : onChangeTemplate,\n\t];\n}\n\n/**\n * This component provides the editor context and manages the state of the block editor.\n *\n * @param {Object} props The component props.\n * @param {Object} props.post The post object.\n * @param {Object} props.settings The editor settings.\n * @param {boolean} props.recovery Indicates if the editor is in recovery mode.\n * @param {Array} props.initialEdits The initial edits for the editor.\n * @param {Object} props.children The child components.\n * @param {Object} [props.BlockEditorProviderComponent] The block editor provider component to use. Defaults to ExperimentalBlockEditorProvider.\n * @param {Object} [props.__unstableTemplate] The template object.\n *\n * @example\n * ```jsx\n * <ExperimentalEditorProvider\n * post={ post }\n * settings={ settings }\n * recovery={ recovery }\n * initialEdits={ initialEdits }\n * __unstableTemplate={ template }\n * >\n * { children }\n * </ExperimentalEditorProvider>\n *\n * @return {Object} The rendered ExperimentalEditorProvider component.\n */\nexport const ExperimentalEditorProvider = withRegistryProvider(\n\t( {\n\t\tpost,\n\t\tsettings,\n\t\trecovery,\n\t\tinitialEdits,\n\t\tchildren,\n\t\tBlockEditorProviderComponent = ExperimentalBlockEditorProvider,\n\t\t__unstableTemplate: template,\n\t} ) => {\n\t\tconst { editorSettings, selection, isReady, mode, postTypes } =\n\t\t\tuseSelect( ( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetEditorSettings,\n\t\t\t\t\tgetEditorSelection,\n\t\t\t\t\tgetRenderingMode,\n\t\t\t\t\t__unstableIsEditorReady,\n\t\t\t\t} = select( editorStore );\n\t\t\t\tconst { getPostTypes } = select( coreStore );\n\n\t\t\t\treturn {\n\t\t\t\t\teditorSettings: getEditorSettings(),\n\t\t\t\t\tisReady: __unstableIsEditorReady(),\n\t\t\t\t\tmode: getRenderingMode(),\n\t\t\t\t\tselection: getEditorSelection(),\n\t\t\t\t\tpostTypes: getPostTypes( { per_page: -1 } ),\n\t\t\t\t};\n\t\t\t}, [] );\n\t\tconst shouldRenderTemplate = !! template && mode !== 'post-only';\n\t\tconst rootLevelPost = shouldRenderTemplate ? template : post;\n\t\tconst defaultBlockContext = useMemo( () => {\n\t\t\tconst postContext = {};\n\t\t\t// If it is a template, try to inherit the post type from the slug.\n\t\t\tif ( post.type === 'wp_template' ) {\n\t\t\t\tif ( ! post.is_custom ) {\n\t\t\t\t\tconst [ kind ] = post.slug.split( '-' );\n\t\t\t\t\tswitch ( kind ) {\n\t\t\t\t\t\tcase 'page':\n\t\t\t\t\t\t\tpostContext.postType = 'page';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'single':\n\t\t\t\t\t\t\t// Infer the post type from the slug.\n\t\t\t\t\t\t\tconst postTypesSlugs =\n\t\t\t\t\t\t\t\tpostTypes?.map( ( entity ) => entity.slug ) ||\n\t\t\t\t\t\t\t\t[];\n\t\t\t\t\t\t\tconst match = post.slug.match(\n\t\t\t\t\t\t\t\t`^single-(${ postTypesSlugs.join(\n\t\t\t\t\t\t\t\t\t'|'\n\t\t\t\t\t\t\t\t) })(?:-.+)?$`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif ( match ) {\n\t\t\t\t\t\t\t\tpostContext.postType = match[ 1 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\t! NON_CONTEXTUAL_POST_TYPES.includes( rootLevelPost.type ) ||\n\t\t\t\tshouldRenderTemplate\n\t\t\t) {\n\t\t\t\tpostContext.postId = post.id;\n\t\t\t\tpostContext.postType = post.type;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...postContext,\n\t\t\t\ttemplateSlug:\n\t\t\t\t\trootLevelPost.type === 'wp_template'\n\t\t\t\t\t\t? rootLevelPost.slug\n\t\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t}, [\n\t\t\tshouldRenderTemplate,\n\t\t\tpost.id,\n\t\t\tpost.type,\n\t\t\trootLevelPost.type,\n\t\t\trootLevelPost.slug,\n\t\t\tpostTypes,\n\t\t] );\n\t\tconst { id, type } = rootLevelPost;\n\t\tconst blockEditorSettings = useBlockEditorSettings(\n\t\t\teditorSettings,\n\t\t\ttype,\n\t\t\tid,\n\t\t\tmode\n\t\t);\n\t\tconst [ blocks, onInput, onChange ] = useBlockEditorProps(\n\t\t\tpost,\n\t\t\ttemplate,\n\t\t\tmode\n\t\t);\n\n\t\tconst {\n\t\t\tupdatePostLock,\n\t\t\tsetupEditor,\n\t\t\tupdateEditorSettings,\n\t\t\tsetCurrentTemplateId,\n\t\t\tsetEditedPost,\n\t\t\tsetRenderingMode,\n\t\t} = unlock( useDispatch( editorStore ) );\n\t\tconst { createWarningNotice } = useDispatch( noticesStore );\n\n\t\t// Ideally this should be synced on each change and not just something you do once.\n\t\tuseLayoutEffect( () => {\n\t\t\t// Assume that we don't need to initialize in the case of an error recovery.\n\t\t\tif ( recovery ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdatePostLock( settings.postLock );\n\t\t\tsetupEditor( post, initialEdits, settings.template );\n\t\t\tif ( settings.autosave ) {\n\t\t\t\tcreateWarningNotice(\n\t\t\t\t\t__(\n\t\t\t\t\t\t'There is an autosave of this post that is more recent than the version below.'\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'autosave-exists',\n\t\t\t\t\t\tactions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: __( 'View the autosave' ),\n\t\t\t\t\t\t\t\turl: settings.autosave.editLink,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t}, [] );\n\n\t\t// Synchronizes the active post with the state\n\t\tuseEffect( () => {\n\t\t\tsetEditedPost( post.type, post.id );\n\t\t}, [ post.type, post.id, setEditedPost ] );\n\n\t\t// Synchronize the editor settings as they change.\n\t\tuseEffect( () => {\n\t\t\tupdateEditorSettings( settings );\n\t\t}, [ settings, updateEditorSettings ] );\n\n\t\t// Synchronizes the active template with the state.\n\t\tuseEffect( () => {\n\t\t\tsetCurrentTemplateId( template?.id );\n\t\t}, [ template?.id, setCurrentTemplateId ] );\n\n\t\t// Sets the right rendering mode when loading the editor.\n\t\tuseEffect( () => {\n\t\t\tsetRenderingMode( settings.defaultRenderingMode ?? 'post-only' );\n\t\t}, [ settings.defaultRenderingMode, setRenderingMode ] );\n\n\t\tuseHideBlocksFromInserter( post.type, mode );\n\n\t\t// Register the editor commands.\n\t\tuseCommands();\n\n\t\tif ( ! isReady ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<EntityProvider kind=\"root\" type=\"site\">\n\t\t\t\t<EntityProvider\n\t\t\t\t\tkind=\"postType\"\n\t\t\t\t\ttype={ post.type }\n\t\t\t\t\tid={ post.id }\n\t\t\t\t>\n\t\t\t\t\t<BlockContextProvider value={ defaultBlockContext }>\n\t\t\t\t\t\t<BlockEditorProviderComponent\n\t\t\t\t\t\t\tvalue={ blocks }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tonInput={ onInput }\n\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\tsettings={ blockEditorSettings }\n\t\t\t\t\t\t\tuseSubRegistry={ false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t\t{ ! settings.__unstableIsPreviewMode && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<PatternsMenuItems />\n\t\t\t\t\t\t\t\t\t<TemplatePartMenuItems />\n\t\t\t\t\t\t\t\t\t<ContentOnlySettingsMenu />\n\t\t\t\t\t\t\t\t\t{ mode === 'template-locked' && (\n\t\t\t\t\t\t\t\t\t\t<DisableNonPageContentBlocks />\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ type === 'wp_navigation' && (\n\t\t\t\t\t\t\t\t\t\t<NavigationBlockEditingMode />\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t<EditorKeyboardShortcuts />\n\t\t\t\t\t\t\t\t\t<KeyboardShortcutHelpModal />\n\t\t\t\t\t\t\t\t\t<BlockRemovalWarnings />\n\t\t\t\t\t\t\t\t\t<StartPageOptions />\n\t\t\t\t\t\t\t\t\t<StartTemplateOptions />\n\t\t\t\t\t\t\t\t\t<PatternRenameModal />\n\t\t\t\t\t\t\t\t\t<PatternDuplicateModal />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</BlockEditorProviderComponent>\n\t\t\t\t\t</BlockContextProvider>\n\t\t\t\t</EntityProvider>\n\t\t\t</EntityProvider>\n\t\t);\n\t}\n);\n\n/**\n * This component establishes a new post editing context, and serves as the entry point for a new post editor (or post with template editor).\n *\n * It supports a large number of post types, including post, page, templates,\n * custom post types, patterns, template parts.\n *\n * All modification and changes are performed to the `@wordpress/core-data` store.\n *\n * @param {Object} props The component props.\n * @param {Object} [props.post] The post object to edit. This is required.\n * @param {Object} [props.__unstableTemplate] The template object wrapper the edited post.\n * This is optional and can only be used when the post type supports templates (like posts and pages).\n * @param {Object} [props.settings] The settings object to use for the editor.\n * This is optional and can be used to override the default settings.\n * @param {Element} [props.children] Children elements for which the BlockEditorProvider context should apply.\n * This is optional.\n *\n * @example\n * ```jsx\n * <EditorProvider\n * post={ post }\n * settings={ settings }\n * __unstableTemplate={ template }\n * >\n * { children }\n * </EditorProvider>\n * ```\n *\n * @return {JSX.Element} The rendered EditorProvider component.\n */\nexport function EditorProvider( props ) {\n\treturn (\n\t\t<ExperimentalEditorProvider\n\t\t\t{ ...props }\n\t\t\tBlockEditorProviderComponent={ BlockEditorProvider }\n\t\t>\n\t\t\t{ props.children }\n\t\t</ExperimentalEditorProvider>\n\t);\n}\n\nexport default EditorProvider;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useEffect","useLayoutEffect","useMemo","useDispatch","useSelect","__","EntityProvider","useEntityBlockEditor","store","coreStore","BlockEditorProvider","BlockContextProvider","privateApis","blockEditorPrivateApis","noticesStore","editPatternsPrivateApis","createBlock","withRegistryProvider","editorStore","useBlockEditorSettings","unlock","DisableNonPageContentBlocks","NavigationBlockEditingMode","useHideBlocksFromInserter","useCommands","BlockRemovalWarnings","StartPageOptions","KeyboardShortcutHelpModal","ContentOnlySettingsMenu","StartTemplateOptions","EditorKeyboardShortcuts","PatternRenameModal","PatternDuplicateModal","TemplatePartMenuItems","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","ExperimentalBlockEditorProvider","PatternsMenuItems","noop","NON_CONTEXTUAL_POST_TYPES","useBlockEditorProps","post","template","mode","rootLevelPost","postBlocks","onInput","onChange","type","id","templateBlocks","onInputTemplate","onChangeTemplate","maybeNavigationBlocks","ref","templateLock","blocks","disableRootLevelChanges","ExperimentalEditorProvider","settings","recovery","initialEdits","children","BlockEditorProviderComponent","__unstableTemplate","editorSettings","selection","isReady","postTypes","select","getEditorSettings","getEditorSelection","getRenderingMode","__unstableIsEditorReady","getPostTypes","per_page","shouldRenderTemplate","defaultBlockContext","postContext","slug","postType","split","postTypesSlugs","map","entity","match","join","includes","postId","templateSlug","undefined","blockEditorSettings","updatePostLock","setupEditor","updateEditorSettings","setCurrentTemplateId","setEditedPost","setRenderingMode","createWarningNotice","postLock","autosave","actions","label","url","editLink","_settings$defaultRend","defaultRenderingMode","kind","value","useSubRegistry","__unstableIsPreviewMode","EditorProvider","props"],"sources":["@wordpress/editor/src/components/provider/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useLayoutEffect, useMemo } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tEntityProvider,\n\tuseEntityBlockEditor,\n\tstore as coreStore,\n} from '@wordpress/core-data';\nimport {\n\tBlockEditorProvider,\n\tBlockContextProvider,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as editPatternsPrivateApis } from '@wordpress/patterns';\nimport { createBlock } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport withRegistryProvider from './with-registry-provider';\nimport { store as editorStore } from '../../store';\nimport useBlockEditorSettings from './use-block-editor-settings';\nimport { unlock } from '../../lock-unlock';\nimport DisableNonPageContentBlocks from './disable-non-page-content-blocks';\nimport NavigationBlockEditingMode from './navigation-block-editing-mode';\nimport { useHideBlocksFromInserter } from './use-hide-blocks-from-inserter';\nimport useCommands from '../commands';\nimport BlockRemovalWarnings from '../block-removal-warnings';\nimport StartPageOptions from '../start-page-options';\nimport KeyboardShortcutHelpModal from '../keyboard-shortcut-help-modal';\nimport ContentOnlySettingsMenu from '../block-settings-menu/content-only-settings-menu';\nimport StartTemplateOptions from '../start-template-options';\nimport EditorKeyboardShortcuts from '../global-keyboard-shortcuts';\nimport PatternRenameModal from '../pattern-rename-modal';\nimport PatternDuplicateModal from '../pattern-duplicate-modal';\nimport TemplatePartMenuItems from '../template-part-menu-items';\n\nconst { ExperimentalBlockEditorProvider } = unlock( blockEditorPrivateApis );\nconst { PatternsMenuItems } = unlock( editPatternsPrivateApis );\n\nconst noop = () => {};\n\n/**\n * These are global entities that are only there to split blocks into logical units\n * They don't provide a \"context\" for the current post/page being rendered.\n * So we should not use their ids as post context. This is important to allow post blocks\n * (post content, post title) to be used within them without issues.\n */\nconst NON_CONTEXTUAL_POST_TYPES = [\n\t'wp_block',\n\t'wp_navigation',\n\t'wp_template_part',\n];\n\n/**\n * Depending on the post, template and template mode,\n * returns the appropriate blocks and change handlers for the block editor provider.\n *\n * @param {Array} post Block list.\n * @param {boolean} template Whether the page content has focus (and the surrounding template is inert). If `true` return page content blocks. Default `false`.\n * @param {string} mode Rendering mode.\n *\n * @example\n * ```jsx\n * const [ blocks, onInput, onChange ] = useBlockEditorProps( post, template, mode );\n * ```\n *\n * @return {Array} Block editor props.\n */\nfunction useBlockEditorProps( post, template, mode ) {\n\tconst rootLevelPost =\n\t\tmode === 'post-only' || ! template ? 'post' : 'template';\n\tconst [ postBlocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\tpost.type,\n\t\t{ id: post.id }\n\t);\n\tconst [ templateBlocks, onInputTemplate, onChangeTemplate ] =\n\t\tuseEntityBlockEditor( 'postType', template?.type, {\n\t\t\tid: template?.id,\n\t\t} );\n\tconst maybeNavigationBlocks = useMemo( () => {\n\t\tif ( post.type === 'wp_navigation' ) {\n\t\t\treturn [\n\t\t\t\tcreateBlock( 'core/navigation', {\n\t\t\t\t\tref: post.id,\n\t\t\t\t\t// As the parent editor is locked with `templateLock`, the template locking\n\t\t\t\t\t// must be explicitly \"unset\" on the block itself to allow the user to modify\n\t\t\t\t\t// the block's content.\n\t\t\t\t\ttemplateLock: false,\n\t\t\t\t} ),\n\t\t\t];\n\t\t}\n\t}, [ post.type, post.id ] );\n\n\t// It is important that we don't create a new instance of blocks on every change\n\t// We should only create a new instance if the blocks them selves change, not a dependency of them.\n\tconst blocks = useMemo( () => {\n\t\tif ( maybeNavigationBlocks ) {\n\t\t\treturn maybeNavigationBlocks;\n\t\t}\n\n\t\tif ( rootLevelPost === 'template' ) {\n\t\t\treturn templateBlocks;\n\t\t}\n\n\t\treturn postBlocks;\n\t}, [ maybeNavigationBlocks, rootLevelPost, templateBlocks, postBlocks ] );\n\n\t// Handle fallback to postBlocks outside of the above useMemo, to ensure\n\t// that constructed block templates that call `createBlock` are not generated\n\t// too frequently. This ensures that clientIds are stable.\n\tconst disableRootLevelChanges =\n\t\t( !! template && mode === 'template-locked' ) ||\n\t\tpost.type === 'wp_navigation';\n\tif ( disableRootLevelChanges ) {\n\t\treturn [ blocks, noop, noop ];\n\t}\n\n\treturn [\n\t\tblocks,\n\t\trootLevelPost === 'post' ? onInput : onInputTemplate,\n\t\trootLevelPost === 'post' ? onChange : onChangeTemplate,\n\t];\n}\n\n/**\n * This component provides the editor context and manages the state of the block editor.\n *\n * @param {Object} props The component props.\n * @param {Object} props.post The post object.\n * @param {Object} props.settings The editor settings.\n * @param {boolean} props.recovery Indicates if the editor is in recovery mode.\n * @param {Array} props.initialEdits The initial edits for the editor.\n * @param {Object} props.children The child components.\n * @param {Object} [props.BlockEditorProviderComponent] The block editor provider component to use. Defaults to ExperimentalBlockEditorProvider.\n * @param {Object} [props.__unstableTemplate] The template object.\n *\n * @example\n * ```jsx\n * <ExperimentalEditorProvider\n * post={ post }\n * settings={ settings }\n * recovery={ recovery }\n * initialEdits={ initialEdits }\n * __unstableTemplate={ template }\n * >\n * { children }\n * </ExperimentalEditorProvider>\n *\n * @return {Object} The rendered ExperimentalEditorProvider component.\n */\nexport const ExperimentalEditorProvider = withRegistryProvider(\n\t( {\n\t\tpost,\n\t\tsettings,\n\t\trecovery,\n\t\tinitialEdits,\n\t\tchildren,\n\t\tBlockEditorProviderComponent = ExperimentalBlockEditorProvider,\n\t\t__unstableTemplate: template,\n\t} ) => {\n\t\tconst { editorSettings, selection, isReady, mode, postTypes } =\n\t\t\tuseSelect( ( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetEditorSettings,\n\t\t\t\t\tgetEditorSelection,\n\t\t\t\t\tgetRenderingMode,\n\t\t\t\t\t__unstableIsEditorReady,\n\t\t\t\t} = select( editorStore );\n\t\t\t\tconst { getPostTypes } = select( coreStore );\n\n\t\t\t\treturn {\n\t\t\t\t\teditorSettings: getEditorSettings(),\n\t\t\t\t\tisReady: __unstableIsEditorReady(),\n\t\t\t\t\tmode: getRenderingMode(),\n\t\t\t\t\tselection: getEditorSelection(),\n\t\t\t\t\tpostTypes: getPostTypes( { per_page: -1 } ),\n\t\t\t\t};\n\t\t\t}, [] );\n\t\tconst shouldRenderTemplate = !! template && mode !== 'post-only';\n\t\tconst rootLevelPost = shouldRenderTemplate ? template : post;\n\t\tconst defaultBlockContext = useMemo( () => {\n\t\t\tconst postContext = {};\n\t\t\t// If it is a template, try to inherit the post type from the slug.\n\t\t\tif ( post.type === 'wp_template' ) {\n\t\t\t\tif ( post.slug === 'page' ) {\n\t\t\t\t\tpostContext.postType = 'page';\n\t\t\t\t} else if ( post.slug === 'single' ) {\n\t\t\t\t\tpostContext.postType = 'post';\n\t\t\t\t} else if ( post.slug.split( '-' )[ 0 ] === 'single' ) {\n\t\t\t\t\t// If the slug is single-{postType}, infer the post type from the slug.\n\t\t\t\t\tconst postTypesSlugs =\n\t\t\t\t\t\tpostTypes?.map( ( entity ) => entity.slug ) || [];\n\t\t\t\t\tconst match = post.slug.match(\n\t\t\t\t\t\t`^single-(${ postTypesSlugs.join( '|' ) })(?:-.+)?$`\n\t\t\t\t\t);\n\t\t\t\t\tif ( match ) {\n\t\t\t\t\t\tpostContext.postType = match[ 1 ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\t! NON_CONTEXTUAL_POST_TYPES.includes( rootLevelPost.type ) ||\n\t\t\t\tshouldRenderTemplate\n\t\t\t) {\n\t\t\t\tpostContext.postId = post.id;\n\t\t\t\tpostContext.postType = post.type;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...postContext,\n\t\t\t\ttemplateSlug:\n\t\t\t\t\trootLevelPost.type === 'wp_template'\n\t\t\t\t\t\t? rootLevelPost.slug\n\t\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t}, [\n\t\t\tshouldRenderTemplate,\n\t\t\tpost.id,\n\t\t\tpost.type,\n\t\t\trootLevelPost.type,\n\t\t\trootLevelPost.slug,\n\t\t\tpostTypes,\n\t\t] );\n\t\tconst { id, type } = rootLevelPost;\n\t\tconst blockEditorSettings = useBlockEditorSettings(\n\t\t\teditorSettings,\n\t\t\ttype,\n\t\t\tid,\n\t\t\tmode\n\t\t);\n\t\tconst [ blocks, onInput, onChange ] = useBlockEditorProps(\n\t\t\tpost,\n\t\t\ttemplate,\n\t\t\tmode\n\t\t);\n\n\t\tconst {\n\t\t\tupdatePostLock,\n\t\t\tsetupEditor,\n\t\t\tupdateEditorSettings,\n\t\t\tsetCurrentTemplateId,\n\t\t\tsetEditedPost,\n\t\t\tsetRenderingMode,\n\t\t} = unlock( useDispatch( editorStore ) );\n\t\tconst { createWarningNotice } = useDispatch( noticesStore );\n\n\t\t// Ideally this should be synced on each change and not just something you do once.\n\t\tuseLayoutEffect( () => {\n\t\t\t// Assume that we don't need to initialize in the case of an error recovery.\n\t\t\tif ( recovery ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdatePostLock( settings.postLock );\n\t\t\tsetupEditor( post, initialEdits, settings.template );\n\t\t\tif ( settings.autosave ) {\n\t\t\t\tcreateWarningNotice(\n\t\t\t\t\t__(\n\t\t\t\t\t\t'There is an autosave of this post that is more recent than the version below.'\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'autosave-exists',\n\t\t\t\t\t\tactions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: __( 'View the autosave' ),\n\t\t\t\t\t\t\t\turl: settings.autosave.editLink,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t}, [] );\n\n\t\t// Synchronizes the active post with the state\n\t\tuseEffect( () => {\n\t\t\tsetEditedPost( post.type, post.id );\n\t\t}, [ post.type, post.id, setEditedPost ] );\n\n\t\t// Synchronize the editor settings as they change.\n\t\tuseEffect( () => {\n\t\t\tupdateEditorSettings( settings );\n\t\t}, [ settings, updateEditorSettings ] );\n\n\t\t// Synchronizes the active template with the state.\n\t\tuseEffect( () => {\n\t\t\tsetCurrentTemplateId( template?.id );\n\t\t}, [ template?.id, setCurrentTemplateId ] );\n\n\t\t// Sets the right rendering mode when loading the editor.\n\t\tuseEffect( () => {\n\t\t\tsetRenderingMode( settings.defaultRenderingMode ?? 'post-only' );\n\t\t}, [ settings.defaultRenderingMode, setRenderingMode ] );\n\n\t\tuseHideBlocksFromInserter( post.type, mode );\n\n\t\t// Register the editor commands.\n\t\tuseCommands();\n\n\t\tif ( ! isReady ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<EntityProvider kind=\"root\" type=\"site\">\n\t\t\t\t<EntityProvider\n\t\t\t\t\tkind=\"postType\"\n\t\t\t\t\ttype={ post.type }\n\t\t\t\t\tid={ post.id }\n\t\t\t\t>\n\t\t\t\t\t<BlockContextProvider value={ defaultBlockContext }>\n\t\t\t\t\t\t<BlockEditorProviderComponent\n\t\t\t\t\t\t\tvalue={ blocks }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tonInput={ onInput }\n\t\t\t\t\t\t\tselection={ selection }\n\t\t\t\t\t\t\tsettings={ blockEditorSettings }\n\t\t\t\t\t\t\tuseSubRegistry={ false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t\t{ ! settings.__unstableIsPreviewMode && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<PatternsMenuItems />\n\t\t\t\t\t\t\t\t\t<TemplatePartMenuItems />\n\t\t\t\t\t\t\t\t\t<ContentOnlySettingsMenu />\n\t\t\t\t\t\t\t\t\t{ mode === 'template-locked' && (\n\t\t\t\t\t\t\t\t\t\t<DisableNonPageContentBlocks />\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ type === 'wp_navigation' && (\n\t\t\t\t\t\t\t\t\t\t<NavigationBlockEditingMode />\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t<EditorKeyboardShortcuts />\n\t\t\t\t\t\t\t\t\t<KeyboardShortcutHelpModal />\n\t\t\t\t\t\t\t\t\t<BlockRemovalWarnings />\n\t\t\t\t\t\t\t\t\t<StartPageOptions />\n\t\t\t\t\t\t\t\t\t<StartTemplateOptions />\n\t\t\t\t\t\t\t\t\t<PatternRenameModal />\n\t\t\t\t\t\t\t\t\t<PatternDuplicateModal />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</BlockEditorProviderComponent>\n\t\t\t\t\t</BlockContextProvider>\n\t\t\t\t</EntityProvider>\n\t\t\t</EntityProvider>\n\t\t);\n\t}\n);\n\n/**\n * This component establishes a new post editing context, and serves as the entry point for a new post editor (or post with template editor).\n *\n * It supports a large number of post types, including post, page, templates,\n * custom post types, patterns, template parts.\n *\n * All modification and changes are performed to the `@wordpress/core-data` store.\n *\n * @param {Object} props The component props.\n * @param {Object} [props.post] The post object to edit. This is required.\n * @param {Object} [props.__unstableTemplate] The template object wrapper the edited post.\n * This is optional and can only be used when the post type supports templates (like posts and pages).\n * @param {Object} [props.settings] The settings object to use for the editor.\n * This is optional and can be used to override the default settings.\n * @param {Element} [props.children] Children elements for which the BlockEditorProvider context should apply.\n * This is optional.\n *\n * @example\n * ```jsx\n * <EditorProvider\n * post={ post }\n * settings={ settings }\n * __unstableTemplate={ template }\n * >\n * { children }\n * </EditorProvider>\n * ```\n *\n * @return {JSX.Element} The rendered EditorProvider component.\n */\nexport function EditorProvider( props ) {\n\treturn (\n\t\t<ExperimentalEditorProvider\n\t\t\t{ ...props }\n\t\t\tBlockEditorProviderComponent={ BlockEditorProvider }\n\t\t>\n\t\t\t{ props.children }\n\t\t</ExperimentalEditorProvider>\n\t);\n}\n\nexport default EditorProvider;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,6 +6,7 @@ import { __ } from '@wordpress/i18n';
|
|
|
6
6
|
import { useDispatch, useSelect } from '@wordpress/data';
|
|
7
7
|
import { store as blockEditorStore } from '@wordpress/block-editor';
|
|
8
8
|
import { square as zoomOutIcon } from '@wordpress/icons';
|
|
9
|
+
import { store as preferencesStore } from '@wordpress/preferences';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Internal dependencies
|
|
@@ -14,9 +15,11 @@ import { unlock } from '../../lock-unlock';
|
|
|
14
15
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
16
|
const ZoomOutToggle = () => {
|
|
16
17
|
const {
|
|
17
|
-
isZoomOut
|
|
18
|
+
isZoomOut,
|
|
19
|
+
showIconLabels
|
|
18
20
|
} = useSelect(select => ({
|
|
19
|
-
isZoomOut: unlock(select(blockEditorStore)).isZoomOut()
|
|
21
|
+
isZoomOut: unlock(select(blockEditorStore)).isZoomOut(),
|
|
22
|
+
showIconLabels: select(preferencesStore).get('core', 'showIconLabels')
|
|
20
23
|
}));
|
|
21
24
|
const {
|
|
22
25
|
resetZoomLevel,
|
|
@@ -36,7 +39,8 @@ const ZoomOutToggle = () => {
|
|
|
36
39
|
icon: zoomOutIcon,
|
|
37
40
|
label: __('Toggle Zoom Out'),
|
|
38
41
|
isPressed: isZoomOut,
|
|
39
|
-
size: "compact"
|
|
42
|
+
size: "compact",
|
|
43
|
+
showTooltip: !showIconLabels
|
|
40
44
|
});
|
|
41
45
|
};
|
|
42
46
|
export default ZoomOutToggle;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Button","__","useDispatch","useSelect","store","blockEditorStore","square","zoomOutIcon","unlock","jsx","_jsx","ZoomOutToggle","isZoomOut","select","resetZoomLevel","setZoomLevel","__unstableSetEditorMode","handleZoomOut","onClick","icon","label","isPressed","size"],"sources":["@wordpress/editor/src/components/zoom-out-toggle/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { square as zoomOutIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst ZoomOutToggle = () => {\n\tconst { isZoomOut } = useSelect( ( select ) => ( {\n\t\tisZoomOut: unlock( select( blockEditorStore ) ).isZoomOut(),\n\t} ) );\n\n\tconst { resetZoomLevel, setZoomLevel, __unstableSetEditorMode } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\n\tconst handleZoomOut = () => {\n\t\tif ( isZoomOut ) {\n\t\t\tresetZoomLevel();\n\t\t} else {\n\t\t\tsetZoomLevel( 50 );\n\t\t}\n\t\t__unstableSetEditorMode( isZoomOut ? 'edit' : 'zoom-out' );\n\t};\n\n\treturn (\n\t\t<Button\n\t\t\tonClick={ handleZoomOut }\n\t\t\ticon={ zoomOutIcon }\n\t\t\tlabel={ __( 'Toggle Zoom Out' ) }\n\t\t\tisPressed={ isZoomOut }\n\t\t\tsize=\"compact\"\n\t\t/>\n\t);\n};\n\nexport default ZoomOutToggle;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,EAAE,QAAQ,iBAAiB;AAEpC,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASC,MAAM,IAAIC,WAAW,QAAQ,kBAAkB;;
|
|
1
|
+
{"version":3,"names":["Button","__","useDispatch","useSelect","store","blockEditorStore","square","zoomOutIcon","preferencesStore","unlock","jsx","_jsx","ZoomOutToggle","isZoomOut","showIconLabels","select","get","resetZoomLevel","setZoomLevel","__unstableSetEditorMode","handleZoomOut","onClick","icon","label","isPressed","size","showTooltip"],"sources":["@wordpress/editor/src/components/zoom-out-toggle/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { square as zoomOutIcon } from '@wordpress/icons';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\n\nconst ZoomOutToggle = () => {\n\tconst { isZoomOut, showIconLabels } = useSelect( ( select ) => ( {\n\t\tisZoomOut: unlock( select( blockEditorStore ) ).isZoomOut(),\n\t\tshowIconLabels: select( preferencesStore ).get(\n\t\t\t'core',\n\t\t\t'showIconLabels'\n\t\t),\n\t} ) );\n\n\tconst { resetZoomLevel, setZoomLevel, __unstableSetEditorMode } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\n\tconst handleZoomOut = () => {\n\t\tif ( isZoomOut ) {\n\t\t\tresetZoomLevel();\n\t\t} else {\n\t\t\tsetZoomLevel( 50 );\n\t\t}\n\t\t__unstableSetEditorMode( isZoomOut ? 'edit' : 'zoom-out' );\n\t};\n\n\treturn (\n\t\t<Button\n\t\t\tonClick={ handleZoomOut }\n\t\t\ticon={ zoomOutIcon }\n\t\t\tlabel={ __( 'Toggle Zoom Out' ) }\n\t\t\tisPressed={ isZoomOut }\n\t\t\tsize=\"compact\"\n\t\t\tshowTooltip={ ! showIconLabels }\n\t\t/>\n\t);\n};\n\nexport default ZoomOutToggle;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,EAAE,QAAQ,iBAAiB;AAEpC,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASC,MAAM,IAAIC,WAAW,QAAQ,kBAAkB;AACxD,SAASH,KAAK,IAAII,gBAAgB,QAAQ,wBAAwB;;AAElE;AACA;AACA;AACA,SAASC,MAAM,QAAQ,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE3C,MAAMC,aAAa,GAAGA,CAAA,KAAM;EAC3B,MAAM;IAAEC,SAAS;IAAEC;EAAe,CAAC,GAAGX,SAAS,CAAIY,MAAM,KAAQ;IAChEF,SAAS,EAAEJ,MAAM,CAAEM,MAAM,CAAEV,gBAAiB,CAAE,CAAC,CAACQ,SAAS,CAAC,CAAC;IAC3DC,cAAc,EAAEC,MAAM,CAAEP,gBAAiB,CAAC,CAACQ,GAAG,CAC7C,MAAM,EACN,gBACD;EACD,CAAC,CAAG,CAAC;EAEL,MAAM;IAAEC,cAAc;IAAEC,YAAY;IAAEC;EAAwB,CAAC,GAAGV,MAAM,CACvEP,WAAW,CAAEG,gBAAiB,CAC/B,CAAC;EAED,MAAMe,aAAa,GAAGA,CAAA,KAAM;IAC3B,IAAKP,SAAS,EAAG;MAChBI,cAAc,CAAC,CAAC;IACjB,CAAC,MAAM;MACNC,YAAY,CAAE,EAAG,CAAC;IACnB;IACAC,uBAAuB,CAAEN,SAAS,GAAG,MAAM,GAAG,UAAW,CAAC;EAC3D,CAAC;EAED,oBACCF,IAAA,CAACX,MAAM;IACNqB,OAAO,EAAGD,aAAe;IACzBE,IAAI,EAAGf,WAAa;IACpBgB,KAAK,EAAGtB,EAAE,CAAE,iBAAkB,CAAG;IACjCuB,SAAS,EAAGX,SAAW;IACvBY,IAAI,EAAC,SAAS;IACdC,WAAW,EAAG,CAAEZ;EAAgB,CAChC,CAAC;AAEJ,CAAC;AAED,eAAeF,aAAa","ignoreList":[]}
|
|
@@ -6,7 +6,7 @@ import { privateApis as patternsPrivateApis } from '@wordpress/patterns';
|
|
|
6
6
|
import { createHigherOrderComponent } from '@wordpress/compose';
|
|
7
7
|
import { useBlockEditingMode } from '@wordpress/block-editor';
|
|
8
8
|
import { useSelect } from '@wordpress/data';
|
|
9
|
-
import {
|
|
9
|
+
import { getBlockBindingsSource } from '@wordpress/blocks';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Internal dependencies
|
|
@@ -55,9 +55,6 @@ function ControlsWithStoreSubscription(props) {
|
|
|
55
55
|
hasPatternOverridesSource,
|
|
56
56
|
isEditingSyncedPattern
|
|
57
57
|
} = useSelect(select => {
|
|
58
|
-
const {
|
|
59
|
-
getBlockBindingsSource
|
|
60
|
-
} = unlock(select(blocksStore));
|
|
61
58
|
const {
|
|
62
59
|
getCurrentPostType,
|
|
63
60
|
getEditedPostAttribute
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["addFilter","privateApis","patternsPrivateApis","createHigherOrderComponent","useBlockEditingMode","useSelect","
|
|
1
|
+
{"version":3,"names":["addFilter","privateApis","patternsPrivateApis","createHigherOrderComponent","useBlockEditingMode","useSelect","getBlockBindingsSource","store","editorStore","unlock","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","PatternOverridesControls","ResetOverridesControl","PatternOverridesBlockControls","PATTERN_TYPES","PARTIAL_SYNCING_SUPPORTED_BLOCKS","PATTERN_SYNC_TYPES","withPatternOverrideControls","BlockEdit","props","isSupportedBlock","name","children","isSelected","ControlsWithStoreSubscription","blockEditingMode","hasPatternOverridesSource","isEditingSyncedPattern","select","getCurrentPostType","getEditedPostAttribute","user","wp_pattern_sync_status","unsynced","bindings","attributes","metadata","hasPatternBindings","Object","values","some","binding","source","shouldShowPatternOverridesControls","shouldShowResetOverridesControl"],"sources":["@wordpress/editor/src/hooks/pattern-overrides.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { useBlockEditingMode } from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { getBlockBindingsSource } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\n/** @typedef {import('@wordpress/blocks').WPBlockSettings} WPBlockSettings */\n\nconst {\n\tPatternOverridesControls,\n\tResetOverridesControl,\n\tPatternOverridesBlockControls,\n\tPATTERN_TYPES,\n\tPARTIAL_SYNCING_SUPPORTED_BLOCKS,\n\tPATTERN_SYNC_TYPES,\n} = unlock( patternsPrivateApis );\n\n/**\n * Override the default edit UI to include a new block inspector control for\n * assigning a partial syncing controls to supported blocks in the pattern editor.\n * Currently, only the `core/paragraph` block is supported.\n *\n * @param {Component} BlockEdit Original component.\n *\n * @return {Component} Wrapped component.\n */\nconst withPatternOverrideControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst isSupportedBlock =\n\t\t\t!! PARTIAL_SYNCING_SUPPORTED_BLOCKS[ props.name ];\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<BlockEdit key=\"edit\" { ...props } />\n\t\t\t\t{ props.isSelected && isSupportedBlock && (\n\t\t\t\t\t<ControlsWithStoreSubscription { ...props } />\n\t\t\t\t) }\n\t\t\t\t{ isSupportedBlock && <PatternOverridesBlockControls /> }\n\t\t\t</>\n\t\t);\n\t},\n\t'withPatternOverrideControls'\n);\n\n// Split into a separate component to avoid a store subscription\n// on every block.\nfunction ControlsWithStoreSubscription( props ) {\n\tconst blockEditingMode = useBlockEditingMode();\n\tconst { hasPatternOverridesSource, isEditingSyncedPattern } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCurrentPostType, getEditedPostAttribute } =\n\t\t\t\tselect( editorStore );\n\n\t\t\treturn {\n\t\t\t\t// For editing link to the site editor if the theme and user permissions support it.\n\t\t\t\thasPatternOverridesSource: !! getBlockBindingsSource(\n\t\t\t\t\t'core/pattern-overrides'\n\t\t\t\t),\n\t\t\t\tisEditingSyncedPattern:\n\t\t\t\t\tgetCurrentPostType() === PATTERN_TYPES.user &&\n\t\t\t\t\tgetEditedPostAttribute( 'meta' )?.wp_pattern_sync_status !==\n\t\t\t\t\t\tPATTERN_SYNC_TYPES.unsynced &&\n\t\t\t\t\tgetEditedPostAttribute( 'wp_pattern_sync_status' ) !==\n\t\t\t\t\t\tPATTERN_SYNC_TYPES.unsynced,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst bindings = props.attributes.metadata?.bindings;\n\tconst hasPatternBindings =\n\t\t!! bindings &&\n\t\tObject.values( bindings ).some(\n\t\t\t( binding ) => binding.source === 'core/pattern-overrides'\n\t\t);\n\n\tconst shouldShowPatternOverridesControls =\n\t\tisEditingSyncedPattern && blockEditingMode === 'default';\n\tconst shouldShowResetOverridesControl =\n\t\t! isEditingSyncedPattern &&\n\t\t!! props.attributes.metadata?.name &&\n\t\tblockEditingMode !== 'disabled' &&\n\t\thasPatternBindings;\n\n\tif ( ! hasPatternOverridesSource ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ shouldShowPatternOverridesControls && (\n\t\t\t\t<PatternOverridesControls { ...props } />\n\t\t\t) }\n\t\t\t{ shouldShowResetOverridesControl && (\n\t\t\t\t<ResetOverridesControl { ...props } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/with-pattern-override-controls',\n\twithPatternOverrideControls\n);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,7 +8,7 @@ import { parse, synchronizeBlocksWithTemplate, __unstableSerializeAndClean } fro
|
|
|
8
8
|
import { store as noticesStore } from '@wordpress/notices';
|
|
9
9
|
import { store as coreStore } from '@wordpress/core-data';
|
|
10
10
|
import { store as blockEditorStore } from '@wordpress/block-editor';
|
|
11
|
-
import { applyFilters } from '@wordpress/hooks';
|
|
11
|
+
import { applyFilters, applyFiltersAsync, doActionAsync } from '@wordpress/hooks';
|
|
12
12
|
import { store as preferencesStore } from '@wordpress/preferences';
|
|
13
13
|
import { __ } from '@wordpress/i18n';
|
|
14
14
|
|
|
@@ -179,7 +179,7 @@ export const savePost = (options = {}) => async ({
|
|
|
179
179
|
});
|
|
180
180
|
}
|
|
181
181
|
const previousRecord = select.getCurrentPost();
|
|
182
|
-
|
|
182
|
+
let edits = {
|
|
183
183
|
id: previousRecord.id,
|
|
184
184
|
...registry.select(coreStore).getEntityRecordNonTransientEdits('postType', previousRecord.type, previousRecord.id),
|
|
185
185
|
content
|
|
@@ -190,7 +190,7 @@ export const savePost = (options = {}) => async ({
|
|
|
190
190
|
});
|
|
191
191
|
let error = false;
|
|
192
192
|
try {
|
|
193
|
-
|
|
193
|
+
edits = await applyFiltersAsync('editor.preSavePost', edits, options);
|
|
194
194
|
} catch (err) {
|
|
195
195
|
error = err;
|
|
196
196
|
}
|
|
@@ -204,10 +204,21 @@ export const savePost = (options = {}) => async ({
|
|
|
204
204
|
if (!error) {
|
|
205
205
|
error = registry.select(coreStore).getLastEntitySaveError('postType', previousRecord.type, previousRecord.id);
|
|
206
206
|
}
|
|
207
|
+
|
|
208
|
+
// Run the hook with legacy unstable name for backward compatibility
|
|
207
209
|
if (!error) {
|
|
208
|
-
|
|
210
|
+
try {
|
|
211
|
+
await applyFilters('editor.__unstableSavePost', Promise.resolve(), options);
|
|
212
|
+
} catch (err) {
|
|
209
213
|
error = err;
|
|
210
|
-
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
if (!error) {
|
|
217
|
+
try {
|
|
218
|
+
await doActionAsync('editor.savePost', options);
|
|
219
|
+
} catch (err) {
|
|
220
|
+
error = err;
|
|
221
|
+
}
|
|
211
222
|
}
|
|
212
223
|
dispatch({
|
|
213
224
|
type: 'REQUEST_POST_UPDATE_FINISH',
|