@wordpress/block-library 8.28.4 → 8.28.5

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 (51) hide show
  1. package/build/block/deprecated.js +71 -11
  2. package/build/block/deprecated.js.map +1 -1
  3. package/build/block/edit.js +49 -24
  4. package/build/block/edit.js.map +1 -1
  5. package/build/image/edit.js +6 -3
  6. package/build/image/edit.js.map +1 -1
  7. package/build/image/image.js +11 -5
  8. package/build/image/image.js.map +1 -1
  9. package/build/list-item/edit.js +1 -3
  10. package/build/list-item/edit.js.map +1 -1
  11. package/build/list-item/hooks/index.js +0 -7
  12. package/build/list-item/hooks/index.js.map +1 -1
  13. package/build/list-item/index.js +4 -1
  14. package/build/list-item/index.js.map +1 -1
  15. package/build/site-logo/edit.js +7 -2
  16. package/build/site-logo/edit.js.map +1 -1
  17. package/build-module/block/deprecated.js +71 -11
  18. package/build-module/block/deprecated.js.map +1 -1
  19. package/build-module/block/edit.js +49 -24
  20. package/build-module/block/edit.js.map +1 -1
  21. package/build-module/image/edit.js +7 -4
  22. package/build-module/image/edit.js.map +1 -1
  23. package/build-module/image/image.js +11 -5
  24. package/build-module/image/image.js.map +1 -1
  25. package/build-module/list-item/edit.js +2 -4
  26. package/build-module/list-item/edit.js.map +1 -1
  27. package/build-module/list-item/hooks/index.js +0 -1
  28. package/build-module/list-item/hooks/index.js.map +1 -1
  29. package/build-module/list-item/index.js +4 -1
  30. package/build-module/list-item/index.js.map +1 -1
  31. package/build-module/site-logo/edit.js +7 -2
  32. package/build-module/site-logo/edit.js.map +1 -1
  33. package/build-style/common-rtl.css +1 -0
  34. package/build-style/common.css +1 -0
  35. package/package.json +13 -13
  36. package/src/block/deprecated.js +76 -11
  37. package/src/block/edit.js +64 -19
  38. package/src/block/index.php +21 -12
  39. package/src/image/edit.js +10 -3
  40. package/src/image/image.js +20 -16
  41. package/src/list-item/edit.js +1 -2
  42. package/src/list-item/hooks/index.js +0 -1
  43. package/src/list-item/index.js +3 -0
  44. package/src/navigation/index.php +1 -1
  45. package/src/search/index.php +1 -1
  46. package/src/site-logo/edit.js +10 -5
  47. package/build/list-item/hooks/use-copy.js +0 -39
  48. package/build/list-item/hooks/use-copy.js.map +0 -1
  49. package/build-module/list-item/hooks/use-copy.js +0 -32
  50. package/build-module/list-item/hooks/use-copy.js.map +0 -1
  51. package/src/list-item/hooks/use-copy.js +0 -38
