@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.
Files changed (65) hide show
  1. package/build/bindings/api.js +2 -5
  2. package/build/bindings/api.js.map +1 -1
  3. package/build/bindings/pattern-overrides.js +7 -6
  4. package/build/bindings/pattern-overrides.js.map +1 -1
  5. package/build/bindings/post-meta.js +65 -43
  6. package/build/bindings/post-meta.js.map +1 -1
  7. package/build/components/entities-saved-states/index.js +8 -6
  8. package/build/components/entities-saved-states/index.js.map +1 -1
  9. package/build/components/post-publish-panel/maybe-upload-media.js +3 -3
  10. package/build/components/post-publish-panel/maybe-upload-media.js.map +1 -1
  11. package/build/components/preview-dropdown/index.js +5 -0
  12. package/build/components/preview-dropdown/index.js.map +1 -1
  13. package/build/components/provider/index.js +10 -14
  14. package/build/components/provider/index.js.map +1 -1
  15. package/build/components/zoom-out-toggle/index.js +7 -3
  16. package/build/components/zoom-out-toggle/index.js.map +1 -1
  17. package/build/hooks/pattern-overrides.js +1 -4
  18. package/build/hooks/pattern-overrides.js.map +1 -1
  19. package/build/store/actions.js +15 -4
  20. package/build/store/actions.js.map +1 -1
  21. package/build-module/bindings/api.js +1 -4
  22. package/build-module/bindings/api.js.map +1 -1
  23. package/build-module/bindings/pattern-overrides.js +7 -6
  24. package/build-module/bindings/pattern-overrides.js.map +1 -1
  25. package/build-module/bindings/post-meta.js +66 -43
  26. package/build-module/bindings/post-meta.js.map +1 -1
  27. package/build-module/components/entities-saved-states/index.js +8 -6
  28. package/build-module/components/entities-saved-states/index.js.map +1 -1
  29. package/build-module/components/post-publish-panel/maybe-upload-media.js +3 -3
  30. package/build-module/components/post-publish-panel/maybe-upload-media.js.map +1 -1
  31. package/build-module/components/preview-dropdown/index.js +5 -0
  32. package/build-module/components/preview-dropdown/index.js.map +1 -1
  33. package/build-module/components/provider/index.js +10 -14
  34. package/build-module/components/provider/index.js.map +1 -1
  35. package/build-module/components/zoom-out-toggle/index.js +7 -3
  36. package/build-module/components/zoom-out-toggle/index.js.map +1 -1
  37. package/build-module/hooks/pattern-overrides.js +1 -4
  38. package/build-module/hooks/pattern-overrides.js.map +1 -1
  39. package/build-module/store/actions.js +16 -5
  40. package/build-module/store/actions.js.map +1 -1
  41. package/build-style/style-rtl.css +2 -2
  42. package/build-style/style.css +2 -2
  43. package/build-types/bindings/api.d.ts.map +1 -1
  44. package/build-types/bindings/pattern-overrides.d.ts +5 -4
  45. package/build-types/bindings/pattern-overrides.d.ts.map +1 -1
  46. package/build-types/bindings/post-meta.d.ts +7 -12
  47. package/build-types/bindings/post-meta.d.ts.map +1 -1
  48. package/build-types/components/entities-saved-states/index.d.ts.map +1 -1
  49. package/build-types/components/preview-dropdown/index.d.ts.map +1 -1
  50. package/build-types/components/provider/index.d.ts.map +1 -1
  51. package/build-types/components/zoom-out-toggle/index.d.ts.map +1 -1
  52. package/build-types/store/actions.d.ts.map +1 -1
  53. package/package.json +30 -30
  54. package/src/bindings/api.js +1 -2
  55. package/src/bindings/pattern-overrides.js +27 -30
  56. package/src/bindings/post-meta.js +70 -64
  57. package/src/components/entities-saved-states/index.js +10 -8
  58. package/src/components/entities-saved-states/style.scss +2 -2
  59. package/src/components/post-publish-panel/maybe-upload-media.js +3 -3
  60. package/src/components/preview-dropdown/index.js +3 -0
  61. package/src/components/provider/index.js +13 -20
  62. package/src/components/zoom-out-toggle/index.js +7 -1
  63. package/src/hooks/pattern-overrides.js +1 -2
  64. package/src/store/actions.js +26 -11
  65. package/tsconfig.tsbuildinfo +1 -1
