@wordpress/block-library 8.25.1-next.79a6196f.0 → 8.27.0

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 (242) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/avatar/edit.js +2 -2
  3. package/build/avatar/edit.js.map +1 -1
  4. package/build/block/edit.js +75 -12
  5. package/build/block/edit.js.map +1 -1
  6. package/build/block/{v1/edit.native.js → edit.native.js} +4 -4
  7. package/build/block/edit.native.js.map +1 -0
  8. package/build/block/index.js +5 -3
  9. package/build/block/index.js.map +1 -1
  10. package/build/button/edit.js +24 -6
  11. package/build/button/edit.js.map +1 -1
  12. package/build/button/index.js +1 -0
  13. package/build/button/index.js.map +1 -1
  14. package/build/button/save.js +3 -1
  15. package/build/button/save.js.map +1 -1
  16. package/build/embed/edit.js +3 -2
  17. package/build/embed/edit.js.map +1 -1
  18. package/build/file/index.js +0 -1
  19. package/build/file/index.js.map +1 -1
  20. package/build/footnotes/edit.js +2 -1
  21. package/build/footnotes/edit.js.map +1 -1
  22. package/build/footnotes/format.js +17 -19
  23. package/build/footnotes/format.js.map +1 -1
  24. package/build/heading/edit.js +2 -1
  25. package/build/heading/edit.js.map +1 -1
  26. package/build/heading/edit.native.js +141 -0
  27. package/build/heading/edit.native.js.map +1 -0
  28. package/build/heading/index.js +1 -0
  29. package/build/heading/index.js.map +1 -1
  30. package/build/image/edit.js +8 -4
  31. package/build/image/edit.js.map +1 -1
  32. package/build/image/image.js +33 -7
  33. package/build/image/image.js.map +1 -1
  34. package/build/image/index.js +6 -3
  35. package/build/image/index.js.map +1 -1
  36. package/build/more/index.js +4 -0
  37. package/build/more/index.js.map +1 -1
  38. package/build/navigation/edit/index.js +2 -2
  39. package/build/navigation/edit/index.js.map +1 -1
  40. package/build/navigation/index.js +0 -1
  41. package/build/navigation/index.js.map +1 -1
  42. package/build/paragraph/edit.js +2 -1
  43. package/build/paragraph/edit.js.map +1 -1
  44. package/build/paragraph/index.js +1 -1
  45. package/build/paragraph/transforms.js +1 -1
  46. package/build/post-content/edit.js +2 -2
  47. package/build/post-content/edit.js.map +1 -1
  48. package/build/post-date/edit.js +1 -1
  49. package/build/post-date/edit.js.map +1 -1
  50. package/build/post-navigation-link/edit.js +43 -2
  51. package/build/post-navigation-link/edit.js.map +1 -1
  52. package/build/post-navigation-link/index.js +8 -0
  53. package/build/post-navigation-link/index.js.map +1 -1
  54. package/build/pullquote/index.js +4 -0
  55. package/build/pullquote/index.js.map +1 -1
  56. package/build/query/edit/inspector-controls/index.js +3 -3
  57. package/build/query/edit/inspector-controls/index.js.map +1 -1
  58. package/build/query/edit/query-content.js +2 -2
  59. package/build/query/edit/query-content.js.map +1 -1
  60. package/build/query/edit/query-placeholder.js +6 -7
  61. package/build/query/edit/query-placeholder.js.map +1 -1
  62. package/build/query/index.js +1 -2
  63. package/build/query/index.js.map +1 -1
  64. package/build/query/variations.js +8 -1
  65. package/build/query/variations.js.map +1 -1
  66. package/build/query/view.js +31 -12
  67. package/build/query/view.js.map +1 -1
  68. package/build/search/index.js +0 -1
  69. package/build/search/index.js.map +1 -1
  70. package/build/table-of-contents/hooks.js +2 -2
  71. package/build/table-of-contents/hooks.js.map +1 -1
  72. package/build/template-part/edit/advanced-controls.js +1 -4
  73. package/build/template-part/edit/advanced-controls.js.map +1 -1
  74. package/build/template-part/edit/index.js +39 -17
  75. package/build/template-part/edit/index.js.map +1 -1
  76. package/build/video/edit.native.js +7 -2
  77. package/build/video/edit.native.js.map +1 -1
  78. package/build/video/transforms.js +17 -0
  79. package/build/video/transforms.js.map +1 -1
  80. package/build-module/avatar/edit.js +2 -2
  81. package/build-module/avatar/edit.js.map +1 -1
  82. package/build-module/block/edit.js +74 -11
  83. package/build-module/block/edit.js.map +1 -1
  84. package/build-module/block/{v1/edit.native.js → edit.native.js} +3 -3
  85. package/build-module/block/edit.native.js.map +1 -0
  86. package/build-module/block/index.js +5 -3
  87. package/build-module/block/index.js.map +1 -1
  88. package/build-module/button/edit.js +25 -7
  89. package/build-module/button/edit.js.map +1 -1
  90. package/build-module/button/index.js +1 -0
  91. package/build-module/button/index.js.map +1 -1
  92. package/build-module/button/save.js +4 -2
  93. package/build-module/button/save.js.map +1 -1
  94. package/build-module/embed/edit.js +3 -2
  95. package/build-module/embed/edit.js.map +1 -1
  96. package/build-module/file/index.js +0 -1
  97. package/build-module/file/index.js.map +1 -1
  98. package/build-module/footnotes/edit.js +2 -1
  99. package/build-module/footnotes/edit.js.map +1 -1
  100. package/build-module/footnotes/format.js +17 -19
  101. package/build-module/footnotes/format.js.map +1 -1
  102. package/build-module/heading/edit.js +3 -2
  103. package/build-module/heading/edit.js.map +1 -1
  104. package/build-module/heading/edit.native.js +132 -0
  105. package/build-module/heading/edit.native.js.map +1 -0
  106. package/build-module/heading/index.js +1 -0
  107. package/build-module/heading/index.js.map +1 -1
  108. package/build-module/image/edit.js +9 -5
  109. package/build-module/image/edit.js.map +1 -1
  110. package/build-module/image/image.js +33 -7
  111. package/build-module/image/image.js.map +1 -1
  112. package/build-module/image/index.js +6 -3
  113. package/build-module/image/index.js.map +1 -1
  114. package/build-module/more/index.js +4 -0
  115. package/build-module/more/index.js.map +1 -1
  116. package/build-module/navigation/edit/index.js +1 -1
  117. package/build-module/navigation/edit/index.js.map +1 -1
  118. package/build-module/navigation/index.js +0 -1
  119. package/build-module/navigation/index.js.map +1 -1
  120. package/build-module/paragraph/edit.js +3 -2
  121. package/build-module/paragraph/edit.js.map +1 -1
  122. package/build-module/paragraph/index.js +1 -1
  123. package/build-module/paragraph/transforms.js +1 -1
  124. package/build-module/post-content/edit.js +1 -1
  125. package/build-module/post-content/edit.js.map +1 -1
  126. package/build-module/post-date/edit.js +1 -1
  127. package/build-module/post-date/edit.js.map +1 -1
  128. package/build-module/post-navigation-link/edit.js +44 -3
  129. package/build-module/post-navigation-link/edit.js.map +1 -1
  130. package/build-module/post-navigation-link/index.js +8 -0
  131. package/build-module/post-navigation-link/index.js.map +1 -1
  132. package/build-module/pullquote/index.js +4 -0
  133. package/build-module/pullquote/index.js.map +1 -1
  134. package/build-module/query/edit/inspector-controls/index.js +4 -4
  135. package/build-module/query/edit/inspector-controls/index.js.map +1 -1
  136. package/build-module/query/edit/query-content.js +2 -2
  137. package/build-module/query/edit/query-content.js.map +1 -1
  138. package/build-module/query/edit/query-placeholder.js +7 -8
  139. package/build-module/query/edit/query-placeholder.js.map +1 -1
  140. package/build-module/query/index.js +1 -2
  141. package/build-module/query/index.js.map +1 -1
  142. package/build-module/query/variations.js +8 -1
  143. package/build-module/query/variations.js.map +1 -1
  144. package/build-module/query/view.js +30 -9
  145. package/build-module/query/view.js.map +1 -1
  146. package/build-module/search/index.js +0 -1
  147. package/build-module/search/index.js.map +1 -1
  148. package/build-module/table-of-contents/hooks.js +2 -2
  149. package/build-module/table-of-contents/hooks.js.map +1 -1
  150. package/build-module/template-part/edit/advanced-controls.js +1 -4
  151. package/build-module/template-part/edit/advanced-controls.js.map +1 -1
  152. package/build-module/template-part/edit/index.js +38 -16
  153. package/build-module/template-part/edit/index.js.map +1 -1
  154. package/build-module/video/edit.native.js +7 -2
  155. package/build-module/video/edit.native.js.map +1 -1
  156. package/build-module/video/transforms.js +17 -0
  157. package/build-module/video/transforms.js.map +1 -1
  158. package/build-style/common-rtl.css +4 -2
  159. package/build-style/common.css +4 -2
  160. package/build-style/cover/style-rtl.css +1 -2
  161. package/build-style/cover/style.css +1 -2
  162. package/build-style/editor-rtl.css +6 -4
  163. package/build-style/editor.css +6 -4
  164. package/build-style/gallery/style-rtl.css +2 -4
  165. package/build-style/gallery/style.css +2 -4
  166. package/build-style/image/editor-rtl.css +6 -0
  167. package/build-style/image/editor.css +6 -0
  168. package/build-style/page-list/editor-rtl.css +0 -4
  169. package/build-style/page-list/editor.css +0 -4
  170. package/build-style/pullquote/style-rtl.css +10 -1
  171. package/build-style/pullquote/style.css +10 -1
  172. package/build-style/search/style-rtl.css +2 -1
  173. package/build-style/search/style.css +2 -1
  174. package/build-style/style-rtl.css +19 -11
  175. package/build-style/style.css +19 -11
  176. package/build-style/video/style-rtl.css +1 -2
  177. package/build-style/video/style.css +1 -2
  178. package/package.json +34 -32
  179. package/src/avatar/edit.js +16 -18
  180. package/src/block/block.json +3 -0
  181. package/src/block/edit.js +96 -14
  182. package/src/block/{v1/edit.native.js → edit.native.js} +4 -4
  183. package/src/block/index.js +2 -3
  184. package/src/block/index.php +3 -31
  185. package/src/button/block.json +1 -0
  186. package/src/button/edit.js +76 -43
  187. package/src/button/save.js +3 -0
  188. package/src/embed/edit.js +3 -2
  189. package/src/file/block.json +0 -1
  190. package/src/file/index.php +11 -57
  191. package/src/footnotes/edit.js +2 -1
  192. package/src/footnotes/format.js +34 -31
  193. package/src/footnotes/index.php +20 -11
  194. package/src/heading/block.json +1 -0
  195. package/src/heading/edit.js +18 -14
  196. package/src/heading/edit.native.js +144 -0
  197. package/src/image/block.json +7 -3
  198. package/src/image/edit.js +19 -6
  199. package/src/image/editor.scss +6 -1
  200. package/src/image/image.js +101 -42
  201. package/src/image/index.js +6 -0
  202. package/src/image/index.php +14 -51
  203. package/src/more/index.js +6 -0
  204. package/src/navigation/block.json +0 -1
  205. package/src/navigation/edit/index.js +2 -2
  206. package/src/navigation/index.php +777 -28
  207. package/src/navigation-link/index.php +78 -16
  208. package/src/page-list/editor.scss +0 -4
  209. package/src/paragraph/block.json +1 -1
  210. package/src/paragraph/edit.js +23 -19
  211. package/src/post-content/edit.js +2 -2
  212. package/src/post-date/edit.js +38 -33
  213. package/src/post-navigation-link/block.json +8 -0
  214. package/src/post-navigation-link/edit.js +63 -1
  215. package/src/post-navigation-link/index.php +17 -3
  216. package/src/post-terms/index.php +13 -4
  217. package/src/pullquote/block.json +4 -0
  218. package/src/pullquote/style.scss +13 -1
  219. package/src/query/block.json +1 -2
  220. package/src/query/edit/inspector-controls/index.js +137 -146
  221. package/src/query/edit/query-content.js +9 -7
  222. package/src/query/edit/query-placeholder.js +11 -11
  223. package/src/query/index.php +33 -71
  224. package/src/query/variations.js +4 -0
  225. package/src/query/view.js +24 -19
  226. package/src/search/block.json +0 -1
  227. package/src/search/index.php +18 -36
  228. package/src/table-of-contents/hooks.js +2 -2
  229. package/src/template-part/edit/advanced-controls.js +2 -3
  230. package/src/template-part/edit/index.js +77 -50
  231. package/src/template-part/index.php +2 -2
  232. package/src/video/edit.native.js +5 -2
  233. package/src/video/test/edit.native.js +38 -0
  234. package/src/video/transforms.js +32 -0
  235. package/tsconfig.json +1 -0
  236. package/build/block/v1/edit.js +0 -116
  237. package/build/block/v1/edit.js.map +0 -1
  238. package/build/block/v1/edit.native.js.map +0 -1
  239. package/build-module/block/v1/edit.js +0 -108
  240. package/build-module/block/v1/edit.js.map +0 -1
  241. package/build-module/block/v1/edit.native.js.map +0 -1
  242. package/src/block/v1/edit.js +0 -163