@@ -4,7 +4,73 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- // v1: Migrate and rename the `overrides` attribute to the `content` attribute.
7
+ const isObject = obj => typeof obj === 'object' && !Array.isArray(obj) && obj !== null;
8
+
9
+ // v2: Migrate to a more condensed version of the 'content' attribute attribute.
10
+ const v2 = {
11
+ attributes: {
12
+ ref: {
13
+ type: 'number'
14
+ },
15
+ content: {
16
+ type: 'object'
17
+ }
18
+ },
19
+ supports: {
20
+ customClassName: false,
21
+ html: false,
22
+ inserter: false,
23
+ renaming: false
24
+ },
25
+ // Force this deprecation to run whenever there's a values sub-property that's an object.
26
+ //
27
+ // This could fail in the future if a block ever has binding to a `values` attribute.
28
+ // Some extra protection is added to ensure `values` is an object, but this only reduces
29
+ // the likelihood, it doesn't solve it completely.
30
+ isEligible({
31
+ content
32
+ }) {
33
+ return !!content && Object.keys(content).every(contentKey => content[contentKey].values && isObject(content[contentKey].values));
34
+ },
35
+ /*
36
+ * Old attribute format:
37
+ * content: {
38
+ * "V98q_x": {
39
+ * // The attribute values are now stored as a 'values' sub-property.
40
+ * values: { content: 'My content value' },
41
+ * // ... additional metadata, like the block name can be stored here.
42
+ * }
43
+ * }
44
+ *
45
+ * New attribute format:
46
+ * content: {
47
+ * "V98q_x": {
48
+ * content: 'My content value',
49
+ * }
50
+ * }
51
+ */
52
+ migrate(attributes) {
53
+ const {
54
+ content,
55
+ ...retainedAttributes
56
+ } = attributes;
57
+ if (content && Object.keys(content).length) {
58
+ const updatedContent = {
59
+ ...content
60
+ };
61
+ for (const contentKey in content) {
62
+ updatedContent[contentKey] = content[contentKey].values;
63
+ }
64
+ return {
65
+ ...retainedAttributes,
66
+ content: updatedContent
67
+ };
68
+ }
69
+ return attributes;
70
+ }
71
+ };
72
+
73
+ // v1: Rename the `overrides` attribute to the `content` attribute.
8
74
  const v1 = {
9
75
  attributes: {
10
76
  ref: {
@@ -31,16 +97,12 @@ const v1 = {
31
97
  * overrides: {
32
98
  * // An key is an id that represents a block.
33
99
  * // The values are the attribute values of the block.
34
- * "V98q_x": { content: 'dwefwefwefwe' }
100
+ * "V98q_x": { content: 'My content value' }
35
101
  * }
36
102
  *
37
103
  * New attribute format:
38
104
  * content: {
39
- * "V98q_x": {
40
- * // The attribute values are now stored as a 'values' sub-property.
41
- * values: { content: 'dwefwefwefwe' },
42
- * // ... additional metadata, like the block name can be stored here.
43
- * }
105
+ * "V98q_x": { content: 'My content value' }
44
106
  * }
45
107
  *
46
108
  */
@@ -51,9 +113,7 @@ const v1 = {
51
113
  } = attributes;
52
114
  const content = {};
53
115
  Object.keys(overrides).forEach(id => {
54
- content[id] = {
55
- values: overrides[id]
56
- };
116
+ content[id] = overrides[id];
57
117
  });
58
118
  return {
59
119
  ...retainedAttributes,
@@ -61,5 +121,5 @@ const v1 = {
61
121
  };
62
122
  }
63
123
  };
64
- var _default = exports.default = [v1];
124
+ var _default = exports.default = [v2, v1];
65
125
  //# sourceMappingURL=deprecated.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["v1","attributes","ref","type","overrides","supports","customClassName","html","inserter","renaming","isEligible","migrate","retainedAttributes","content","Object","keys","forEach","id","values","_default","exports","default"],"sources":["@wordpress/block-library/src/block/deprecated.js"],"sourcesContent":["// v1: Migrate and rename the `overrides` attribute to the `content` attribute.\nconst v1 = {\n\tattributes: {\n\t\tref: {\n\t\t\ttype: 'number',\n\t\t},\n\t\toverrides: {\n\t\t\ttype: 'object',\n\t\t},\n\t},\n\tsupports: {\n\t\tcustomClassName: false,\n\t\thtml: false,\n\t\tinserter: false,\n\t\trenaming: false,\n\t},\n\t// Force this deprecation to run whenever there's an `overrides` object.\n\tisEligible( { overrides } ) {\n\t\treturn !! overrides;\n\t},\n\t/*\n\t * Old attribute format:\n\t * overrides: {\n\t * // An key is an id that represents a block.\n\t * // The values are the attribute values of the block.\n\t * \"V98q_x\": { content: 'dwefwefwefwe' }\n\t * }\n\t *\n\t * New attribute format:\n\t * content: {\n\t * \"V98q_x\": {\n\t * \t \t\t// The attribute values are now stored as a 'values' sub-property.\n\t * values: { content: 'dwefwefwefwe' },\n\t * \t // ... additional metadata, like the block name can be stored here.\n\t * }\n\t * }\n\t *\n\t */\n\tmigrate( attributes ) {\n\t\tconst { overrides, ...retainedAttributes } = attributes;\n\n\t\tconst content = {};\n\n\t\tObject.keys( overrides ).forEach( ( id ) => {\n\t\t\tcontent[ id ] = {\n\t\t\t\tvalues: overrides[ id ],\n\t\t\t};\n\t\t} );\n\n\t\treturn {\n\t\t\t...retainedAttributes,\n\t\t\tcontent,\n\t\t};\n\t},\n};\n\nexport default [ v1 ];\n"],"mappings":";;;;;;AAAA;AACA,MAAMA,EAAE,GAAG;EACVC,UAAU,EAAE;IACXC,GAAG,EAAE;MACJC,IAAI,EAAE;IACP,CAAC;IACDC,SAAS,EAAE;MACVD,IAAI,EAAE;IACP;EACD,CAAC;EACDE,QAAQ,EAAE;IACTC,eAAe,EAAE,KAAK;IACtBC,IAAI,EAAE,KAAK;IACXC,QAAQ,EAAE,KAAK;IACfC,QAAQ,EAAE;EACX,CAAC;EACD;EACAC,UAAUA,CAAE;IAAEN;EAAU,CAAC,EAAG;IAC3B,OAAO,CAAC,CAAEA,SAAS;EACpB,CAAC;EACD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACCO,OAAOA,CAAEV,UAAU,EAAG;IACrB,MAAM;MAAEG,SAAS;MAAE,GAAGQ;IAAmB,CAAC,GAAGX,UAAU;IAEvD,MAAMY,OAAO,GAAG,CAAC,CAAC;IAElBC,MAAM,CAACC,IAAI,CAAEX,SAAU,CAAC,CAACY,OAAO,CAAIC,EAAE,IAAM;MAC3CJ,OAAO,CAAEI,EAAE,CAAE,GAAG;QACfC,MAAM,EAAEd,SAAS,CAAEa,EAAE;MACtB,CAAC;IACF,CAAE,CAAC;IAEH,OAAO;MACN,GAAGL,kBAAkB;MACrBC;IACD,CAAC;EACF;AACD,CAAC;AAAC,IAAAM,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa,CAAErB,EAAE,CAAE"}
1
+ {"version":3,"names":["isObject","obj","Array","isArray","v2","attributes","ref","type","content","supports","customClassName","html","inserter","renaming","isEligible","Object","keys","every","contentKey","values","migrate","retainedAttributes","length","updatedContent","v1","overrides","forEach","id","_default","exports","default"],"sources":["@wordpress/block-library/src/block/deprecated.js"],"sourcesContent":["const isObject = ( obj ) =>\n\ttypeof obj === 'object' && ! Array.isArray( obj ) && obj !== null;\n\n// v2: Migrate to a more condensed version of the 'content' attribute attribute.\nconst v2 = {\n\tattributes: {\n\t\tref: {\n\t\t\ttype: 'number',\n\t\t},\n\t\tcontent: {\n\t\t\ttype: 'object',\n\t\t},\n\t},\n\tsupports: {\n\t\tcustomClassName: false,\n\t\thtml: false,\n\t\tinserter: false,\n\t\trenaming: false,\n\t},\n\t// Force this deprecation to run whenever there's a values sub-property that's an object.\n\t//\n\t// This could fail in the future if a block ever has binding to a `values` attribute.\n\t// Some extra protection is added to ensure `values` is an object, but this only reduces\n\t// the likelihood, it doesn't solve it completely.\n\tisEligible( { content } ) {\n\t\treturn (\n\t\t\t!! content &&\n\t\t\tObject.keys( content ).every(\n\t\t\t\t( contentKey ) =>\n\t\t\t\t\tcontent[ contentKey ].values &&\n\t\t\t\t\tisObject( content[ contentKey ].values )\n\t\t\t)\n\t\t);\n\t},\n\t/*\n\t * Old attribute format:\n\t * content: {\n\t * \"V98q_x\": {\n\t * \t \t\t// The attribute values are now stored as a 'values' sub-property.\n\t * values: { content: 'My content value' },\n\t * \t // ... additional metadata, like the block name can be stored here.\n\t * }\n\t * }\n\t *\n\t * New attribute format:\n\t * content: {\n\t * \"V98q_x\": {\n\t * content: 'My content value',\n\t * }\n\t * }\n\t */\n\tmigrate( attributes ) {\n\t\tconst { content, ...retainedAttributes } = attributes;\n\n\t\tif ( content && Object.keys( content ).length ) {\n\t\t\tconst updatedContent = { ...content };\n\n\t\t\tfor ( const contentKey in content ) {\n\t\t\t\tupdatedContent[ contentKey ] = content[ contentKey ].values;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...retainedAttributes,\n\t\t\t\tcontent: updatedContent,\n\t\t\t};\n\t\t}\n\n\t\treturn attributes;\n\t},\n};\n\n// v1: Rename the `overrides` attribute to the `content` attribute.\nconst v1 = {\n\tattributes: {\n\t\tref: {\n\t\t\ttype: 'number',\n\t\t},\n\t\toverrides: {\n\t\t\ttype: 'object',\n\t\t},\n\t},\n\tsupports: {\n\t\tcustomClassName: false,\n\t\thtml: false,\n\t\tinserter: false,\n\t\trenaming: false,\n\t},\n\t// Force this deprecation to run whenever there's an `overrides` object.\n\tisEligible( { overrides } ) {\n\t\treturn !! overrides;\n\t},\n\t/*\n\t * Old attribute format:\n\t * overrides: {\n\t * // An key is an id that represents a block.\n\t * // The values are the attribute values of the block.\n\t * \"V98q_x\": { content: 'My content value' }\n\t * }\n\t *\n\t * New attribute format:\n\t * content: {\n\t * \"V98q_x\": { content: 'My content value' }\n\t * }\n\t *\n\t */\n\tmigrate( attributes ) {\n\t\tconst { overrides, ...retainedAttributes } = attributes;\n\n\t\tconst content = {};\n\n\t\tObject.keys( overrides ).forEach( ( id ) => {\n\t\t\tcontent[ id ] = overrides[ id ];\n\t\t} );\n\n\t\treturn {\n\t\t\t...retainedAttributes,\n\t\t\tcontent,\n\t\t};\n\t},\n};\n\nexport default [ v2, v1 ];\n"],"mappings":";;;;;;AAAA,MAAMA,QAAQ,GAAKC,GAAG,IACrB,OAAOA,GAAG,KAAK,QAAQ,IAAI,CAAEC,KAAK,CAACC,OAAO,CAAEF,GAAI,CAAC,IAAIA,GAAG,KAAK,IAAI;;AAElE;AACA,MAAMG,EAAE,GAAG;EACVC,UAAU,EAAE;IACXC,GAAG,EAAE;MACJC,IAAI,EAAE;IACP,CAAC;IACDC,OAAO,EAAE;MACRD,IAAI,EAAE;IACP;EACD,CAAC;EACDE,QAAQ,EAAE;IACTC,eAAe,EAAE,KAAK;IACtBC,IAAI,EAAE,KAAK;IACXC,QAAQ,EAAE,KAAK;IACfC,QAAQ,EAAE;EACX,CAAC;EACD;EACA;EACA;EACA;EACA;EACAC,UAAUA,CAAE;IAAEN;EAAQ,CAAC,EAAG;IACzB,OACC,CAAC,CAAEA,OAAO,IACVO,MAAM,CAACC,IAAI,CAAER,OAAQ,CAAC,CAACS,KAAK,CACzBC,UAAU,IACXV,OAAO,CAAEU,UAAU,CAAE,CAACC,MAAM,IAC5BnB,QAAQ,CAAEQ,OAAO,CAAEU,UAAU,CAAE,CAACC,MAAO,CACzC,CAAC;EAEH,CAAC;EACD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACCC,OAAOA,CAAEf,UAAU,EAAG;IACrB,MAAM;MAAEG,OAAO;MAAE,GAAGa;IAAmB,CAAC,GAAGhB,UAAU;IAErD,IAAKG,OAAO,IAAIO,MAAM,CAACC,IAAI,CAAER,OAAQ,CAAC,CAACc,MAAM,EAAG;MAC/C,MAAMC,cAAc,GAAG;QAAE,GAAGf;MAAQ,CAAC;MAErC,KAAM,MAAMU,UAAU,IAAIV,OAAO,EAAG;QACnCe,cAAc,CAAEL,UAAU,CAAE,GAAGV,OAAO,CAAEU,UAAU,CAAE,CAACC,MAAM;MAC5D;MAEA,OAAO;QACN,GAAGE,kBAAkB;QACrBb,OAAO,EAAEe;MACV,CAAC;IACF;IAEA,OAAOlB,UAAU;EAClB;AACD,CAAC;;AAED;AACA,MAAMmB,EAAE,GAAG;EACVnB,UAAU,EAAE;IACXC,GAAG,EAAE;MACJC,IAAI,EAAE;IACP,CAAC;IACDkB,SAAS,EAAE;MACVlB,IAAI,EAAE;IACP;EACD,CAAC;EACDE,QAAQ,EAAE;IACTC,eAAe,EAAE,KAAK;IACtBC,IAAI,EAAE,KAAK;IACXC,QAAQ,EAAE,KAAK;IACfC,QAAQ,EAAE;EACX,CAAC;EACD;EACAC,UAAUA,CAAE;IAAEW;EAAU,CAAC,EAAG;IAC3B,OAAO,CAAC,CAAEA,SAAS;EACpB,CAAC;EACD;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACCL,OAAOA,CAAEf,UAAU,EAAG;IACrB,MAAM;MAAEoB,SAAS;MAAE,GAAGJ;IAAmB,CAAC,GAAGhB,UAAU;IAEvD,MAAMG,OAAO,GAAG,CAAC,CAAC;IAElBO,MAAM,CAACC,IAAI,CAAES,SAAU,CAAC,CAACC,OAAO,CAAIC,EAAE,IAAM;MAC3CnB,OAAO,CAAEmB,EAAE,CAAE,GAAGF,SAAS,CAAEE,EAAE,CAAE;IAChC,CAAE,CAAC;IAEH,OAAO;MACN,GAAGN,kBAAkB;MACrBb;IACD,CAAC;EACF;AACD,CAAC;AAAC,IAAAoB,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEa,CAAE1B,EAAE,EAAEoB,EAAE,CAAE"}
@@ -37,6 +37,23 @@ const {
37
37
  PARTIAL_SYNCING_SUPPORTED_BLOCKS
38
38
  } = (0, _lockUnlock.unlock)(_patterns.privateApis);
39
39
  const fullAlignments = ['full', 'wide', 'left', 'right'];
40
+ function getLegacyIdMap(blocks, content, nameCount = {}) {
41
+ let idToClientIdMap = {};
42
+ for (const block of blocks) {
43
+ if (block?.innerBlocks?.length) {
44
+ idToClientIdMap = {
45
+ ...idToClientIdMap,
46
+ ...getLegacyIdMap(block.innerBlocks, content, nameCount)
47
+ };
48
+ }
49
+ const id = block.attributes.metadata?.id;
50
+ const clientId = block.clientId;
51
+ if (id && content?.[id]) {
52
+ idToClientIdMap[clientId] = id;
53
+ }
54
+ }
55
+ return idToClientIdMap;
56
+ }
40
57
  const useInferredLayout = (blocks, parentLayout) => {
41
58
  const initialInferredAlignmentRef = (0, _element.useRef)();
42
59
  return (0, _element.useMemo)(() => {
@@ -73,23 +90,26 @@ function hasOverridableBlocks(blocks) {
73
90
  function getOverridableAttributes(block) {
74
91
  return Object.entries(block.attributes.metadata.bindings).filter(([, binding]) => binding.source === 'core/pattern-overrides').map(([attributeKey]) => attributeKey);
75
92
  }
76
- function applyInitialContentValuesToInnerBlocks(blocks, content = {}, defaultValues) {
93
+ function applyInitialContentValuesToInnerBlocks(blocks, content = {}, defaultValues, legacyIdMap) {
77
94
  return blocks.map(block => {
78
- const innerBlocks = applyInitialContentValuesToInnerBlocks(block.innerBlocks, content, defaultValues);
79
- const blockId = block.attributes.metadata?.id;
80
- if (!hasOverridableAttributes(block) || !blockId) return {
81
- ...block,
82
- innerBlocks
83
- };
95
+ var _legacyIdMap$block$cl;
96
+ const innerBlocks = applyInitialContentValuesToInnerBlocks(block.innerBlocks, content, defaultValues, legacyIdMap);
97
+ const metadataName = (_legacyIdMap$block$cl = legacyIdMap?.[block.clientId]) !== null && _legacyIdMap$block$cl !== void 0 ? _legacyIdMap$block$cl : block.attributes.metadata?.name;
98
+ if (!metadataName || !hasOverridableAttributes(block)) {
99
+ return {
100
+ ...block,
101
+ innerBlocks
102
+ };
103
+ }
84
104
  const attributes = getOverridableAttributes(block);
85
105
  const newAttributes = {
86
106
  ...block.attributes
87
107
  };
88
108
  for (const attributeKey of attributes) {
89
- var _defaultValues$blockI;
90
- (_defaultValues$blockI = defaultValues[blockId]) !== null && _defaultValues$blockI !== void 0 ? _defaultValues$blockI : defaultValues[blockId] = {};
91
- defaultValues[blockId][attributeKey] = block.attributes[attributeKey];
92
- const contentValues = content[blockId]?.values;
109
+ var _defaultValues$metada;
110
+ (_defaultValues$metada = defaultValues[metadataName]) !== null && _defaultValues$metada !== void 0 ? _defaultValues$metada : defaultValues[metadataName] = {};
111
+ defaultValues[metadataName][attributeKey] = block.attributes[attributeKey];
112
+ const contentValues = content[metadataName];
93
113
  if (contentValues?.[attributeKey] !== undefined) {
94
114
  newAttributes[attributeKey] = contentValues[attributeKey];
95
115
  }
@@ -107,25 +127,27 @@ function isAttributeEqual(attribute1, attribute2) {
107
127
  }
108
128
  return attribute1 === attribute2;
109
129
  }
110
- function getContentValuesFromInnerBlocks(blocks, defaultValues) {
130
+ function getContentValuesFromInnerBlocks(blocks, defaultValues, legacyIdMap) {
111
131
  /** @type {Record<string, { values: Record<string, unknown>}>} */
112
132
  const content = {};
113
133
  for (const block of blocks) {
134
+ var _legacyIdMap$block$cl2;
114
135
  if (block.name === _index.name) continue;
115
- Object.assign(content, getContentValuesFromInnerBlocks(block.innerBlocks, defaultValues));
116
- const blockId = block.attributes.metadata?.id;
117
- if (!hasOverridableAttributes(block) || !blockId) continue;
136
+ if (block.innerBlocks.length) {
137
+ Object.assign(content, getContentValuesFromInnerBlocks(block.innerBlocks, defaultValues, legacyIdMap));
138
+ }
139
+ const metadataName = (_legacyIdMap$block$cl2 = legacyIdMap?.[block.clientId]) !== null && _legacyIdMap$block$cl2 !== void 0 ? _legacyIdMap$block$cl2 : block.attributes.metadata?.name;
140
+ if (!metadataName || !hasOverridableAttributes(block)) {
141
+ continue;
142
+ }
118
143
  const attributes = getOverridableAttributes(block);
119
144
  for (const attributeKey of attributes) {
120
- if (!isAttributeEqual(block.attributes[attributeKey], defaultValues[blockId][attributeKey])) {
121
- var _content$blockId;
122
- (_content$blockId = content[blockId]) !== null && _content$blockId !== void 0 ? _content$blockId : content[blockId] = {
123
- values: {},
124
- blockName: block.name
125
- };
145
+ if (!isAttributeEqual(block.attributes[attributeKey], defaultValues?.[metadataName]?.[attributeKey])) {
146
+ var _content$metadataName;
147
+ (_content$metadataName = content[metadataName]) !== null && _content$metadataName !== void 0 ? _content$metadataName : content[metadataName] = {};
126
148
  // TODO: We need a way to represent `undefined` in the serialized overrides.
127
149
  // Also see: https://github.com/WordPress/gutenberg/pull/57249#discussion_r1452987871
128
- content[blockId].values[attributeKey] = block.attributes[attributeKey] === undefined ?
150
+ content[metadataName][attributeKey] = block.attributes[attributeKey] === undefined ?
129
151
  // TODO: We use an empty string to represent undefined for now until
130
152
  // we support a richer format for overrides and the block binding API.
131
153
  // Currently only the `linkTarget` attribute of `core/button` is affected.
@@ -218,16 +240,19 @@ function ReusableBlockEdit({
218
240
  (_editedRecord$blocks$ = editedRecord.blocks?.map(block => (0, _blocks.cloneBlock)(block))) !== null && _editedRecord$blocks$ !== void 0 ? _editedRecord$blocks$ : editedRecord.content && typeof editedRecord.content !== 'function' ? (0, _blocks.parse)(editedRecord.content) : []
219
241
  );
220
242
  }, [editedRecord.blocks, editedRecord.content]);
243
+ const legacyIdMap = (0, _element.useRef)({});
221
244
 
222
245
  // Apply the initial overrides from the pattern block to the inner blocks.
223
246
  (0, _element.useEffect)(() => {
247
+ // Build a map of clientIds to the old nano id system to provide back compat.
248
+ legacyIdMap.current = getLegacyIdMap(initialBlocks, initialContent.current);
224
249
  defaultContent.current = {};
225
250
  const originalEditingMode = getBlockEditingMode(patternClientId);
226
251
  // Replace the contents of the blocks with the overrides.
227
252
  registry.batch(() => {
228
253
  setBlockEditingMode(patternClientId, 'default');
229
254
  syncDerivedUpdates(() => {
230
- replaceInnerBlocks(patternClientId, applyInitialContentValuesToInnerBlocks(initialBlocks, initialContent.current, defaultContent.current));
255
+ replaceInnerBlocks(patternClientId, applyInitialContentValuesToInnerBlocks(initialBlocks, initialContent.current, defaultContent.current, legacyIdMap.current));
231
256
  });
232
257
  setBlockEditingMode(patternClientId, originalEditingMode);
233
258
  });
@@ -263,7 +288,7 @@ function ReusableBlockEdit({
263
288
  prevBlocks = blocks;
264
289
  syncDerivedUpdates(() => {
265
290
  setAttributes({
266
- content: getContentValuesFromInnerBlocks(blocks, defaultContent.current)
291
+ content: getContentValuesFromInnerBlocks(blocks, defaultContent.current, legacyIdMap.current)
267
292
  });
268
293
  });
269
294
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_classnames","_interopRequireDefault","require","_data","_element","_coreData","_components","_i18n","_blockEditor","_patterns","_blocks","_richText","_index","_lockUnlock","useLayoutClasses","unlock","blockEditorPrivateApis","PARTIAL_SYNCING_SUPPORTED_BLOCKS","patternsPrivateApis","fullAlignments","useInferredLayout","blocks","parentLayout","initialInferredAlignmentRef","useRef","useMemo","length","alignment","current","undefined","isConstrained","type","hasFullAlignment","some","block","includes","attributes","align","layout","hasOverridableAttributes","Object","keys","name","metadata","bindings","values","binding","source","hasOverridableBlocks","innerBlocks","getOverridableAttributes","entries","filter","map","attributeKey","applyInitialContentValuesToInnerBlocks","content","defaultValues","blockId","id","newAttributes","_defaultValues$blockI","contentValues","isAttributeEqual","attribute1","attribute2","RichTextData","toString","getContentValuesFromInnerBlocks","patternBlockName","assign","_content$blockId","blockName","setBlockEditMode","setEditMode","mode","forEach","editMode","clientId","ReusableBlockEdit","ref","__unstableParentLayout","patternClientId","setAttributes","registry","useRegistry","hasAlreadyRendered","useHasRecursion","record","editedRecord","hasResolved","useEntityRecord","isMissing","initialContent","defaultContent","replaceInnerBlocks","__unstableMarkNextChangeAsNotPersistent","setBlockEditingMode","useDispatch","blockEditorStore","syncDerivedUpdates","userCanEdit","getBlockEditingMode","onNavigateToEntityRecord","editingMode","useSelect","select","canUser","coreStore","getBlocks","getSettings","_getBlockEditingMode","canEdit","useEffect","canOverrideBlocks","initialBlocks","_editedRecord$blocks$","cloneBlock","parse","originalEditingMode","batch","layoutClasses","blockProps","useBlockProps","className","classnames","innerBlocksProps","useInnerBlocksProps","templateLock","renderAppender","InnerBlocks","ButtonBlockAppender","prevBlocks","subscribe","handleEditOriginal","postId","postType","resetContent","children","_react","createElement","Warning","__","Placeholder","Spinner","RecursionProvider","uniqueId","BlockControls","ToolbarGroup","ToolbarButton","onClick","disabled","__experimentalIsFocusable"],"sources":["@wordpress/block-library/src/block/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useRegistry, useSelect, useDispatch } from '@wordpress/data';\nimport { useRef, useMemo, useEffect } from '@wordpress/element';\nimport { useEntityRecord, store as coreStore } from '@wordpress/core-data';\nimport {\n\tPlaceholder,\n\tSpinner,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseInnerBlocksProps,\n\tRecursionProvider,\n\tuseHasRecursion,\n\tInnerBlocks,\n\tuseBlockProps,\n\tWarning,\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\nimport { parse, cloneBlock } from '@wordpress/blocks';\nimport { RichTextData } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport { name as patternBlockName } from './index';\nimport { unlock } from '../lock-unlock';\n\nconst { useLayoutClasses } = unlock( blockEditorPrivateApis );\nconst { PARTIAL_SYNCING_SUPPORTED_BLOCKS } = unlock( patternsPrivateApis );\n\nconst fullAlignments = [ 'full', 'wide', 'left', 'right' ];\n\nconst useInferredLayout = ( blocks, parentLayout ) => {\n\tconst initialInferredAlignmentRef = useRef();\n\n\treturn useMemo( () => {\n\t\t// Exit early if the pattern's blocks haven't loaded yet.\n\t\tif ( ! blocks?.length ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tlet alignment = initialInferredAlignmentRef.current;\n\n\t\t// Only track the initial alignment so that temporarily removed\n\t\t// alignments can be reapplied.\n\t\tif ( alignment === undefined ) {\n\t\t\tconst isConstrained = parentLayout?.type === 'constrained';\n\t\t\tconst hasFullAlignment = blocks.some( ( block ) =>\n\t\t\t\tfullAlignments.includes( block.attributes.align )\n\t\t\t);\n\n\t\t\talignment = isConstrained && hasFullAlignment ? 'full' : null;\n\t\t\tinitialInferredAlignmentRef.current = alignment;\n\t\t}\n\n\t\tconst layout = alignment ? parentLayout : undefined;\n\n\t\treturn { alignment, layout };\n\t}, [ blocks, parentLayout ] );\n};\n\nfunction hasOverridableAttributes( block ) {\n\treturn (\n\t\tObject.keys( PARTIAL_SYNCING_SUPPORTED_BLOCKS ).includes(\n\t\t\tblock.name\n\t\t) &&\n\t\t!! block.attributes.metadata?.bindings &&\n\t\tObject.values( block.attributes.metadata.bindings ).some(\n\t\t\t( binding ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t);\n}\n\nfunction hasOverridableBlocks( blocks ) {\n\treturn blocks.some( ( block ) => {\n\t\tif ( hasOverridableAttributes( block ) ) return true;\n\t\treturn hasOverridableBlocks( block.innerBlocks );\n\t} );\n}\n\nfunction getOverridableAttributes( block ) {\n\treturn Object.entries( block.attributes.metadata.bindings )\n\t\t.filter(\n\t\t\t( [ , binding ] ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t\t.map( ( [ attributeKey ] ) => attributeKey );\n}\n\nfunction applyInitialContentValuesToInnerBlocks(\n\tblocks,\n\tcontent = {},\n\tdefaultValues\n) {\n\treturn blocks.map( ( block ) => {\n\t\tconst innerBlocks = applyInitialContentValuesToInnerBlocks(\n\t\t\tblock.innerBlocks,\n\t\t\tcontent,\n\t\t\tdefaultValues\n\t\t);\n\t\tconst blockId = block.attributes.metadata?.id;\n\t\tif ( ! hasOverridableAttributes( block ) || ! blockId )\n\t\t\treturn { ...block, innerBlocks };\n\t\tconst attributes = getOverridableAttributes( block );\n\t\tconst newAttributes = { ...block.attributes };\n\t\tfor ( const attributeKey of attributes ) {\n\t\t\tdefaultValues[ blockId ] ??= {};\n\t\t\tdefaultValues[ blockId ][ attributeKey ] =\n\t\t\t\tblock.attributes[ attributeKey ];\n\n\t\t\tconst contentValues = content[ blockId ]?.values;\n\t\t\tif ( contentValues?.[ attributeKey ] !== undefined ) {\n\t\t\t\tnewAttributes[ attributeKey ] = contentValues[ attributeKey ];\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t...block,\n\t\t\tattributes: newAttributes,\n\t\t\tinnerBlocks,\n\t\t};\n\t} );\n}\n\nfunction isAttributeEqual( attribute1, attribute2 ) {\n\tif (\n\t\tattribute1 instanceof RichTextData &&\n\t\tattribute2 instanceof RichTextData\n\t) {\n\t\treturn attribute1.toString() === attribute2.toString();\n\t}\n\treturn attribute1 === attribute2;\n}\n\nfunction getContentValuesFromInnerBlocks( blocks, defaultValues ) {\n\t/** @type {Record<string, { values: Record<string, unknown>}>} */\n\tconst content = {};\n\tfor ( const block of blocks ) {\n\t\tif ( block.name === patternBlockName ) continue;\n\t\tObject.assign(\n\t\t\tcontent,\n\t\t\tgetContentValuesFromInnerBlocks( block.innerBlocks, defaultValues )\n\t\t);\n\t\tconst blockId = block.attributes.metadata?.id;\n\t\tif ( ! hasOverridableAttributes( block ) || ! blockId ) continue;\n\t\tconst attributes = getOverridableAttributes( block );\n\t\tfor ( const attributeKey of attributes ) {\n\t\t\tif (\n\t\t\t\t! isAttributeEqual(\n\t\t\t\t\tblock.attributes[ attributeKey ],\n\t\t\t\t\tdefaultValues[ blockId ][ attributeKey ]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcontent[ blockId ] ??= { values: {}, blockName: block.name };\n\t\t\t\t// TODO: We need a way to represent `undefined` in the serialized overrides.\n\t\t\t\t// Also see: https://github.com/WordPress/gutenberg/pull/57249#discussion_r1452987871\n\t\t\t\tcontent[ blockId ].values[ attributeKey ] =\n\t\t\t\t\tblock.attributes[ attributeKey ] === undefined\n\t\t\t\t\t\t? // TODO: We use an empty string to represent undefined for now until\n\t\t\t\t\t\t // we support a richer format for overrides and the block binding API.\n\t\t\t\t\t\t // Currently only the `linkTarget` attribute of `core/button` is affected.\n\t\t\t\t\t\t ''\n\t\t\t\t\t\t: block.attributes[ attributeKey ];\n\t\t\t}\n\t\t}\n\t}\n\treturn Object.keys( content ).length > 0 ? content : undefined;\n}\n\nfunction setBlockEditMode( setEditMode, blocks, mode ) {\n\tblocks.forEach( ( block ) => {\n\t\tconst editMode =\n\t\t\tmode ||\n\t\t\t( hasOverridableAttributes( block ) ? 'contentOnly' : 'disabled' );\n\t\tsetEditMode( block.clientId, editMode );\n\n\t\tsetBlockEditMode(\n\t\t\tsetEditMode,\n\t\t\tblock.innerBlocks,\n\t\t\t// Disable editing for nested patterns.\n\t\t\tblock.name === patternBlockName ? 'disabled' : mode\n\t\t);\n\t} );\n}\n\nexport default function ReusableBlockEdit( {\n\tname,\n\tattributes: { ref, content },\n\t__unstableParentLayout: parentLayout,\n\tclientId: patternClientId,\n\tsetAttributes,\n} ) {\n\tconst registry = useRegistry();\n\tconst hasAlreadyRendered = useHasRecursion( ref );\n\tconst { record, editedRecord, hasResolved } = useEntityRecord(\n\t\t'postType',\n\t\t'wp_block',\n\t\tref\n\t);\n\tconst isMissing = hasResolved && ! record;\n\n\t// The initial value of the `content` attribute.\n\tconst initialContent = useRef( content );\n\n\t// The default content values from the original pattern for overridable attributes.\n\t// Set by the `applyInitialContentValuesToInnerBlocks` function.\n\tconst defaultContent = useRef( {} );\n\n\tconst {\n\t\treplaceInnerBlocks,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tsetBlockEditingMode,\n\t} = useDispatch( blockEditorStore );\n\tconst { syncDerivedUpdates } = unlock( useDispatch( blockEditorStore ) );\n\n\tconst {\n\t\tinnerBlocks,\n\t\tuserCanEdit,\n\t\tgetBlockEditingMode,\n\t\tonNavigateToEntityRecord,\n\t\teditingMode,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst {\n\t\t\t\tgetBlocks,\n\t\t\t\tgetSettings,\n\t\t\t\tgetBlockEditingMode: _getBlockEditingMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst blocks = getBlocks( patternClientId );\n\t\t\tconst canEdit = canUser( 'update', 'blocks', ref );\n\n\t\t\t// For editing link to the site editor if the theme and user permissions support it.\n\t\t\treturn {\n\t\t\t\tinnerBlocks: blocks,\n\t\t\t\tuserCanEdit: canEdit,\n\t\t\t\tgetBlockEditingMode: _getBlockEditingMode,\n\t\t\t\tonNavigateToEntityRecord:\n\t\t\t\t\tgetSettings().onNavigateToEntityRecord,\n\t\t\t\teditingMode: _getBlockEditingMode( patternClientId ),\n\t\t\t};\n\t\t},\n\t\t[ patternClientId, ref ]\n\t);\n\n\t// Sync the editing mode of the pattern block with the inner blocks.\n\tuseEffect( () => {\n\t\tsetBlockEditMode(\n\t\t\tsetBlockEditingMode,\n\t\t\tinnerBlocks,\n\t\t\t// Disable editing if the pattern itself is disabled.\n\t\t\teditingMode === 'disabled' ? 'disabled' : undefined\n\t\t);\n\t}, [ editingMode, innerBlocks, setBlockEditingMode ] );\n\n\tconst canOverrideBlocks = useMemo(\n\t\t() => hasOverridableBlocks( innerBlocks ),\n\t\t[ innerBlocks ]\n\t);\n\n\tconst initialBlocks = useMemo(\n\t\t() =>\n\t\t\t// Clone the blocks to generate new client IDs.\n\t\t\teditedRecord.blocks?.map( ( block ) => cloneBlock( block ) ) ??\n\t\t\t( editedRecord.content && typeof editedRecord.content !== 'function'\n\t\t\t\t? parse( editedRecord.content )\n\t\t\t\t: [] ),\n\t\t[ editedRecord.blocks, editedRecord.content ]\n\t);\n\n\t// Apply the initial overrides from the pattern block to the inner blocks.\n\tuseEffect( () => {\n\t\tdefaultContent.current = {};\n\t\tconst originalEditingMode = getBlockEditingMode( patternClientId );\n\t\t// Replace the contents of the blocks with the overrides.\n\t\tregistry.batch( () => {\n\t\t\tsetBlockEditingMode( patternClientId, 'default' );\n\t\t\tsyncDerivedUpdates( () => {\n\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\tpatternClientId,\n\t\t\t\t\tapplyInitialContentValuesToInnerBlocks(\n\t\t\t\t\t\tinitialBlocks,\n\t\t\t\t\t\tinitialContent.current,\n\t\t\t\t\t\tdefaultContent.current\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} );\n\t\t\tsetBlockEditingMode( patternClientId, originalEditingMode );\n\t\t} );\n\t}, [\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tpatternClientId,\n\t\tinitialBlocks,\n\t\treplaceInnerBlocks,\n\t\tregistry,\n\t\tgetBlockEditingMode,\n\t\tsetBlockEditingMode,\n\t\tsyncDerivedUpdates,\n\t] );\n\n\tconst { alignment, layout } = useInferredLayout(\n\t\tinnerBlocks,\n\t\tparentLayout\n\t);\n\tconst layoutClasses = useLayoutClasses( { layout }, name );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames(\n\t\t\t'block-library-block__reusable-block-container',\n\t\t\tlayout && layoutClasses,\n\t\t\t{ [ `align${ alignment }` ]: alignment }\n\t\t),\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplateLock: 'all',\n\t\tlayout,\n\t\trenderAppender: innerBlocks?.length\n\t\t\t? undefined\n\t\t\t: InnerBlocks.ButtonBlockAppender,\n\t} );\n\n\t// Sync the `content` attribute from the updated blocks to the pattern block.\n\t// `syncDerivedUpdates` is used here to avoid creating an additional undo level.\n\tuseEffect( () => {\n\t\tconst { getBlocks } = registry.select( blockEditorStore );\n\t\tlet prevBlocks = getBlocks( patternClientId );\n\t\treturn registry.subscribe( () => {\n\t\t\tconst blocks = getBlocks( patternClientId );\n\t\t\tif ( blocks !== prevBlocks ) {\n\t\t\t\tprevBlocks = blocks;\n\t\t\t\tsyncDerivedUpdates( () => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\tcontent: getContentValuesFromInnerBlocks(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\tdefaultContent.current\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}, blockEditorStore );\n\t}, [ syncDerivedUpdates, patternClientId, registry, setAttributes ] );\n\n\tconst handleEditOriginal = () => {\n\t\tonNavigateToEntityRecord( {\n\t\t\tpostId: ref,\n\t\t\tpostType: 'wp_block',\n\t\t} );\n\t};\n\n\tconst resetContent = () => {\n\t\tif ( content ) {\n\t\t\treplaceInnerBlocks( patternClientId, initialBlocks );\n\t\t}\n\t};\n\n\tlet children = null;\n\n\tif ( hasAlreadyRendered ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( isMissing ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block has been deleted or is unavailable.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( ! hasResolved ) {\n\t\tchildren = (\n\t\t\t<Placeholder>\n\t\t\t\t<Spinner />\n\t\t\t</Placeholder>\n\t\t);\n\t}\n\n\treturn (\n\t\t<RecursionProvider uniqueId={ ref }>\n\t\t\t{ userCanEdit && onNavigateToEntityRecord && (\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ToolbarButton onClick={ handleEditOriginal }>\n\t\t\t\t\t\t\t{ __( 'Edit original' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\n\t\t\t{ canOverrideBlocks && (\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tonClick={ resetContent }\n\t\t\t\t\t\t\tdisabled={ ! content }\n\t\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\n\t\t\t{ children === null ? (\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t) : (\n\t\t\t\t<div { ...blockProps }>{ children }</div>\n\t\t\t) }\n\t\t</RecursionProvider>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_classnames","_interopRequireDefault","require","_data","_element","_coreData","_components","_i18n","_blockEditor","_patterns","_blocks","_richText","_index","_lockUnlock","useLayoutClasses","unlock","blockEditorPrivateApis","PARTIAL_SYNCING_SUPPORTED_BLOCKS","patternsPrivateApis","fullAlignments","getLegacyIdMap","blocks","content","nameCount","idToClientIdMap","block","innerBlocks","length","id","attributes","metadata","clientId","useInferredLayout","parentLayout","initialInferredAlignmentRef","useRef","useMemo","alignment","current","undefined","isConstrained","type","hasFullAlignment","some","includes","align","layout","hasOverridableAttributes","Object","keys","name","bindings","values","binding","source","hasOverridableBlocks","getOverridableAttributes","entries","filter","map","attributeKey","applyInitialContentValuesToInnerBlocks","defaultValues","legacyIdMap","_legacyIdMap$block$cl","metadataName","newAttributes","_defaultValues$metada","contentValues","isAttributeEqual","attribute1","attribute2","RichTextData","toString","getContentValuesFromInnerBlocks","_legacyIdMap$block$cl2","patternBlockName","assign","_content$metadataName","setBlockEditMode","setEditMode","mode","forEach","editMode","ReusableBlockEdit","ref","__unstableParentLayout","patternClientId","setAttributes","registry","useRegistry","hasAlreadyRendered","useHasRecursion","record","editedRecord","hasResolved","useEntityRecord","isMissing","initialContent","defaultContent","replaceInnerBlocks","__unstableMarkNextChangeAsNotPersistent","setBlockEditingMode","useDispatch","blockEditorStore","syncDerivedUpdates","userCanEdit","getBlockEditingMode","onNavigateToEntityRecord","editingMode","useSelect","select","canUser","coreStore","getBlocks","getSettings","_getBlockEditingMode","canEdit","useEffect","canOverrideBlocks","initialBlocks","_editedRecord$blocks$","cloneBlock","parse","originalEditingMode","batch","layoutClasses","blockProps","useBlockProps","className","classnames","innerBlocksProps","useInnerBlocksProps","templateLock","renderAppender","InnerBlocks","ButtonBlockAppender","prevBlocks","subscribe","handleEditOriginal","postId","postType","resetContent","children","_react","createElement","Warning","__","Placeholder","Spinner","RecursionProvider","uniqueId","BlockControls","ToolbarGroup","ToolbarButton","onClick","disabled","__experimentalIsFocusable"],"sources":["@wordpress/block-library/src/block/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useRegistry, useSelect, useDispatch } from '@wordpress/data';\nimport { useRef, useMemo, useEffect } from '@wordpress/element';\nimport { useEntityRecord, store as coreStore } from '@wordpress/core-data';\nimport {\n\tPlaceholder,\n\tSpinner,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseInnerBlocksProps,\n\tRecursionProvider,\n\tuseHasRecursion,\n\tInnerBlocks,\n\tuseBlockProps,\n\tWarning,\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\nimport { parse, cloneBlock } from '@wordpress/blocks';\nimport { RichTextData } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport { name as patternBlockName } from './index';\nimport { unlock } from '../lock-unlock';\n\nconst { useLayoutClasses } = unlock( blockEditorPrivateApis );\nconst { PARTIAL_SYNCING_SUPPORTED_BLOCKS } = unlock( patternsPrivateApis );\n\nconst fullAlignments = [ 'full', 'wide', 'left', 'right' ];\n\nfunction getLegacyIdMap( blocks, content, nameCount = {} ) {\n\tlet idToClientIdMap = {};\n\tfor ( const block of blocks ) {\n\t\tif ( block?.innerBlocks?.length ) {\n\t\t\tidToClientIdMap = {\n\t\t\t\t...idToClientIdMap,\n\t\t\t\t...getLegacyIdMap( block.innerBlocks, content, nameCount ),\n\t\t\t};\n\t\t}\n\n\t\tconst id = block.attributes.metadata?.id;\n\t\tconst clientId = block.clientId;\n\t\tif ( id && content?.[ id ] ) {\n\t\t\tidToClientIdMap[ clientId ] = id;\n\t\t}\n\t}\n\treturn idToClientIdMap;\n}\n\nconst useInferredLayout = ( blocks, parentLayout ) => {\n\tconst initialInferredAlignmentRef = useRef();\n\n\treturn useMemo( () => {\n\t\t// Exit early if the pattern's blocks haven't loaded yet.\n\t\tif ( ! blocks?.length ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tlet alignment = initialInferredAlignmentRef.current;\n\n\t\t// Only track the initial alignment so that temporarily removed\n\t\t// alignments can be reapplied.\n\t\tif ( alignment === undefined ) {\n\t\t\tconst isConstrained = parentLayout?.type === 'constrained';\n\t\t\tconst hasFullAlignment = blocks.some( ( block ) =>\n\t\t\t\tfullAlignments.includes( block.attributes.align )\n\t\t\t);\n\n\t\t\talignment = isConstrained && hasFullAlignment ? 'full' : null;\n\t\t\tinitialInferredAlignmentRef.current = alignment;\n\t\t}\n\n\t\tconst layout = alignment ? parentLayout : undefined;\n\n\t\treturn { alignment, layout };\n\t}, [ blocks, parentLayout ] );\n};\n\nfunction hasOverridableAttributes( block ) {\n\treturn (\n\t\tObject.keys( PARTIAL_SYNCING_SUPPORTED_BLOCKS ).includes(\n\t\t\tblock.name\n\t\t) &&\n\t\t!! block.attributes.metadata?.bindings &&\n\t\tObject.values( block.attributes.metadata.bindings ).some(\n\t\t\t( binding ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t);\n}\n\nfunction hasOverridableBlocks( blocks ) {\n\treturn blocks.some( ( block ) => {\n\t\tif ( hasOverridableAttributes( block ) ) return true;\n\t\treturn hasOverridableBlocks( block.innerBlocks );\n\t} );\n}\n\nfunction getOverridableAttributes( block ) {\n\treturn Object.entries( block.attributes.metadata.bindings )\n\t\t.filter(\n\t\t\t( [ , binding ] ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t\t.map( ( [ attributeKey ] ) => attributeKey );\n}\n\nfunction applyInitialContentValuesToInnerBlocks(\n\tblocks,\n\tcontent = {},\n\tdefaultValues,\n\tlegacyIdMap\n) {\n\treturn blocks.map( ( block ) => {\n\t\tconst innerBlocks = applyInitialContentValuesToInnerBlocks(\n\t\t\tblock.innerBlocks,\n\t\t\tcontent,\n\t\t\tdefaultValues,\n\t\t\tlegacyIdMap\n\t\t);\n\t\tconst metadataName =\n\t\t\tlegacyIdMap?.[ block.clientId ] ?? block.attributes.metadata?.name;\n\n\t\tif ( ! metadataName || ! hasOverridableAttributes( block ) ) {\n\t\t\treturn { ...block, innerBlocks };\n\t\t}\n\n\t\tconst attributes = getOverridableAttributes( block );\n\t\tconst newAttributes = { ...block.attributes };\n\t\tfor ( const attributeKey of attributes ) {\n\t\t\tdefaultValues[ metadataName ] ??= {};\n\t\t\tdefaultValues[ metadataName ][ attributeKey ] =\n\t\t\t\tblock.attributes[ attributeKey ];\n\n\t\t\tconst contentValues = content[ metadataName ];\n\t\t\tif ( contentValues?.[ attributeKey ] !== undefined ) {\n\t\t\t\tnewAttributes[ attributeKey ] = contentValues[ attributeKey ];\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t...block,\n\t\t\tattributes: newAttributes,\n\t\t\tinnerBlocks,\n\t\t};\n\t} );\n}\n\nfunction isAttributeEqual( attribute1, attribute2 ) {\n\tif (\n\t\tattribute1 instanceof RichTextData &&\n\t\tattribute2 instanceof RichTextData\n\t) {\n\t\treturn attribute1.toString() === attribute2.toString();\n\t}\n\treturn attribute1 === attribute2;\n}\n\nfunction getContentValuesFromInnerBlocks( blocks, defaultValues, legacyIdMap ) {\n\t/** @type {Record<string, { values: Record<string, unknown>}>} */\n\tconst content = {};\n\tfor ( const block of blocks ) {\n\t\tif ( block.name === patternBlockName ) continue;\n\t\tif ( block.innerBlocks.length ) {\n\t\t\tObject.assign(\n\t\t\t\tcontent,\n\t\t\t\tgetContentValuesFromInnerBlocks(\n\t\t\t\t\tblock.innerBlocks,\n\t\t\t\t\tdefaultValues,\n\t\t\t\t\tlegacyIdMap\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\tconst metadataName =\n\t\t\tlegacyIdMap?.[ block.clientId ] ?? block.attributes.metadata?.name;\n\t\tif ( ! metadataName || ! hasOverridableAttributes( block ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst attributes = getOverridableAttributes( block );\n\n\t\tfor ( const attributeKey of attributes ) {\n\t\t\tif (\n\t\t\t\t! isAttributeEqual(\n\t\t\t\t\tblock.attributes[ attributeKey ],\n\t\t\t\t\tdefaultValues?.[ metadataName ]?.[ attributeKey ]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcontent[ metadataName ] ??= {};\n\t\t\t\t// TODO: We need a way to represent `undefined` in the serialized overrides.\n\t\t\t\t// Also see: https://github.com/WordPress/gutenberg/pull/57249#discussion_r1452987871\n\t\t\t\tcontent[ metadataName ][ attributeKey ] =\n\t\t\t\t\tblock.attributes[ attributeKey ] === undefined\n\t\t\t\t\t\t? // TODO: We use an empty string to represent undefined for now until\n\t\t\t\t\t\t // we support a richer format for overrides and the block binding API.\n\t\t\t\t\t\t // Currently only the `linkTarget` attribute of `core/button` is affected.\n\t\t\t\t\t\t ''\n\t\t\t\t\t\t: block.attributes[ attributeKey ];\n\t\t\t}\n\t\t}\n\t}\n\treturn Object.keys( content ).length > 0 ? content : undefined;\n}\n\nfunction setBlockEditMode( setEditMode, blocks, mode ) {\n\tblocks.forEach( ( block ) => {\n\t\tconst editMode =\n\t\t\tmode ||\n\t\t\t( hasOverridableAttributes( block ) ? 'contentOnly' : 'disabled' );\n\t\tsetEditMode( block.clientId, editMode );\n\n\t\tsetBlockEditMode(\n\t\t\tsetEditMode,\n\t\t\tblock.innerBlocks,\n\t\t\t// Disable editing for nested patterns.\n\t\t\tblock.name === patternBlockName ? 'disabled' : mode\n\t\t);\n\t} );\n}\n\nexport default function ReusableBlockEdit( {\n\tname,\n\tattributes: { ref, content },\n\t__unstableParentLayout: parentLayout,\n\tclientId: patternClientId,\n\tsetAttributes,\n} ) {\n\tconst registry = useRegistry();\n\tconst hasAlreadyRendered = useHasRecursion( ref );\n\tconst { record, editedRecord, hasResolved } = useEntityRecord(\n\t\t'postType',\n\t\t'wp_block',\n\t\tref\n\t);\n\tconst isMissing = hasResolved && ! record;\n\n\t// The initial value of the `content` attribute.\n\tconst initialContent = useRef( content );\n\n\t// The default content values from the original pattern for overridable attributes.\n\t// Set by the `applyInitialContentValuesToInnerBlocks` function.\n\tconst defaultContent = useRef( {} );\n\n\tconst {\n\t\treplaceInnerBlocks,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tsetBlockEditingMode,\n\t} = useDispatch( blockEditorStore );\n\tconst { syncDerivedUpdates } = unlock( useDispatch( blockEditorStore ) );\n\n\tconst {\n\t\tinnerBlocks,\n\t\tuserCanEdit,\n\t\tgetBlockEditingMode,\n\t\tonNavigateToEntityRecord,\n\t\teditingMode,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst {\n\t\t\t\tgetBlocks,\n\t\t\t\tgetSettings,\n\t\t\t\tgetBlockEditingMode: _getBlockEditingMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst blocks = getBlocks( patternClientId );\n\t\t\tconst canEdit = canUser( 'update', 'blocks', ref );\n\n\t\t\t// For editing link to the site editor if the theme and user permissions support it.\n\t\t\treturn {\n\t\t\t\tinnerBlocks: blocks,\n\t\t\t\tuserCanEdit: canEdit,\n\t\t\t\tgetBlockEditingMode: _getBlockEditingMode,\n\t\t\t\tonNavigateToEntityRecord:\n\t\t\t\t\tgetSettings().onNavigateToEntityRecord,\n\t\t\t\teditingMode: _getBlockEditingMode( patternClientId ),\n\t\t\t};\n\t\t},\n\t\t[ patternClientId, ref ]\n\t);\n\n\t// Sync the editing mode of the pattern block with the inner blocks.\n\tuseEffect( () => {\n\t\tsetBlockEditMode(\n\t\t\tsetBlockEditingMode,\n\t\t\tinnerBlocks,\n\t\t\t// Disable editing if the pattern itself is disabled.\n\t\t\teditingMode === 'disabled' ? 'disabled' : undefined\n\t\t);\n\t}, [ editingMode, innerBlocks, setBlockEditingMode ] );\n\n\tconst canOverrideBlocks = useMemo(\n\t\t() => hasOverridableBlocks( innerBlocks ),\n\t\t[ innerBlocks ]\n\t);\n\n\tconst initialBlocks = useMemo(\n\t\t() =>\n\t\t\t// Clone the blocks to generate new client IDs.\n\t\t\teditedRecord.blocks?.map( ( block ) => cloneBlock( block ) ) ??\n\t\t\t( editedRecord.content && typeof editedRecord.content !== 'function'\n\t\t\t\t? parse( editedRecord.content )\n\t\t\t\t: [] ),\n\t\t[ editedRecord.blocks, editedRecord.content ]\n\t);\n\n\tconst legacyIdMap = useRef( {} );\n\n\t// Apply the initial overrides from the pattern block to the inner blocks.\n\tuseEffect( () => {\n\t\t// Build a map of clientIds to the old nano id system to provide back compat.\n\t\tlegacyIdMap.current = getLegacyIdMap(\n\t\t\tinitialBlocks,\n\t\t\tinitialContent.current\n\t\t);\n\t\tdefaultContent.current = {};\n\t\tconst originalEditingMode = getBlockEditingMode( patternClientId );\n\t\t// Replace the contents of the blocks with the overrides.\n\t\tregistry.batch( () => {\n\t\t\tsetBlockEditingMode( patternClientId, 'default' );\n\t\t\tsyncDerivedUpdates( () => {\n\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\tpatternClientId,\n\t\t\t\t\tapplyInitialContentValuesToInnerBlocks(\n\t\t\t\t\t\tinitialBlocks,\n\t\t\t\t\t\tinitialContent.current,\n\t\t\t\t\t\tdefaultContent.current,\n\t\t\t\t\t\tlegacyIdMap.current\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} );\n\t\t\tsetBlockEditingMode( patternClientId, originalEditingMode );\n\t\t} );\n\t}, [\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tpatternClientId,\n\t\tinitialBlocks,\n\t\treplaceInnerBlocks,\n\t\tregistry,\n\t\tgetBlockEditingMode,\n\t\tsetBlockEditingMode,\n\t\tsyncDerivedUpdates,\n\t] );\n\n\tconst { alignment, layout } = useInferredLayout(\n\t\tinnerBlocks,\n\t\tparentLayout\n\t);\n\tconst layoutClasses = useLayoutClasses( { layout }, name );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames(\n\t\t\t'block-library-block__reusable-block-container',\n\t\t\tlayout && layoutClasses,\n\t\t\t{ [ `align${ alignment }` ]: alignment }\n\t\t),\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplateLock: 'all',\n\t\tlayout,\n\t\trenderAppender: innerBlocks?.length\n\t\t\t? undefined\n\t\t\t: InnerBlocks.ButtonBlockAppender,\n\t} );\n\n\t// Sync the `content` attribute from the updated blocks to the pattern block.\n\t// `syncDerivedUpdates` is used here to avoid creating an additional undo level.\n\tuseEffect( () => {\n\t\tconst { getBlocks } = registry.select( blockEditorStore );\n\t\tlet prevBlocks = getBlocks( patternClientId );\n\t\treturn registry.subscribe( () => {\n\t\t\tconst blocks = getBlocks( patternClientId );\n\t\t\tif ( blocks !== prevBlocks ) {\n\t\t\t\tprevBlocks = blocks;\n\t\t\t\tsyncDerivedUpdates( () => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\tcontent: getContentValuesFromInnerBlocks(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\tdefaultContent.current,\n\t\t\t\t\t\t\tlegacyIdMap.current\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}, blockEditorStore );\n\t}, [ syncDerivedUpdates, patternClientId, registry, setAttributes ] );\n\n\tconst handleEditOriginal = () => {\n\t\tonNavigateToEntityRecord( {\n\t\t\tpostId: ref,\n\t\t\tpostType: 'wp_block',\n\t\t} );\n\t};\n\n\tconst resetContent = () => {\n\t\tif ( content ) {\n\t\t\treplaceInnerBlocks( patternClientId, initialBlocks );\n\t\t}\n\t};\n\n\tlet children = null;\n\n\tif ( hasAlreadyRendered ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( isMissing ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block has been deleted or is unavailable.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( ! hasResolved ) {\n\t\tchildren = (\n\t\t\t<Placeholder>\n\t\t\t\t<Spinner />\n\t\t\t</Placeholder>\n\t\t);\n\t}\n\n\treturn (\n\t\t<RecursionProvider uniqueId={ ref }>\n\t\t\t{ userCanEdit && onNavigateToEntityRecord && (\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ToolbarButton onClick={ handleEditOriginal }>\n\t\t\t\t\t\t\t{ __( 'Edit original' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\n\t\t\t{ canOverrideBlocks && (\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tonClick={ resetContent }\n\t\t\t\t\t\t\tdisabled={ ! content }\n\t\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\n\t\t\t{ children === null ? (\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t) : (\n\t\t\t\t<div { ...blockProps }>{ children }</div>\n\t\t\t) }\n\t\t</RecursionProvider>\n\t);\n}\n"],"mappings":"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"}
@@ -308,14 +308,17 @@ function ImageEdit({
308
308
 
309
309
  // Much of this description is duplicated from MediaPlaceholder.
310
310
  const {
311
- lockUrlControls = false
311
+ lockUrlControls = false,
312
+ lockUrlControlsMessage
312
313
  } = (0, _data.useSelect)(select => {
313
314
  if (!isSingleSelected) {
314
315
  return {};
315
316
  }
316
317
  const blockBindingsSource = (0, _lockUnlock.unlock)(select(_blocks.store)).getBlockBindingsSource(metadata?.bindings?.url?.source);
317
318
  return {
318
- lockUrlControls: !!metadata?.bindings?.url && (!blockBindingsSource || blockBindingsSource?.lockAttributesEditing)
319
+ lockUrlControls: !!metadata?.bindings?.url && (!blockBindingsSource || blockBindingsSource?.lockAttributesEditing),
320
+ lockUrlControlsMessage: blockBindingsSource?.label ? (0, _i18n.sprintf)( /* translators: %s: Label of the bindings source. */
321
+ (0, _i18n.__)('Connected to %s'), blockBindingsSource.label) : (0, _i18n.__)('Connected to dynamic data')
319
322
  };
320
323
  }, [isSingleSelected]);
321
324
  const placeholder = content => {
@@ -337,7 +340,7 @@ function ImageEdit({
337
340
  }
338
341
  }, lockUrlControls ? (0, _react.createElement)("span", {
339
342
  className: 'block-bindings-media-placeholder-message'
340
- }, (0, _i18n.__)('Connected to a custom field')) : content);
343
+ }, lockUrlControlsMessage) : content);
341
344
  };
342
345
  return (0, _react.createElement)("figure", {
343
346
  ...blockProps
@@ -1 +1 @@
1
- {"version":3,"names":["_classnames","_interopRequireDefault","require","_blob","_blocks","_components","_data","_blockEditor","_element","_i18n","_icons","_notices","_lockUnlock","_image","_constants","pickRelevantMediaFiles","image","size","imageProps","Object","fromEntries","entries","filter","key","includes","url","sizes","media_details","source_url","exports","isTemporaryImage","id","isBlobURL","isExternalImage","hasSize","_image$sizes$size","_image$media_details$","ImageEdit","attributes","setAttributes","isSelected","isSingleSelected","className","insertBlocksAfter","onReplace","context","clientId","alt","caption","width","height","sizeSlug","aspectRatio","scale","align","metadata","temporaryURL","setTemporaryURL","useState","altRef","useRef","useEffect","current","captionRef","__unstableMarkNextChangeAsNotPersistent","useDispatch","blockEditorStore","undefined","ref","getSettings","useSelect","blockEditingMode","useBlockEditingMode","createErrorNotice","noticesStore","onUploadError","message","type","src","onSelectImage","media","title","imageDefaultSize","newSize","mediaAttributes","omittedCaption","restMediaAttributes","additionalAttributes","linkDestination","window","wp","view","settings","defaultProps","link","LINK_DESTINATION_NONE","LINK_DESTINATION_MEDIA","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_CUSTOM","href","onSelectURL","newURL","isTemp","file","getBlobByURL","mediaUpload","filesList","onFileChange","img","allowedTypes","ALLOWED_MEDIA_TYPES","onError","revokeBlobURL","isExternal","mediaPreview","_react","createElement","__","borderProps","useBorderProps","shadowProps","getShadowClassesAndStyles","classes","classnames","style","keys","length","blockProps","useBlockProps","lockUrlControls","select","blockBindingsSource","unlock","blocksStore","getBlockBindingsSource","bindings","source","lockAttributesEditing","placeholder","content","Placeholder","withIllustration","icon","pluginsIcon","label","instructions","objectFit","default","containerRef","MediaPlaceholder","BlockIcon","onSelect","accept","value","disableMediaButtons","_default"],"sources":["@wordpress/block-library/src/image/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { Placeholder } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tBlockIcon,\n\tMediaPlaceholder,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles,\n\tuseBlockEditingMode,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { image as icon, plugins as pluginsIcon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\nimport Image from './image';\n\n/**\n * Module constants\n */\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_CUSTOM,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n\tALLOWED_MEDIA_TYPES,\n} from './constants';\n\nexport const pickRelevantMediaFiles = ( image, size ) => {\n\tconst imageProps = Object.fromEntries(\n\t\tObject.entries( image ?? {} ).filter( ( [ key ] ) =>\n\t\t\t[ 'alt', 'id', 'link', 'caption' ].includes( key )\n\t\t)\n\t);\n\n\timageProps.url =\n\t\timage?.sizes?.[ size ]?.url ||\n\t\timage?.media_details?.sizes?.[ size ]?.source_url ||\n\t\timage.url;\n\treturn imageProps;\n};\n\n/**\n * Is the URL a temporary blob URL? A blob URL is one that is used temporarily\n * while the image is being uploaded and will not have an id yet allocated.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the URL a Blob URL\n */\nconst isTemporaryImage = ( id, url ) => ! id && isBlobURL( url );\n\n/**\n * Is the url for the image hosted externally. An externally hosted image has no\n * id and is not a blob url.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the url an externally hosted url?\n */\nexport const isExternalImage = ( id, url ) => url && ! id && ! isBlobURL( url );\n\n/**\n * Checks if WP generated the specified image size. Size generation is skipped\n * when the image is smaller than the said size.\n *\n * @param {Object} image\n * @param {string} size\n *\n * @return {boolean} Whether or not it has default image size.\n */\nfunction hasSize( image, size ) {\n\treturn (\n\t\t'url' in ( image?.sizes?.[ size ] ?? {} ) ||\n\t\t'source_url' in ( image?.media_details?.sizes?.[ size ] ?? {} )\n\t);\n}\n\nexport function ImageEdit( {\n\tattributes,\n\tsetAttributes,\n\tisSelected: isSingleSelected,\n\tclassName,\n\tinsertBlocksAfter,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst {\n\t\turl = '',\n\t\talt,\n\t\tcaption,\n\t\tid,\n\t\twidth,\n\t\theight,\n\t\tsizeSlug,\n\t\taspectRatio,\n\t\tscale,\n\t\talign,\n\t\tmetadata,\n\t} = attributes;\n\tconst [ temporaryURL, setTemporaryURL ] = useState();\n\n\tconst altRef = useRef();\n\tuseEffect( () => {\n\t\taltRef.current = alt;\n\t}, [ alt ] );\n\n\tconst captionRef = useRef();\n\tuseEffect( () => {\n\t\tcaptionRef.current = caption;\n\t}, [ caption ] );\n\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\tif ( [ 'wide', 'full' ].includes( align ) ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t\taspectRatio: undefined,\n\t\t\t\tscale: undefined,\n\t\t\t} );\n\t\t}\n\t}, [ align ] );\n\n\tconst ref = useRef();\n\tconst { getSettings } = useSelect( blockEditorStore );\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetAttributes( {\n\t\t\tsrc: undefined,\n\t\t\tid: undefined,\n\t\t\turl: undefined,\n\t\t} );\n\t\tsetTemporaryURL( undefined );\n\t}\n\n\tfunction onSelectImage( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: undefined,\n\t\t\t\talt: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\ttitle: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetTemporaryURL( media.url );\n\t\t\treturn;\n\t\t}\n\n\t\tsetTemporaryURL();\n\n\t\tconst { imageDefaultSize } = getSettings();\n\n\t\t// Try to use the previous selected image size if its available\n\t\t// otherwise try the default image size or fallback to \"full\"\n\t\tlet newSize = 'full';\n\t\tif ( sizeSlug && hasSize( media, sizeSlug ) ) {\n\t\t\tnewSize = sizeSlug;\n\t\t} else if ( hasSize( media, imageDefaultSize ) ) {\n\t\t\tnewSize = imageDefaultSize;\n\t\t}\n\n\t\tlet mediaAttributes = pickRelevantMediaFiles( media, newSize );\n\n\t\t// If a caption text was meanwhile written by the user,\n\t\t// make sure the text is not overwritten by empty captions.\n\t\tif ( captionRef.current && ! mediaAttributes.caption ) {\n\t\t\tconst { caption: omittedCaption, ...restMediaAttributes } =\n\t\t\t\tmediaAttributes;\n\t\t\tmediaAttributes = restMediaAttributes;\n\t\t}\n\n\t\tlet additionalAttributes;\n\t\t// Reset the dimension attributes if changing to a different image.\n\t\tif ( ! media.id || media.id !== id ) {\n\t\t\tadditionalAttributes = {\n\t\t\t\tsizeSlug: newSize,\n\t\t\t};\n\t\t} else {\n\t\t\t// Keep the same url when selecting the same file, so \"Resolution\"\n\t\t\t// option is not changed.\n\t\t\tadditionalAttributes = { url };\n\t\t}\n\n\t\t// Check if default link setting should be used.\n\t\tlet linkDestination = attributes.linkDestination;\n\t\tif ( ! linkDestination ) {\n\t\t\t// Use the WordPress option to determine the proper default.\n\t\t\t// The constants used in Gutenberg do not match WP options so a little more complicated than ideal.\n\t\t\t// TODO: fix this in a follow up PR, requires updating media-text and ui component.\n\t\t\tswitch (\n\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\tLINK_DESTINATION_NONE\n\t\t\t) {\n\t\t\t\tcase 'file':\n\t\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_MEDIA;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'post':\n\t\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_ATTACHMENT;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_CUSTOM:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_CUSTOM;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_NONE:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_NONE;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Check if the image is linked to it's media.\n\t\tlet href;\n\t\tswitch ( linkDestination ) {\n\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\thref = media.url;\n\t\t\t\tbreak;\n\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\thref = media.link;\n\t\t\t\tbreak;\n\t\t}\n\t\tmediaAttributes.href = href;\n\n\t\tsetAttributes( {\n\t\t\t...mediaAttributes,\n\t\t\t...additionalAttributes,\n\t\t\tlinkDestination,\n\t\t} );\n\t}\n\n\tfunction onSelectURL( newURL ) {\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: newURL,\n\t\t\t\tid: undefined,\n\t\t\t\tsizeSlug: getSettings().imageDefaultSize,\n\t\t\t} );\n\t\t}\n\t}\n\n\tlet isTemp = isTemporaryImage( id, url );\n\n\t// Upload a temporary image on mount.\n\tuseEffect( () => {\n\t\tif ( ! isTemp ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = getBlobByURL( url );\n\n\t\tif ( file ) {\n\t\t\tconst { mediaUpload } = getSettings();\n\t\t\tif ( ! mediaUpload ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList: [ file ],\n\t\t\t\tonFileChange: ( [ img ] ) => {\n\t\t\t\t\tonSelectImage( img );\n\t\t\t\t},\n\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\tonError: ( message ) => {\n\t\t\t\t\tisTemp = false;\n\t\t\t\t\tonUploadError( message );\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\t// If an image is temporary, revoke the Blob url when it is uploaded (and is\n\t// no longer temporary).\n\tuseEffect( () => {\n\t\tif ( isTemp ) {\n\t\t\tsetTemporaryURL( url );\n\t\t\treturn;\n\t\t}\n\t\trevokeBlobURL( temporaryURL );\n\t}, [ isTemp, url ] );\n\n\tconst isExternal = isExternalImage( id, url );\n\tconst src = isExternal ? url : undefined;\n\tconst mediaPreview = !! url && (\n\t\t<img\n\t\t\talt={ __( 'Edit image' ) }\n\t\t\ttitle={ __( 'Edit image' ) }\n\t\t\tclassName={ 'edit-image-preview' }\n\t\t\tsrc={ url }\n\t\t/>\n\t);\n\n\tconst borderProps = useBorderProps( attributes );\n\tconst shadowProps = getShadowClassesAndStyles( attributes );\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': temporaryURL,\n\t\t'is-resized': !! width || !! height,\n\t\t[ `size-${ sizeSlug }` ]: sizeSlug,\n\t\t'has-custom-border':\n\t\t\t!! borderProps.className ||\n\t\t\t( borderProps.style &&\n\t\t\t\tObject.keys( borderProps.style ).length > 0 ),\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tref,\n\t\tclassName: classes,\n\t} );\n\n\t// Much of this description is duplicated from MediaPlaceholder.\n\tconst { lockUrlControls = false } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! isSingleSelected ) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst blockBindingsSource = unlock(\n\t\t\t\tselect( blocksStore )\n\t\t\t).getBlockBindingsSource( metadata?.bindings?.url?.source );\n\n\t\t\treturn {\n\t\t\t\tlockUrlControls:\n\t\t\t\t\t!! metadata?.bindings?.url &&\n\t\t\t\t\t( ! blockBindingsSource ||\n\t\t\t\t\t\tblockBindingsSource?.lockAttributesEditing ),\n\t\t\t};\n\t\t},\n\t\t[ isSingleSelected ]\n\t);\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\tclassName={ classnames( 'block-editor-media-placeholder', {\n\t\t\t\t\t[ borderProps.className ]:\n\t\t\t\t\t\t!! borderProps.className && ! isSingleSelected,\n\t\t\t\t} ) }\n\t\t\t\twithIllustration={ true }\n\t\t\t\ticon={ lockUrlControls ? pluginsIcon : icon }\n\t\t\t\tlabel={ __( 'Image' ) }\n\t\t\t\tinstructions={\n\t\t\t\t\t! lockUrlControls &&\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Upload an image file, pick one from your media library, or add one with a URL.'\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tstyle={ {\n\t\t\t\t\taspectRatio:\n\t\t\t\t\t\t! ( width && height ) && aspectRatio\n\t\t\t\t\t\t\t? aspectRatio\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\twidth: height && aspectRatio ? '100%' : width,\n\t\t\t\t\theight: width && aspectRatio ? '100%' : height,\n\t\t\t\t\tobjectFit: scale,\n\t\t\t\t\t...borderProps.style,\n\t\t\t\t\t...shadowProps.style,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ lockUrlControls ? (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={ 'block-bindings-media-placeholder-message' }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Connected to a custom field' ) }\n\t\t\t\t\t</span>\n\t\t\t\t) : (\n\t\t\t\t\tcontent\n\t\t\t\t) }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\treturn (\n\t\t<figure { ...blockProps }>\n\t\t\t<Image\n\t\t\t\ttemporaryURL={ temporaryURL }\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tisSingleSelected={ isSingleSelected }\n\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\tonReplace={ onReplace }\n\t\t\t\tonSelectImage={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonUploadError={ onUploadError }\n\t\t\t\tcontainerRef={ ref }\n\t\t\t\tcontext={ context }\n\t\t\t\tclientId={ clientId }\n\t\t\t\tblockEditingMode={ blockEditingMode }\n\t\t\t/>\n\t\t\t<MediaPlaceholder\n\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\tvalue={ { id, src } }\n\t\t\t\tmediaPreview={ mediaPreview }\n\t\t\t\tdisableMediaButtons={ temporaryURL || url }\n\t\t\t/>\n\t\t</figure>\n\t);\n}\n\nexport default ImageEdit;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_classnames","_interopRequireDefault","require","_blob","_blocks","_components","_data","_blockEditor","_element","_i18n","_icons","_notices","_lockUnlock","_image","_constants","pickRelevantMediaFiles","image","size","imageProps","Object","fromEntries","entries","filter","key","includes","url","sizes","media_details","source_url","exports","isTemporaryImage","id","isBlobURL","isExternalImage","hasSize","_image$sizes$size","_image$media_details$","ImageEdit","attributes","setAttributes","isSelected","isSingleSelected","className","insertBlocksAfter","onReplace","context","clientId","alt","caption","width","height","sizeSlug","aspectRatio","scale","align","metadata","temporaryURL","setTemporaryURL","useState","altRef","useRef","useEffect","current","captionRef","__unstableMarkNextChangeAsNotPersistent","useDispatch","blockEditorStore","undefined","ref","getSettings","useSelect","blockEditingMode","useBlockEditingMode","createErrorNotice","noticesStore","onUploadError","message","type","src","onSelectImage","media","title","imageDefaultSize","newSize","mediaAttributes","omittedCaption","restMediaAttributes","additionalAttributes","linkDestination","window","wp","view","settings","defaultProps","link","LINK_DESTINATION_NONE","LINK_DESTINATION_MEDIA","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_CUSTOM","href","onSelectURL","newURL","isTemp","file","getBlobByURL","mediaUpload","filesList","onFileChange","img","allowedTypes","ALLOWED_MEDIA_TYPES","onError","revokeBlobURL","isExternal","mediaPreview","_react","createElement","__","borderProps","useBorderProps","shadowProps","getShadowClassesAndStyles","classes","classnames","style","keys","length","blockProps","useBlockProps","lockUrlControls","lockUrlControlsMessage","select","blockBindingsSource","unlock","blocksStore","getBlockBindingsSource","bindings","source","lockAttributesEditing","label","sprintf","placeholder","content","Placeholder","withIllustration","icon","pluginsIcon","instructions","objectFit","default","containerRef","MediaPlaceholder","BlockIcon","onSelect","accept","value","disableMediaButtons","_default"],"sources":["@wordpress/block-library/src/image/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { Placeholder } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tBlockIcon,\n\tMediaPlaceholder,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles,\n\tuseBlockEditingMode,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { image as icon, plugins as pluginsIcon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\nimport Image from './image';\n\n/**\n * Module constants\n */\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_CUSTOM,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n\tALLOWED_MEDIA_TYPES,\n} from './constants';\n\nexport const pickRelevantMediaFiles = ( image, size ) => {\n\tconst imageProps = Object.fromEntries(\n\t\tObject.entries( image ?? {} ).filter( ( [ key ] ) =>\n\t\t\t[ 'alt', 'id', 'link', 'caption' ].includes( key )\n\t\t)\n\t);\n\n\timageProps.url =\n\t\timage?.sizes?.[ size ]?.url ||\n\t\timage?.media_details?.sizes?.[ size ]?.source_url ||\n\t\timage.url;\n\treturn imageProps;\n};\n\n/**\n * Is the URL a temporary blob URL? A blob URL is one that is used temporarily\n * while the image is being uploaded and will not have an id yet allocated.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the URL a Blob URL\n */\nconst isTemporaryImage = ( id, url ) => ! id && isBlobURL( url );\n\n/**\n * Is the url for the image hosted externally. An externally hosted image has no\n * id and is not a blob url.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the url an externally hosted url?\n */\nexport const isExternalImage = ( id, url ) => url && ! id && ! isBlobURL( url );\n\n/**\n * Checks if WP generated the specified image size. Size generation is skipped\n * when the image is smaller than the said size.\n *\n * @param {Object} image\n * @param {string} size\n *\n * @return {boolean} Whether or not it has default image size.\n */\nfunction hasSize( image, size ) {\n\treturn (\n\t\t'url' in ( image?.sizes?.[ size ] ?? {} ) ||\n\t\t'source_url' in ( image?.media_details?.sizes?.[ size ] ?? {} )\n\t);\n}\n\nexport function ImageEdit( {\n\tattributes,\n\tsetAttributes,\n\tisSelected: isSingleSelected,\n\tclassName,\n\tinsertBlocksAfter,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst {\n\t\turl = '',\n\t\talt,\n\t\tcaption,\n\t\tid,\n\t\twidth,\n\t\theight,\n\t\tsizeSlug,\n\t\taspectRatio,\n\t\tscale,\n\t\talign,\n\t\tmetadata,\n\t} = attributes;\n\tconst [ temporaryURL, setTemporaryURL ] = useState();\n\n\tconst altRef = useRef();\n\tuseEffect( () => {\n\t\taltRef.current = alt;\n\t}, [ alt ] );\n\n\tconst captionRef = useRef();\n\tuseEffect( () => {\n\t\tcaptionRef.current = caption;\n\t}, [ caption ] );\n\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\tif ( [ 'wide', 'full' ].includes( align ) ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t\taspectRatio: undefined,\n\t\t\t\tscale: undefined,\n\t\t\t} );\n\t\t}\n\t}, [ align ] );\n\n\tconst ref = useRef();\n\tconst { getSettings } = useSelect( blockEditorStore );\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetAttributes( {\n\t\t\tsrc: undefined,\n\t\t\tid: undefined,\n\t\t\turl: undefined,\n\t\t} );\n\t\tsetTemporaryURL( undefined );\n\t}\n\n\tfunction onSelectImage( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: undefined,\n\t\t\t\talt: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\ttitle: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetTemporaryURL( media.url );\n\t\t\treturn;\n\t\t}\n\n\t\tsetTemporaryURL();\n\n\t\tconst { imageDefaultSize } = getSettings();\n\n\t\t// Try to use the previous selected image size if its available\n\t\t// otherwise try the default image size or fallback to \"full\"\n\t\tlet newSize = 'full';\n\t\tif ( sizeSlug && hasSize( media, sizeSlug ) ) {\n\t\t\tnewSize = sizeSlug;\n\t\t} else if ( hasSize( media, imageDefaultSize ) ) {\n\t\t\tnewSize = imageDefaultSize;\n\t\t}\n\n\t\tlet mediaAttributes = pickRelevantMediaFiles( media, newSize );\n\n\t\t// If a caption text was meanwhile written by the user,\n\t\t// make sure the text is not overwritten by empty captions.\n\t\tif ( captionRef.current && ! mediaAttributes.caption ) {\n\t\t\tconst { caption: omittedCaption, ...restMediaAttributes } =\n\t\t\t\tmediaAttributes;\n\t\t\tmediaAttributes = restMediaAttributes;\n\t\t}\n\n\t\tlet additionalAttributes;\n\t\t// Reset the dimension attributes if changing to a different image.\n\t\tif ( ! media.id || media.id !== id ) {\n\t\t\tadditionalAttributes = {\n\t\t\t\tsizeSlug: newSize,\n\t\t\t};\n\t\t} else {\n\t\t\t// Keep the same url when selecting the same file, so \"Resolution\"\n\t\t\t// option is not changed.\n\t\t\tadditionalAttributes = { url };\n\t\t}\n\n\t\t// Check if default link setting should be used.\n\t\tlet linkDestination = attributes.linkDestination;\n\t\tif ( ! linkDestination ) {\n\t\t\t// Use the WordPress option to determine the proper default.\n\t\t\t// The constants used in Gutenberg do not match WP options so a little more complicated than ideal.\n\t\t\t// TODO: fix this in a follow up PR, requires updating media-text and ui component.\n\t\t\tswitch (\n\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\tLINK_DESTINATION_NONE\n\t\t\t) {\n\t\t\t\tcase 'file':\n\t\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_MEDIA;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'post':\n\t\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_ATTACHMENT;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_CUSTOM:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_CUSTOM;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_NONE:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_NONE;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Check if the image is linked to it's media.\n\t\tlet href;\n\t\tswitch ( linkDestination ) {\n\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\thref = media.url;\n\t\t\t\tbreak;\n\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\thref = media.link;\n\t\t\t\tbreak;\n\t\t}\n\t\tmediaAttributes.href = href;\n\n\t\tsetAttributes( {\n\t\t\t...mediaAttributes,\n\t\t\t...additionalAttributes,\n\t\t\tlinkDestination,\n\t\t} );\n\t}\n\n\tfunction onSelectURL( newURL ) {\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: newURL,\n\t\t\t\tid: undefined,\n\t\t\t\tsizeSlug: getSettings().imageDefaultSize,\n\t\t\t} );\n\t\t}\n\t}\n\n\tlet isTemp = isTemporaryImage( id, url );\n\n\t// Upload a temporary image on mount.\n\tuseEffect( () => {\n\t\tif ( ! isTemp ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = getBlobByURL( url );\n\n\t\tif ( file ) {\n\t\t\tconst { mediaUpload } = getSettings();\n\t\t\tif ( ! mediaUpload ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList: [ file ],\n\t\t\t\tonFileChange: ( [ img ] ) => {\n\t\t\t\t\tonSelectImage( img );\n\t\t\t\t},\n\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\tonError: ( message ) => {\n\t\t\t\t\tisTemp = false;\n\t\t\t\t\tonUploadError( message );\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\t// If an image is temporary, revoke the Blob url when it is uploaded (and is\n\t// no longer temporary).\n\tuseEffect( () => {\n\t\tif ( isTemp ) {\n\t\t\tsetTemporaryURL( url );\n\t\t\treturn;\n\t\t}\n\t\trevokeBlobURL( temporaryURL );\n\t}, [ isTemp, url ] );\n\n\tconst isExternal = isExternalImage( id, url );\n\tconst src = isExternal ? url : undefined;\n\tconst mediaPreview = !! url && (\n\t\t<img\n\t\t\talt={ __( 'Edit image' ) }\n\t\t\ttitle={ __( 'Edit image' ) }\n\t\t\tclassName={ 'edit-image-preview' }\n\t\t\tsrc={ url }\n\t\t/>\n\t);\n\n\tconst borderProps = useBorderProps( attributes );\n\tconst shadowProps = getShadowClassesAndStyles( attributes );\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': temporaryURL,\n\t\t'is-resized': !! width || !! height,\n\t\t[ `size-${ sizeSlug }` ]: sizeSlug,\n\t\t'has-custom-border':\n\t\t\t!! borderProps.className ||\n\t\t\t( borderProps.style &&\n\t\t\t\tObject.keys( borderProps.style ).length > 0 ),\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tref,\n\t\tclassName: classes,\n\t} );\n\n\t// Much of this description is duplicated from MediaPlaceholder.\n\tconst { lockUrlControls = false, lockUrlControlsMessage } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! isSingleSelected ) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst blockBindingsSource = unlock(\n\t\t\t\tselect( blocksStore )\n\t\t\t).getBlockBindingsSource( metadata?.bindings?.url?.source );\n\n\t\t\treturn {\n\t\t\t\tlockUrlControls:\n\t\t\t\t\t!! metadata?.bindings?.url &&\n\t\t\t\t\t( ! blockBindingsSource ||\n\t\t\t\t\t\tblockBindingsSource?.lockAttributesEditing ),\n\t\t\t\tlockUrlControlsMessage: blockBindingsSource?.label\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t/* translators: %s: Label of the bindings source. */\n\t\t\t\t\t\t\t__( 'Connected to %s' ),\n\t\t\t\t\t\t\tblockBindingsSource.label\n\t\t\t\t\t )\n\t\t\t\t\t: __( 'Connected to dynamic data' ),\n\t\t\t};\n\t\t},\n\t\t[ isSingleSelected ]\n\t);\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\tclassName={ classnames( 'block-editor-media-placeholder', {\n\t\t\t\t\t[ borderProps.className ]:\n\t\t\t\t\t\t!! borderProps.className && ! isSingleSelected,\n\t\t\t\t} ) }\n\t\t\t\twithIllustration={ true }\n\t\t\t\ticon={ lockUrlControls ? pluginsIcon : icon }\n\t\t\t\tlabel={ __( 'Image' ) }\n\t\t\t\tinstructions={\n\t\t\t\t\t! lockUrlControls &&\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Upload an image file, pick one from your media library, or add one with a URL.'\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tstyle={ {\n\t\t\t\t\taspectRatio:\n\t\t\t\t\t\t! ( width && height ) && aspectRatio\n\t\t\t\t\t\t\t? aspectRatio\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\twidth: height && aspectRatio ? '100%' : width,\n\t\t\t\t\theight: width && aspectRatio ? '100%' : height,\n\t\t\t\t\tobjectFit: scale,\n\t\t\t\t\t...borderProps.style,\n\t\t\t\t\t...shadowProps.style,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ lockUrlControls ? (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={ 'block-bindings-media-placeholder-message' }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ lockUrlControlsMessage }\n\t\t\t\t\t</span>\n\t\t\t\t) : (\n\t\t\t\t\tcontent\n\t\t\t\t) }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\treturn (\n\t\t<figure { ...blockProps }>\n\t\t\t<Image\n\t\t\t\ttemporaryURL={ temporaryURL }\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tisSingleSelected={ isSingleSelected }\n\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\tonReplace={ onReplace }\n\t\t\t\tonSelectImage={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonUploadError={ onUploadError }\n\t\t\t\tcontainerRef={ ref }\n\t\t\t\tcontext={ context }\n\t\t\t\tclientId={ clientId }\n\t\t\t\tblockEditingMode={ blockEditingMode }\n\t\t\t/>\n\t\t\t<MediaPlaceholder\n\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\tvalue={ { id, src } }\n\t\t\t\tmediaPreview={ mediaPreview }\n\t\t\t\tdisableMediaButtons={ temporaryURL || url }\n\t\t\t/>\n\t\t</figure>\n\t);\n}\n\nexport default ImageEdit;\n"],"mappings":"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"}
@@ -363,7 +363,9 @@ function Image({
363
363
  lockUrlControls = false,
364
364
  lockHrefControls = false,
365
365
  lockAltControls = false,
366
+ lockAltControlsMessage,
366
367
  lockTitleControls = false,
368
+ lockTitleControlsMessage,
367
369
  lockCaption = false
368
370
  } = (0, _data.useSelect)(select => {
369
371
  if (!isSingleSelected) {
@@ -395,7 +397,11 @@ function Image({
395
397
  // This is a temporary solution until we support overriding the caption on the frontend.
396
398
  hasParentPattern,
397
399
  lockAltControls: !!altBinding && (!altBindingSource || altBindingSource?.lockAttributesEditing),
398
- lockTitleControls: !!titleBinding && (!titleBindingSource || titleBindingSource?.lockAttributesEditing)
400
+ lockAltControlsMessage: altBindingSource?.label ? (0, _i18n.sprintf)( /* translators: %s: Label of the bindings source. */
401
+ (0, _i18n.__)('Connected to %s'), altBindingSource.label) : (0, _i18n.__)('Connected to dynamic data'),
402
+ lockTitleControls: !!titleBinding && (!titleBindingSource || titleBindingSource?.lockAttributesEditing),
403
+ lockTitleControlsMessage: titleBindingSource?.label ? (0, _i18n.sprintf)( /* translators: %s: Label of the bindings source. */
404
+ (0, _i18n.__)('Connected to %s'), titleBindingSource.label) : (0, _i18n.__)('Connected to dynamic data')
399
405
  };
400
406
  }, [clientId, isSingleSelected, metadata?.bindings]);
401
407
  const controls = (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_blockEditor.BlockControls, {
@@ -464,7 +470,7 @@ function Image({
464
470
  value: alt || '',
465
471
  onChange: updateAlt,
466
472
  disabled: lockAltControls,
467
- help: lockAltControls ? (0, _react.createElement)(_react.Fragment, null, (0, _i18n.__)('Connected to a custom field')) : (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_components.ExternalLink, {
473
+ help: lockAltControls ? (0, _react.createElement)(_react.Fragment, null, lockAltControlsMessage) : (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_components.ExternalLink, {
468
474
  href: "https://www.w3.org/WAI/tutorials/images/decision-tree"
469
475
  }, (0, _i18n.__)('Describe the purpose of the image.')), (0, _react.createElement)("br", null), (0, _i18n.__)('Leave empty if decorative.')),
470
476
  __nextHasNoMarginBottom: true
@@ -494,7 +500,7 @@ function Image({
494
500
  value: title || '',
495
501
  onChange: onSetTitle,
496
502
  disabled: lockTitleControls,
497
- help: lockTitleControls ? (0, _react.createElement)(_react.Fragment, null, (0, _i18n.__)('Connected to a custom field')) : (0, _react.createElement)(_react.Fragment, null, (0, _i18n.__)('Describe the role of this image on the page.'), (0, _react.createElement)(_components.ExternalLink, {
503
+ help: lockTitleControls ? (0, _react.createElement)(_react.Fragment, null, lockTitleControlsMessage) : (0, _react.createElement)(_react.Fragment, null, (0, _i18n.__)('Describe the role of this image on the page.'), (0, _react.createElement)(_components.ExternalLink, {
498
504
  href: "https://www.w3.org/TR/html52/dom.html#the-title-attribute"
499
505
  }, (0, _i18n.__)('(Note: many devices and browsers do not display this text.)')))
500
506
  })
@@ -514,7 +520,7 @@ function Image({
514
520
  value: alt || '',
515
521
  onChange: updateAlt,
516
522
  readOnly: lockAltControls,
517
- help: lockAltControls ? (0, _react.createElement)(_react.Fragment, null, (0, _i18n.__)('Connected to a custom field')) : (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_components.ExternalLink, {
523
+ help: lockAltControls ? (0, _react.createElement)(_react.Fragment, null, lockAltControlsMessage) : (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_components.ExternalLink, {
518
524
  href: "https://www.w3.org/WAI/tutorials/images/decision-tree"
519
525
  }, (0, _i18n.__)('Describe the purpose of the image.')), (0, _react.createElement)("br", null), (0, _i18n.__)('Leave empty if decorative.')),
520
526
  __nextHasNoMarginBottom: true
@@ -530,7 +536,7 @@ function Image({
530
536
  value: title || '',
531
537
  onChange: onSetTitle,
532
538
  readOnly: lockTitleControls,
533
- help: lockTitleControls ? (0, _react.createElement)(_react.Fragment, null, (0, _i18n.__)('Connected to a custom field')) : (0, _react.createElement)(_react.Fragment, null, (0, _i18n.__)('Describe the role of this image on the page.'), (0, _react.createElement)(_components.ExternalLink, {
539
+ help: lockTitleControls ? (0, _react.createElement)(_react.Fragment, null, lockTitleControlsMessage) : (0, _react.createElement)(_react.Fragment, null, (0, _i18n.__)('Describe the role of this image on the page.'), (0, _react.createElement)(_components.ExternalLink, {
534
540
  href: "https://www.w3.org/TR/html52/dom.html#the-title-attribute"
535
541
  }, (0, _i18n.__)('(Note: many devices and browsers do not display this text.)')))
536
542
  })));