@@ -30,11 +30,8 @@ var _lockUnlock = require("../lock-unlock");
30
30
  * ```
31
31
  */
32
32
  function registerCoreBlockBindingsSources() {
33
- const {
34
- registerBlockBindingsSource
35
- } = (0, _lockUnlock.unlock)(_blocks.privateApis);
36
- registerBlockBindingsSource(_patternOverrides.default);
37
- registerBlockBindingsSource(_postMeta.default);
33
+ (0, _blocks.registerBlockBindingsSource)(_patternOverrides.default);
34
+ (0, _blocks.registerBlockBindingsSource)(_postMeta.default);
38
35
  }
39
36
 
40
37
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["_blocks","require","_data","_patternOverrides","_interopRequireDefault","_postMeta","_lockUnlock","registerCoreBlockBindingsSources","registerBlockBindingsSource","unlock","blocksPrivateApis","patternOverrides","postMeta","bootstrapBlockBindingsSourcesFromServer","sources","addBootstrappedBlockBindingsSource","dispatch","blocksStore","name","args","Object","entries"],"sources":["@wordpress/editor/src/bindings/api.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as blocksPrivateApis,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { dispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport patternOverrides from './pattern-overrides';\nimport postMeta from './post-meta';\nimport { unlock } from '../lock-unlock';\n\n/**\n * Function to register core block bindings sources provided by the editor.\n *\n * @example\n * ```js\n * import { registerCoreBlockBindingsSources } from '@wordpress/editor';\n *\n * registerCoreBlockBindingsSources();\n * ```\n */\nexport function registerCoreBlockBindingsSources() {\n\tconst { registerBlockBindingsSource } = unlock( blocksPrivateApis );\n\tregisterBlockBindingsSource( patternOverrides );\n\tregisterBlockBindingsSource( postMeta );\n}\n\n/**\n * Function to bootstrap core block bindings sources defined in the server.\n *\n * @param {Object} sources Object containing the sources to bootstrap.\n *\n * @example\n * ```js\n * import { bootstrapBlockBindingsSourcesFromServer } from '@wordpress/editor';\n *\n * bootstrapBlockBindingsSourcesFromServer( sources );\n * ```\n */\nexport function bootstrapBlockBindingsSourcesFromServer( sources ) {\n\tif ( sources ) {\n\t\tconst { addBootstrappedBlockBindingsSource } = unlock(\n\t\t\tdispatch( blocksStore )\n\t\t);\n\t\tfor ( const [ name, args ] of Object.entries( sources ) ) {\n\t\t\taddBootstrappedBlockBindingsSource( {\n\t\t\t\tname,\n\t\t\t\t...args,\n\t\t\t} );\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AAIA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,iBAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,SAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AAdA;AACA;AACA;;AAOA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASM,gCAAgCA,CAAA,EAAG;EAClD,MAAM;IAAEC;EAA4B,CAAC,GAAG,IAAAC,kBAAM,EAAEC,mBAAkB,CAAC;EACnEF,2BAA2B,CAAEG,yBAAiB,CAAC;EAC/CH,2BAA2B,CAAEI,iBAAS,CAAC;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,uCAAuCA,CAAEC,OAAO,EAAG;EAClE,IAAKA,OAAO,EAAG;IACd,MAAM;MAAEC;IAAmC,CAAC,GAAG,IAAAN,kBAAM,EACpD,IAAAO,cAAQ,EAAEC,aAAY,CACvB,CAAC;IACD,KAAM,MAAM,CAAEC,IAAI,EAAEC,IAAI,CAAE,IAAIC,MAAM,CAACC,OAAO,CAAEP,OAAQ,CAAC,EAAG;MACzDC,kCAAkC,CAAE;QACnCG,IAAI;QACJ,GAAGC;MACJ,CAAE,CAAC;IACJ;EACD;AACD","ignoreList":[]}
1
+ {"version":3,"names":["_blocks","require","_data","_patternOverrides","_interopRequireDefault","_postMeta","_lockUnlock","registerCoreBlockBindingsSources","registerBlockBindingsSource","patternOverrides","postMeta","bootstrapBlockBindingsSourcesFromServer","sources","addBootstrappedBlockBindingsSource","unlock","dispatch","blocksStore","name","args","Object","entries"],"sources":["@wordpress/editor/src/bindings/api.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tstore as blocksStore,\n\tregisterBlockBindingsSource,\n} from '@wordpress/blocks';\nimport { dispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport patternOverrides from './pattern-overrides';\nimport postMeta from './post-meta';\nimport { unlock } from '../lock-unlock';\n\n/**\n * Function to register core block bindings sources provided by the editor.\n *\n * @example\n * ```js\n * import { registerCoreBlockBindingsSources } from '@wordpress/editor';\n *\n * registerCoreBlockBindingsSources();\n * ```\n */\nexport function registerCoreBlockBindingsSources() {\n\tregisterBlockBindingsSource( patternOverrides );\n\tregisterBlockBindingsSource( postMeta );\n}\n\n/**\n * Function to bootstrap core block bindings sources defined in the server.\n *\n * @param {Object} sources Object containing the sources to bootstrap.\n *\n * @example\n * ```js\n * import { bootstrapBlockBindingsSourcesFromServer } from '@wordpress/editor';\n *\n * bootstrapBlockBindingsSourcesFromServer( sources );\n * ```\n */\nexport function bootstrapBlockBindingsSourcesFromServer( sources ) {\n\tif ( sources ) {\n\t\tconst { addBootstrappedBlockBindingsSource } = unlock(\n\t\t\tdispatch( blocksStore )\n\t\t);\n\t\tfor ( const [ name, args ] of Object.entries( sources ) ) {\n\t\t\taddBootstrappedBlockBindingsSource( {\n\t\t\t\tname,\n\t\t\t\t...args,\n\t\t\t} );\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AAIA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,iBAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,SAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AAdA;AACA;AACA;;AAOA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASM,gCAAgCA,CAAA,EAAG;EAClD,IAAAC,mCAA2B,EAAEC,yBAAiB,CAAC;EAC/C,IAAAD,mCAA2B,EAAEE,iBAAS,CAAC;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,uCAAuCA,CAAEC,OAAO,EAAG;EAClE,IAAKA,OAAO,EAAG;IACd,MAAM;MAAEC;IAAmC,CAAC,GAAG,IAAAC,kBAAM,EACpD,IAAAC,cAAQ,EAAEC,aAAY,CACvB,CAAC;IACD,KAAM,MAAM,CAAEC,IAAI,EAAEC,IAAI,CAAE,IAAIC,MAAM,CAACC,OAAO,CAAER,OAAQ,CAAC,EAAG;MACzDC,kCAAkC,CAAE;QACnCI,IAAI;QACJ,GAAGC;MACJ,CAAE,CAAC;IACJ;EACD;AACD","ignoreList":[]}
@@ -13,7 +13,7 @@ const CONTENT = 'content';
13
13
  var _default = exports.default = {
14
14
  name: 'core/pattern-overrides',
15
15
  getValues({
16
- registry,
16
+ select,
17
17
  clientId,
18
18
  context,
19
19
  bindings
@@ -21,7 +21,7 @@ var _default = exports.default = {
21
21
  const patternOverridesContent = context['pattern/overrides'];
22
22
  const {
23
23
  getBlockAttributes
24
- } = registry.select(_blockEditor.store);
24
+ } = select(_blockEditor.store);
25
25
  const currentBlockAttributes = getBlockAttributes(clientId);
26
26
  const overridesValues = {};
27
27
  for (const attributeName of Object.keys(bindings)) {
@@ -39,7 +39,8 @@ var _default = exports.default = {
39
39
  return overridesValues;
40
40
  },
41
41
  setValues({
42
- registry,
42
+ select,
43
+ dispatch,
43
44
  clientId,
44
45
  bindings
45
46
  }) {
@@ -47,7 +48,7 @@ var _default = exports.default = {
47
48
  getBlockAttributes,
48
49
  getBlockParentsByBlockName,
49
50
  getBlocks
50
- } = registry.select(_blockEditor.store);
51
+ } = select(_blockEditor.store);
51
52
  const currentBlockAttributes = getBlockAttributes(clientId);
52
53
  const blockName = currentBlockAttributes?.metadata?.name;
53
54
  if (!blockName) {
@@ -68,7 +69,7 @@ var _default = exports.default = {
68
69
  const syncBlocksWithSameName = blocks => {
69
70
  for (const block of blocks) {
70
71
  if (block.attributes?.metadata?.name === blockName) {
71
- registry.dispatch(_blockEditor.store).updateBlockAttributes(block.clientId, attributes);
72
+ dispatch(_blockEditor.store).updateBlockAttributes(block.clientId, attributes);
72
73
  }
73
74
  syncBlocksWithSameName(block.innerBlocks);
74
75
  }
@@ -77,7 +78,7 @@ var _default = exports.default = {
77
78
  return;
78
79
  }
79
80
  const currentBindingValue = getBlockAttributes(patternClientId)?.[CONTENT];
80
- registry.dispatch(_blockEditor.store).updateBlockAttributes(patternClientId, {
81
+ dispatch(_blockEditor.store).updateBlockAttributes(patternClientId, {
81
82
  [CONTENT]: {
82
83
  ...currentBindingValue,
83
84
  [blockName]: {
@@ -1 +1 @@
1
- {"version":3,"names":["_blockEditor","require","CONTENT","_default","exports","default","name","getValues","registry","clientId","context","bindings","patternOverridesContent","getBlockAttributes","select","blockEditorStore","currentBlockAttributes","overridesValues","attributeName","Object","keys","overridableValue","metadata","undefined","setValues","getBlockParentsByBlockName","getBlocks","blockName","patternClientId","attributes","entries","reduce","attrs","key","newValue","syncBlocksWithSameName","blocks","block","dispatch","updateBlockAttributes","innerBlocks","currentBindingValue","acc","value","canUserEditValue"],"sources":["@wordpress/editor/src/bindings/pattern-overrides.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\nconst CONTENT = 'content';\n\nexport default {\n\tname: 'core/pattern-overrides',\n\tgetValues( { registry, clientId, context, bindings } ) {\n\t\tconst patternOverridesContent = context[ 'pattern/overrides' ];\n\t\tconst { getBlockAttributes } = registry.select( blockEditorStore );\n\t\tconst currentBlockAttributes = getBlockAttributes( clientId );\n\n\t\tconst overridesValues = {};\n\t\tfor ( const attributeName of Object.keys( bindings ) ) {\n\t\t\tconst overridableValue =\n\t\t\t\tpatternOverridesContent?.[\n\t\t\t\t\tcurrentBlockAttributes?.metadata?.name\n\t\t\t\t]?.[ attributeName ];\n\n\t\t\t// If it has not been overriden, return the original value.\n\t\t\t// Check undefined because empty string is a valid value.\n\t\t\tif ( overridableValue === undefined ) {\n\t\t\t\toverridesValues[ attributeName ] =\n\t\t\t\t\tcurrentBlockAttributes[ attributeName ];\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\toverridesValues[ attributeName ] =\n\t\t\t\t\toverridableValue === '' ? undefined : overridableValue;\n\t\t\t}\n\t\t}\n\t\treturn overridesValues;\n\t},\n\tsetValues( { registry, clientId, bindings } ) {\n\t\tconst { getBlockAttributes, getBlockParentsByBlockName, getBlocks } =\n\t\t\tregistry.select( blockEditorStore );\n\t\tconst currentBlockAttributes = getBlockAttributes( clientId );\n\t\tconst blockName = currentBlockAttributes?.metadata?.name;\n\t\tif ( ! blockName ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst [ patternClientId ] = getBlockParentsByBlockName(\n\t\t\tclientId,\n\t\t\t'core/block',\n\t\t\ttrue\n\t\t);\n\n\t\t// Extract the updated attributes from the source bindings.\n\t\tconst attributes = Object.entries( bindings ).reduce(\n\t\t\t( attrs, [ key, { newValue } ] ) => {\n\t\t\t\tattrs[ key ] = newValue;\n\t\t\t\treturn attrs;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\n\t\t// If there is no pattern client ID, sync blocks with the same name and same attributes.\n\t\tif ( ! patternClientId ) {\n\t\t\tconst syncBlocksWithSameName = ( blocks ) => {\n\t\t\t\tfor ( const block of blocks ) {\n\t\t\t\t\tif ( block.attributes?.metadata?.name === blockName ) {\n\t\t\t\t\t\tregistry\n\t\t\t\t\t\t\t.dispatch( blockEditorStore )\n\t\t\t\t\t\t\t.updateBlockAttributes(\n\t\t\t\t\t\t\t\tblock.clientId,\n\t\t\t\t\t\t\t\tattributes\n\t\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tsyncBlocksWithSameName( block.innerBlocks );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tsyncBlocksWithSameName( getBlocks() );\n\t\t\treturn;\n\t\t}\n\t\tconst currentBindingValue =\n\t\t\tgetBlockAttributes( patternClientId )?.[ CONTENT ];\n\t\tregistry\n\t\t\t.dispatch( blockEditorStore )\n\t\t\t.updateBlockAttributes( patternClientId, {\n\t\t\t\t[ CONTENT ]: {\n\t\t\t\t\t...currentBindingValue,\n\t\t\t\t\t[ blockName ]: {\n\t\t\t\t\t\t...currentBindingValue?.[ blockName ],\n\t\t\t\t\t\t...Object.entries( attributes ).reduce(\n\t\t\t\t\t\t\t( acc, [ key, value ] ) => {\n\t\t\t\t\t\t\t\t// TODO: We need a way to represent `undefined` in the serialized overrides.\n\t\t\t\t\t\t\t\t// Also see: https://github.com/WordPress/gutenberg/pull/57249#discussion_r1452987871\n\t\t\t\t\t\t\t\t// We use an empty string to represent undefined for now until\n\t\t\t\t\t\t\t\t// we support a richer format for overrides and the block bindings API.\n\t\t\t\t\t\t\t\tacc[ key ] = value === undefined ? '' : value;\n\t\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{}\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} );\n\t},\n\tcanUserEditValue: () => true,\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_blockEditor","require","CONTENT","_default","exports","default","name","getValues","select","clientId","context","bindings","patternOverridesContent","getBlockAttributes","blockEditorStore","currentBlockAttributes","overridesValues","attributeName","Object","keys","overridableValue","metadata","undefined","setValues","dispatch","getBlockParentsByBlockName","getBlocks","blockName","patternClientId","attributes","entries","reduce","attrs","key","newValue","syncBlocksWithSameName","blocks","block","updateBlockAttributes","innerBlocks","currentBindingValue","acc","value","canUserEditValue"],"sources":["@wordpress/editor/src/bindings/pattern-overrides.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\nconst CONTENT = 'content';\n\nexport default {\n\tname: 'core/pattern-overrides',\n\tgetValues( { select, clientId, context, bindings } ) {\n\t\tconst patternOverridesContent = context[ 'pattern/overrides' ];\n\t\tconst { getBlockAttributes } = select( blockEditorStore );\n\t\tconst currentBlockAttributes = getBlockAttributes( clientId );\n\n\t\tconst overridesValues = {};\n\t\tfor ( const attributeName of Object.keys( bindings ) ) {\n\t\t\tconst overridableValue =\n\t\t\t\tpatternOverridesContent?.[\n\t\t\t\t\tcurrentBlockAttributes?.metadata?.name\n\t\t\t\t]?.[ attributeName ];\n\n\t\t\t// If it has not been overriden, return the original value.\n\t\t\t// Check undefined because empty string is a valid value.\n\t\t\tif ( overridableValue === undefined ) {\n\t\t\t\toverridesValues[ attributeName ] =\n\t\t\t\t\tcurrentBlockAttributes[ attributeName ];\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\toverridesValues[ attributeName ] =\n\t\t\t\t\toverridableValue === '' ? undefined : overridableValue;\n\t\t\t}\n\t\t}\n\t\treturn overridesValues;\n\t},\n\tsetValues( { select, dispatch, clientId, bindings } ) {\n\t\tconst { getBlockAttributes, getBlockParentsByBlockName, getBlocks } =\n\t\t\tselect( blockEditorStore );\n\t\tconst currentBlockAttributes = getBlockAttributes( clientId );\n\t\tconst blockName = currentBlockAttributes?.metadata?.name;\n\t\tif ( ! blockName ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst [ patternClientId ] = getBlockParentsByBlockName(\n\t\t\tclientId,\n\t\t\t'core/block',\n\t\t\ttrue\n\t\t);\n\n\t\t// Extract the updated attributes from the source bindings.\n\t\tconst attributes = Object.entries( bindings ).reduce(\n\t\t\t( attrs, [ key, { newValue } ] ) => {\n\t\t\t\tattrs[ key ] = newValue;\n\t\t\t\treturn attrs;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\n\t\t// If there is no pattern client ID, sync blocks with the same name and same attributes.\n\t\tif ( ! patternClientId ) {\n\t\t\tconst syncBlocksWithSameName = ( blocks ) => {\n\t\t\t\tfor ( const block of blocks ) {\n\t\t\t\t\tif ( block.attributes?.metadata?.name === blockName ) {\n\t\t\t\t\t\tdispatch( blockEditorStore ).updateBlockAttributes(\n\t\t\t\t\t\t\tblock.clientId,\n\t\t\t\t\t\t\tattributes\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tsyncBlocksWithSameName( block.innerBlocks );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tsyncBlocksWithSameName( getBlocks() );\n\t\t\treturn;\n\t\t}\n\t\tconst currentBindingValue =\n\t\t\tgetBlockAttributes( patternClientId )?.[ CONTENT ];\n\n\t\tdispatch( blockEditorStore ).updateBlockAttributes( patternClientId, {\n\t\t\t[ CONTENT ]: {\n\t\t\t\t...currentBindingValue,\n\t\t\t\t[ blockName ]: {\n\t\t\t\t\t...currentBindingValue?.[ blockName ],\n\t\t\t\t\t...Object.entries( attributes ).reduce(\n\t\t\t\t\t\t( acc, [ key, value ] ) => {\n\t\t\t\t\t\t\t// TODO: We need a way to represent `undefined` in the serialized overrides.\n\t\t\t\t\t\t\t// Also see: https://github.com/WordPress/gutenberg/pull/57249#discussion_r1452987871\n\t\t\t\t\t\t\t// We use an empty string to represent undefined for now until\n\t\t\t\t\t\t\t// we support a richer format for overrides and the block bindings API.\n\t\t\t\t\t\t\tacc[ key ] = value === undefined ? '' : value;\n\t\t\t\t\t\t\treturn acc;\n\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\t},\n\tcanUserEditValue: () => true,\n};\n"],"mappings":"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","ignoreList":[]}
@@ -15,47 +15,86 @@ var _lockUnlock = require("../lock-unlock");
15
15
  * Internal dependencies
16
16
  */
17
17
 
18
- function getMetadata(registry, context, registeredFields) {
19
- let metaFields = {};
20
- const type = registry.select(_store.store).getCurrentPostType();
18
+ /**
19
+ * Gets a list of post meta fields with their values and labels
20
+ * to be consumed in the needed callbacks.
21
+ * If the value is not available based on context, like in templates,
22
+ * it falls back to the default value, label, or key.
23
+ *
24
+ * @param {Object} select The select function from the data store.
25
+ * @param {Object} context The context provided.
26
+ * @return {Object} List of post meta fields with their value and label.
27
+ *
28
+ * @example
29
+ * ```js
30
+ * {
31
+ * field_1_key: {
32
+ * label: 'Field 1 Label',
33
+ * value: 'Field 1 Value',
34
+ * },
35
+ * field_2_key: {
36
+ * label: 'Field 2 Label',
37
+ * value: 'Field 2 Value',
38
+ * },
39
+ * ...
40
+ * }
41
+ * ```
42
+ */
43
+ function getPostMetaFields(select, context) {
21
44
  const {
22
45
  getEditedEntityRecord
23
- } = registry.select(_coreData.store);
46
+ } = select(_coreData.store);
47
+ const {
48
+ getRegisteredPostMeta
49
+ } = (0, _lockUnlock.unlock)(select(_coreData.store));
50
+ let entityMetaValues;
51
+ // Try to get the current entity meta values.
24
52
  if (context?.postType && context?.postId) {
25
- metaFields = getEditedEntityRecord('postType', context?.postType, context?.postId).meta;
26
- } else if (type === 'wp_template') {
27
- // Populate the `metaFields` object with the default values.
28
- Object.entries(registeredFields || {}).forEach(([key, props]) => {
29
- if (props.default) {
30
- metaFields[key] = props.default;
31
- }
32
- });
53
+ entityMetaValues = getEditedEntityRecord('postType', context?.postType, context?.postId).meta;
54
+ }
55
+ const registeredFields = getRegisteredPostMeta(context?.postType);
56
+ const metaFields = {};
57
+ Object.entries(registeredFields || {}).forEach(([key, props]) => {
58
+ // Don't include footnotes or private fields.
59
+ if (key !== 'footnotes' && key.charAt(0) !== '_') {
60
+ var _entityMetaValues$key;
61
+ metaFields[key] = {
62
+ label: props.title || key,
63
+ value: // When using the entity value, an empty string IS a valid value.
64
+ (_entityMetaValues$key = entityMetaValues?.[key]) !== null && _entityMetaValues$key !== void 0 ? _entityMetaValues$key :
65
+ // When using the default, an empty string IS NOT a valid value.
66
+ props.default || undefined
67
+ };
68
+ }
69
+ });
70
+ if (!Object.keys(metaFields || {}).length) {
71
+ return null;
33
72
  }
34
73
  return metaFields;
35
74
  }
36
75
  var _default = exports.default = {
37
76
  name: 'core/post-meta',
38
77
  getValues({
39
- registry,
78
+ select,
40
79
  context,
41
80
  bindings
42
81
  }) {
43
- const {
44
- getRegisteredPostMeta
45
- } = (0, _lockUnlock.unlock)(registry.select(_coreData.store));
46
- const registeredFields = getRegisteredPostMeta(context?.postType);
47
- const metaFields = getMetadata(registry, context, registeredFields);
82
+ const metaFields = getPostMetaFields(select, context);
48
83
  const newValues = {};
49
84
  for (const [attributeName, source] of Object.entries(bindings)) {
50
- var _ref, _metaFields$metaKey;
85
+ var _ref;
51
86
  // Use the value, the field label, or the field key.
52
- const metaKey = source.args.key;
53
- newValues[attributeName] = (_ref = (_metaFields$metaKey = metaFields?.[metaKey]) !== null && _metaFields$metaKey !== void 0 ? _metaFields$metaKey : registeredFields?.[metaKey]?.title) !== null && _ref !== void 0 ? _ref : metaKey;
87
+ const fieldKey = source.args.key;
88
+ const {
89
+ value: fieldValue,
90
+ label: fieldLabel
91
+ } = metaFields?.[fieldKey] || {};
92
+ newValues[attributeName] = (_ref = fieldValue !== null && fieldValue !== void 0 ? fieldValue : fieldLabel) !== null && _ref !== void 0 ? _ref : fieldKey;
54
93
  }
55
94
  return newValues;
56
95
  },
57
96
  setValues({
58
- registry,
97
+ dispatch,
59
98
  context,
60
99
  bindings
61
100
  }) {
@@ -66,7 +105,7 @@ var _default = exports.default = {
66
105
  }) => {
67
106
  newMeta[args.key] = newValue;
68
107
  });
69
- registry.dispatch(_coreData.store).editEntityRecord('postType', context?.postType, context?.postId, {
108
+ dispatch(_coreData.store).editEntityRecord('postType', context?.postType, context?.postId, {
70
109
  meta: newMeta
71
110
  });
72
111
  },
@@ -85,10 +124,8 @@ var _default = exports.default = {
85
124
  if (postType === 'wp_template') {
86
125
  return false;
87
126
  }
88
-
89
- // Check that the custom field is not protected and available in the REST API.
127
+ const fieldValue = getPostMetaFields(select, context)?.[args.key]?.value;
90
128
  // Empty string or `false` could be a valid value, so we need to check if the field value is undefined.
91
- const fieldValue = select(_coreData.store).getEntityRecord('postType', postType, context?.postId)?.meta?.[args.key];
92
129
  if (fieldValue === undefined) {
93
130
  return false;
94
131
  }
@@ -110,25 +147,10 @@ var _default = exports.default = {
110
147
  return true;
111
148
  },
112
149
  getFieldsList({
113
- registry,
150
+ select,
114
151
  context
115
152
  }) {
116
- const {
117
- getRegisteredPostMeta
118
- } = (0, _lockUnlock.unlock)(registry.select(_coreData.store));
119
- const registeredFields = getRegisteredPostMeta(context?.postType);
120
- const metaFields = getMetadata(registry, context, registeredFields);
121
- if (!metaFields || !Object.keys(metaFields).length) {
122
- return null;
123
- }
124
- return Object.fromEntries(Object.entries(metaFields)
125
- // Remove footnotes or private keys from the list of fields.
126
- .filter(([key]) => key !== 'footnotes' && key.charAt(0) !== '_')
127
- // Return object with label and value.
128
- .map(([key, value]) => [key, {
129
- label: registeredFields?.[key]?.title || key,
130
- value
131
- }]));
153
+ return getPostMetaFields(select, context);
132
154
  }
133
155
  };
134
156
  //# sourceMappingURL=post-meta.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_coreData","require","_store","_lockUnlock","getMetadata","registry","context","registeredFields","metaFields","type","select","editorStore","getCurrentPostType","getEditedEntityRecord","coreDataStore","postType","postId","meta","Object","entries","forEach","key","props","default","_default","exports","name","getValues","bindings","getRegisteredPostMeta","unlock","newValues","attributeName","source","_ref","_metaFields$metaKey","metaKey","args","title","setValues","newMeta","values","newValue","dispatch","editEntityRecord","canUserEditValue","query","queryId","fieldValue","getEntityRecord","undefined","areCustomFieldsEnabled","getEditorSettings","enableCustomFields","canUserEdit","canUser","kind","id","getFieldsList","keys","length","fromEntries","filter","charAt","map","value","label"],"sources":["@wordpress/editor/src/bindings/post-meta.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as coreDataStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\nfunction getMetadata( registry, context, registeredFields ) {\n\tlet metaFields = {};\n\tconst type = registry.select( editorStore ).getCurrentPostType();\n\tconst { getEditedEntityRecord } = registry.select( coreDataStore );\n\n\tif ( context?.postType && context?.postId ) {\n\t\tmetaFields = getEditedEntityRecord(\n\t\t\t'postType',\n\t\t\tcontext?.postType,\n\t\t\tcontext?.postId\n\t\t).meta;\n\t} else if ( type === 'wp_template' ) {\n\t\t// Populate the `metaFields` object with the default values.\n\t\tObject.entries( registeredFields || {} ).forEach(\n\t\t\t( [ key, props ] ) => {\n\t\t\t\tif ( props.default ) {\n\t\t\t\t\tmetaFields[ key ] = props.default;\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\treturn metaFields;\n}\n\nexport default {\n\tname: 'core/post-meta',\n\tgetValues( { registry, context, bindings } ) {\n\t\tconst { getRegisteredPostMeta } = unlock(\n\t\t\tregistry.select( coreDataStore )\n\t\t);\n\t\tconst registeredFields = getRegisteredPostMeta( context?.postType );\n\t\tconst metaFields = getMetadata( registry, context, registeredFields );\n\n\t\tconst newValues = {};\n\t\tfor ( const [ attributeName, source ] of Object.entries( bindings ) ) {\n\t\t\t// Use the value, the field label, or the field key.\n\t\t\tconst metaKey = source.args.key;\n\t\t\tnewValues[ attributeName ] =\n\t\t\t\tmetaFields?.[ metaKey ] ??\n\t\t\t\tregisteredFields?.[ metaKey ]?.title ??\n\t\t\t\tmetaKey;\n\t\t}\n\t\treturn newValues;\n\t},\n\tsetValues( { registry, context, bindings } ) {\n\t\tconst newMeta = {};\n\t\tObject.values( bindings ).forEach( ( { args, newValue } ) => {\n\t\t\tnewMeta[ args.key ] = newValue;\n\t\t} );\n\t\tregistry\n\t\t\t.dispatch( coreDataStore )\n\t\t\t.editEntityRecord( 'postType', context?.postType, context?.postId, {\n\t\t\t\tmeta: newMeta,\n\t\t\t} );\n\t},\n\tcanUserEditValue( { select, context, args } ) {\n\t\t// Lock editing in query loop.\n\t\tif ( context?.query || context?.queryId ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst postType =\n\t\t\tcontext?.postType || select( editorStore ).getCurrentPostType();\n\n\t\t// Check that editing is happening in the post editor and not a template.\n\t\tif ( postType === 'wp_template' ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check that the custom field is not protected and available in the REST API.\n\t\t// Empty string or `false` could be a valid value, so we need to check if the field value is undefined.\n\t\tconst fieldValue = select( coreDataStore ).getEntityRecord(\n\t\t\t'postType',\n\t\t\tpostType,\n\t\t\tcontext?.postId\n\t\t)?.meta?.[ args.key ];\n\n\t\tif ( fieldValue === undefined ) {\n\t\t\treturn false;\n\t\t}\n\t\t// Check that custom fields metabox is not enabled.\n\t\tconst areCustomFieldsEnabled =\n\t\t\tselect( editorStore ).getEditorSettings().enableCustomFields;\n\t\tif ( areCustomFieldsEnabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check that the user has the capability to edit post meta.\n\t\tconst canUserEdit = select( coreDataStore ).canUser( 'update', {\n\t\t\tkind: 'postType',\n\t\t\tname: context?.postType,\n\t\t\tid: context?.postId,\n\t\t} );\n\t\tif ( ! canUserEdit ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n\tgetFieldsList( { registry, context } ) {\n\t\tconst { getRegisteredPostMeta } = unlock(\n\t\t\tregistry.select( coreDataStore )\n\t\t);\n\t\tconst registeredFields = getRegisteredPostMeta( context?.postType );\n\t\tconst metaFields = getMetadata( registry, context, registeredFields );\n\n\t\tif ( ! metaFields || ! Object.keys( metaFields ).length ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn Object.fromEntries(\n\t\t\tObject.entries( metaFields )\n\t\t\t\t// Remove footnotes or private keys from the list of fields.\n\t\t\t\t.filter(\n\t\t\t\t\t( [ key ] ) =>\n\t\t\t\t\t\tkey !== 'footnotes' && key.charAt( 0 ) !== '_'\n\t\t\t\t)\n\t\t\t\t// Return object with label and value.\n\t\t\t\t.map( ( [ key, value ] ) => [\n\t\t\t\t\tkey,\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: registeredFields?.[ key ]?.title || key,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t},\n\t\t\t\t] )\n\t\t);\n\t},\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_coreData","require","_store","_lockUnlock","getPostMetaFields","select","context","getEditedEntityRecord","coreDataStore","getRegisteredPostMeta","unlock","entityMetaValues","postType","postId","meta","registeredFields","metaFields","Object","entries","forEach","key","props","charAt","_entityMetaValues$key","label","title","value","default","undefined","keys","length","_default","exports","name","getValues","bindings","newValues","attributeName","source","_ref","fieldKey","args","fieldValue","fieldLabel","setValues","dispatch","newMeta","values","newValue","editEntityRecord","canUserEditValue","query","queryId","editorStore","getCurrentPostType","areCustomFieldsEnabled","getEditorSettings","enableCustomFields","canUserEdit","canUser","kind","id","getFieldsList"],"sources":["@wordpress/editor/src/bindings/post-meta.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as coreDataStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\n/**\n * Gets a list of post meta fields with their values and labels\n * to be consumed in the needed callbacks.\n * If the value is not available based on context, like in templates,\n * it falls back to the default value, label, or key.\n *\n * @param {Object} select The select function from the data store.\n * @param {Object} context The context provided.\n * @return {Object} List of post meta fields with their value and label.\n *\n * @example\n * ```js\n * {\n * field_1_key: {\n * label: 'Field 1 Label',\n * value: 'Field 1 Value',\n * },\n * field_2_key: {\n * label: 'Field 2 Label',\n * value: 'Field 2 Value',\n * },\n * ...\n * }\n * ```\n */\nfunction getPostMetaFields( select, context ) {\n\tconst { getEditedEntityRecord } = select( coreDataStore );\n\tconst { getRegisteredPostMeta } = unlock( select( coreDataStore ) );\n\n\tlet entityMetaValues;\n\t// Try to get the current entity meta values.\n\tif ( context?.postType && context?.postId ) {\n\t\tentityMetaValues = getEditedEntityRecord(\n\t\t\t'postType',\n\t\t\tcontext?.postType,\n\t\t\tcontext?.postId\n\t\t).meta;\n\t}\n\n\tconst registeredFields = getRegisteredPostMeta( context?.postType );\n\tconst metaFields = {};\n\tObject.entries( registeredFields || {} ).forEach( ( [ key, props ] ) => {\n\t\t// Don't include footnotes or private fields.\n\t\tif ( key !== 'footnotes' && key.charAt( 0 ) !== '_' ) {\n\t\t\tmetaFields[ key ] = {\n\t\t\t\tlabel: props.title || key,\n\t\t\t\tvalue:\n\t\t\t\t\t// When using the entity value, an empty string IS a valid value.\n\t\t\t\t\tentityMetaValues?.[ key ] ??\n\t\t\t\t\t// When using the default, an empty string IS NOT a valid value.\n\t\t\t\t\t( props.default || undefined ),\n\t\t\t};\n\t\t}\n\t} );\n\n\tif ( ! Object.keys( metaFields || {} ).length ) {\n\t\treturn null;\n\t}\n\n\treturn metaFields;\n}\n\nexport default {\n\tname: 'core/post-meta',\n\tgetValues( { select, context, bindings } ) {\n\t\tconst metaFields = getPostMetaFields( select, context );\n\n\t\tconst newValues = {};\n\t\tfor ( const [ attributeName, source ] of Object.entries( bindings ) ) {\n\t\t\t// Use the value, the field label, or the field key.\n\t\t\tconst fieldKey = source.args.key;\n\t\t\tconst { value: fieldValue, label: fieldLabel } =\n\t\t\t\tmetaFields?.[ fieldKey ] || {};\n\t\t\tnewValues[ attributeName ] = fieldValue ?? fieldLabel ?? fieldKey;\n\t\t}\n\t\treturn newValues;\n\t},\n\tsetValues( { dispatch, context, bindings } ) {\n\t\tconst newMeta = {};\n\t\tObject.values( bindings ).forEach( ( { args, newValue } ) => {\n\t\t\tnewMeta[ args.key ] = newValue;\n\t\t} );\n\n\t\tdispatch( coreDataStore ).editEntityRecord(\n\t\t\t'postType',\n\t\t\tcontext?.postType,\n\t\t\tcontext?.postId,\n\t\t\t{\n\t\t\t\tmeta: newMeta,\n\t\t\t}\n\t\t);\n\t},\n\tcanUserEditValue( { select, context, args } ) {\n\t\t// Lock editing in query loop.\n\t\tif ( context?.query || context?.queryId ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst postType =\n\t\t\tcontext?.postType || select( editorStore ).getCurrentPostType();\n\n\t\t// Check that editing is happening in the post editor and not a template.\n\t\tif ( postType === 'wp_template' ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst fieldValue = getPostMetaFields( select, context )?.[ args.key ]\n\t\t\t?.value;\n\t\t// Empty string or `false` could be a valid value, so we need to check if the field value is undefined.\n\t\tif ( fieldValue === undefined ) {\n\t\t\treturn false;\n\t\t}\n\t\t// Check that custom fields metabox is not enabled.\n\t\tconst areCustomFieldsEnabled =\n\t\t\tselect( editorStore ).getEditorSettings().enableCustomFields;\n\t\tif ( areCustomFieldsEnabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check that the user has the capability to edit post meta.\n\t\tconst canUserEdit = select( coreDataStore ).canUser( 'update', {\n\t\t\tkind: 'postType',\n\t\t\tname: context?.postType,\n\t\t\tid: context?.postId,\n\t\t} );\n\t\tif ( ! canUserEdit ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n\tgetFieldsList( { select, context } ) {\n\t\treturn getPostMetaFields( select, context );\n\t},\n};\n"],"mappings":"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","ignoreList":[]}
@@ -122,10 +122,18 @@ function EntitiesSavedStatesExtensible({
122
122
  className: "entities-saved-states__panel-header",
123
123
  gap: 2,
124
124
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.FlexItem, {
125
+ isBlock: true,
126
+ as: _components.Button,
127
+ variant: "secondary",
128
+ size: "compact",
129
+ onClick: dismissPanel,
130
+ children: (0, _i18n.__)('Cancel')
131
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.FlexItem, {
125
132
  isBlock: true,
126
133
  as: _components.Button,
127
134
  ref: saveButtonRef,
128
135
  variant: "primary",
136
+ size: "compact",
129
137
  disabled: !saveEnabled,
130
138
  accessibleWhenDisabled: true,
131
139
  onClick: () => saveDirtyEntities({
@@ -136,12 +144,6 @@ function EntitiesSavedStatesExtensible({
136
144
  }),
137
145
  className: "editor-entities-saved-states__save-button",
138
146
  children: saveLabel
139
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.FlexItem, {
140
- isBlock: true,
141
- as: _components.Button,
142
- variant: "secondary",
143
- onClick: dismissPanel,
144
- children: (0, _i18n.__)('Cancel')
145
147
  })]
146
148
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
147
149
  className: "entities-saved-states__text-prompt",
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_i18n","_element","_compose","_data","_entityTypeList","_interopRequireDefault","_useIsDirty","_store","_lockUnlock","_jsxRuntime","identity","values","EntitiesSavedStates","close","renderDialog","undefined","isDirtyProps","useIsDirty","jsx","EntitiesSavedStatesExtensible","additionalPrompt","onSave","saveEnabled","saveEnabledProp","saveLabel","__","dirtyEntityRecords","isDirty","setUnselectedEntities","unselectedEntities","saveButtonRef","useRef","saveDirtyEntities","unlock","useDispatch","editorStore","partitionedSavables","reduce","acc","record","name","push","site","siteSavables","wp_template","templateSavables","wp_template_part","templatePartSavables","contentSavables","sortedPartitionedSavables","Object","filter","Array","isArray","dismissPanel","useCallback","saveDialogRef","saveDialogProps","useDialog","onClose","dialogLabel","useInstanceId","dialogDescription","jsxs","ref","className","role","children","Flex","gap","FlexItem","isBlock","as","Button","variant","disabled","accessibleWhenDisabled","onClick","entitiesToSkip","id","createInterpolateElement","sprintf","_n","length","strong","map","list","default"],"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":["_components","require","_i18n","_element","_compose","_data","_entityTypeList","_interopRequireDefault","_useIsDirty","_store","_lockUnlock","_jsxRuntime","identity","values","EntitiesSavedStates","close","renderDialog","undefined","isDirtyProps","useIsDirty","jsx","EntitiesSavedStatesExtensible","additionalPrompt","onSave","saveEnabled","saveEnabledProp","saveLabel","__","dirtyEntityRecords","isDirty","setUnselectedEntities","unselectedEntities","saveButtonRef","useRef","saveDirtyEntities","unlock","useDispatch","editorStore","partitionedSavables","reduce","acc","record","name","push","site","siteSavables","wp_template","templateSavables","wp_template_part","templatePartSavables","contentSavables","sortedPartitionedSavables","Object","filter","Array","isArray","dismissPanel","useCallback","saveDialogRef","saveDialogProps","useDialog","onClose","dialogLabel","useInstanceId","dialogDescription","jsxs","ref","className","role","children","Flex","gap","FlexItem","isBlock","as","Button","variant","size","onClick","disabled","accessibleWhenDisabled","entitiesToSkip","id","createInterpolateElement","sprintf","_n","length","strong","map","list","default"],"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":[]}
@@ -118,8 +118,8 @@ function Image({
118
118
  scale: 0
119
119
  },
120
120
  style: {
121
- width: '36px',
122
- height: '36px',
121
+ width: '32px',
122
+ height: '32px',
123
123
  objectFit: 'cover',
124
124
  borderRadius: '2px',
125
125
  cursor: 'pointer'
@@ -247,7 +247,7 @@ function MaybeUploadMediaPanel() {
247
247
  }, block.clientId);
248
248
  })
249
249
  }), isUploading || isAnimating ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Spinner, {}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
250
- __next40pxDefaultSize: true,
250
+ size: "compact",
251
251
  variant: "primary",
252
252
  onClick: uploadImages,
253
253
  children: (0, _i18n.__)('Upload')
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_data","_i18n","_blockEditor","_element","_blob","_mediaUtil","_jsxRuntime","flattenBlocks","blocks","result","forEach","block","push","innerBlocks","hasExternalMedia","name","attributes","url","id","mediaUrl","mediaId","undefined","getMediaInfo","alt","mediaAlt","Image","clientId","selectBlock","useDispatch","blockEditorStore","jsx","__unstableMotion","img","tabIndex","role","__","onClick","onKeyDown","event","key","preventDefault","src","animate","opacity","exit","scale","style","width","height","objectFit","borderRadius","cursor","whileHover","MaybeUploadMediaPanel","isUploading","setIsUploading","useState","isAnimating","setIsAnimating","hadUploadError","setHadUploadError","editorBlocks","mediaUpload","useSelect","select","getBlocks","getSettings","blocksWithExternalMedia","filter","updateBlockAttributes","length","panelBodyTitle","className","children","updateBlockWithUploadedMedia","media","uploadImages","mediaUrls","Set","map","uploadPromises","Object","fromEntries","entries","fetchMedia","filePromise","uploadPromise","then","blob","Promise","resolve","reject","filesList","onFileChange","isBlobURL","onError","allSettled","catch","finally","jsxs","PanelBody","initialOpen","title","display","flexWrap","gap","__unstableAnimatePresence","onExitComplete","Spinner","Button","__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":["_components","require","_data","_i18n","_blockEditor","_element","_blob","_mediaUtil","_jsxRuntime","flattenBlocks","blocks","result","forEach","block","push","innerBlocks","hasExternalMedia","name","attributes","url","id","mediaUrl","mediaId","undefined","getMediaInfo","alt","mediaAlt","Image","clientId","selectBlock","useDispatch","blockEditorStore","jsx","__unstableMotion","img","tabIndex","role","__","onClick","onKeyDown","event","key","preventDefault","src","animate","opacity","exit","scale","style","width","height","objectFit","borderRadius","cursor","whileHover","MaybeUploadMediaPanel","isUploading","setIsUploading","useState","isAnimating","setIsAnimating","hadUploadError","setHadUploadError","editorBlocks","mediaUpload","useSelect","select","getBlocks","getSettings","blocksWithExternalMedia","filter","updateBlockAttributes","length","panelBodyTitle","className","children","updateBlockWithUploadedMedia","media","uploadImages","mediaUrls","Set","map","uploadPromises","Object","fromEntries","entries","fetchMedia","filePromise","uploadPromise","then","blob","Promise","resolve","reject","filesList","onFileChange","isBlobURL","onError","allSettled","catch","finally","jsxs","PanelBody","initialOpen","title","display","flexWrap","gap","__unstableAnimatePresence","onExitComplete","Spinner","Button","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":[]}
@@ -17,6 +17,7 @@ var _interface = require("@wordpress/interface");
17
17
  var _store = require("../../store");
18
18
  var _blockEditor = require("@wordpress/block-editor");
19
19
  var _postPreviewButton = _interopRequireDefault(require("../post-preview-button"));
20
+ var _lockUnlock = require("../../lock-unlock");
20
21
  var _jsxRuntime = require("react/jsx-runtime");
21
22
  /**
22
23
  * External dependencies
@@ -68,9 +69,13 @@ function PreviewDropdown({
68
69
  const {
69
70
  __unstableSetEditorMode
70
71
  } = (0, _data.useDispatch)(_blockEditor.store);
72
+ const {
73
+ resetZoomLevel
74
+ } = (0, _lockUnlock.unlock)((0, _data.useDispatch)(_blockEditor.store));
71
75
  const handleDevicePreviewChange = newDeviceType => {
72
76
  setDeviceType(newDeviceType);
73
77
  __unstableSetEditorMode('edit');
78
+ resetZoomLevel();
74
79
  };
75
80
  const isMobile = (0, _compose.useViewportMatch)('medium', '<');
76
81
  if (isMobile) {