@@ -19,6 +19,9 @@ const metadata = {
19
19
  attributes: {
20
20
  ref: {
21
21
  type: "number"
22
+ },
23
+ overrides: {
24
+ type: "object"
22
25
  }
23
26
  },
24
27
  supports: {
@@ -28,14 +31,13 @@ const metadata = {
28
31
  renaming: false
29
32
  }
30
33
  };
31
- import editV1 from './v1/edit';
32
- import editV2 from './edit';
34
+ import edit from './edit';
33
35
  const {
34
36
  name
35
37
  } = metadata;
36
38
  export { metadata, name };
37
39
  export const settings = {
38
- edit: window.__experimentalPatternPartialSyncing ? editV2 : editV1,
40
+ edit,
39
41
  icon
40
42
  };
41
43
  export const init = () => initBlock({
@@ -1 +1 @@
1
- {"version":3,"names":["symbol","icon","initBlock","metadata","$schema","apiVersion","name","title","category","description","keywords","textdomain","attributes","ref","type","supports","customClassName","html","inserter","renaming","editV1","editV2","settings","edit","window","__experimentalPatternPartialSyncing","init"],"sources":["@wordpress/block-library/src/block/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { symbol as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport editV1 from './v1/edit';\nimport editV2 from './edit';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\tedit: window.__experimentalPatternPartialSyncing ? editV2 : editV1,\n\ticon,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAM,IAAIC,IAAI,QAAQ,kBAAkB;;AAEjD;AACA;AACA;AACA,OAAOC,SAAS,MAAM,qBAAqB;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,QAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,GAAA;MAAAC,IAAA;IAAA;EAAA;EAAAC,QAAA;IAAAC,eAAA;IAAAC,IAAA;IAAAC,QAAA;IAAAC,QAAA;EAAA;AAAA;AAE5C,OAAOC,MAAM,MAAM,WAAW;AAC9B,OAAOC,MAAM,MAAM,QAAQ;AAE3B,MAAM;EAAEf;AAAK,CAAC,GAAGH,QAAQ;AAEzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAMgB,QAAQ,GAAG;EACvBC,IAAI,EAAEC,MAAM,CAACC,mCAAmC,GAAGJ,MAAM,GAAGD,MAAM;EAClEnB;AACD,CAAC;AAED,OAAO,MAAMyB,IAAI,GAAGA,CAAA,KAAMxB,SAAS,CAAE;EAAEI,IAAI;EAAEH,QAAQ;EAAEmB;AAAS,CAAE,CAAC"}
1
+ {"version":3,"names":["symbol","icon","initBlock","metadata","$schema","apiVersion","name","title","category","description","keywords","textdomain","attributes","ref","type","overrides","supports","customClassName","html","inserter","renaming","edit","settings","init"],"sources":["@wordpress/block-library/src/block/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { symbol as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\tedit,\n\ticon,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAM,IAAIC,IAAI,QAAQ,kBAAkB;;AAEjD;AACA;AACA;AACA,OAAOC,SAAS,MAAM,qBAAqB;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,QAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,GAAA;MAAAC,IAAA;IAAA;IAAAC,SAAA;MAAAD,IAAA;IAAA;EAAA;EAAAE,QAAA;IAAAC,eAAA;IAAAC,IAAA;IAAAC,QAAA;IAAAC,QAAA;EAAA;AAAA;AAE5C,OAAOC,IAAI,MAAM,QAAQ;AAEzB,MAAM;EAAEf;AAAK,CAAC,GAAGH,QAAQ;AAEzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAMgB,QAAQ,GAAG;EACvBD,IAAI;EACJpB;AACD,CAAC;AAED,OAAO,MAAMsB,IAAI,GAAGA,CAAA,KAAMrB,SAAS,CAAE;EAAEI,IAAI;EAAEH,QAAQ;EAAEmB;AAAS,CAAE,CAAC"}
@@ -10,6 +10,7 @@ import classnames from 'classnames';
10
10
  import { NEW_TAB_TARGET, NOFOLLOW_REL } from './constants';
11
11
  import { getUpdatedLinkAttributes } from './get-updated-link-attributes';
12
12
  import removeAnchorTag from '../utils/remove-anchor-tag';
13
+ import { unlock } from '../lock-unlock';
13
14
 
14
15
  /**
15
16
  * WordPress dependencies
@@ -17,7 +18,7 @@ import removeAnchorTag from '../utils/remove-anchor-tag';
17
18
  import { __ } from '@wordpress/i18n';
18
19
  import { useEffect, useState, useRef, useMemo } from '@wordpress/element';
19
20
  import { Button, ButtonGroup, PanelBody, TextControl, ToolbarButton, Popover } from '@wordpress/components';
20
- import { AlignmentControl, BlockControls, InspectorControls, RichText, useBlockProps, __experimentalUseBorderProps as useBorderProps, __experimentalUseColorProps as useColorProps, __experimentalGetSpacingClassesAndStyles as useSpacingProps, __experimentalLinkControl as LinkControl, __experimentalGetElementClassName, store as blockEditorStore } from '@wordpress/block-editor';
21
+ import { AlignmentControl, BlockControls, InspectorControls, RichText, useBlockProps, __experimentalUseBorderProps as useBorderProps, __experimentalUseColorProps as useColorProps, __experimentalGetSpacingClassesAndStyles as useSpacingProps, __experimentalUseShadowProps as useShadowProps, __experimentalLinkControl as LinkControl, __experimentalGetElementClassName, store as blockEditorStore, useBlockEditingMode } from '@wordpress/block-editor';
21
22
  import { displayShortcut, isKeyboardEvent, ENTER } from '@wordpress/keycodes';
22
23
  import { link, linkOff } from '@wordpress/icons';
23
24
  import { createBlock, cloneBlock, getDefaultBlockName } from '@wordpress/blocks';
@@ -120,7 +121,8 @@ function ButtonEdit(props) {
120
121
  style,
121
122
  text,
122
123
  url,
123
- width
124
+ width,
125
+ metadata
124
126
  } = attributes;
125
127
  const TagName = tagName || 'a';
126
128
  function onKeyDown(event) {
@@ -138,12 +140,14 @@ function ButtonEdit(props) {
138
140
  const borderProps = useBorderProps(attributes);
139
141
  const colorProps = useColorProps(attributes);
140
142
  const spacingProps = useSpacingProps(attributes);
143
+ const shadowProps = useShadowProps(attributes);
141
144
  const ref = useRef();
142
145
  const richTextRef = useRef();
143
146
  const blockProps = useBlockProps({
144
147
  ref: useMergeRefs([setPopoverAnchor, ref]),
145
148
  onKeyDown
146
149
  });
150
+ const blockEditingMode = useBlockEditingMode();
147
151
  const [isEditingURL, setIsEditingURL] = useState(false);
148
152
  const isURLSet = !!url;
149
153
  const opensInNewTab = linkTarget === NEW_TAB_TARGET;
@@ -179,6 +183,19 @@ function ButtonEdit(props) {
179
183
  clientId
180
184
  });
181
185
  const mergedRef = useMergeRefs([useEnterRef, richTextRef]);
186
+ const {
187
+ lockUrlControls = false
188
+ } = useSelect(select => {
189
+ if (!isSelected) {
190
+ return {};
191
+ }
192
+ const {
193
+ getBlockBindingsSource
194
+ } = unlock(select(blockEditorStore));
195
+ return {
196
+ lockUrlControls: !!metadata?.bindings?.url && getBlockBindingsSource(metadata?.bindings?.url?.source?.name)?.lockAttributesEditing === true
197
+ };
198
+ }, [isSelected]);
182
199
  return createElement(Fragment, null, createElement("div", {
183
200
  ...blockProps,
184
201
  className: classnames(blockProps.className, {
@@ -203,7 +220,8 @@ function ButtonEdit(props) {
203
220
  style: {
204
221
  ...borderProps.style,
205
222
  ...colorProps.style,
206
- ...spacingProps.style
223
+ ...spacingProps.style,
224
+ ...shadowProps.style
207
225
  },
208
226
  onSplit: value => createBlock('core/button', {
209
227
  ...attributes,
@@ -214,27 +232,27 @@ function ButtonEdit(props) {
214
232
  identifier: "text"
215
233
  })), createElement(BlockControls, {
216
234
  group: "block"
217
- }, createElement(AlignmentControl, {
235
+ }, blockEditingMode === 'default' && createElement(AlignmentControl, {
218
236
  value: textAlign,
219
237
  onChange: nextAlign => {
220
238
  setAttributes({
221
239
  textAlign: nextAlign
222
240
  });
223
241
  }
224
- }), !isURLSet && isLinkTag && createElement(ToolbarButton, {
242
+ }), !isURLSet && isLinkTag && !lockUrlControls && createElement(ToolbarButton, {
225
243
  name: "link",
226
244
  icon: link,
227
245
  title: __('Link'),
228
246
  shortcut: displayShortcut.primary('k'),
229
247
  onClick: startEditing
230
- }), isURLSet && isLinkTag && createElement(ToolbarButton, {
248
+ }), isURLSet && isLinkTag && !lockUrlControls && createElement(ToolbarButton, {
231
249
  name: "link",
232
250
  icon: linkOff,
233
251
  title: __('Unlink'),
234
252
  shortcut: displayShortcut.primaryShift('k'),
235
253
  onClick: unlink,
236
254
  isActive: true
237
- })), isLinkTag && isSelected && (isEditingURL || isURLSet) && createElement(Popover, {
255
+ })), isLinkTag && isSelected && (isEditingURL || isURLSet) && !lockUrlControls && createElement(Popover, {
238
256
  placement: "bottom",
239
257
  onClose: () => {
240
258
  setIsEditingURL(false);
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","NEW_TAB_TARGET","NOFOLLOW_REL","getUpdatedLinkAttributes","removeAnchorTag","__","useEffect","useState","useRef","useMemo","Button","ButtonGroup","PanelBody","TextControl","ToolbarButton","Popover","AlignmentControl","BlockControls","InspectorControls","RichText","useBlockProps","__experimentalUseBorderProps","useBorderProps","__experimentalUseColorProps","useColorProps","__experimentalGetSpacingClassesAndStyles","useSpacingProps","__experimentalLinkControl","LinkControl","__experimentalGetElementClassName","store","blockEditorStore","displayShortcut","isKeyboardEvent","ENTER","link","linkOff","createBlock","cloneBlock","getDefaultBlockName","useMergeRefs","useRefEffect","useSelect","useDispatch","LINK_SETTINGS","DEFAULT_LINK_SETTINGS","id","title","useEnter","props","replaceBlocks","selectionChange","getBlock","getBlockRootClientId","getBlockIndex","propsRef","current","element","onKeyDown","event","defaultPrevented","keyCode","content","clientId","length","preventDefault","topParentListBlock","blockIndex","head","innerBlocks","slice","middle","after","tail","addEventListener","removeEventListener","WidthPanel","selectedWidth","setAttributes","handleChange","newWidth","width","undefined","createElement","map","widthValue","key","size","variant","onClick","ButtonEdit","attributes","className","isSelected","onReplace","mergeBlocks","tagName","textAlign","linkTarget","placeholder","rel","style","text","url","TagName","primary","startEditing","primaryShift","unlink","richTextRef","focus","popoverAnchor","setPopoverAnchor","borderProps","colorProps","spacingProps","ref","blockProps","isEditingURL","setIsEditingURL","isURLSet","opensInNewTab","nofollow","includes","isLinkTag","linkValue","useEnterRef","mergedRef","Fragment","fontSize","value","onChange","withoutInteractiveFormatting","border","radius","onSplit","onMerge","identifier","group","nextAlign","name","icon","shortcut","isActive","placement","onClose","anchor","focusOnMount","__unstableSlotName","shift","newURL","newOpensInNewTab","newNofollow","onRemove","forceIsEditingLink","settings","__nextHasNoMarginBottom","label","newRel"],"sources":["@wordpress/block-library/src/button/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * Internal dependencies\n */\nimport { NEW_TAB_TARGET, NOFOLLOW_REL } from './constants';\nimport { getUpdatedLinkAttributes } from './get-updated-link-attributes';\nimport removeAnchorTag from '../utils/remove-anchor-tag';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useEffect, useState, useRef, useMemo } from '@wordpress/element';\nimport {\n\tButton,\n\tButtonGroup,\n\tPanelBody,\n\tTextControl,\n\tToolbarButton,\n\tPopover,\n} from '@wordpress/components';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tInspectorControls,\n\tRichText,\n\tuseBlockProps,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalUseColorProps as useColorProps,\n\t__experimentalGetSpacingClassesAndStyles as useSpacingProps,\n\t__experimentalLinkControl as LinkControl,\n\t__experimentalGetElementClassName,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { displayShortcut, isKeyboardEvent, ENTER } from '@wordpress/keycodes';\nimport { link, linkOff } from '@wordpress/icons';\nimport {\n\tcreateBlock,\n\tcloneBlock,\n\tgetDefaultBlockName,\n} from '@wordpress/blocks';\nimport { useMergeRefs, useRefEffect } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\nconst LINK_SETTINGS = [\n\t...LinkControl.DEFAULT_LINK_SETTINGS,\n\t{\n\t\tid: 'nofollow',\n\t\ttitle: __( 'Mark as nofollow' ),\n\t},\n];\n\nfunction useEnter( props ) {\n\tconst { replaceBlocks, selectionChange } = useDispatch( blockEditorStore );\n\tconst { getBlock, getBlockRootClientId, getBlockIndex } =\n\t\tuseSelect( blockEditorStore );\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\treturn useRefEffect( ( element ) => {\n\t\tfunction onKeyDown( event ) {\n\t\t\tif ( event.defaultPrevented || event.keyCode !== ENTER ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { content, clientId } = propsRef.current;\n\t\t\tif ( content.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tevent.preventDefault();\n\t\t\tconst topParentListBlock = getBlock(\n\t\t\t\tgetBlockRootClientId( clientId )\n\t\t\t);\n\t\t\tconst blockIndex = getBlockIndex( clientId );\n\t\t\tconst head = cloneBlock( {\n\t\t\t\t...topParentListBlock,\n\t\t\t\tinnerBlocks: topParentListBlock.innerBlocks.slice(\n\t\t\t\t\t0,\n\t\t\t\t\tblockIndex\n\t\t\t\t),\n\t\t\t} );\n\t\t\tconst middle = createBlock( getDefaultBlockName() );\n\t\t\tconst after = topParentListBlock.innerBlocks.slice(\n\t\t\t\tblockIndex + 1\n\t\t\t);\n\t\t\tconst tail = after.length\n\t\t\t\t? [\n\t\t\t\t\t\tcloneBlock( {\n\t\t\t\t\t\t\t...topParentListBlock,\n\t\t\t\t\t\t\tinnerBlocks: after,\n\t\t\t\t\t\t} ),\n\t\t\t\t ]\n\t\t\t\t: [];\n\t\t\treplaceBlocks(\n\t\t\t\ttopParentListBlock.clientId,\n\t\t\t\t[ head, middle, ...tail ],\n\t\t\t\t1\n\t\t\t);\n\t\t\t// We manually change the selection here because we are replacing\n\t\t\t// a different block than the selected one.\n\t\t\tselectionChange( middle.clientId );\n\t\t}\n\n\t\telement.addEventListener( 'keydown', onKeyDown );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'keydown', onKeyDown );\n\t\t};\n\t}, [] );\n}\n\nfunction WidthPanel( { selectedWidth, setAttributes } ) {\n\tfunction handleChange( newWidth ) {\n\t\t// Check if we are toggling the width off\n\t\tconst width = selectedWidth === newWidth ? undefined : newWidth;\n\n\t\t// Update attributes.\n\t\tsetAttributes( { width } );\n\t}\n\n\treturn (\n\t\t<PanelBody title={ __( 'Width settings' ) }>\n\t\t\t<ButtonGroup aria-label={ __( 'Button width' ) }>\n\t\t\t\t{ [ 25, 50, 75, 100 ].map( ( widthValue ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tkey={ widthValue }\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\twidthValue === selectedWidth\n\t\t\t\t\t\t\t\t\t? 'primary'\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={ () => handleChange( widthValue ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ widthValue }%\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</ButtonGroup>\n\t\t</PanelBody>\n\t);\n}\n\nfunction ButtonEdit( props ) {\n\tconst {\n\t\tattributes,\n\t\tsetAttributes,\n\t\tclassName,\n\t\tisSelected,\n\t\tonReplace,\n\t\tmergeBlocks,\n\t\tclientId,\n\t} = props;\n\tconst {\n\t\ttagName,\n\t\ttextAlign,\n\t\tlinkTarget,\n\t\tplaceholder,\n\t\trel,\n\t\tstyle,\n\t\ttext,\n\t\turl,\n\t\twidth,\n\t} = attributes;\n\n\tconst TagName = tagName || 'a';\n\n\tfunction onKeyDown( event ) {\n\t\tif ( isKeyboardEvent.primary( event, 'k' ) ) {\n\t\t\tstartEditing( event );\n\t\t} else if ( isKeyboardEvent.primaryShift( event, 'k' ) ) {\n\t\t\tunlink();\n\t\t\trichTextRef.current?.focus();\n\t\t}\n\t}\n\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\n\tconst borderProps = useBorderProps( attributes );\n\tconst colorProps = useColorProps( attributes );\n\tconst spacingProps = useSpacingProps( attributes );\n\tconst ref = useRef();\n\tconst richTextRef = useRef();\n\tconst blockProps = useBlockProps( {\n\t\tref: useMergeRefs( [ setPopoverAnchor, ref ] ),\n\t\tonKeyDown,\n\t} );\n\n\tconst [ isEditingURL, setIsEditingURL ] = useState( false );\n\tconst isURLSet = !! url;\n\tconst opensInNewTab = linkTarget === NEW_TAB_TARGET;\n\tconst nofollow = !! rel?.includes( NOFOLLOW_REL );\n\tconst isLinkTag = 'a' === TagName;\n\n\tfunction startEditing( event ) {\n\t\tevent.preventDefault();\n\t\tsetIsEditingURL( true );\n\t}\n\n\tfunction unlink() {\n\t\tsetAttributes( {\n\t\t\turl: undefined,\n\t\t\tlinkTarget: undefined,\n\t\t\trel: undefined,\n\t\t} );\n\t\tsetIsEditingURL( false );\n\t}\n\n\tuseEffect( () => {\n\t\tif ( ! isSelected ) {\n\t\t\tsetIsEditingURL( false );\n\t\t}\n\t}, [ isSelected ] );\n\n\t// Memoize link value to avoid overriding the LinkControl's internal state.\n\t// This is a temporary fix. See https://github.com/WordPress/gutenberg/issues/51256.\n\tconst linkValue = useMemo(\n\t\t() => ( { url, opensInNewTab, nofollow } ),\n\t\t[ url, opensInNewTab, nofollow ]\n\t);\n\n\tconst useEnterRef = useEnter( { content: text, clientId } );\n\tconst mergedRef = useMergeRefs( [ useEnterRef, richTextRef ] );\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\t{ ...blockProps }\n\t\t\t\tclassName={ classnames( blockProps.className, {\n\t\t\t\t\t[ `has-custom-width wp-block-button__width-${ width }` ]:\n\t\t\t\t\t\twidth,\n\t\t\t\t\t[ `has-custom-font-size` ]: blockProps.style.fontSize,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t<RichText\n\t\t\t\t\tref={ mergedRef }\n\t\t\t\t\taria-label={ __( 'Button text' ) }\n\t\t\t\t\tplaceholder={ placeholder || __( 'Add text…' ) }\n\t\t\t\t\tvalue={ text }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\ttext: removeAnchorTag( value ),\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t'wp-block-button__link',\n\t\t\t\t\t\tcolorProps.className,\n\t\t\t\t\t\tborderProps.className,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t\t\t\t\t\t// For backwards compatibility add style that isn't\n\t\t\t\t\t\t\t// provided via block support.\n\t\t\t\t\t\t\t'no-border-radius': style?.border?.radius === 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t__experimentalGetElementClassName( 'button' )\n\t\t\t\t\t) }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t...borderProps.style,\n\t\t\t\t\t\t...colorProps.style,\n\t\t\t\t\t\t...spacingProps.style,\n\t\t\t\t\t} }\n\t\t\t\t\tonSplit={ ( value ) =>\n\t\t\t\t\t\tcreateBlock( 'core/button', {\n\t\t\t\t\t\t\t...attributes,\n\t\t\t\t\t\t\ttext: value,\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\tonMerge={ mergeBlocks }\n\t\t\t\t\tidentifier=\"text\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t{ ! isURLSet && isLinkTag && (\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tname=\"link\"\n\t\t\t\t\t\ticon={ link }\n\t\t\t\t\t\ttitle={ __( 'Link' ) }\n\t\t\t\t\t\tshortcut={ displayShortcut.primary( 'k' ) }\n\t\t\t\t\t\tonClick={ startEditing }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ isURLSet && isLinkTag && (\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tname=\"link\"\n\t\t\t\t\t\ticon={ linkOff }\n\t\t\t\t\t\ttitle={ __( 'Unlink' ) }\n\t\t\t\t\t\tshortcut={ displayShortcut.primaryShift( 'k' ) }\n\t\t\t\t\t\tonClick={ unlink }\n\t\t\t\t\t\tisActive={ true }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</BlockControls>\n\t\t\t{ isLinkTag && isSelected && ( isEditingURL || isURLSet ) && (\n\t\t\t\t<Popover\n\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\tsetIsEditingURL( false );\n\t\t\t\t\t\trichTextRef.current?.focus();\n\t\t\t\t\t} }\n\t\t\t\t\tanchor={ popoverAnchor }\n\t\t\t\t\tfocusOnMount={ isEditingURL ? 'firstElement' : false }\n\t\t\t\t\t__unstableSlotName={ '__unstable-block-tools-after' }\n\t\t\t\t\tshift\n\t\t\t\t>\n\t\t\t\t\t<LinkControl\n\t\t\t\t\t\tvalue={ linkValue }\n\t\t\t\t\t\tonChange={ ( {\n\t\t\t\t\t\t\turl: newURL,\n\t\t\t\t\t\t\topensInNewTab: newOpensInNewTab,\n\t\t\t\t\t\t\tnofollow: newNofollow,\n\t\t\t\t\t\t} ) =>\n\t\t\t\t\t\t\tsetAttributes(\n\t\t\t\t\t\t\t\tgetUpdatedLinkAttributes( {\n\t\t\t\t\t\t\t\t\trel,\n\t\t\t\t\t\t\t\t\turl: newURL,\n\t\t\t\t\t\t\t\t\topensInNewTab: newOpensInNewTab,\n\t\t\t\t\t\t\t\t\tnofollow: newNofollow,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonRemove={ () => {\n\t\t\t\t\t\t\tunlink();\n\t\t\t\t\t\t\trichTextRef.current?.focus();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tforceIsEditingLink={ isEditingURL }\n\t\t\t\t\t\tsettings={ LINK_SETTINGS }\n\t\t\t\t\t/>\n\t\t\t\t</Popover>\n\t\t\t) }\n\t\t\t<InspectorControls>\n\t\t\t\t<WidthPanel\n\t\t\t\t\tselectedWidth={ width }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t{ isLinkTag && (\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Link rel' ) }\n\t\t\t\t\t\tvalue={ rel || '' }\n\t\t\t\t\t\tonChange={ ( newRel ) =>\n\t\t\t\t\t\t\tsetAttributes( { rel: newRel } )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</InspectorControls>\n\t\t</>\n\t);\n}\n\nexport default ButtonEdit;\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","NEW_TAB_TARGET","NOFOLLOW_REL","getUpdatedLinkAttributes","removeAnchorTag","unlock","__","useEffect","useState","useRef","useMemo","Button","ButtonGroup","PanelBody","TextControl","ToolbarButton","Popover","AlignmentControl","BlockControls","InspectorControls","RichText","useBlockProps","__experimentalUseBorderProps","useBorderProps","__experimentalUseColorProps","useColorProps","__experimentalGetSpacingClassesAndStyles","useSpacingProps","__experimentalUseShadowProps","useShadowProps","__experimentalLinkControl","LinkControl","__experimentalGetElementClassName","store","blockEditorStore","useBlockEditingMode","displayShortcut","isKeyboardEvent","ENTER","link","linkOff","createBlock","cloneBlock","getDefaultBlockName","useMergeRefs","useRefEffect","useSelect","useDispatch","LINK_SETTINGS","DEFAULT_LINK_SETTINGS","id","title","useEnter","props","replaceBlocks","selectionChange","getBlock","getBlockRootClientId","getBlockIndex","propsRef","current","element","onKeyDown","event","defaultPrevented","keyCode","content","clientId","length","preventDefault","topParentListBlock","blockIndex","head","innerBlocks","slice","middle","after","tail","addEventListener","removeEventListener","WidthPanel","selectedWidth","setAttributes","handleChange","newWidth","width","undefined","createElement","map","widthValue","key","size","variant","onClick","ButtonEdit","attributes","className","isSelected","onReplace","mergeBlocks","tagName","textAlign","linkTarget","placeholder","rel","style","text","url","metadata","TagName","primary","startEditing","primaryShift","unlink","richTextRef","focus","popoverAnchor","setPopoverAnchor","borderProps","colorProps","spacingProps","shadowProps","ref","blockProps","blockEditingMode","isEditingURL","setIsEditingURL","isURLSet","opensInNewTab","nofollow","includes","isLinkTag","linkValue","useEnterRef","mergedRef","lockUrlControls","select","getBlockBindingsSource","bindings","source","name","lockAttributesEditing","Fragment","fontSize","value","onChange","withoutInteractiveFormatting","border","radius","onSplit","onMerge","identifier","group","nextAlign","icon","shortcut","isActive","placement","onClose","anchor","focusOnMount","__unstableSlotName","shift","newURL","newOpensInNewTab","newNofollow","onRemove","forceIsEditingLink","settings","__nextHasNoMarginBottom","label","newRel"],"sources":["@wordpress/block-library/src/button/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * Internal dependencies\n */\nimport { NEW_TAB_TARGET, NOFOLLOW_REL } from './constants';\nimport { getUpdatedLinkAttributes } from './get-updated-link-attributes';\nimport removeAnchorTag from '../utils/remove-anchor-tag';\nimport { unlock } from '../lock-unlock';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useEffect, useState, useRef, useMemo } from '@wordpress/element';\nimport {\n\tButton,\n\tButtonGroup,\n\tPanelBody,\n\tTextControl,\n\tToolbarButton,\n\tPopover,\n} from '@wordpress/components';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tInspectorControls,\n\tRichText,\n\tuseBlockProps,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalUseColorProps as useColorProps,\n\t__experimentalGetSpacingClassesAndStyles as useSpacingProps,\n\t__experimentalUseShadowProps as useShadowProps,\n\t__experimentalLinkControl as LinkControl,\n\t__experimentalGetElementClassName,\n\tstore as blockEditorStore,\n\tuseBlockEditingMode,\n} from '@wordpress/block-editor';\nimport { displayShortcut, isKeyboardEvent, ENTER } from '@wordpress/keycodes';\nimport { link, linkOff } from '@wordpress/icons';\nimport {\n\tcreateBlock,\n\tcloneBlock,\n\tgetDefaultBlockName,\n} from '@wordpress/blocks';\nimport { useMergeRefs, useRefEffect } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\nconst LINK_SETTINGS = [\n\t...LinkControl.DEFAULT_LINK_SETTINGS,\n\t{\n\t\tid: 'nofollow',\n\t\ttitle: __( 'Mark as nofollow' ),\n\t},\n];\n\nfunction useEnter( props ) {\n\tconst { replaceBlocks, selectionChange } = useDispatch( blockEditorStore );\n\tconst { getBlock, getBlockRootClientId, getBlockIndex } =\n\t\tuseSelect( blockEditorStore );\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\treturn useRefEffect( ( element ) => {\n\t\tfunction onKeyDown( event ) {\n\t\t\tif ( event.defaultPrevented || event.keyCode !== ENTER ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { content, clientId } = propsRef.current;\n\t\t\tif ( content.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tevent.preventDefault();\n\t\t\tconst topParentListBlock = getBlock(\n\t\t\t\tgetBlockRootClientId( clientId )\n\t\t\t);\n\t\t\tconst blockIndex = getBlockIndex( clientId );\n\t\t\tconst head = cloneBlock( {\n\t\t\t\t...topParentListBlock,\n\t\t\t\tinnerBlocks: topParentListBlock.innerBlocks.slice(\n\t\t\t\t\t0,\n\t\t\t\t\tblockIndex\n\t\t\t\t),\n\t\t\t} );\n\t\t\tconst middle = createBlock( getDefaultBlockName() );\n\t\t\tconst after = topParentListBlock.innerBlocks.slice(\n\t\t\t\tblockIndex + 1\n\t\t\t);\n\t\t\tconst tail = after.length\n\t\t\t\t? [\n\t\t\t\t\t\tcloneBlock( {\n\t\t\t\t\t\t\t...topParentListBlock,\n\t\t\t\t\t\t\tinnerBlocks: after,\n\t\t\t\t\t\t} ),\n\t\t\t\t ]\n\t\t\t\t: [];\n\t\t\treplaceBlocks(\n\t\t\t\ttopParentListBlock.clientId,\n\t\t\t\t[ head, middle, ...tail ],\n\t\t\t\t1\n\t\t\t);\n\t\t\t// We manually change the selection here because we are replacing\n\t\t\t// a different block than the selected one.\n\t\t\tselectionChange( middle.clientId );\n\t\t}\n\n\t\telement.addEventListener( 'keydown', onKeyDown );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'keydown', onKeyDown );\n\t\t};\n\t}, [] );\n}\n\nfunction WidthPanel( { selectedWidth, setAttributes } ) {\n\tfunction handleChange( newWidth ) {\n\t\t// Check if we are toggling the width off\n\t\tconst width = selectedWidth === newWidth ? undefined : newWidth;\n\n\t\t// Update attributes.\n\t\tsetAttributes( { width } );\n\t}\n\n\treturn (\n\t\t<PanelBody title={ __( 'Width settings' ) }>\n\t\t\t<ButtonGroup aria-label={ __( 'Button width' ) }>\n\t\t\t\t{ [ 25, 50, 75, 100 ].map( ( widthValue ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tkey={ widthValue }\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\twidthValue === selectedWidth\n\t\t\t\t\t\t\t\t\t? 'primary'\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={ () => handleChange( widthValue ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ widthValue }%\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</ButtonGroup>\n\t\t</PanelBody>\n\t);\n}\n\nfunction ButtonEdit( props ) {\n\tconst {\n\t\tattributes,\n\t\tsetAttributes,\n\t\tclassName,\n\t\tisSelected,\n\t\tonReplace,\n\t\tmergeBlocks,\n\t\tclientId,\n\t} = props;\n\tconst {\n\t\ttagName,\n\t\ttextAlign,\n\t\tlinkTarget,\n\t\tplaceholder,\n\t\trel,\n\t\tstyle,\n\t\ttext,\n\t\turl,\n\t\twidth,\n\t\tmetadata,\n\t} = attributes;\n\n\tconst TagName = tagName || 'a';\n\n\tfunction onKeyDown( event ) {\n\t\tif ( isKeyboardEvent.primary( event, 'k' ) ) {\n\t\t\tstartEditing( event );\n\t\t} else if ( isKeyboardEvent.primaryShift( event, 'k' ) ) {\n\t\t\tunlink();\n\t\t\trichTextRef.current?.focus();\n\t\t}\n\t}\n\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\n\tconst borderProps = useBorderProps( attributes );\n\tconst colorProps = useColorProps( attributes );\n\tconst spacingProps = useSpacingProps( attributes );\n\tconst shadowProps = useShadowProps( attributes );\n\tconst ref = useRef();\n\tconst richTextRef = useRef();\n\tconst blockProps = useBlockProps( {\n\t\tref: useMergeRefs( [ setPopoverAnchor, ref ] ),\n\t\tonKeyDown,\n\t} );\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst [ isEditingURL, setIsEditingURL ] = useState( false );\n\tconst isURLSet = !! url;\n\tconst opensInNewTab = linkTarget === NEW_TAB_TARGET;\n\tconst nofollow = !! rel?.includes( NOFOLLOW_REL );\n\tconst isLinkTag = 'a' === TagName;\n\n\tfunction startEditing( event ) {\n\t\tevent.preventDefault();\n\t\tsetIsEditingURL( true );\n\t}\n\n\tfunction unlink() {\n\t\tsetAttributes( {\n\t\t\turl: undefined,\n\t\t\tlinkTarget: undefined,\n\t\t\trel: undefined,\n\t\t} );\n\t\tsetIsEditingURL( false );\n\t}\n\n\tuseEffect( () => {\n\t\tif ( ! isSelected ) {\n\t\t\tsetIsEditingURL( false );\n\t\t}\n\t}, [ isSelected ] );\n\n\t// Memoize link value to avoid overriding the LinkControl's internal state.\n\t// This is a temporary fix. See https://github.com/WordPress/gutenberg/issues/51256.\n\tconst linkValue = useMemo(\n\t\t() => ( { url, opensInNewTab, nofollow } ),\n\t\t[ url, opensInNewTab, nofollow ]\n\t);\n\n\tconst useEnterRef = useEnter( { content: text, clientId } );\n\tconst mergedRef = useMergeRefs( [ useEnterRef, richTextRef ] );\n\n\tconst { lockUrlControls = false } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! isSelected ) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst { getBlockBindingsSource } = unlock(\n\t\t\t\tselect( blockEditorStore )\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tlockUrlControls:\n\t\t\t\t\t!! metadata?.bindings?.url &&\n\t\t\t\t\tgetBlockBindingsSource(\n\t\t\t\t\t\tmetadata?.bindings?.url?.source?.name\n\t\t\t\t\t)?.lockAttributesEditing === true,\n\t\t\t};\n\t\t},\n\t\t[ isSelected ]\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\t{ ...blockProps }\n\t\t\t\tclassName={ classnames( blockProps.className, {\n\t\t\t\t\t[ `has-custom-width wp-block-button__width-${ width }` ]:\n\t\t\t\t\t\twidth,\n\t\t\t\t\t[ `has-custom-font-size` ]: blockProps.style.fontSize,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t<RichText\n\t\t\t\t\tref={ mergedRef }\n\t\t\t\t\taria-label={ __( 'Button text' ) }\n\t\t\t\t\tplaceholder={ placeholder || __( 'Add text…' ) }\n\t\t\t\t\tvalue={ text }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\ttext: removeAnchorTag( value ),\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t'wp-block-button__link',\n\t\t\t\t\t\tcolorProps.className,\n\t\t\t\t\t\tborderProps.className,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t\t\t\t\t\t// For backwards compatibility add style that isn't\n\t\t\t\t\t\t\t// provided via block support.\n\t\t\t\t\t\t\t'no-border-radius': style?.border?.radius === 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t__experimentalGetElementClassName( 'button' )\n\t\t\t\t\t) }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t...borderProps.style,\n\t\t\t\t\t\t...colorProps.style,\n\t\t\t\t\t\t...spacingProps.style,\n\t\t\t\t\t\t...shadowProps.style,\n\t\t\t\t\t} }\n\t\t\t\t\tonSplit={ ( value ) =>\n\t\t\t\t\t\tcreateBlock( 'core/button', {\n\t\t\t\t\t\t\t...attributes,\n\t\t\t\t\t\t\ttext: value,\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\tonMerge={ mergeBlocks }\n\t\t\t\t\tidentifier=\"text\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t{ blockEditingMode === 'default' && (\n\t\t\t\t\t<AlignmentControl\n\t\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ ! isURLSet && isLinkTag && ! lockUrlControls && (\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tname=\"link\"\n\t\t\t\t\t\ticon={ link }\n\t\t\t\t\t\ttitle={ __( 'Link' ) }\n\t\t\t\t\t\tshortcut={ displayShortcut.primary( 'k' ) }\n\t\t\t\t\t\tonClick={ startEditing }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ isURLSet && isLinkTag && ! lockUrlControls && (\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tname=\"link\"\n\t\t\t\t\t\ticon={ linkOff }\n\t\t\t\t\t\ttitle={ __( 'Unlink' ) }\n\t\t\t\t\t\tshortcut={ displayShortcut.primaryShift( 'k' ) }\n\t\t\t\t\t\tonClick={ unlink }\n\t\t\t\t\t\tisActive={ true }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</BlockControls>\n\t\t\t{ isLinkTag &&\n\t\t\t\tisSelected &&\n\t\t\t\t( isEditingURL || isURLSet ) &&\n\t\t\t\t! lockUrlControls && (\n\t\t\t\t\t<Popover\n\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\t\tsetIsEditingURL( false );\n\t\t\t\t\t\t\trichTextRef.current?.focus();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tanchor={ popoverAnchor }\n\t\t\t\t\t\tfocusOnMount={ isEditingURL ? 'firstElement' : false }\n\t\t\t\t\t\t__unstableSlotName={ '__unstable-block-tools-after' }\n\t\t\t\t\t\tshift\n\t\t\t\t\t>\n\t\t\t\t\t\t<LinkControl\n\t\t\t\t\t\t\tvalue={ linkValue }\n\t\t\t\t\t\t\tonChange={ ( {\n\t\t\t\t\t\t\t\turl: newURL,\n\t\t\t\t\t\t\t\topensInNewTab: newOpensInNewTab,\n\t\t\t\t\t\t\t\tnofollow: newNofollow,\n\t\t\t\t\t\t\t} ) =>\n\t\t\t\t\t\t\t\tsetAttributes(\n\t\t\t\t\t\t\t\t\tgetUpdatedLinkAttributes( {\n\t\t\t\t\t\t\t\t\t\trel,\n\t\t\t\t\t\t\t\t\t\turl: newURL,\n\t\t\t\t\t\t\t\t\t\topensInNewTab: newOpensInNewTab,\n\t\t\t\t\t\t\t\t\t\tnofollow: newNofollow,\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonRemove={ () => {\n\t\t\t\t\t\t\t\tunlink();\n\t\t\t\t\t\t\t\trichTextRef.current?.focus();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tforceIsEditingLink={ isEditingURL }\n\t\t\t\t\t\t\tsettings={ LINK_SETTINGS }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Popover>\n\t\t\t\t) }\n\t\t\t<InspectorControls>\n\t\t\t\t<WidthPanel\n\t\t\t\t\tselectedWidth={ width }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t{ isLinkTag && (\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Link rel' ) }\n\t\t\t\t\t\tvalue={ rel || '' }\n\t\t\t\t\t\tonChange={ ( newRel ) =>\n\t\t\t\t\t\t\tsetAttributes( { rel: newRel } )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</InspectorControls>\n\t\t</>\n\t);\n}\n\nexport default ButtonEdit;\n"],"mappings":"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"}
@@ -20,6 +20,7 @@ const metadata = {
20
20
  description: "Prompt visitors to take action with a button-style link.",
21
21
  keywords: ["link"],
22
22
  textdomain: "default",
23
+ usesContext: ["pattern/overrides"],
23
24
  attributes: {
24
25
  tagName: {
25
26
  type: "string",
@@ -1 +1 @@
1
- {"version":3,"names":["__","button","icon","initBlock","deprecated","edit","metadata","$schema","apiVersion","name","title","category","parent","description","keywords","textdomain","attributes","tagName","type","textAlign","url","source","selector","attribute","__experimentalRole","text","linkTarget","rel","placeholder","backgroundColor","textColor","gradient","width","supports","anchor","align","alignWide","color","__experimentalSkipSerialization","gradients","__experimentalDefaultControls","background","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalFontWeight","__experimentalFontStyle","__experimentalTextTransform","__experimentalTextDecoration","__experimentalLetterSpacing","reusable","shadow","spacing","padding","__experimentalBorder","radius","style","__experimentalSelector","styles","label","isDefault","editorStyle","save","settings","example","className","merge","a","init"],"sources":["@wordpress/block-library/src/button/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { button as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport deprecated from './deprecated';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\tclassName: 'is-style-fill',\n\t\t\ttext: __( 'Call to Action' ),\n\t\t},\n\t},\n\tedit,\n\tsave,\n\tdeprecated,\n\tmerge: ( a, { text = '' } ) => ( {\n\t\t...a,\n\t\ttext: ( a.text || '' ) + text,\n\t} ),\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"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"}
1
+ {"version":3,"names":["__","button","icon","initBlock","deprecated","edit","metadata","$schema","apiVersion","name","title","category","parent","description","keywords","textdomain","usesContext","attributes","tagName","type","textAlign","url","source","selector","attribute","__experimentalRole","text","linkTarget","rel","placeholder","backgroundColor","textColor","gradient","width","supports","anchor","align","alignWide","color","__experimentalSkipSerialization","gradients","__experimentalDefaultControls","background","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalFontWeight","__experimentalFontStyle","__experimentalTextTransform","__experimentalTextDecoration","__experimentalLetterSpacing","reusable","shadow","spacing","padding","__experimentalBorder","radius","style","__experimentalSelector","styles","label","isDefault","editorStyle","save","settings","example","className","merge","a","init"],"sources":["@wordpress/block-library/src/button/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { button as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport deprecated from './deprecated';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\tclassName: 'is-style-fill',\n\t\t\ttext: __( 'Call to Action' ),\n\t\t},\n\t},\n\tedit,\n\tsave,\n\tdeprecated,\n\tmerge: ( a, { text = '' } ) => ( {\n\t\t...a,\n\t\ttext: ( a.text || '' ) + text,\n\t} ),\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"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"}
@@ -7,7 +7,7 @@ import classnames from 'classnames';
7
7
  /**
8
8
  * WordPress dependencies
9
9
  */
10
- import { RichText, useBlockProps, __experimentalGetBorderClassesAndStyles as getBorderClassesAndStyles, __experimentalGetColorClassesAndStyles as getColorClassesAndStyles, __experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles, __experimentalGetElementClassName } from '@wordpress/block-editor';
10
+ import { RichText, useBlockProps, __experimentalGetBorderClassesAndStyles as getBorderClassesAndStyles, __experimentalGetColorClassesAndStyles as getColorClassesAndStyles, __experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles, __experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles, __experimentalGetElementClassName } from '@wordpress/block-editor';
11
11
  export default function save({
12
12
  attributes,
13
13
  className
@@ -34,6 +34,7 @@ export default function save({
34
34
  const borderProps = getBorderClassesAndStyles(attributes);
35
35
  const colorProps = getColorClassesAndStyles(attributes);
36
36
  const spacingProps = getSpacingClassesAndStyles(attributes);
37
+ const shadowProps = getShadowClassesAndStyles(attributes);
37
38
  const buttonClasses = classnames('wp-block-button__link', colorProps.className, borderProps.className, {
38
39
  [`has-text-align-${textAlign}`]: textAlign,
39
40
  // For backwards compatibility add style that isn't provided via
@@ -43,7 +44,8 @@ export default function save({
43
44
  const buttonStyle = {
44
45
  ...borderProps.style,
45
46
  ...colorProps.style,
46
- ...spacingProps.style
47
+ ...spacingProps.style,
48
+ ...shadowProps.style
47
49
  };
48
50
 
49
51
  // The use of a `title` attribute here is soft-deprecated, but still applied
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","RichText","useBlockProps","__experimentalGetBorderClassesAndStyles","getBorderClassesAndStyles","__experimentalGetColorClassesAndStyles","getColorClassesAndStyles","__experimentalGetSpacingClassesAndStyles","getSpacingClassesAndStyles","__experimentalGetElementClassName","save","attributes","className","tagName","type","textAlign","fontSize","linkTarget","rel","style","text","title","url","width","isEmpty","TagName","isButtonTag","buttonType","borderProps","colorProps","spacingProps","buttonClasses","border","radius","buttonStyle","wrapperClasses","typography","createElement","Content","href","value","target"],"sources":["@wordpress/block-library/src/button/save.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tuseBlockProps,\n\t__experimentalGetBorderClassesAndStyles as getBorderClassesAndStyles,\n\t__experimentalGetColorClassesAndStyles as getColorClassesAndStyles,\n\t__experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\n\nexport default function save( { attributes, className } ) {\n\tconst {\n\t\ttagName,\n\t\ttype,\n\t\ttextAlign,\n\t\tfontSize,\n\t\tlinkTarget,\n\t\trel,\n\t\tstyle,\n\t\ttext,\n\t\ttitle,\n\t\turl,\n\t\twidth,\n\t} = attributes;\n\n\tif ( RichText.isEmpty( text ) ) {\n\t\treturn null;\n\t}\n\n\tconst TagName = tagName || 'a';\n\tconst isButtonTag = 'button' === TagName;\n\tconst buttonType = type || 'button';\n\tconst borderProps = getBorderClassesAndStyles( attributes );\n\tconst colorProps = getColorClassesAndStyles( attributes );\n\tconst spacingProps = getSpacingClassesAndStyles( attributes );\n\tconst buttonClasses = classnames(\n\t\t'wp-block-button__link',\n\t\tcolorProps.className,\n\t\tborderProps.className,\n\t\t{\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t\t// For backwards compatibility add style that isn't provided via\n\t\t\t// block support.\n\t\t\t'no-border-radius': style?.border?.radius === 0,\n\t\t},\n\t\t__experimentalGetElementClassName( 'button' )\n\t);\n\tconst buttonStyle = {\n\t\t...borderProps.style,\n\t\t...colorProps.style,\n\t\t...spacingProps.style,\n\t};\n\n\t// The use of a `title` attribute here is soft-deprecated, but still applied\n\t// if it had already been assigned, for the sake of backward-compatibility.\n\t// A title will no longer be assigned for new or updated button block links.\n\n\tconst wrapperClasses = classnames( className, {\n\t\t[ `has-custom-width wp-block-button__width-${ width }` ]: width,\n\t\t[ `has-custom-font-size` ]: fontSize || style?.typography?.fontSize,\n\t} );\n\n\treturn (\n\t\t<div { ...useBlockProps.save( { className: wrapperClasses } ) }>\n\t\t\t<RichText.Content\n\t\t\t\ttagName={ TagName }\n\t\t\t\ttype={ isButtonTag ? buttonType : null }\n\t\t\t\tclassName={ buttonClasses }\n\t\t\t\thref={ isButtonTag ? null : url }\n\t\t\t\ttitle={ title }\n\t\t\t\tstyle={ buttonStyle }\n\t\t\t\tvalue={ text }\n\t\t\t\ttarget={ isButtonTag ? null : linkTarget }\n\t\t\t\trel={ isButtonTag ? null : rel }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SACCC,QAAQ,EACRC,aAAa,EACbC,uCAAuC,IAAIC,yBAAyB,EACpEC,sCAAsC,IAAIC,wBAAwB,EAClEC,wCAAwC,IAAIC,0BAA0B,EACtEC,iCAAiC,QAC3B,yBAAyB;AAEhC,eAAe,SAASC,IAAIA,CAAE;EAAEC,UAAU;EAAEC;AAAU,CAAC,EAAG;EACzD,MAAM;IACLC,OAAO;IACPC,IAAI;IACJC,SAAS;IACTC,QAAQ;IACRC,UAAU;IACVC,GAAG;IACHC,KAAK;IACLC,IAAI;IACJC,KAAK;IACLC,GAAG;IACHC;EACD,CAAC,GAAGZ,UAAU;EAEd,IAAKV,QAAQ,CAACuB,OAAO,CAAEJ,IAAK,CAAC,EAAG;IAC/B,OAAO,IAAI;EACZ;EAEA,MAAMK,OAAO,GAAGZ,OAAO,IAAI,GAAG;EAC9B,MAAMa,WAAW,GAAG,QAAQ,KAAKD,OAAO;EACxC,MAAME,UAAU,GAAGb,IAAI,IAAI,QAAQ;EACnC,MAAMc,WAAW,GAAGxB,yBAAyB,CAAEO,UAAW,CAAC;EAC3D,MAAMkB,UAAU,GAAGvB,wBAAwB,CAAEK,UAAW,CAAC;EACzD,MAAMmB,YAAY,GAAGtB,0BAA0B,CAAEG,UAAW,CAAC;EAC7D,MAAMoB,aAAa,GAAG/B,UAAU,CAC/B,uBAAuB,EACvB6B,UAAU,CAACjB,SAAS,EACpBgB,WAAW,CAAChB,SAAS,EACrB;IACC,CAAG,kBAAkBG,SAAW,EAAC,GAAIA,SAAS;IAC9C;IACA;IACA,kBAAkB,EAAEI,KAAK,EAAEa,MAAM,EAAEC,MAAM,KAAK;EAC/C,CAAC,EACDxB,iCAAiC,CAAE,QAAS,CAC7C,CAAC;EACD,MAAMyB,WAAW,GAAG;IACnB,GAAGN,WAAW,CAACT,KAAK;IACpB,GAAGU,UAAU,CAACV,KAAK;IACnB,GAAGW,YAAY,CAACX;EACjB,CAAC;;EAED;EACA;EACA;;EAEA,MAAMgB,cAAc,GAAGnC,UAAU,CAAEY,SAAS,EAAE;IAC7C,CAAG,2CAA2CW,KAAO,EAAC,GAAIA,KAAK;IAC/D,CAAG,sBAAqB,GAAIP,QAAQ,IAAIG,KAAK,EAAEiB,UAAU,EAAEpB;EAC5D,CAAE,CAAC;EAEH,OACCqB,aAAA;IAAA,GAAUnC,aAAa,CAACQ,IAAI,CAAE;MAAEE,SAAS,EAAEuB;IAAe,CAAE;EAAC,GAC5DE,aAAA,CAACpC,QAAQ,CAACqC,OAAO;IAChBzB,OAAO,EAAGY,OAAS;IACnBX,IAAI,EAAGY,WAAW,GAAGC,UAAU,GAAG,IAAM;IACxCf,SAAS,EAAGmB,aAAe;IAC3BQ,IAAI,EAAGb,WAAW,GAAG,IAAI,GAAGJ,GAAK;IACjCD,KAAK,EAAGA,KAAO;IACfF,KAAK,EAAGe,WAAa;IACrBM,KAAK,EAAGpB,IAAM;IACdqB,MAAM,EAAGf,WAAW,GAAG,IAAI,GAAGT,UAAY;IAC1CC,GAAG,EAAGQ,WAAW,GAAG,IAAI,GAAGR;EAAK,CAChC,CACG,CAAC;AAER"}
1
+ {"version":3,"names":["classnames","RichText","useBlockProps","__experimentalGetBorderClassesAndStyles","getBorderClassesAndStyles","__experimentalGetColorClassesAndStyles","getColorClassesAndStyles","__experimentalGetSpacingClassesAndStyles","getSpacingClassesAndStyles","__experimentalGetShadowClassesAndStyles","getShadowClassesAndStyles","__experimentalGetElementClassName","save","attributes","className","tagName","type","textAlign","fontSize","linkTarget","rel","style","text","title","url","width","isEmpty","TagName","isButtonTag","buttonType","borderProps","colorProps","spacingProps","shadowProps","buttonClasses","border","radius","buttonStyle","wrapperClasses","typography","createElement","Content","href","value","target"],"sources":["@wordpress/block-library/src/button/save.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tuseBlockProps,\n\t__experimentalGetBorderClassesAndStyles as getBorderClassesAndStyles,\n\t__experimentalGetColorClassesAndStyles as getColorClassesAndStyles,\n\t__experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles,\n\t__experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\n\nexport default function save( { attributes, className } ) {\n\tconst {\n\t\ttagName,\n\t\ttype,\n\t\ttextAlign,\n\t\tfontSize,\n\t\tlinkTarget,\n\t\trel,\n\t\tstyle,\n\t\ttext,\n\t\ttitle,\n\t\turl,\n\t\twidth,\n\t} = attributes;\n\n\tif ( RichText.isEmpty( text ) ) {\n\t\treturn null;\n\t}\n\n\tconst TagName = tagName || 'a';\n\tconst isButtonTag = 'button' === TagName;\n\tconst buttonType = type || 'button';\n\tconst borderProps = getBorderClassesAndStyles( attributes );\n\tconst colorProps = getColorClassesAndStyles( attributes );\n\tconst spacingProps = getSpacingClassesAndStyles( attributes );\n\tconst shadowProps = getShadowClassesAndStyles( attributes );\n\tconst buttonClasses = classnames(\n\t\t'wp-block-button__link',\n\t\tcolorProps.className,\n\t\tborderProps.className,\n\t\t{\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t\t// For backwards compatibility add style that isn't provided via\n\t\t\t// block support.\n\t\t\t'no-border-radius': style?.border?.radius === 0,\n\t\t},\n\t\t__experimentalGetElementClassName( 'button' )\n\t);\n\tconst buttonStyle = {\n\t\t...borderProps.style,\n\t\t...colorProps.style,\n\t\t...spacingProps.style,\n\t\t...shadowProps.style,\n\t};\n\n\t// The use of a `title` attribute here is soft-deprecated, but still applied\n\t// if it had already been assigned, for the sake of backward-compatibility.\n\t// A title will no longer be assigned for new or updated button block links.\n\n\tconst wrapperClasses = classnames( className, {\n\t\t[ `has-custom-width wp-block-button__width-${ width }` ]: width,\n\t\t[ `has-custom-font-size` ]: fontSize || style?.typography?.fontSize,\n\t} );\n\n\treturn (\n\t\t<div { ...useBlockProps.save( { className: wrapperClasses } ) }>\n\t\t\t<RichText.Content\n\t\t\t\ttagName={ TagName }\n\t\t\t\ttype={ isButtonTag ? buttonType : null }\n\t\t\t\tclassName={ buttonClasses }\n\t\t\t\thref={ isButtonTag ? null : url }\n\t\t\t\ttitle={ title }\n\t\t\t\tstyle={ buttonStyle }\n\t\t\t\tvalue={ text }\n\t\t\t\ttarget={ isButtonTag ? null : linkTarget }\n\t\t\t\trel={ isButtonTag ? null : rel }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SACCC,QAAQ,EACRC,aAAa,EACbC,uCAAuC,IAAIC,yBAAyB,EACpEC,sCAAsC,IAAIC,wBAAwB,EAClEC,wCAAwC,IAAIC,0BAA0B,EACtEC,uCAAuC,IAAIC,yBAAyB,EACpEC,iCAAiC,QAC3B,yBAAyB;AAEhC,eAAe,SAASC,IAAIA,CAAE;EAAEC,UAAU;EAAEC;AAAU,CAAC,EAAG;EACzD,MAAM;IACLC,OAAO;IACPC,IAAI;IACJC,SAAS;IACTC,QAAQ;IACRC,UAAU;IACVC,GAAG;IACHC,KAAK;IACLC,IAAI;IACJC,KAAK;IACLC,GAAG;IACHC;EACD,CAAC,GAAGZ,UAAU;EAEd,IAAKZ,QAAQ,CAACyB,OAAO,CAAEJ,IAAK,CAAC,EAAG;IAC/B,OAAO,IAAI;EACZ;EAEA,MAAMK,OAAO,GAAGZ,OAAO,IAAI,GAAG;EAC9B,MAAMa,WAAW,GAAG,QAAQ,KAAKD,OAAO;EACxC,MAAME,UAAU,GAAGb,IAAI,IAAI,QAAQ;EACnC,MAAMc,WAAW,GAAG1B,yBAAyB,CAAES,UAAW,CAAC;EAC3D,MAAMkB,UAAU,GAAGzB,wBAAwB,CAAEO,UAAW,CAAC;EACzD,MAAMmB,YAAY,GAAGxB,0BAA0B,CAAEK,UAAW,CAAC;EAC7D,MAAMoB,WAAW,GAAGvB,yBAAyB,CAAEG,UAAW,CAAC;EAC3D,MAAMqB,aAAa,GAAGlC,UAAU,CAC/B,uBAAuB,EACvB+B,UAAU,CAACjB,SAAS,EACpBgB,WAAW,CAAChB,SAAS,EACrB;IACC,CAAG,kBAAkBG,SAAW,EAAC,GAAIA,SAAS;IAC9C;IACA;IACA,kBAAkB,EAAEI,KAAK,EAAEc,MAAM,EAAEC,MAAM,KAAK;EAC/C,CAAC,EACDzB,iCAAiC,CAAE,QAAS,CAC7C,CAAC;EACD,MAAM0B,WAAW,GAAG;IACnB,GAAGP,WAAW,CAACT,KAAK;IACpB,GAAGU,UAAU,CAACV,KAAK;IACnB,GAAGW,YAAY,CAACX,KAAK;IACrB,GAAGY,WAAW,CAACZ;EAChB,CAAC;;EAED;EACA;EACA;;EAEA,MAAMiB,cAAc,GAAGtC,UAAU,CAAEc,SAAS,EAAE;IAC7C,CAAG,2CAA2CW,KAAO,EAAC,GAAIA,KAAK;IAC/D,CAAG,sBAAqB,GAAIP,QAAQ,IAAIG,KAAK,EAAEkB,UAAU,EAAErB;EAC5D,CAAE,CAAC;EAEH,OACCsB,aAAA;IAAA,GAAUtC,aAAa,CAACU,IAAI,CAAE;MAAEE,SAAS,EAAEwB;IAAe,CAAE;EAAC,GAC5DE,aAAA,CAACvC,QAAQ,CAACwC,OAAO;IAChB1B,OAAO,EAAGY,OAAS;IACnBX,IAAI,EAAGY,WAAW,GAAGC,UAAU,GAAG,IAAM;IACxCf,SAAS,EAAGoB,aAAe;IAC3BQ,IAAI,EAAGd,WAAW,GAAG,IAAI,GAAGJ,GAAK;IACjCD,KAAK,EAAGA,KAAO;IACfF,KAAK,EAAGgB,WAAa;IACrBM,KAAK,EAAGrB,IAAM;IACdsB,MAAM,EAAGhB,WAAW,GAAG,IAAI,GAAGT,UAAY;IAC1CC,GAAG,EAAGQ,WAAW,GAAG,IAAI,GAAGR;EAAK,CAChC,CACG,CAAC;AAER"}
@@ -109,9 +109,10 @@ const EmbedEdit = props => {
109
109
  });
110
110
  };
111
111
  useEffect(() => {
112
- if (!preview?.html || !cannotEmbed || fetching) {
112
+ if (preview?.html || !cannotEmbed || fetching) {
113
113
  return;
114
114
  }
115
+
115
116
  // At this stage, we're not fetching the preview and know it can't be embedded,
116
117
  // so try removing any trailing slash, and resubmit.
117
118
  const newURL = attributesUrl.replace(/\/$/, '');
@@ -120,7 +121,7 @@ const EmbedEdit = props => {
120
121
  setAttributes({
121
122
  url: newURL
122
123
  });
123
- }, [preview?.html, attributesUrl, cannotEmbed, fetching]);
124
+ }, [preview?.html, attributesUrl, cannotEmbed, fetching, setAttributes]);
124
125
 
125
126
  // Try a different provider in case the embed url is not supported.
126
127
  useEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"names":["createUpgradedEmbedBlock","getClassNames","removeAspectRatioClasses","fallback","getEmbedInfoByProvider","getMergedAttributesWithPreview","EmbedControls","embedContentIcon","EmbedLoading","EmbedPlaceholder","EmbedPreview","classnames","__","_x","sprintf","useState","useEffect","useDispatch","useSelect","useBlockProps","store","coreStore","View","getAuthority","EmbedEdit","props","attributes","providerNameSlug","previewable","responsive","url","attributesUrl","isSelected","onReplace","setAttributes","insertBlocksAfter","onFocus","defaultEmbedInfo","title","icon","setURL","isEditingURL","setIsEditingURL","invalidateResolution","preview","fetching","themeSupportsResponsive","cannotEmbed","select","getEmbedPreview","isPreviewEmbedFallback","isRequestingEmbedPreview","getThemeSupports","embedPreview","previewIsFallback","badEmbedProvider","html","type","undefined","wordpressCantEmbed","data","status","validPreview","getMergedAttributes","toggleResponsive","allowResponsive","className","newAllowResponsive","newURL","replace","URL","host","toString","mergedAttributes","upgradedBlock","blockProps","createElement","label","showEmbedPlaceholder","onSubmit","event","preventDefault","blockClass","value","onChange","target","tryAgain","caption","classFromPreview","Fragment","showEditButton","blockSupportsResponsive","switchBackToURLInput","onCaptionChange"],"sources":["@wordpress/block-library/src/embed/edit.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport {\n\tcreateUpgradedEmbedBlock,\n\tgetClassNames,\n\tremoveAspectRatioClasses,\n\tfallback,\n\tgetEmbedInfoByProvider,\n\tgetMergedAttributesWithPreview,\n} from './util';\nimport EmbedControls from './embed-controls';\nimport { embedContentIcon } from './icons';\nimport EmbedLoading from './embed-loading';\nimport EmbedPlaceholder from './embed-placeholder';\nimport EmbedPreview from './embed-preview';\n\n/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { useState, useEffect } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useBlockProps } from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { View } from '@wordpress/primitives';\nimport { getAuthority } from '@wordpress/url';\n\nconst EmbedEdit = ( props ) => {\n\tconst {\n\t\tattributes: {\n\t\t\tproviderNameSlug,\n\t\t\tpreviewable,\n\t\t\tresponsive,\n\t\t\turl: attributesUrl,\n\t\t},\n\t\tattributes,\n\t\tisSelected,\n\t\tonReplace,\n\t\tsetAttributes,\n\t\tinsertBlocksAfter,\n\t\tonFocus,\n\t} = props;\n\n\tconst defaultEmbedInfo = {\n\t\ttitle: _x( 'Embed', 'block title' ),\n\t\ticon: embedContentIcon,\n\t};\n\tconst { icon, title } =\n\t\tgetEmbedInfoByProvider( providerNameSlug ) || defaultEmbedInfo;\n\n\tconst [ url, setURL ] = useState( attributesUrl );\n\tconst [ isEditingURL, setIsEditingURL ] = useState( false );\n\tconst { invalidateResolution } = useDispatch( coreStore );\n\n\tconst { preview, fetching, themeSupportsResponsive, cannotEmbed } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetEmbedPreview,\n\t\t\t\t\tisPreviewEmbedFallback,\n\t\t\t\t\tisRequestingEmbedPreview,\n\t\t\t\t\tgetThemeSupports,\n\t\t\t\t} = select( coreStore );\n\t\t\t\tif ( ! attributesUrl ) {\n\t\t\t\t\treturn { fetching: false, cannotEmbed: false };\n\t\t\t\t}\n\n\t\t\t\tconst embedPreview = getEmbedPreview( attributesUrl );\n\t\t\t\tconst previewIsFallback =\n\t\t\t\t\tisPreviewEmbedFallback( attributesUrl );\n\n\t\t\t\t// The external oEmbed provider does not exist. We got no type info and no html.\n\t\t\t\tconst badEmbedProvider =\n\t\t\t\t\tembedPreview?.html === false &&\n\t\t\t\t\tembedPreview?.type === undefined;\n\t\t\t\t// Some WordPress URLs that can't be embedded will cause the API to return\n\t\t\t\t// a valid JSON response with no HTML and `data.status` set to 404, rather\n\t\t\t\t// than generating a fallback response as other embeds do.\n\t\t\t\tconst wordpressCantEmbed = embedPreview?.data?.status === 404;\n\t\t\t\tconst validPreview =\n\t\t\t\t\t!! embedPreview &&\n\t\t\t\t\t! badEmbedProvider &&\n\t\t\t\t\t! wordpressCantEmbed;\n\t\t\t\treturn {\n\t\t\t\t\tpreview: validPreview ? embedPreview : undefined,\n\t\t\t\t\tfetching: isRequestingEmbedPreview( attributesUrl ),\n\t\t\t\t\tthemeSupportsResponsive:\n\t\t\t\t\t\tgetThemeSupports()[ 'responsive-embeds' ],\n\t\t\t\t\tcannotEmbed: ! validPreview || previewIsFallback,\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ attributesUrl ]\n\t\t);\n\n\t/**\n\t * Returns the attributes derived from the preview, merged with the current attributes.\n\t *\n\t * @return {Object} Merged attributes.\n\t */\n\tconst getMergedAttributes = () =>\n\t\tgetMergedAttributesWithPreview(\n\t\t\tattributes,\n\t\t\tpreview,\n\t\t\ttitle,\n\t\t\tresponsive\n\t\t);\n\n\tconst toggleResponsive = () => {\n\t\tconst { allowResponsive, className } = attributes;\n\t\tconst { html } = preview;\n\t\tconst newAllowResponsive = ! allowResponsive;\n\n\t\tsetAttributes( {\n\t\t\tallowResponsive: newAllowResponsive,\n\t\t\tclassName: getClassNames(\n\t\t\t\thtml,\n\t\t\t\tclassName,\n\t\t\t\tresponsive && newAllowResponsive\n\t\t\t),\n\t\t} );\n\t};\n\n\tuseEffect( () => {\n\t\tif ( ! preview?.html || ! cannotEmbed || fetching ) {\n\t\t\treturn;\n\t\t}\n\t\t// At this stage, we're not fetching the preview and know it can't be embedded,\n\t\t// so try removing any trailing slash, and resubmit.\n\t\tconst newURL = attributesUrl.replace( /\\/$/, '' );\n\t\tsetURL( newURL );\n\t\tsetIsEditingURL( false );\n\t\tsetAttributes( { url: newURL } );\n\t}, [ preview?.html, attributesUrl, cannotEmbed, fetching ] );\n\n\t// Try a different provider in case the embed url is not supported.\n\tuseEffect( () => {\n\t\tif ( ! cannotEmbed || fetching || ! url ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Until X provider is supported in WordPress, as a workaround we use Twitter provider.\n\t\tif ( getAuthority( url ) === 'x.com' ) {\n\t\t\tconst newURL = new URL( url );\n\t\t\tnewURL.host = 'twitter.com';\n\t\t\tsetAttributes( { url: newURL.toString() } );\n\t\t}\n\t}, [ url, cannotEmbed, fetching, setAttributes ] );\n\n\t// Handle incoming preview.\n\tuseEffect( () => {\n\t\tif ( preview && ! isEditingURL ) {\n\t\t\t// When obtaining an incoming preview,\n\t\t\t// we set the attributes derived from the preview data.\n\t\t\tconst mergedAttributes = getMergedAttributes();\n\t\t\tsetAttributes( mergedAttributes );\n\n\t\t\tif ( onReplace ) {\n\t\t\t\tconst upgradedBlock = createUpgradedEmbedBlock(\n\t\t\t\t\tprops,\n\t\t\t\t\tmergedAttributes\n\t\t\t\t);\n\n\t\t\t\tif ( upgradedBlock ) {\n\t\t\t\t\tonReplace( upgradedBlock );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, [ preview, isEditingURL ] );\n\n\tconst blockProps = useBlockProps();\n\n\tif ( fetching ) {\n\t\treturn (\n\t\t\t<View { ...blockProps }>\n\t\t\t\t<EmbedLoading />\n\t\t\t</View>\n\t\t);\n\t}\n\n\t// translators: %s: type of embed e.g: \"YouTube\", \"Twitter\", etc. \"Embed\" is used when no specific type exists\n\tconst label = sprintf( __( '%s URL' ), title );\n\n\t// No preview, or we can't embed the current URL, or we've clicked the edit button.\n\tconst showEmbedPlaceholder = ! preview || cannotEmbed || isEditingURL;\n\n\tif ( showEmbedPlaceholder ) {\n\t\treturn (\n\t\t\t<View { ...blockProps }>\n\t\t\t\t<EmbedPlaceholder\n\t\t\t\t\ticon={ icon }\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\tif ( event ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If the embed URL was changed, we need to reset the aspect ratio class.\n\t\t\t\t\t\t// To do this we have to remove the existing ratio class so it can be recalculated.\n\t\t\t\t\t\tconst blockClass = removeAspectRatioClasses(\n\t\t\t\t\t\t\tattributes.className\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tsetIsEditingURL( false );\n\t\t\t\t\t\tsetAttributes( { url, className: blockClass } );\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ url }\n\t\t\t\t\tcannotEmbed={ cannotEmbed }\n\t\t\t\t\tonChange={ ( event ) => setURL( event.target.value ) }\n\t\t\t\t\tfallback={ () => fallback( url, onReplace ) }\n\t\t\t\t\ttryAgain={ () => {\n\t\t\t\t\t\tinvalidateResolution( 'getEmbedPreview', [ url ] );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\t// Even though we set attributes that get derived from the preview,\n\t// we don't access them directly because for the initial render,\n\t// the `setAttributes` call will not have taken effect. If we're\n\t// rendering responsive content, setting the responsive classes\n\t// after the preview has been rendered can result in unwanted\n\t// clipping or scrollbars. The `getAttributesFromPreview` function\n\t// that `getMergedAttributes` uses is memoized so that we're not\n\t// calculating them on every render.\n\tconst {\n\t\tcaption,\n\t\ttype,\n\t\tallowResponsive,\n\t\tclassName: classFromPreview,\n\t} = getMergedAttributes();\n\tconst className = classnames( classFromPreview, props.className );\n\n\treturn (\n\t\t<>\n\t\t\t<EmbedControls\n\t\t\t\tshowEditButton={ preview && ! cannotEmbed }\n\t\t\t\tthemeSupportsResponsive={ themeSupportsResponsive }\n\t\t\t\tblockSupportsResponsive={ responsive }\n\t\t\t\tallowResponsive={ allowResponsive }\n\t\t\t\ttoggleResponsive={ toggleResponsive }\n\t\t\t\tswitchBackToURLInput={ () => setIsEditingURL( true ) }\n\t\t\t/>\n\t\t\t<View { ...blockProps }>\n\t\t\t\t<EmbedPreview\n\t\t\t\t\tpreview={ preview }\n\t\t\t\t\tpreviewable={ previewable }\n\t\t\t\t\tclassName={ className }\n\t\t\t\t\turl={ url }\n\t\t\t\t\ttype={ type }\n\t\t\t\t\tcaption={ caption }\n\t\t\t\t\tonCaptionChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { caption: value } )\n\t\t\t\t\t}\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\ticon={ icon }\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\t/>\n\t\t\t</View>\n\t\t</>\n\t);\n};\n\nexport default EmbedEdit;\n"],"mappings":"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"}
1
+ {"version":3,"names":["createUpgradedEmbedBlock","getClassNames","removeAspectRatioClasses","fallback","getEmbedInfoByProvider","getMergedAttributesWithPreview","EmbedControls","embedContentIcon","EmbedLoading","EmbedPlaceholder","EmbedPreview","classnames","__","_x","sprintf","useState","useEffect","useDispatch","useSelect","useBlockProps","store","coreStore","View","getAuthority","EmbedEdit","props","attributes","providerNameSlug","previewable","responsive","url","attributesUrl","isSelected","onReplace","setAttributes","insertBlocksAfter","onFocus","defaultEmbedInfo","title","icon","setURL","isEditingURL","setIsEditingURL","invalidateResolution","preview","fetching","themeSupportsResponsive","cannotEmbed","select","getEmbedPreview","isPreviewEmbedFallback","isRequestingEmbedPreview","getThemeSupports","embedPreview","previewIsFallback","badEmbedProvider","html","type","undefined","wordpressCantEmbed","data","status","validPreview","getMergedAttributes","toggleResponsive","allowResponsive","className","newAllowResponsive","newURL","replace","URL","host","toString","mergedAttributes","upgradedBlock","blockProps","createElement","label","showEmbedPlaceholder","onSubmit","event","preventDefault","blockClass","value","onChange","target","tryAgain","caption","classFromPreview","Fragment","showEditButton","blockSupportsResponsive","switchBackToURLInput","onCaptionChange"],"sources":["@wordpress/block-library/src/embed/edit.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport {\n\tcreateUpgradedEmbedBlock,\n\tgetClassNames,\n\tremoveAspectRatioClasses,\n\tfallback,\n\tgetEmbedInfoByProvider,\n\tgetMergedAttributesWithPreview,\n} from './util';\nimport EmbedControls from './embed-controls';\nimport { embedContentIcon } from './icons';\nimport EmbedLoading from './embed-loading';\nimport EmbedPlaceholder from './embed-placeholder';\nimport EmbedPreview from './embed-preview';\n\n/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { useState, useEffect } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useBlockProps } from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { View } from '@wordpress/primitives';\nimport { getAuthority } from '@wordpress/url';\n\nconst EmbedEdit = ( props ) => {\n\tconst {\n\t\tattributes: {\n\t\t\tproviderNameSlug,\n\t\t\tpreviewable,\n\t\t\tresponsive,\n\t\t\turl: attributesUrl,\n\t\t},\n\t\tattributes,\n\t\tisSelected,\n\t\tonReplace,\n\t\tsetAttributes,\n\t\tinsertBlocksAfter,\n\t\tonFocus,\n\t} = props;\n\n\tconst defaultEmbedInfo = {\n\t\ttitle: _x( 'Embed', 'block title' ),\n\t\ticon: embedContentIcon,\n\t};\n\tconst { icon, title } =\n\t\tgetEmbedInfoByProvider( providerNameSlug ) || defaultEmbedInfo;\n\n\tconst [ url, setURL ] = useState( attributesUrl );\n\tconst [ isEditingURL, setIsEditingURL ] = useState( false );\n\tconst { invalidateResolution } = useDispatch( coreStore );\n\n\tconst { preview, fetching, themeSupportsResponsive, cannotEmbed } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetEmbedPreview,\n\t\t\t\t\tisPreviewEmbedFallback,\n\t\t\t\t\tisRequestingEmbedPreview,\n\t\t\t\t\tgetThemeSupports,\n\t\t\t\t} = select( coreStore );\n\t\t\t\tif ( ! attributesUrl ) {\n\t\t\t\t\treturn { fetching: false, cannotEmbed: false };\n\t\t\t\t}\n\n\t\t\t\tconst embedPreview = getEmbedPreview( attributesUrl );\n\t\t\t\tconst previewIsFallback =\n\t\t\t\t\tisPreviewEmbedFallback( attributesUrl );\n\n\t\t\t\t// The external oEmbed provider does not exist. We got no type info and no html.\n\t\t\t\tconst badEmbedProvider =\n\t\t\t\t\tembedPreview?.html === false &&\n\t\t\t\t\tembedPreview?.type === undefined;\n\t\t\t\t// Some WordPress URLs that can't be embedded will cause the API to return\n\t\t\t\t// a valid JSON response with no HTML and `data.status` set to 404, rather\n\t\t\t\t// than generating a fallback response as other embeds do.\n\t\t\t\tconst wordpressCantEmbed = embedPreview?.data?.status === 404;\n\t\t\t\tconst validPreview =\n\t\t\t\t\t!! embedPreview &&\n\t\t\t\t\t! badEmbedProvider &&\n\t\t\t\t\t! wordpressCantEmbed;\n\t\t\t\treturn {\n\t\t\t\t\tpreview: validPreview ? embedPreview : undefined,\n\t\t\t\t\tfetching: isRequestingEmbedPreview( attributesUrl ),\n\t\t\t\t\tthemeSupportsResponsive:\n\t\t\t\t\t\tgetThemeSupports()[ 'responsive-embeds' ],\n\t\t\t\t\tcannotEmbed: ! validPreview || previewIsFallback,\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ attributesUrl ]\n\t\t);\n\n\t/**\n\t * Returns the attributes derived from the preview, merged with the current attributes.\n\t *\n\t * @return {Object} Merged attributes.\n\t */\n\tconst getMergedAttributes = () =>\n\t\tgetMergedAttributesWithPreview(\n\t\t\tattributes,\n\t\t\tpreview,\n\t\t\ttitle,\n\t\t\tresponsive\n\t\t);\n\n\tconst toggleResponsive = () => {\n\t\tconst { allowResponsive, className } = attributes;\n\t\tconst { html } = preview;\n\t\tconst newAllowResponsive = ! allowResponsive;\n\n\t\tsetAttributes( {\n\t\t\tallowResponsive: newAllowResponsive,\n\t\t\tclassName: getClassNames(\n\t\t\t\thtml,\n\t\t\t\tclassName,\n\t\t\t\tresponsive && newAllowResponsive\n\t\t\t),\n\t\t} );\n\t};\n\n\tuseEffect( () => {\n\t\tif ( preview?.html || ! cannotEmbed || fetching ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// At this stage, we're not fetching the preview and know it can't be embedded,\n\t\t// so try removing any trailing slash, and resubmit.\n\t\tconst newURL = attributesUrl.replace( /\\/$/, '' );\n\t\tsetURL( newURL );\n\t\tsetIsEditingURL( false );\n\t\tsetAttributes( { url: newURL } );\n\t}, [ preview?.html, attributesUrl, cannotEmbed, fetching, setAttributes ] );\n\n\t// Try a different provider in case the embed url is not supported.\n\tuseEffect( () => {\n\t\tif ( ! cannotEmbed || fetching || ! url ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Until X provider is supported in WordPress, as a workaround we use Twitter provider.\n\t\tif ( getAuthority( url ) === 'x.com' ) {\n\t\t\tconst newURL = new URL( url );\n\t\t\tnewURL.host = 'twitter.com';\n\t\t\tsetAttributes( { url: newURL.toString() } );\n\t\t}\n\t}, [ url, cannotEmbed, fetching, setAttributes ] );\n\n\t// Handle incoming preview.\n\tuseEffect( () => {\n\t\tif ( preview && ! isEditingURL ) {\n\t\t\t// When obtaining an incoming preview,\n\t\t\t// we set the attributes derived from the preview data.\n\t\t\tconst mergedAttributes = getMergedAttributes();\n\t\t\tsetAttributes( mergedAttributes );\n\n\t\t\tif ( onReplace ) {\n\t\t\t\tconst upgradedBlock = createUpgradedEmbedBlock(\n\t\t\t\t\tprops,\n\t\t\t\t\tmergedAttributes\n\t\t\t\t);\n\n\t\t\t\tif ( upgradedBlock ) {\n\t\t\t\t\tonReplace( upgradedBlock );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, [ preview, isEditingURL ] );\n\n\tconst blockProps = useBlockProps();\n\n\tif ( fetching ) {\n\t\treturn (\n\t\t\t<View { ...blockProps }>\n\t\t\t\t<EmbedLoading />\n\t\t\t</View>\n\t\t);\n\t}\n\n\t// translators: %s: type of embed e.g: \"YouTube\", \"Twitter\", etc. \"Embed\" is used when no specific type exists\n\tconst label = sprintf( __( '%s URL' ), title );\n\n\t// No preview, or we can't embed the current URL, or we've clicked the edit button.\n\tconst showEmbedPlaceholder = ! preview || cannotEmbed || isEditingURL;\n\n\tif ( showEmbedPlaceholder ) {\n\t\treturn (\n\t\t\t<View { ...blockProps }>\n\t\t\t\t<EmbedPlaceholder\n\t\t\t\t\ticon={ icon }\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\tif ( event ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// If the embed URL was changed, we need to reset the aspect ratio class.\n\t\t\t\t\t\t// To do this we have to remove the existing ratio class so it can be recalculated.\n\t\t\t\t\t\tconst blockClass = removeAspectRatioClasses(\n\t\t\t\t\t\t\tattributes.className\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tsetIsEditingURL( false );\n\t\t\t\t\t\tsetAttributes( { url, className: blockClass } );\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ url }\n\t\t\t\t\tcannotEmbed={ cannotEmbed }\n\t\t\t\t\tonChange={ ( event ) => setURL( event.target.value ) }\n\t\t\t\t\tfallback={ () => fallback( url, onReplace ) }\n\t\t\t\t\ttryAgain={ () => {\n\t\t\t\t\t\tinvalidateResolution( 'getEmbedPreview', [ url ] );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\t// Even though we set attributes that get derived from the preview,\n\t// we don't access them directly because for the initial render,\n\t// the `setAttributes` call will not have taken effect. If we're\n\t// rendering responsive content, setting the responsive classes\n\t// after the preview has been rendered can result in unwanted\n\t// clipping or scrollbars. The `getAttributesFromPreview` function\n\t// that `getMergedAttributes` uses is memoized so that we're not\n\t// calculating them on every render.\n\tconst {\n\t\tcaption,\n\t\ttype,\n\t\tallowResponsive,\n\t\tclassName: classFromPreview,\n\t} = getMergedAttributes();\n\tconst className = classnames( classFromPreview, props.className );\n\n\treturn (\n\t\t<>\n\t\t\t<EmbedControls\n\t\t\t\tshowEditButton={ preview && ! cannotEmbed }\n\t\t\t\tthemeSupportsResponsive={ themeSupportsResponsive }\n\t\t\t\tblockSupportsResponsive={ responsive }\n\t\t\t\tallowResponsive={ allowResponsive }\n\t\t\t\ttoggleResponsive={ toggleResponsive }\n\t\t\t\tswitchBackToURLInput={ () => setIsEditingURL( true ) }\n\t\t\t/>\n\t\t\t<View { ...blockProps }>\n\t\t\t\t<EmbedPreview\n\t\t\t\t\tpreview={ preview }\n\t\t\t\t\tpreviewable={ previewable }\n\t\t\t\t\tclassName={ className }\n\t\t\t\t\turl={ url }\n\t\t\t\t\ttype={ type }\n\t\t\t\t\tcaption={ caption }\n\t\t\t\t\tonCaptionChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { caption: value } )\n\t\t\t\t\t}\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\ticon={ icon }\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\t/>\n\t\t\t</View>\n\t\t</>\n\t);\n};\n\nexport default EmbedEdit;\n"],"mappings":"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"}
@@ -84,7 +84,6 @@ const metadata = {
84
84
  },
85
85
  interactivity: true
86
86
  },
87
- viewScript: "file:./view.min.js",
88
87
  editorStyle: "wp-block-file-editor",
89
88
  style: "wp-block-file"
90
89
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_x","file","icon","initBlock","deprecated","edit","metadata","$schema","apiVersion","name","title","category","description","keywords","textdomain","attributes","id","type","href","fileId","source","selector","attribute","fileName","textLinkHref","textLinkTarget","showDownloadButton","downloadButtonText","displayPreview","previewHeight","supports","anchor","align","spacing","margin","padding","color","gradients","link","text","__experimentalDefaultControls","background","interactivity","viewScript","editorStyle","style","save","transforms","settings","example","init"],"sources":["@wordpress/block-library/src/file/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { _x } from '@wordpress/i18n';\nimport { file as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport deprecated from './deprecated';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\nimport transforms from './transforms';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\thref: 'https://upload.wikimedia.org/wikipedia/commons/d/dd/Armstrong_Small_Step.ogg',\n\t\t\tfileName: _x( 'Armstrong_Small_Step', 'Name of the file' ),\n\t\t},\n\t},\n\ttransforms,\n\tdeprecated,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,IAAI,IAAIC,IAAI,QAAQ,kBAAkB;;AAE/C;AACA;AACA;AACA,OAAOC,SAAS,MAAM,qBAAqB;AAC3C,OAAOC,UAAU,MAAM,cAAc;AACrC,OAAOC,IAAI,MAAM,QAAQ;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,QAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,EAAA;MAAAC,IAAA;IAAA;IAAAC,IAAA;MAAAD,IAAA;IAAA;IAAAE,MAAA;MAAAF,IAAA;MAAAG,MAAA;MAAAC,QAAA;MAAAC,SAAA;IAAA;IAAAC,QAAA;MAAAN,IAAA;MAAAG,MAAA;MAAAC,QAAA;IAAA;IAAAG,YAAA;MAAAP,IAAA;MAAAG,MAAA;MAAAC,QAAA;MAAAC,SAAA;IAAA;IAAAG,cAAA;MAAAR,IAAA;MAAAG,MAAA;MAAAC,QAAA;MAAAC,SAAA;IAAA;IAAAI,kBAAA;MAAAT,IAAA;MAAA;IAAA;IAAAU,kBAAA;MAAAV,IAAA;MAAAG,MAAA;MAAAC,QAAA;IAAA;IAAAO,cAAA;MAAAX,IAAA;IAAA;IAAAY,aAAA;MAAAZ,IAAA;MAAA;IAAA;EAAA;EAAAa,QAAA;IAAAC,MAAA;IAAAC,KAAA;IAAAC,OAAA;MAAAC,MAAA;MAAAC,OAAA;IAAA;IAAAC,KAAA;MAAAC,SAAA;MAAAC,IAAA;MAAAC,IAAA;MAAAC,6BAAA;QAAAC,UAAA;QAAAH,IAAA;MAAA;IAAA;IAAAI,aAAA;EAAA;EAAAC,UAAA;EAAAC,WAAA;EAAAC,KAAA;AAAA;AAE1B,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,UAAU,MAAM,cAAc;AAErC,MAAM;EAAEtC;AAAK,CAAC,GAAGH,QAAQ;AAEzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAMuC,QAAQ,GAAG;EACvB9C,IAAI;EACJ+C,OAAO,EAAE;IACRlC,UAAU,EAAE;MACXG,IAAI,EAAE,8EAA8E;MACpFK,QAAQ,EAAEvB,EAAE,CAAE,sBAAsB,EAAE,kBAAmB;IAC1D;EACD,CAAC;EACD+C,UAAU;EACV3C,UAAU;EACVC,IAAI;EACJyC;AACD,CAAC;AAED,OAAO,MAAMI,IAAI,GAAGA,CAAA,KAAM/C,SAAS,CAAE;EAAEM,IAAI;EAAEH,QAAQ;EAAE0C;AAAS,CAAE,CAAC"}
1
+ {"version":3,"names":["_x","file","icon","initBlock","deprecated","edit","metadata","$schema","apiVersion","name","title","category","description","keywords","textdomain","attributes","id","type","href","fileId","source","selector","attribute","fileName","textLinkHref","textLinkTarget","showDownloadButton","downloadButtonText","displayPreview","previewHeight","supports","anchor","align","spacing","margin","padding","color","gradients","link","text","__experimentalDefaultControls","background","interactivity","editorStyle","style","save","transforms","settings","example","init"],"sources":["@wordpress/block-library/src/file/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { _x } from '@wordpress/i18n';\nimport { file as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport deprecated from './deprecated';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\nimport transforms from './transforms';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\thref: 'https://upload.wikimedia.org/wikipedia/commons/d/dd/Armstrong_Small_Step.ogg',\n\t\t\tfileName: _x( 'Armstrong_Small_Step', 'Name of the file' ),\n\t\t},\n\t},\n\ttransforms,\n\tdeprecated,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,IAAI,IAAIC,IAAI,QAAQ,kBAAkB;;AAE/C;AACA;AACA;AACA,OAAOC,SAAS,MAAM,qBAAqB;AAC3C,OAAOC,UAAU,MAAM,cAAc;AACrC,OAAOC,IAAI,MAAM,QAAQ;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,QAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,EAAA;MAAAC,IAAA;IAAA;IAAAC,IAAA;MAAAD,IAAA;IAAA;IAAAE,MAAA;MAAAF,IAAA;MAAAG,MAAA;MAAAC,QAAA;MAAAC,SAAA;IAAA;IAAAC,QAAA;MAAAN,IAAA;MAAAG,MAAA;MAAAC,QAAA;IAAA;IAAAG,YAAA;MAAAP,IAAA;MAAAG,MAAA;MAAAC,QAAA;MAAAC,SAAA;IAAA;IAAAG,cAAA;MAAAR,IAAA;MAAAG,MAAA;MAAAC,QAAA;MAAAC,SAAA;IAAA;IAAAI,kBAAA;MAAAT,IAAA;MAAA;IAAA;IAAAU,kBAAA;MAAAV,IAAA;MAAAG,MAAA;MAAAC,QAAA;IAAA;IAAAO,cAAA;MAAAX,IAAA;IAAA;IAAAY,aAAA;MAAAZ,IAAA;MAAA;IAAA;EAAA;EAAAa,QAAA;IAAAC,MAAA;IAAAC,KAAA;IAAAC,OAAA;MAAAC,MAAA;MAAAC,OAAA;IAAA;IAAAC,KAAA;MAAAC,SAAA;MAAAC,IAAA;MAAAC,IAAA;MAAAC,6BAAA;QAAAC,UAAA;QAAAH,IAAA;MAAA;IAAA;IAAAI,aAAA;EAAA;EAAAC,WAAA;EAAAC,KAAA;AAAA;AAE1B,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,UAAU,MAAM,cAAc;AAErC,MAAM;EAAErC;AAAK,CAAC,GAAGH,QAAQ;AAEzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAMsC,QAAQ,GAAG;EACvB7C,IAAI;EACJ8C,OAAO,EAAE;IACRjC,UAAU,EAAE;MACXG,IAAI,EAAE,8EAA8E;MACpFK,QAAQ,EAAEvB,EAAE,CAAE,sBAAsB,EAAE,kBAAmB;IAC1D;EACD,CAAC;EACD8C,UAAU;EACV1C,UAAU;EACVC,IAAI;EACJwC;AACD,CAAC;AAED,OAAO,MAAMI,IAAI,GAAGA,CAAA,KAAM9C,SAAS,CAAE;EAAEM,IAAI;EAAEH,QAAQ;EAAEyC;AAAS,CAAE,CAAC"}
@@ -14,9 +14,10 @@ export default function FootnotesEdit({
14
14
  }
15
15
  }) {
16
16
  const [meta, updateMeta] = useEntityProp('postType', postType, 'meta', postId);
17
+ const footnotesSupported = 'string' === typeof meta?.footnotes;
17
18
  const footnotes = meta?.footnotes ? JSON.parse(meta.footnotes) : [];
18
19
  const blockProps = useBlockProps();
19
- if (postType !== 'post' && postType !== 'page') {
20
+ if (!footnotesSupported) {
20
21
  return createElement("div", {
21
22
  ...blockProps
22
23
  }, createElement(Placeholder, {
@@ -1 +1 @@
1
- {"version":3,"names":["BlockIcon","RichText","useBlockProps","useEntityProp","__","Placeholder","formatListNumbered","icon","FootnotesEdit","context","postType","postId","meta","updateMeta","footnotes","JSON","parse","blockProps","createElement","label","instructions","length","map","id","content","key","onMouseDown","event","target","currentTarget","firstElementChild","focus","preventDefault","tagName","value","identifier","onFocus","textContent","trim","scrollIntoView","onChange","nextFootnote","stringify","footnote","href"],"sources":["@wordpress/block-library/src/footnotes/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { BlockIcon, RichText, useBlockProps } from '@wordpress/block-editor';\nimport { useEntityProp } from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\nimport { Placeholder } from '@wordpress/components';\nimport { formatListNumbered as icon } from '@wordpress/icons';\n\nexport default function FootnotesEdit( { context: { postType, postId } } ) {\n\tconst [ meta, updateMeta ] = useEntityProp(\n\t\t'postType',\n\t\tpostType,\n\t\t'meta',\n\t\tpostId\n\t);\n\tconst footnotes = meta?.footnotes ? JSON.parse( meta.footnotes ) : [];\n\tconst blockProps = useBlockProps();\n\n\tif ( postType !== 'post' && postType !== 'page' ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Placeholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tlabel={ __( 'Footnotes' ) }\n\t\t\t\t\tinstructions={ __(\n\t\t\t\t\t\t'Footnotes are not supported here. Add this block to post or page content.'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( ! footnotes.length ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Placeholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tlabel={ __( 'Footnotes' ) }\n\t\t\t\t\tinstructions={ __(\n\t\t\t\t\t\t'Footnotes found in blocks within this document will be displayed here.'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ol { ...blockProps }>\n\t\t\t{ footnotes.map( ( { id, content } ) => (\n\t\t\t\t/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n\t\t\t\t<li\n\t\t\t\t\tkey={ id }\n\t\t\t\t\tonMouseDown={ ( event ) => {\n\t\t\t\t\t\t// When clicking on the list item (not on descendants),\n\t\t\t\t\t\t// focus the rich text element since it's only 1px wide when\n\t\t\t\t\t\t// empty.\n\t\t\t\t\t\tif ( event.target === event.currentTarget ) {\n\t\t\t\t\t\t\tevent.target.firstElementChild.focus();\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tid={ id }\n\t\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\t\tvalue={ content }\n\t\t\t\t\t\tidentifier={ id }\n\t\t\t\t\t\t// To do: figure out why the browser is not scrolling\n\t\t\t\t\t\t// into view when it receives focus.\n\t\t\t\t\t\tonFocus={ ( event ) => {\n\t\t\t\t\t\t\tif ( ! event.target.textContent.trim() ) {\n\t\t\t\t\t\t\t\tevent.target.scrollIntoView();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonChange={ ( nextFootnote ) => {\n\t\t\t\t\t\t\tupdateMeta( {\n\t\t\t\t\t\t\t\t...meta,\n\t\t\t\t\t\t\t\tfootnotes: JSON.stringify(\n\t\t\t\t\t\t\t\t\tfootnotes.map( ( footnote ) => {\n\t\t\t\t\t\t\t\t\t\treturn footnote.id === id\n\t\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontent: nextFootnote,\n\t\t\t\t\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t\t\t: footnote;\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>{ ' ' }\n\t\t\t\t\t<a href={ `#${ id }-link` }>↩︎</a>\n\t\t\t\t</li>\n\t\t\t) ) }\n\t\t</ol>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["BlockIcon","RichText","useBlockProps","useEntityProp","__","Placeholder","formatListNumbered","icon","FootnotesEdit","context","postType","postId","meta","updateMeta","footnotesSupported","footnotes","JSON","parse","blockProps","createElement","label","instructions","length","map","id","content","key","onMouseDown","event","target","currentTarget","firstElementChild","focus","preventDefault","tagName","value","identifier","onFocus","textContent","trim","scrollIntoView","onChange","nextFootnote","stringify","footnote","href"],"sources":["@wordpress/block-library/src/footnotes/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { BlockIcon, RichText, useBlockProps } from '@wordpress/block-editor';\nimport { useEntityProp } from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\nimport { Placeholder } from '@wordpress/components';\nimport { formatListNumbered as icon } from '@wordpress/icons';\n\nexport default function FootnotesEdit( { context: { postType, postId } } ) {\n\tconst [ meta, updateMeta ] = useEntityProp(\n\t\t'postType',\n\t\tpostType,\n\t\t'meta',\n\t\tpostId\n\t);\n\tconst footnotesSupported = 'string' === typeof meta?.footnotes;\n\tconst footnotes = meta?.footnotes ? JSON.parse( meta.footnotes ) : [];\n\tconst blockProps = useBlockProps();\n\n\tif ( ! footnotesSupported ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Placeholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tlabel={ __( 'Footnotes' ) }\n\t\t\t\t\tinstructions={ __(\n\t\t\t\t\t\t'Footnotes are not supported here. Add this block to post or page content.'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif ( ! footnotes.length ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Placeholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tlabel={ __( 'Footnotes' ) }\n\t\t\t\t\tinstructions={ __(\n\t\t\t\t\t\t'Footnotes found in blocks within this document will be displayed here.'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ol { ...blockProps }>\n\t\t\t{ footnotes.map( ( { id, content } ) => (\n\t\t\t\t/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n\t\t\t\t<li\n\t\t\t\t\tkey={ id }\n\t\t\t\t\tonMouseDown={ ( event ) => {\n\t\t\t\t\t\t// When clicking on the list item (not on descendants),\n\t\t\t\t\t\t// focus the rich text element since it's only 1px wide when\n\t\t\t\t\t\t// empty.\n\t\t\t\t\t\tif ( event.target === event.currentTarget ) {\n\t\t\t\t\t\t\tevent.target.firstElementChild.focus();\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tid={ id }\n\t\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\t\tvalue={ content }\n\t\t\t\t\t\tidentifier={ id }\n\t\t\t\t\t\t// To do: figure out why the browser is not scrolling\n\t\t\t\t\t\t// into view when it receives focus.\n\t\t\t\t\t\tonFocus={ ( event ) => {\n\t\t\t\t\t\t\tif ( ! event.target.textContent.trim() ) {\n\t\t\t\t\t\t\t\tevent.target.scrollIntoView();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonChange={ ( nextFootnote ) => {\n\t\t\t\t\t\t\tupdateMeta( {\n\t\t\t\t\t\t\t\t...meta,\n\t\t\t\t\t\t\t\tfootnotes: JSON.stringify(\n\t\t\t\t\t\t\t\t\tfootnotes.map( ( footnote ) => {\n\t\t\t\t\t\t\t\t\t\treturn footnote.id === id\n\t\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontent: nextFootnote,\n\t\t\t\t\t\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t\t\t: footnote;\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>{ ' ' }\n\t\t\t\t\t<a href={ `#${ id }-link` }>↩︎</a>\n\t\t\t\t</li>\n\t\t\t) ) }\n\t\t</ol>\n\t);\n}\n"],"mappings":"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"}
@@ -12,6 +12,7 @@ import { formatListNumbered as icon } from '@wordpress/icons';
12
12
  import { insertObject } from '@wordpress/rich-text';
13
13
  import { RichTextToolbarButton, store as blockEditorStore, privateApis } from '@wordpress/block-editor';
14
14
  import { useSelect, useDispatch, useRegistry } from '@wordpress/data';
15
+ import { store as coreDataStore } from '@wordpress/core-data';
15
16
  import { createBlock, store as blocksStore } from '@wordpress/blocks';
16
17
 
17
18
  /**
@@ -33,13 +34,14 @@ export const format = {
33
34
  },
34
35
  interactive: true,
35
36
  contentEditable: false,
36
- [usesContextKey]: ['postType'],
37
+ [usesContextKey]: ['postType', 'postId'],
37
38
  edit: function Edit({
38
39
  value,
39
40
  onChange,
40
41
  isObjectActive,
41
42
  context: {
42
- postType
43
+ postType,
44
+ postId
43
45
  }
44
46
  }) {
45
47
  const registry = useRegistry();
@@ -50,32 +52,28 @@ export const format = {
50
52
  getBlockName,
51
53
  getBlockParentsByBlockName
52
54
  } = registry.select(blockEditorStore);
53
- const hasFootnotesBlockType = useSelect(select => !!select(blocksStore).getBlockType('core/footnotes'), []);
54
- /*
55
- * This useSelect exists because we need to use its return value
56
- * outside the event callback.
57
- */
58
- const isBlockWithinPattern = useSelect(select => {
55
+ const isFootnotesSupported = useSelect(select => {
56
+ if (!select(blocksStore).getBlockType('core/footnotes')) {
57
+ return false;
58
+ }
59
+ const entityRecord = select(coreDataStore).getEntityRecord('postType', postType, postId);
60
+ if ('string' !== typeof entityRecord?.meta?.footnotes) {
61
+ return false;
62
+ }
63
+
64
+ // Checks if the selected block lives within a pattern.
59
65
  const {
60
66
  getBlockParentsByBlockName: _getBlockParentsByBlockName,
61
67
  getSelectedBlockClientId: _getSelectedBlockClientId
62
68
  } = select(blockEditorStore);
63
69
  const parentCoreBlocks = _getBlockParentsByBlockName(_getSelectedBlockClientId(), SYNCED_PATTERN_BLOCK_NAME);
64
- return parentCoreBlocks && parentCoreBlocks.length > 0;
65
- }, []);
70
+ return !parentCoreBlocks || parentCoreBlocks.length === 0;
71
+ }, [postType, postId]);
66
72
  const {
67
73
  selectionChange,
68
74
  insertBlock
69
75
  } = useDispatch(blockEditorStore);
70
- if (!hasFootnotesBlockType) {
71
- return null;
72
- }
73
- if (postType !== 'post' && postType !== 'page') {
74
- return null;
75
- }
76
-
77
- // Checks if the selected block lives within a pattern.
78
- if (isBlockWithinPattern) {
76
+ if (!isFootnotesSupported) {
79
77
  return null;
80
78
  }
81
79
  function onClick() {