@wordpress/block-library 8.31.0 → 8.32.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 (157) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/block/edit.js +5 -8
  3. package/build/block/edit.js.map +1 -1
  4. package/build/button/edit.native.js +1 -1
  5. package/build/button/edit.native.js.map +1 -1
  6. package/build/image/edit.js +10 -39
  7. package/build/image/edit.js.map +1 -1
  8. package/build/image/image.js +27 -6
  9. package/build/image/image.js.map +1 -1
  10. package/build/navigation/view.js +12 -2
  11. package/build/navigation/view.js.map +1 -1
  12. package/build/navigation-link/edit.js +41 -18
  13. package/build/navigation-link/edit.js.map +1 -1
  14. package/build/navigation-submenu/edit.js +27 -9
  15. package/build/navigation-submenu/edit.js.map +1 -1
  16. package/build/pattern/edit.js +3 -1
  17. package/build/pattern/edit.js.map +1 -1
  18. package/build/post-featured-image/edit.js +12 -3
  19. package/build/post-featured-image/edit.js.map +1 -1
  20. package/build/post-featured-image/index.js +8 -3
  21. package/build/post-featured-image/index.js.map +1 -1
  22. package/build/post-featured-image/overlay-controls.js +82 -0
  23. package/build/post-featured-image/overlay-controls.js.map +1 -0
  24. package/build/post-featured-image/overlay.js +5 -54
  25. package/build/post-featured-image/overlay.js.map +1 -1
  26. package/build/quote/edit.js +18 -23
  27. package/build/quote/edit.js.map +1 -1
  28. package/build/site-tagline/edit.js +13 -4
  29. package/build/site-tagline/edit.js.map +1 -1
  30. package/build/site-tagline/index.js +4 -0
  31. package/build/site-tagline/index.js.map +1 -1
  32. package/build/template-part/edit/index.js +55 -47
  33. package/build/template-part/edit/index.js.map +1 -1
  34. package/build/template-part/edit/inner-blocks.js +106 -10
  35. package/build/template-part/edit/inner-blocks.js.map +1 -1
  36. package/build/template-part/edit/selection-modal.js +1 -9
  37. package/build/template-part/edit/selection-modal.js.map +1 -1
  38. package/build/utils/caption.js +19 -13
  39. package/build/utils/caption.js.map +1 -1
  40. package/build/utils/hooks.js +1 -0
  41. package/build/utils/hooks.js.map +1 -1
  42. package/build-module/block/edit.js +5 -8
  43. package/build-module/block/edit.js.map +1 -1
  44. package/build-module/button/edit.native.js +1 -1
  45. package/build-module/button/edit.native.js.map +1 -1
  46. package/build-module/image/edit.js +11 -40
  47. package/build-module/image/edit.js.map +1 -1
  48. package/build-module/image/image.js +27 -6
  49. package/build-module/image/image.js.map +1 -1
  50. package/build-module/navigation/view.js +12 -2
  51. package/build-module/navigation/view.js.map +1 -1
  52. package/build-module/navigation-link/edit.js +43 -20
  53. package/build-module/navigation-link/edit.js.map +1 -1
  54. package/build-module/navigation-submenu/edit.js +27 -9
  55. package/build-module/navigation-submenu/edit.js.map +1 -1
  56. package/build-module/pattern/edit.js +3 -1
  57. package/build-module/pattern/edit.js.map +1 -1
  58. package/build-module/post-featured-image/edit.js +12 -3
  59. package/build-module/post-featured-image/edit.js.map +1 -1
  60. package/build-module/post-featured-image/index.js +8 -3
  61. package/build-module/post-featured-image/index.js.map +1 -1
  62. package/build-module/post-featured-image/overlay-controls.js +75 -0
  63. package/build-module/post-featured-image/overlay-controls.js.map +1 -0
  64. package/build-module/post-featured-image/overlay.js +7 -56
  65. package/build-module/post-featured-image/overlay.js.map +1 -1
  66. package/build-module/quote/edit.js +20 -25
  67. package/build-module/quote/edit.js.map +1 -1
  68. package/build-module/site-tagline/edit.js +14 -5
  69. package/build-module/site-tagline/edit.js.map +1 -1
  70. package/build-module/site-tagline/index.js +4 -0
  71. package/build-module/site-tagline/index.js.map +1 -1
  72. package/build-module/template-part/edit/index.js +58 -50
  73. package/build-module/template-part/edit/index.js.map +1 -1
  74. package/build-module/template-part/edit/inner-blocks.js +108 -12
  75. package/build-module/template-part/edit/inner-blocks.js.map +1 -1
  76. package/build-module/template-part/edit/selection-modal.js +2 -10
  77. package/build-module/template-part/edit/selection-modal.js.map +1 -1
  78. package/build-module/utils/caption.js +19 -13
  79. package/build-module/utils/caption.js.map +1 -1
  80. package/build-module/utils/hooks.js +1 -0
  81. package/build-module/utils/hooks.js.map +1 -1
  82. package/build-style/audio/theme-rtl.css +1 -1
  83. package/build-style/audio/theme.css +1 -1
  84. package/build-style/cover/style-rtl.css +5 -2
  85. package/build-style/cover/style.css +5 -2
  86. package/build-style/editor-rtl.css +12 -8
  87. package/build-style/editor.css +12 -8
  88. package/build-style/embed/theme-rtl.css +1 -1
  89. package/build-style/embed/theme.css +1 -1
  90. package/build-style/image/theme-rtl.css +1 -1
  91. package/build-style/image/theme.css +1 -1
  92. package/build-style/pullquote/theme-rtl.css +2 -1
  93. package/build-style/pullquote/theme.css +2 -1
  94. package/build-style/quote/theme-rtl.css +6 -6
  95. package/build-style/quote/theme.css +6 -6
  96. package/build-style/search/style-rtl.css +10 -0
  97. package/build-style/search/style.css +10 -0
  98. package/build-style/social-links/editor-rtl.css +0 -4
  99. package/build-style/social-links/editor.css +0 -4
  100. package/build-style/style-rtl.css +15 -2
  101. package/build-style/style.css +15 -2
  102. package/build-style/table/theme-rtl.css +4 -3
  103. package/build-style/table/theme.css +4 -3
  104. package/build-style/template-part/editor-rtl.css +12 -4
  105. package/build-style/template-part/editor.css +12 -4
  106. package/build-style/template-part/theme-rtl.css +1 -1
  107. package/build-style/template-part/theme.css +1 -1
  108. package/build-style/theme-rtl.css +17 -15
  109. package/build-style/theme.css +17 -15
  110. package/build-style/video/theme-rtl.css +1 -1
  111. package/build-style/video/theme.css +1 -1
  112. package/package.json +34 -34
  113. package/src/audio/theme.scss +1 -1
  114. package/src/block/edit.js +5 -17
  115. package/src/button/edit.native.js +1 -1
  116. package/src/cover/style.scss +6 -2
  117. package/src/embed/theme.scss +1 -1
  118. package/src/gallery/editor.scss +1 -1
  119. package/src/gallery/index.php +1 -1
  120. package/src/image/edit.js +11 -40
  121. package/src/image/editor.scss +2 -2
  122. package/src/image/image.js +25 -7
  123. package/src/image/theme.scss +1 -1
  124. package/src/navigation/index.php +8 -0
  125. package/src/navigation/view.js +11 -2
  126. package/src/navigation-link/edit.js +53 -27
  127. package/src/navigation-submenu/edit.js +30 -10
  128. package/src/pattern/edit.js +4 -0
  129. package/src/post-featured-image/block.json +8 -3
  130. package/src/post-featured-image/edit.js +12 -1
  131. package/src/post-featured-image/editor.scss +1 -1
  132. package/src/post-featured-image/overlay-controls.js +88 -0
  133. package/src/post-featured-image/overlay.js +17 -84
  134. package/src/pullquote/theme.scss +3 -1
  135. package/src/query-no-results/index.php +2 -0
  136. package/src/query-pagination-next/index.php +2 -0
  137. package/src/query-pagination-numbers/index.php +2 -0
  138. package/src/quote/edit.js +27 -43
  139. package/src/quote/test/edit.native.js +4 -6
  140. package/src/quote/theme.scss +1 -2
  141. package/src/search/style.scss +11 -0
  142. package/src/site-logo/editor.scss +2 -2
  143. package/src/site-tagline/block.json +4 -0
  144. package/src/site-tagline/edit.js +16 -3
  145. package/src/site-tagline/index.php +9 -1
  146. package/src/social-links/editor.scss +1 -9
  147. package/src/table/theme.scss +4 -2
  148. package/src/template-part/edit/index.js +87 -79
  149. package/src/template-part/edit/inner-blocks.js +126 -13
  150. package/src/template-part/edit/selection-modal.js +1 -22
  151. package/src/template-part/editor.scss +11 -3
  152. package/src/template-part/index.php +2 -0
  153. package/src/template-part/theme.scss +1 -1
  154. package/src/utils/caption.js +19 -16
  155. package/src/utils/hooks.js +1 -0
  156. package/src/video/editor.scss +2 -2
  157. package/src/video/theme.scss +1 -1
@@ -2,16 +2,25 @@ import { createElement } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
5
- import { useEntityBlockEditor } from '@wordpress/core-data';
6
- import { InnerBlocks, useInnerBlocksProps, useSettings, store as blockEditorStore } from '@wordpress/block-editor';
5
+ import { useEntityBlockEditor, store as coreStore } from '@wordpress/core-data';
6
+ import { InnerBlocks, useInnerBlocksProps, useSettings, store as blockEditorStore, useBlockEditingMode } from '@wordpress/block-editor';
7
7
  import { useSelect } from '@wordpress/data';
8
- export default function TemplatePartInnerBlocks({
9
- postId: id,
10
- hasInnerBlocks,
11
- layout,
12
- tagName: TagName,
13
- blockProps
14
- }) {
8
+ import { useMemo } from '@wordpress/element';
9
+ import { parse } from '@wordpress/blocks';
10
+ function useRenderAppender(hasInnerBlocks) {
11
+ const blockEditingMode = useBlockEditingMode();
12
+ // Disable appending when the editing mode is 'contentOnly'. This is so that the user can't
13
+ // append into a template part when editing a page in the site editor. See
14
+ // DisableNonPageContentBlocks. Ideally instead of (mis)using editing mode there would be a
15
+ // block editor API for achieving this.
16
+ if (blockEditingMode === 'contentOnly') {
17
+ return false;
18
+ }
19
+ if (!hasInnerBlocks) {
20
+ return InnerBlocks.ButtonBlockAppender;
21
+ }
22
+ }
23
+ function useLayout(layout) {
15
24
  const themeSupportsLayout = useSelect(select => {
16
25
  const {
17
26
  getSettings
@@ -19,7 +28,65 @@ export default function TemplatePartInnerBlocks({
19
28
  return getSettings()?.supportsLayout;
20
29
  }, []);
21
30
  const [defaultLayout] = useSettings('layout');
22
- const usedLayout = layout?.inherit ? defaultLayout || {} : layout;
31
+ if (themeSupportsLayout) {
32
+ return layout?.inherit ? defaultLayout || {} : layout;
33
+ }
34
+ }
35
+ function NonEditableTemplatePartPreview({
36
+ postId: id,
37
+ layout,
38
+ tagName: TagName,
39
+ blockProps
40
+ }) {
41
+ useBlockEditingMode('disabled');
42
+ const {
43
+ content,
44
+ editedBlocks
45
+ } = useSelect(select => {
46
+ if (!id) {
47
+ return {};
48
+ }
49
+ const {
50
+ getEditedEntityRecord
51
+ } = select(coreStore);
52
+ const editedRecord = getEditedEntityRecord('postType', 'wp_template_part', id, {
53
+ context: 'view'
54
+ });
55
+ return {
56
+ editedBlocks: editedRecord.blocks,
57
+ content: editedRecord.content
58
+ };
59
+ }, [id]);
60
+ const blocks = useMemo(() => {
61
+ if (!id) {
62
+ return undefined;
63
+ }
64
+ if (editedBlocks) {
65
+ return editedBlocks;
66
+ }
67
+ if (!content || typeof content !== 'string') {
68
+ return [];
69
+ }
70
+ return parse(content);
71
+ }, [id, editedBlocks, content]);
72
+ const innerBlocksProps = useInnerBlocksProps(blockProps, {
73
+ value: blocks,
74
+ onInput: () => {},
75
+ onChange: () => {},
76
+ renderAppender: false,
77
+ layout: useLayout(layout)
78
+ });
79
+ return createElement(TagName, {
80
+ ...innerBlocksProps
81
+ });
82
+ }
83
+ function EditableTemplatePartInnerBlocks({
84
+ postId: id,
85
+ hasInnerBlocks,
86
+ layout,
87
+ tagName: TagName,
88
+ blockProps
89
+ }) {
23
90
  const [blocks, onInput, onChange] = useEntityBlockEditor('postType', 'wp_template_part', {
24
91
  id
25
92
  });
@@ -27,11 +94,40 @@ export default function TemplatePartInnerBlocks({
27
94
  value: blocks,
28
95
  onInput,
29
96
  onChange,
30
- renderAppender: hasInnerBlocks ? undefined : InnerBlocks.ButtonBlockAppender,
31
- layout: themeSupportsLayout ? usedLayout : undefined
97
+ renderAppender: useRenderAppender(hasInnerBlocks),
98
+ layout: useLayout(layout)
32
99
  });
33
100
  return createElement(TagName, {
34
101
  ...innerBlocksProps
35
102
  });
36
103
  }
104
+ export default function TemplatePartInnerBlocks({
105
+ postId: id,
106
+ hasInnerBlocks,
107
+ layout,
108
+ tagName: TagName,
109
+ blockProps
110
+ }) {
111
+ const {
112
+ canViewTemplatePart,
113
+ canEditTemplatePart
114
+ } = useSelect(select => {
115
+ var _select$canUser, _select$canUser2;
116
+ return {
117
+ canViewTemplatePart: (_select$canUser = select(coreStore).canUser('read', 'templates')) !== null && _select$canUser !== void 0 ? _select$canUser : false,
118
+ canEditTemplatePart: (_select$canUser2 = select(coreStore).canUser('create', 'templates')) !== null && _select$canUser2 !== void 0 ? _select$canUser2 : false
119
+ };
120
+ }, []);
121
+ if (!canViewTemplatePart) {
122
+ return null;
123
+ }
124
+ const TemplatePartInnerBlocksComponent = canEditTemplatePart ? EditableTemplatePartInnerBlocks : NonEditableTemplatePartPreview;
125
+ return createElement(TemplatePartInnerBlocksComponent, {
126
+ postId: id,
127
+ hasInnerBlocks: hasInnerBlocks,
128
+ layout: layout,
129
+ tagName: TagName,
130
+ blockProps: blockProps
131
+ });
132
+ }
37
133
  //# sourceMappingURL=inner-blocks.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useEntityBlockEditor","InnerBlocks","useInnerBlocksProps","useSettings","store","blockEditorStore","useSelect","TemplatePartInnerBlocks","postId","id","hasInnerBlocks","layout","tagName","TagName","blockProps","themeSupportsLayout","select","getSettings","supportsLayout","defaultLayout","usedLayout","inherit","blocks","onInput","onChange","innerBlocksProps","value","renderAppender","undefined","ButtonBlockAppender","createElement"],"sources":["@wordpress/block-library/src/template-part/edit/inner-blocks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEntityBlockEditor } from '@wordpress/core-data';\nimport {\n\tInnerBlocks,\n\tuseInnerBlocksProps,\n\tuseSettings,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\nexport default function TemplatePartInnerBlocks( {\n\tpostId: id,\n\thasInnerBlocks,\n\tlayout,\n\ttagName: TagName,\n\tblockProps,\n} ) {\n\tconst themeSupportsLayout = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings()?.supportsLayout;\n\t}, [] );\n\tconst [ defaultLayout ] = useSettings( 'layout' );\n\tconst usedLayout = layout?.inherit ? defaultLayout || {} : layout;\n\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\t'wp_template_part',\n\t\t{ id }\n\t);\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tvalue: blocks,\n\t\tonInput,\n\t\tonChange,\n\t\trenderAppender: hasInnerBlocks\n\t\t\t? undefined\n\t\t\t: InnerBlocks.ButtonBlockAppender,\n\t\tlayout: themeSupportsLayout ? usedLayout : undefined,\n\t} );\n\n\treturn <TagName { ...innerBlocksProps } />;\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,oBAAoB,QAAQ,sBAAsB;AAC3D,SACCC,WAAW,EACXC,mBAAmB,EACnBC,WAAW,EACXC,KAAK,IAAIC,gBAAgB,QACnB,yBAAyB;AAChC,SAASC,SAAS,QAAQ,iBAAiB;AAE3C,eAAe,SAASC,uBAAuBA,CAAE;EAChDC,MAAM,EAAEC,EAAE;EACVC,cAAc;EACdC,MAAM;EACNC,OAAO,EAAEC,OAAO;EAChBC;AACD,CAAC,EAAG;EACH,MAAMC,mBAAmB,GAAGT,SAAS,CAAIU,MAAM,IAAM;IACpD,MAAM;MAAEC;IAAY,CAAC,GAAGD,MAAM,CAAEX,gBAAiB,CAAC;IAClD,OAAOY,WAAW,CAAC,CAAC,EAAEC,cAAc;EACrC,CAAC,EAAE,EAAG,CAAC;EACP,MAAM,CAAEC,aAAa,CAAE,GAAGhB,WAAW,CAAE,QAAS,CAAC;EACjD,MAAMiB,UAAU,GAAGT,MAAM,EAAEU,OAAO,GAAGF,aAAa,IAAI,CAAC,CAAC,GAAGR,MAAM;EAEjE,MAAM,CAAEW,MAAM,EAAEC,OAAO,EAAEC,QAAQ,CAAE,GAAGxB,oBAAoB,CACzD,UAAU,EACV,kBAAkB,EAClB;IAAES;EAAG,CACN,CAAC;EAED,MAAMgB,gBAAgB,GAAGvB,mBAAmB,CAAEY,UAAU,EAAE;IACzDY,KAAK,EAAEJ,MAAM;IACbC,OAAO;IACPC,QAAQ;IACRG,cAAc,EAAEjB,cAAc,GAC3BkB,SAAS,GACT3B,WAAW,CAAC4B,mBAAmB;IAClClB,MAAM,EAAEI,mBAAmB,GAAGK,UAAU,GAAGQ;EAC5C,CAAE,CAAC;EAEH,OAAOE,aAAA,CAACjB,OAAO;IAAA,GAAMY;EAAgB,CAAI,CAAC;AAC3C"}
1
+ {"version":3,"names":["useEntityBlockEditor","store","coreStore","InnerBlocks","useInnerBlocksProps","useSettings","blockEditorStore","useBlockEditingMode","useSelect","useMemo","parse","useRenderAppender","hasInnerBlocks","blockEditingMode","ButtonBlockAppender","useLayout","layout","themeSupportsLayout","select","getSettings","supportsLayout","defaultLayout","inherit","NonEditableTemplatePartPreview","postId","id","tagName","TagName","blockProps","content","editedBlocks","getEditedEntityRecord","editedRecord","context","blocks","undefined","innerBlocksProps","value","onInput","onChange","renderAppender","createElement","EditableTemplatePartInnerBlocks","TemplatePartInnerBlocks","canViewTemplatePart","canEditTemplatePart","_select$canUser","_select$canUser2","canUser","TemplatePartInnerBlocksComponent"],"sources":["@wordpress/block-library/src/template-part/edit/inner-blocks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEntityBlockEditor, store as coreStore } from '@wordpress/core-data';\nimport {\n\tInnerBlocks,\n\tuseInnerBlocksProps,\n\tuseSettings,\n\tstore as blockEditorStore,\n\tuseBlockEditingMode,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { parse } from '@wordpress/blocks';\n\nfunction useRenderAppender( hasInnerBlocks ) {\n\tconst blockEditingMode = useBlockEditingMode();\n\t// Disable appending when the editing mode is 'contentOnly'. This is so that the user can't\n\t// append into a template part when editing a page in the site editor. See\n\t// DisableNonPageContentBlocks. Ideally instead of (mis)using editing mode there would be a\n\t// block editor API for achieving this.\n\tif ( blockEditingMode === 'contentOnly' ) {\n\t\treturn false;\n\t}\n\tif ( ! hasInnerBlocks ) {\n\t\treturn InnerBlocks.ButtonBlockAppender;\n\t}\n}\n\nfunction useLayout( layout ) {\n\tconst themeSupportsLayout = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings()?.supportsLayout;\n\t}, [] );\n\tconst [ defaultLayout ] = useSettings( 'layout' );\n\tif ( themeSupportsLayout ) {\n\t\treturn layout?.inherit ? defaultLayout || {} : layout;\n\t}\n}\n\nfunction NonEditableTemplatePartPreview( {\n\tpostId: id,\n\tlayout,\n\ttagName: TagName,\n\tblockProps,\n} ) {\n\tuseBlockEditingMode( 'disabled' );\n\n\tconst { content, editedBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! id ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tconst { getEditedEntityRecord } = select( coreStore );\n\t\t\tconst editedRecord = getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\tid,\n\t\t\t\t{ context: 'view' }\n\t\t\t);\n\t\t\treturn {\n\t\t\t\teditedBlocks: editedRecord.blocks,\n\t\t\t\tcontent: editedRecord.content,\n\t\t\t};\n\t\t},\n\t\t[ id ]\n\t);\n\n\tconst blocks = useMemo( () => {\n\t\tif ( ! id ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( editedBlocks ) {\n\t\t\treturn editedBlocks;\n\t\t}\n\n\t\tif ( ! content || typeof content !== 'string' ) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn parse( content );\n\t}, [ id, editedBlocks, content ] );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tvalue: blocks,\n\t\tonInput: () => {},\n\t\tonChange: () => {},\n\t\trenderAppender: false,\n\t\tlayout: useLayout( layout ),\n\t} );\n\n\treturn <TagName { ...innerBlocksProps } />;\n}\n\nfunction EditableTemplatePartInnerBlocks( {\n\tpostId: id,\n\thasInnerBlocks,\n\tlayout,\n\ttagName: TagName,\n\tblockProps,\n} ) {\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\t'wp_template_part',\n\t\t{ id }\n\t);\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tvalue: blocks,\n\t\tonInput,\n\t\tonChange,\n\t\trenderAppender: useRenderAppender( hasInnerBlocks ),\n\t\tlayout: useLayout( layout ),\n\t} );\n\n\treturn <TagName { ...innerBlocksProps } />;\n}\n\nexport default function TemplatePartInnerBlocks( {\n\tpostId: id,\n\thasInnerBlocks,\n\tlayout,\n\ttagName: TagName,\n\tblockProps,\n} ) {\n\tconst { canViewTemplatePart, canEditTemplatePart } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tcanViewTemplatePart:\n\t\t\t\t\tselect( coreStore ).canUser( 'read', 'templates' ) ?? false,\n\t\t\t\tcanEditTemplatePart:\n\t\t\t\t\tselect( coreStore ).canUser( 'create', 'templates' ) ??\n\t\t\t\t\tfalse,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tif ( ! canViewTemplatePart ) {\n\t\treturn null;\n\t}\n\n\tconst TemplatePartInnerBlocksComponent = canEditTemplatePart\n\t\t? EditableTemplatePartInnerBlocks\n\t\t: NonEditableTemplatePartPreview;\n\n\treturn (\n\t\t<TemplatePartInnerBlocksComponent\n\t\t\tpostId={ id }\n\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\tlayout={ layout }\n\t\t\ttagName={ TagName }\n\t\t\tblockProps={ blockProps }\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
@@ -13,7 +13,7 @@ import { SearchControl, __experimentalHStack as HStack } from '@wordpress/compon
13
13
  /**
14
14
  * Internal dependencies
15
15
  */
16
- import { useAlternativeBlockPatterns, useAlternativeTemplateParts, useCreateTemplatePartFromBlocks } from './utils/hooks';
16
+ import { useAlternativeBlockPatterns, useAlternativeTemplateParts } from './utils/hooks';
17
17
  import { mapTemplatePartToBlockPattern } from './utils/map-template-part-to-block-pattern';
18
18
  import { searchPatterns } from '../../utils/search-patterns';
19
19
  export default function TemplatePartSelectionModal({
@@ -27,6 +27,7 @@ export default function TemplatePartSelectionModal({
27
27
  const {
28
28
  templateParts
29
29
  } = useAlternativeTemplateParts(area, templatePartId);
30
+
30
31
  // We can map template parts to block patters to reuse the BlockPatternsList UI
31
32
  const filteredTemplateParts = useMemo(() => {
32
33
  const partsAsPatterns = templateParts.map(templatePart => mapTemplatePartToBlockPattern(templatePart));
@@ -37,7 +38,6 @@ export default function TemplatePartSelectionModal({
37
38
  const filteredBlockPatterns = useMemo(() => {
38
39
  return searchPatterns(blockPatterns, searchValue);
39
40
  }, [blockPatterns, searchValue]);
40
- const shownBlockPatterns = useAsyncList(filteredBlockPatterns);
41
41
  const {
42
42
  createSuccessNotice
43
43
  } = useDispatch(noticesStore);
@@ -53,7 +53,6 @@ export default function TemplatePartSelectionModal({
53
53
  });
54
54
  onClose();
55
55
  };
56
- const createFromBlocks = useCreateTemplatePartFromBlocks(area, setAttributes);
57
56
  const hasTemplateParts = !!filteredTemplateParts.length;
58
57
  const hasBlockPatterns = !!filteredBlockPatterns.length;
59
58
  return createElement("div", {
@@ -72,13 +71,6 @@ export default function TemplatePartSelectionModal({
72
71
  onClickPattern: pattern => {
73
72
  onTemplatePartSelect(pattern.templatePart);
74
73
  }
75
- })), hasBlockPatterns && createElement("div", null, createElement("h2", null, __('Patterns')), createElement(BlockPatternsList, {
76
- blockPatterns: filteredBlockPatterns,
77
- shownPatterns: shownBlockPatterns,
78
- onClickPattern: (pattern, blocks) => {
79
- createFromBlocks(blocks, pattern.title);
80
- onClose();
81
- }
82
74
  })), !hasTemplateParts && !hasBlockPatterns && createElement(HStack, {
83
75
  alignment: "center"
84
76
  }, createElement("p", null, __('No results found.'))));
@@ -1 +1 @@
1
- {"version":3,"names":["useMemo","useState","__","sprintf","store","noticesStore","useDispatch","useAsyncList","__experimentalBlockPatternsList","BlockPatternsList","SearchControl","__experimentalHStack","HStack","useAlternativeBlockPatterns","useAlternativeTemplateParts","useCreateTemplatePartFromBlocks","mapTemplatePartToBlockPattern","searchPatterns","TemplatePartSelectionModal","setAttributes","onClose","templatePartId","area","clientId","searchValue","setSearchValue","templateParts","filteredTemplateParts","partsAsPatterns","map","templatePart","shownTemplateParts","blockPatterns","filteredBlockPatterns","shownBlockPatterns","createSuccessNotice","onTemplatePartSelect","slug","theme","undefined","title","rendered","type","createFromBlocks","hasTemplateParts","length","hasBlockPatterns","createElement","className","__nextHasNoMarginBottom","onChange","value","label","placeholder","shownPatterns","onClickPattern","pattern","blocks","alignment"],"sources":["@wordpress/block-library/src/template-part/edit/selection-modal.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useDispatch } from '@wordpress/data';\nimport { useAsyncList } from '@wordpress/compose';\nimport { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';\nimport {\n\tSearchControl,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n\tuseCreateTemplatePartFromBlocks,\n} from './utils/hooks';\nimport { mapTemplatePartToBlockPattern } from './utils/map-template-part-to-block-pattern';\nimport { searchPatterns } from '../../utils/search-patterns';\n\nexport default function TemplatePartSelectionModal( {\n\tsetAttributes,\n\tonClose,\n\ttemplatePartId = null,\n\tarea,\n\tclientId,\n} ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\t// We can map template parts to block patters to reuse the BlockPatternsList UI\n\tconst filteredTemplateParts = useMemo( () => {\n\t\tconst partsAsPatterns = templateParts.map( ( templatePart ) =>\n\t\t\tmapTemplatePartToBlockPattern( templatePart )\n\t\t);\n\n\t\treturn searchPatterns( partsAsPatterns, searchValue );\n\t}, [ templateParts, searchValue ] );\n\tconst shownTemplateParts = useAsyncList( filteredTemplateParts );\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\treturn searchPatterns( blockPatterns, searchValue );\n\t}, [ blockPatterns, searchValue ] );\n\tconst shownBlockPatterns = useAsyncList( filteredBlockPatterns );\n\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\n\tconst onTemplatePartSelect = ( templatePart ) => {\n\t\tsetAttributes( {\n\t\t\tslug: templatePart.slug,\n\t\t\ttheme: templatePart.theme,\n\t\t\tarea: undefined,\n\t\t} );\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: template part title. */\n\t\t\t\t__( 'Template Part \"%s\" inserted.' ),\n\t\t\t\ttemplatePart.title?.rendered || templatePart.slug\n\t\t\t),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t\tonClose();\n\t};\n\n\tconst createFromBlocks = useCreateTemplatePartFromBlocks(\n\t\tarea,\n\t\tsetAttributes\n\t);\n\n\tconst hasTemplateParts = !! filteredTemplateParts.length;\n\tconst hasBlockPatterns = !! filteredBlockPatterns.length;\n\n\treturn (\n\t\t<div className=\"block-library-template-part__selection-content\">\n\t\t\t<div className=\"block-library-template-part__selection-search\">\n\t\t\t\t<SearchControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tonChange={ setSearchValue }\n\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\tlabel={ __( 'Search for replacements' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{ hasTemplateParts && (\n\t\t\t\t<div>\n\t\t\t\t\t<h2>{ __( 'Existing template parts' ) }</h2>\n\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\tblockPatterns={ filteredTemplateParts }\n\t\t\t\t\t\tshownPatterns={ shownTemplateParts }\n\t\t\t\t\t\tonClickPattern={ ( pattern ) => {\n\t\t\t\t\t\t\tonTemplatePartSelect( pattern.templatePart );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ hasBlockPatterns && (\n\t\t\t\t<div>\n\t\t\t\t\t<h2>{ __( 'Patterns' ) }</h2>\n\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\tblockPatterns={ filteredBlockPatterns }\n\t\t\t\t\t\tshownPatterns={ shownBlockPatterns }\n\t\t\t\t\t\tonClickPattern={ ( pattern, blocks ) => {\n\t\t\t\t\t\t\tcreateFromBlocks( blocks, pattern.title );\n\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ ! hasTemplateParts && ! hasBlockPatterns && (\n\t\t\t\t<HStack alignment=\"center\">\n\t\t\t\t\t<p>{ __( 'No results found.' ) }</p>\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["useMemo","useState","__","sprintf","store","noticesStore","useDispatch","useAsyncList","__experimentalBlockPatternsList","BlockPatternsList","SearchControl","__experimentalHStack","HStack","useAlternativeBlockPatterns","useAlternativeTemplateParts","mapTemplatePartToBlockPattern","searchPatterns","TemplatePartSelectionModal","setAttributes","onClose","templatePartId","area","clientId","searchValue","setSearchValue","templateParts","filteredTemplateParts","partsAsPatterns","map","templatePart","shownTemplateParts","blockPatterns","filteredBlockPatterns","createSuccessNotice","onTemplatePartSelect","slug","theme","undefined","title","rendered","type","hasTemplateParts","length","hasBlockPatterns","createElement","className","__nextHasNoMarginBottom","onChange","value","label","placeholder","shownPatterns","onClickPattern","pattern","alignment"],"sources":["@wordpress/block-library/src/template-part/edit/selection-modal.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useDispatch } from '@wordpress/data';\nimport { useAsyncList } from '@wordpress/compose';\nimport { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';\nimport {\n\tSearchControl,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n} from './utils/hooks';\nimport { mapTemplatePartToBlockPattern } from './utils/map-template-part-to-block-pattern';\nimport { searchPatterns } from '../../utils/search-patterns';\n\nexport default function TemplatePartSelectionModal( {\n\tsetAttributes,\n\tonClose,\n\ttemplatePartId = null,\n\tarea,\n\tclientId,\n} ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\n\t// We can map template parts to block patters to reuse the BlockPatternsList UI\n\tconst filteredTemplateParts = useMemo( () => {\n\t\tconst partsAsPatterns = templateParts.map( ( templatePart ) =>\n\t\t\tmapTemplatePartToBlockPattern( templatePart )\n\t\t);\n\n\t\treturn searchPatterns( partsAsPatterns, searchValue );\n\t}, [ templateParts, searchValue ] );\n\tconst shownTemplateParts = useAsyncList( filteredTemplateParts );\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\treturn searchPatterns( blockPatterns, searchValue );\n\t}, [ blockPatterns, searchValue ] );\n\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\n\tconst onTemplatePartSelect = ( templatePart ) => {\n\t\tsetAttributes( {\n\t\t\tslug: templatePart.slug,\n\t\t\ttheme: templatePart.theme,\n\t\t\tarea: undefined,\n\t\t} );\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: template part title. */\n\t\t\t\t__( 'Template Part \"%s\" inserted.' ),\n\t\t\t\ttemplatePart.title?.rendered || templatePart.slug\n\t\t\t),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t\tonClose();\n\t};\n\n\tconst hasTemplateParts = !! filteredTemplateParts.length;\n\tconst hasBlockPatterns = !! filteredBlockPatterns.length;\n\n\treturn (\n\t\t<div className=\"block-library-template-part__selection-content\">\n\t\t\t<div className=\"block-library-template-part__selection-search\">\n\t\t\t\t<SearchControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tonChange={ setSearchValue }\n\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\tlabel={ __( 'Search for replacements' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{ hasTemplateParts && (\n\t\t\t\t<div>\n\t\t\t\t\t<h2>{ __( 'Existing template parts' ) }</h2>\n\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\tblockPatterns={ filteredTemplateParts }\n\t\t\t\t\t\tshownPatterns={ shownTemplateParts }\n\t\t\t\t\t\tonClickPattern={ ( pattern ) => {\n\t\t\t\t\t\t\tonTemplatePartSelect( pattern.templatePart );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ ! hasTemplateParts && ! hasBlockPatterns && (\n\t\t\t\t<HStack alignment=\"center\">\n\t\t\t\t\t<p>{ __( 'No results found.' ) }</p>\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
@@ -19,11 +19,8 @@ import { createBlock, getDefaultBlockName } from '@wordpress/blocks';
19
19
  * Internal dependencies
20
20
  */
21
21
  import { unlock } from '../lock-unlock';
22
- const {
23
- PrivateRichText: RichText
24
- } = unlock(blockEditorPrivateApis);
25
22
  export function Caption({
26
- key = 'caption',
23
+ attributeKey = 'caption',
27
24
  attributes,
28
25
  setAttributes,
29
26
  isSelected,
@@ -32,10 +29,18 @@ export function Caption({
32
29
  label = __('Caption text'),
33
30
  showToolbarButton = true,
34
31
  className,
35
- disableEditing
32
+ readOnly,
33
+ tagName = 'figcaption',
34
+ addLabel = __('Add caption'),
35
+ removeLabel = __('Remove caption'),
36
+ icon = captionIcon,
37
+ ...props
36
38
  }) {
37
- const caption = attributes[key];
39
+ const caption = attributes[attributeKey];
38
40
  const prevCaption = usePrevious(caption);
41
+ const {
42
+ PrivateRichText: RichText
43
+ } = unlock(blockEditorPrivateApis);
39
44
  const isCaptionEmpty = RichText.isEmpty(caption);
40
45
  const isPrevCaptionEmpty = RichText.isEmpty(prevCaption);
41
46
  const [showCaption, setShowCaption] = useState(!isCaptionEmpty);
@@ -66,27 +71,28 @@ export function Caption({
66
71
  setShowCaption(!showCaption);
67
72
  if (showCaption && caption) {
68
73
  setAttributes({
69
- caption: undefined
74
+ [attributeKey]: undefined
70
75
  });
71
76
  }
72
77
  },
73
- icon: captionIcon,
78
+ icon: icon,
74
79
  isPressed: showCaption,
75
- label: showCaption ? __('Remove caption') : __('Add caption')
80
+ label: showCaption ? removeLabel : addLabel
76
81
  })), showCaption && (!RichText.isEmpty(caption) || isSelected) && createElement(RichText, {
77
- identifier: key,
78
- tagName: "figcaption",
82
+ identifier: attributeKey,
83
+ tagName: tagName,
79
84
  className: classnames(className, __experimentalGetElementClassName('caption')),
80
85
  ref: ref,
81
86
  "aria-label": label,
82
87
  placeholder: placeholder,
83
88
  value: caption,
84
89
  onChange: value => setAttributes({
85
- caption: value
90
+ [attributeKey]: value
86
91
  }),
87
92
  inlineToolbar: true,
88
93
  __unstableOnSplitAtEnd: () => insertBlocksAfter(createBlock(getDefaultBlockName())),
89
- disableEditing: disableEditing
94
+ readOnly: readOnly,
95
+ ...props
90
96
  }));
91
97
  }
92
98
  //# sourceMappingURL=caption.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","useState","useEffect","useCallback","usePrevious","__","BlockControls","__experimentalGetElementClassName","privateApis","blockEditorPrivateApis","ToolbarButton","caption","captionIcon","createBlock","getDefaultBlockName","unlock","PrivateRichText","RichText","Caption","key","attributes","setAttributes","isSelected","insertBlocksAfter","placeholder","label","showToolbarButton","className","disableEditing","prevCaption","isCaptionEmpty","isEmpty","isPrevCaptionEmpty","showCaption","setShowCaption","ref","node","focus","createElement","Fragment","group","onClick","undefined","icon","isPressed","identifier","tagName","value","onChange","inlineToolbar","__unstableOnSplitAtEnd"],"sources":["@wordpress/block-library/src/utils/caption.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect, useCallback } from '@wordpress/element';\nimport { usePrevious } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tBlockControls,\n\t__experimentalGetElementClassName,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { ToolbarButton } from '@wordpress/components';\nimport { caption as captionIcon } from '@wordpress/icons';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\n\nconst { PrivateRichText: RichText } = unlock( blockEditorPrivateApis );\n\nexport function Caption( {\n\tkey = 'caption',\n\tattributes,\n\tsetAttributes,\n\tisSelected,\n\tinsertBlocksAfter,\n\tplaceholder = __( 'Add caption' ),\n\tlabel = __( 'Caption text' ),\n\tshowToolbarButton = true,\n\tclassName,\n\tdisableEditing,\n} ) {\n\tconst caption = attributes[ key ];\n\tconst prevCaption = usePrevious( caption );\n\tconst isCaptionEmpty = RichText.isEmpty( caption );\n\tconst isPrevCaptionEmpty = RichText.isEmpty( prevCaption );\n\tconst [ showCaption, setShowCaption ] = useState( ! isCaptionEmpty );\n\n\t// We need to show the caption when changes come from\n\t// history navigation(undo/redo).\n\tuseEffect( () => {\n\t\tif ( ! isCaptionEmpty && isPrevCaptionEmpty ) {\n\t\t\tsetShowCaption( true );\n\t\t}\n\t}, [ isCaptionEmpty, isPrevCaptionEmpty ] );\n\n\tuseEffect( () => {\n\t\tif ( ! isSelected && isCaptionEmpty ) {\n\t\t\tsetShowCaption( false );\n\t\t}\n\t}, [ isSelected, isCaptionEmpty ] );\n\n\t// Focus the caption when we click to add one.\n\tconst ref = useCallback(\n\t\t( node ) => {\n\t\t\tif ( node && isCaptionEmpty ) {\n\t\t\t\tnode.focus();\n\t\t\t}\n\t\t},\n\t\t[ isCaptionEmpty ]\n\t);\n\treturn (\n\t\t<>\n\t\t\t{ showToolbarButton && (\n\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetShowCaption( ! showCaption );\n\t\t\t\t\t\t\tif ( showCaption && caption ) {\n\t\t\t\t\t\t\t\tsetAttributes( { caption: undefined } );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ticon={ captionIcon }\n\t\t\t\t\t\tisPressed={ showCaption }\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tshowCaption\n\t\t\t\t\t\t\t\t? __( 'Remove caption' )\n\t\t\t\t\t\t\t\t: __( 'Add caption' )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t{ showCaption &&\n\t\t\t\t( ! RichText.isEmpty( caption ) || isSelected ) && (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tidentifier={ key }\n\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t\t__experimentalGetElementClassName( 'caption' )\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\taria-label={ label }\n\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { caption: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinlineToolbar\n\t\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\t\tcreateBlock( getDefaultBlockName() )\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdisableEditing={ disableEditing }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,QAAQ,EAAEC,SAAS,EAAEC,WAAW,QAAQ,oBAAoB;AACrE,SAASC,WAAW,QAAQ,oBAAoB;AAChD,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SACCC,aAAa,EACbC,iCAAiC,EACjCC,WAAW,IAAIC,sBAAsB,QAC/B,yBAAyB;AAChC,SAASC,aAAa,QAAQ,uBAAuB;AACrD,SAASC,OAAO,IAAIC,WAAW,QAAQ,kBAAkB;AACzD,SAASC,WAAW,EAAEC,mBAAmB,QAAQ,mBAAmB;;AAEpE;AACA;AACA;AACA,SAASC,MAAM,QAAQ,gBAAgB;AAEvC,MAAM;EAAEC,eAAe,EAAEC;AAAS,CAAC,GAAGF,MAAM,CAAEN,sBAAuB,CAAC;AAEtE,OAAO,SAASS,OAAOA,CAAE;EACxBC,GAAG,GAAG,SAAS;EACfC,UAAU;EACVC,aAAa;EACbC,UAAU;EACVC,iBAAiB;EACjBC,WAAW,GAAGnB,EAAE,CAAE,aAAc,CAAC;EACjCoB,KAAK,GAAGpB,EAAE,CAAE,cAAe,CAAC;EAC5BqB,iBAAiB,GAAG,IAAI;EACxBC,SAAS;EACTC;AACD,CAAC,EAAG;EACH,MAAMjB,OAAO,GAAGS,UAAU,CAAED,GAAG,CAAE;EACjC,MAAMU,WAAW,GAAGzB,WAAW,CAAEO,OAAQ,CAAC;EAC1C,MAAMmB,cAAc,GAAGb,QAAQ,CAACc,OAAO,CAAEpB,OAAQ,CAAC;EAClD,MAAMqB,kBAAkB,GAAGf,QAAQ,CAACc,OAAO,CAAEF,WAAY,CAAC;EAC1D,MAAM,CAAEI,WAAW,EAAEC,cAAc,CAAE,GAAGjC,QAAQ,CAAE,CAAE6B,cAAe,CAAC;;EAEpE;EACA;EACA5B,SAAS,CAAE,MAAM;IAChB,IAAK,CAAE4B,cAAc,IAAIE,kBAAkB,EAAG;MAC7CE,cAAc,CAAE,IAAK,CAAC;IACvB;EACD,CAAC,EAAE,CAAEJ,cAAc,EAAEE,kBAAkB,CAAG,CAAC;EAE3C9B,SAAS,CAAE,MAAM;IAChB,IAAK,CAAEoB,UAAU,IAAIQ,cAAc,EAAG;MACrCI,cAAc,CAAE,KAAM,CAAC;IACxB;EACD,CAAC,EAAE,CAAEZ,UAAU,EAAEQ,cAAc,CAAG,CAAC;;EAEnC;EACA,MAAMK,GAAG,GAAGhC,WAAW,CACpBiC,IAAI,IAAM;IACX,IAAKA,IAAI,IAAIN,cAAc,EAAG;MAC7BM,IAAI,CAACC,KAAK,CAAC,CAAC;IACb;EACD,CAAC,EACD,CAAEP,cAAc,CACjB,CAAC;EACD,OACCQ,aAAA,CAAAC,QAAA,QACGb,iBAAiB,IAClBY,aAAA,CAAChC,aAAa;IAACkC,KAAK,EAAC;EAAO,GAC3BF,aAAA,CAAC5B,aAAa;IACb+B,OAAO,EAAGA,CAAA,KAAM;MACfP,cAAc,CAAE,CAAED,WAAY,CAAC;MAC/B,IAAKA,WAAW,IAAItB,OAAO,EAAG;QAC7BU,aAAa,CAAE;UAAEV,OAAO,EAAE+B;QAAU,CAAE,CAAC;MACxC;IACD,CAAG;IACHC,IAAI,EAAG/B,WAAa;IACpBgC,SAAS,EAAGX,WAAa;IACzBR,KAAK,EACJQ,WAAW,GACR5B,EAAE,CAAE,gBAAiB,CAAC,GACtBA,EAAE,CAAE,aAAc;EACrB,CACD,CACa,CACf,EACC4B,WAAW,KACV,CAAEhB,QAAQ,CAACc,OAAO,CAAEpB,OAAQ,CAAC,IAAIW,UAAU,CAAE,IAC9CgB,aAAA,CAACrB,QAAQ;IACR4B,UAAU,EAAG1B,GAAK;IAClB2B,OAAO,EAAC,YAAY;IACpBnB,SAAS,EAAG3B,UAAU,CACrB2B,SAAS,EACTpB,iCAAiC,CAAE,SAAU,CAC9C,CAAG;IACH4B,GAAG,EAAGA,GAAK;IACX,cAAaV,KAAO;IACpBD,WAAW,EAAGA,WAAa;IAC3BuB,KAAK,EAAGpC,OAAS;IACjBqC,QAAQ,EAAKD,KAAK,IACjB1B,aAAa,CAAE;MAAEV,OAAO,EAAEoC;IAAM,CAAE,CAClC;IACDE,aAAa;IACbC,sBAAsB,EAAGA,CAAA,KACxB3B,iBAAiB,CAChBV,WAAW,CAAEC,mBAAmB,CAAC,CAAE,CACpC,CACA;IACDc,cAAc,EAAGA;EAAgB,CACjC,CAEF,CAAC;AAEL"}
1
+ {"version":3,"names":["classnames","useState","useEffect","useCallback","usePrevious","__","BlockControls","__experimentalGetElementClassName","privateApis","blockEditorPrivateApis","ToolbarButton","caption","captionIcon","createBlock","getDefaultBlockName","unlock","Caption","attributeKey","attributes","setAttributes","isSelected","insertBlocksAfter","placeholder","label","showToolbarButton","className","readOnly","tagName","addLabel","removeLabel","icon","props","prevCaption","PrivateRichText","RichText","isCaptionEmpty","isEmpty","isPrevCaptionEmpty","showCaption","setShowCaption","ref","node","focus","createElement","Fragment","group","onClick","undefined","isPressed","identifier","value","onChange","inlineToolbar","__unstableOnSplitAtEnd"],"sources":["@wordpress/block-library/src/utils/caption.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect, useCallback } from '@wordpress/element';\nimport { usePrevious } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tBlockControls,\n\t__experimentalGetElementClassName,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { ToolbarButton } from '@wordpress/components';\nimport { caption as captionIcon } from '@wordpress/icons';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\n\nexport function Caption( {\n\tattributeKey = 'caption',\n\tattributes,\n\tsetAttributes,\n\tisSelected,\n\tinsertBlocksAfter,\n\tplaceholder = __( 'Add caption' ),\n\tlabel = __( 'Caption text' ),\n\tshowToolbarButton = true,\n\tclassName,\n\treadOnly,\n\ttagName = 'figcaption',\n\taddLabel = __( 'Add caption' ),\n\tremoveLabel = __( 'Remove caption' ),\n\ticon = captionIcon,\n\t...props\n} ) {\n\tconst caption = attributes[ attributeKey ];\n\tconst prevCaption = usePrevious( caption );\n\tconst { PrivateRichText: RichText } = unlock( blockEditorPrivateApis );\n\tconst isCaptionEmpty = RichText.isEmpty( caption );\n\tconst isPrevCaptionEmpty = RichText.isEmpty( prevCaption );\n\tconst [ showCaption, setShowCaption ] = useState( ! isCaptionEmpty );\n\n\t// We need to show the caption when changes come from\n\t// history navigation(undo/redo).\n\tuseEffect( () => {\n\t\tif ( ! isCaptionEmpty && isPrevCaptionEmpty ) {\n\t\t\tsetShowCaption( true );\n\t\t}\n\t}, [ isCaptionEmpty, isPrevCaptionEmpty ] );\n\n\tuseEffect( () => {\n\t\tif ( ! isSelected && isCaptionEmpty ) {\n\t\t\tsetShowCaption( false );\n\t\t}\n\t}, [ isSelected, isCaptionEmpty ] );\n\n\t// Focus the caption when we click to add one.\n\tconst ref = useCallback(\n\t\t( node ) => {\n\t\t\tif ( node && isCaptionEmpty ) {\n\t\t\t\tnode.focus();\n\t\t\t}\n\t\t},\n\t\t[ isCaptionEmpty ]\n\t);\n\treturn (\n\t\t<>\n\t\t\t{ showToolbarButton && (\n\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tsetShowCaption( ! showCaption );\n\t\t\t\t\t\t\tif ( showCaption && caption ) {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t[ attributeKey ]: undefined,\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\ticon={ icon }\n\t\t\t\t\t\tisPressed={ showCaption }\n\t\t\t\t\t\tlabel={ showCaption ? removeLabel : addLabel }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t{ showCaption &&\n\t\t\t\t( ! RichText.isEmpty( caption ) || isSelected ) && (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tidentifier={ attributeKey }\n\t\t\t\t\t\ttagName={ tagName }\n\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t\t__experimentalGetElementClassName( 'caption' )\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\taria-label={ label }\n\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { [ attributeKey ]: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinlineToolbar\n\t\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\t\tcreateBlock( getDefaultBlockName() )\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treadOnly={ readOnly }\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
@@ -63,6 +63,7 @@ export function useUploadMediaFromBlobURL(args = {}) {
63
63
  onChange(media);
64
64
  },
65
65
  onError: message => {
66
+ revokeBlobURL(url);
66
67
  onError(message);
67
68
  }
68
69
  });
@@ -1 +1 @@
1
- {"version":3,"names":["useSelect","useLayoutEffect","useEffect","useRef","getBlobByURL","isBlobURL","revokeBlobURL","store","blockEditorStore","coreStore","useCanEditEntity","kind","name","recordId","select","canUserEditEntityRecord","useUploadMediaFromBlobURL","args","latestArgs","getSettings","current","url","file","allowedTypes","onChange","onError","mediaUpload","filesList","onFileChange","media","message"],"sources":["@wordpress/block-library/src/utils/hooks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useLayoutEffect, useEffect, useRef } from '@wordpress/element';\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Returns whether the current user can edit the given entity.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} recordId Record's id.\n */\nexport function useCanEditEntity( kind, name, recordId ) {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).canUserEditEntityRecord( kind, name, recordId ),\n\t\t[ kind, name, recordId ]\n\t);\n}\n\n/**\n * Handles uploading a media file from a blob URL on mount.\n *\n * @param {Object} args Upload media arguments.\n * @param {string} args.url Blob URL.\n * @param {?Array} args.allowedTypes Array of allowed media types.\n * @param {Function} args.onChange Function called when the media is uploaded.\n * @param {Function} args.onError Function called when an error happens.\n */\nexport function useUploadMediaFromBlobURL( args = {} ) {\n\tconst latestArgs = useRef( args );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\n\tuseLayoutEffect( () => {\n\t\tlatestArgs.current = args;\n\t} );\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\t! latestArgs.current.url ||\n\t\t\t! isBlobURL( latestArgs.current.url )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = getBlobByURL( latestArgs.current.url );\n\t\tif ( ! file ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { url, allowedTypes, onChange, onError } = latestArgs.current;\n\t\tconst { mediaUpload } = getSettings();\n\n\t\tmediaUpload( {\n\t\t\tfilesList: [ file ],\n\t\t\tallowedTypes,\n\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\tif ( isBlobURL( media?.url ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\trevokeBlobURL( url );\n\t\t\t\tonChange( media );\n\t\t\t},\n\t\t\tonError: ( message ) => {\n\t\t\t\tonError( message );\n\t\t\t},\n\t\t} );\n\t}, [ getSettings ] );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,eAAe,EAAEC,SAAS,EAAEC,MAAM,QAAQ,oBAAoB;AACvE,SAASC,YAAY,EAAEC,SAAS,EAAEC,aAAa,QAAQ,iBAAiB;AACxE,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASD,KAAK,IAAIE,SAAS,QAAQ,sBAAsB;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAAEC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAG;EACxD,OAAOb,SAAS,CACbc,MAAM,IACPA,MAAM,CAAEL,SAAU,CAAC,CAACM,uBAAuB,CAAEJ,IAAI,EAAEC,IAAI,EAAEC,QAAS,CAAC,EACpE,CAAEF,IAAI,EAAEC,IAAI,EAAEC,QAAQ,CACvB,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,yBAAyBA,CAAEC,IAAI,GAAG,CAAC,CAAC,EAAG;EACtD,MAAMC,UAAU,GAAGf,MAAM,CAAEc,IAAK,CAAC;EACjC,MAAM;IAAEE;EAAY,CAAC,GAAGnB,SAAS,CAAEQ,gBAAiB,CAAC;EAErDP,eAAe,CAAE,MAAM;IACtBiB,UAAU,CAACE,OAAO,GAAGH,IAAI;EAC1B,CAAE,CAAC;EAEHf,SAAS,CAAE,MAAM;IAChB,IACC,CAAEgB,UAAU,CAACE,OAAO,CAACC,GAAG,IACxB,CAAEhB,SAAS,CAAEa,UAAU,CAACE,OAAO,CAACC,GAAI,CAAC,EACpC;MACD;IACD;IAEA,MAAMC,IAAI,GAAGlB,YAAY,CAAEc,UAAU,CAACE,OAAO,CAACC,GAAI,CAAC;IACnD,IAAK,CAAEC,IAAI,EAAG;MACb;IACD;IAEA,MAAM;MAAED,GAAG;MAAEE,YAAY;MAAEC,QAAQ;MAAEC;IAAQ,CAAC,GAAGP,UAAU,CAACE,OAAO;IACnE,MAAM;MAAEM;IAAY,CAAC,GAAGP,WAAW,CAAC,CAAC;IAErCO,WAAW,CAAE;MACZC,SAAS,EAAE,CAAEL,IAAI,CAAE;MACnBC,YAAY;MACZK,YAAY,EAAEA,CAAE,CAAEC,KAAK,CAAE,KAAM;QAC9B,IAAKxB,SAAS,CAAEwB,KAAK,EAAER,GAAI,CAAC,EAAG;UAC9B;QACD;QAEAf,aAAa,CAAEe,GAAI,CAAC;QACpBG,QAAQ,CAAEK,KAAM,CAAC;MAClB,CAAC;MACDJ,OAAO,EAAIK,OAAO,IAAM;QACvBL,OAAO,CAAEK,OAAQ,CAAC;MACnB;IACD,CAAE,CAAC;EACJ,CAAC,EAAE,CAAEX,WAAW,CAAG,CAAC;AACrB"}
1
+ {"version":3,"names":["useSelect","useLayoutEffect","useEffect","useRef","getBlobByURL","isBlobURL","revokeBlobURL","store","blockEditorStore","coreStore","useCanEditEntity","kind","name","recordId","select","canUserEditEntityRecord","useUploadMediaFromBlobURL","args","latestArgs","getSettings","current","url","file","allowedTypes","onChange","onError","mediaUpload","filesList","onFileChange","media","message"],"sources":["@wordpress/block-library/src/utils/hooks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useLayoutEffect, useEffect, useRef } from '@wordpress/element';\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Returns whether the current user can edit the given entity.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} recordId Record's id.\n */\nexport function useCanEditEntity( kind, name, recordId ) {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).canUserEditEntityRecord( kind, name, recordId ),\n\t\t[ kind, name, recordId ]\n\t);\n}\n\n/**\n * Handles uploading a media file from a blob URL on mount.\n *\n * @param {Object} args Upload media arguments.\n * @param {string} args.url Blob URL.\n * @param {?Array} args.allowedTypes Array of allowed media types.\n * @param {Function} args.onChange Function called when the media is uploaded.\n * @param {Function} args.onError Function called when an error happens.\n */\nexport function useUploadMediaFromBlobURL( args = {} ) {\n\tconst latestArgs = useRef( args );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\n\tuseLayoutEffect( () => {\n\t\tlatestArgs.current = args;\n\t} );\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\t! latestArgs.current.url ||\n\t\t\t! isBlobURL( latestArgs.current.url )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = getBlobByURL( latestArgs.current.url );\n\t\tif ( ! file ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { url, allowedTypes, onChange, onError } = latestArgs.current;\n\t\tconst { mediaUpload } = getSettings();\n\n\t\tmediaUpload( {\n\t\t\tfilesList: [ file ],\n\t\t\tallowedTypes,\n\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\tif ( isBlobURL( media?.url ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\trevokeBlobURL( url );\n\t\t\t\tonChange( media );\n\t\t\t},\n\t\t\tonError: ( message ) => {\n\t\t\t\trevokeBlobURL( url );\n\t\t\t\tonError( message );\n\t\t\t},\n\t\t} );\n\t}, [ getSettings ] );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,eAAe,EAAEC,SAAS,EAAEC,MAAM,QAAQ,oBAAoB;AACvE,SAASC,YAAY,EAAEC,SAAS,EAAEC,aAAa,QAAQ,iBAAiB;AACxE,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASD,KAAK,IAAIE,SAAS,QAAQ,sBAAsB;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAAEC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAG;EACxD,OAAOb,SAAS,CACbc,MAAM,IACPA,MAAM,CAAEL,SAAU,CAAC,CAACM,uBAAuB,CAAEJ,IAAI,EAAEC,IAAI,EAAEC,QAAS,CAAC,EACpE,CAAEF,IAAI,EAAEC,IAAI,EAAEC,QAAQ,CACvB,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,yBAAyBA,CAAEC,IAAI,GAAG,CAAC,CAAC,EAAG;EACtD,MAAMC,UAAU,GAAGf,MAAM,CAAEc,IAAK,CAAC;EACjC,MAAM;IAAEE;EAAY,CAAC,GAAGnB,SAAS,CAAEQ,gBAAiB,CAAC;EAErDP,eAAe,CAAE,MAAM;IACtBiB,UAAU,CAACE,OAAO,GAAGH,IAAI;EAC1B,CAAE,CAAC;EAEHf,SAAS,CAAE,MAAM;IAChB,IACC,CAAEgB,UAAU,CAACE,OAAO,CAACC,GAAG,IACxB,CAAEhB,SAAS,CAAEa,UAAU,CAACE,OAAO,CAACC,GAAI,CAAC,EACpC;MACD;IACD;IAEA,MAAMC,IAAI,GAAGlB,YAAY,CAAEc,UAAU,CAACE,OAAO,CAACC,GAAI,CAAC;IACnD,IAAK,CAAEC,IAAI,EAAG;MACb;IACD;IAEA,MAAM;MAAED,GAAG;MAAEE,YAAY;MAAEC,QAAQ;MAAEC;IAAQ,CAAC,GAAGP,UAAU,CAACE,OAAO;IACnE,MAAM;MAAEM;IAAY,CAAC,GAAGP,WAAW,CAAC,CAAC;IAErCO,WAAW,CAAE;MACZC,SAAS,EAAE,CAAEL,IAAI,CAAE;MACnBC,YAAY;MACZK,YAAY,EAAEA,CAAE,CAAEC,KAAK,CAAE,KAAM;QAC9B,IAAKxB,SAAS,CAAEwB,KAAK,EAAER,GAAI,CAAC,EAAG;UAC9B;QACD;QAEAf,aAAa,CAAEe,GAAI,CAAC;QACpBG,QAAQ,CAAEK,KAAM,CAAC;MAClB,CAAC;MACDJ,OAAO,EAAIK,OAAO,IAAM;QACvBxB,aAAa,CAAEe,GAAI,CAAC;QACpBI,OAAO,CAAEK,OAAQ,CAAC;MACnB;IACD,CAAE,CAAC;EACJ,CAAC,EAAE,CAAEX,WAAW,CAAG,CAAC;AACrB"}
@@ -95,6 +95,6 @@
95
95
  color: rgba(255, 255, 255, 0.65);
96
96
  }
97
97
 
98
- .wp-block-audio {
98
+ :where(.wp-block-audio) {
99
99
  margin: 0 0 1em 0;
100
100
  }
@@ -95,6 +95,6 @@
95
95
  color: rgba(255, 255, 255, 0.65);
96
96
  }
97
97
 
98
- .wp-block-audio {
98
+ :where(.wp-block-audio) {
99
99
  margin: 0 0 1em 0;
100
100
  }
@@ -86,15 +86,18 @@
86
86
  /**
87
87
  * Reset the WP Admin page styles for Gutenberg-like pages.
88
88
  */
89
+ :where(.wp-block-cover-image, .wp-block-cover) {
90
+ min-height: 430px;
91
+ padding: 1em;
92
+ }
93
+
89
94
  .wp-block-cover-image,
90
95
  .wp-block-cover {
91
96
  position: relative;
92
97
  background-position: center center;
93
- min-height: 430px;
94
98
  display: flex;
95
99
  justify-content: center;
96
100
  align-items: center;
97
- padding: 1em;
98
101
  overflow: hidden;
99
102
  overflow: clip;
100
103
  box-sizing: border-box; direction: ltr;
@@ -86,15 +86,18 @@
86
86
  /**
87
87
  * Reset the WP Admin page styles for Gutenberg-like pages.
88
88
  */
89
+ :where(.wp-block-cover-image, .wp-block-cover) {
90
+ min-height: 430px;
91
+ padding: 1em;
92
+ }
93
+
89
94
  .wp-block-cover-image,
90
95
  .wp-block-cover {
91
96
  position: relative;
92
97
  background-position: center center;
93
- min-height: 430px;
94
98
  display: flex;
95
99
  justify-content: center;
96
100
  align-items: center;
97
- padding: 1em;
98
101
  overflow: hidden;
99
102
  overflow: clip;
100
103
  box-sizing: border-box;
@@ -2556,9 +2556,6 @@ body.editor-styles-wrapper .wp-block-navigation__responsive-container.is-menu-op
2556
2556
  display: inline-block;
2557
2557
  margin-right: 8px;
2558
2558
  }
2559
- .wp-block-social-links.wp-block-social-links {
2560
- background: none;
2561
- }
2562
2559
 
2563
2560
  .wp-social-link:hover {
2564
2561
  transform: none;
@@ -2608,7 +2605,6 @@ body.editor-styles-wrapper .wp-block-navigation__responsive-container.is-menu-op
2608
2605
  .wp-block-social-links .wp-block-social-links__social-prompt {
2609
2606
  min-height: 24px;
2610
2607
  list-style: none;
2611
- order: 2;
2612
2608
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
2613
2609
  font-size: 13px;
2614
2610
  line-height: 24px;
@@ -2759,10 +2755,14 @@ body.editor-styles-wrapper .wp-block-navigation__responsive-container.is-menu-op
2759
2755
  z-index: 2;
2760
2756
  }
2761
2757
 
2762
- .is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.is-highlighted, .is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.is-selected,
2763
- .is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.is-highlighted,
2764
- .is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.is-selected {
2765
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color);
2758
+ .is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.is-highlighted::after, .is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.is-selected::after,
2759
+ .is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.is-highlighted::after,
2760
+ .is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.is-selected::after {
2761
+ box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color);
2762
+ }
2763
+ .is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.is-hovered::after,
2764
+ .is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.is-hovered::after {
2765
+ box-shadow: 0 0 0 1px var(--wp-block-synced-color);
2766
2766
  }
2767
2767
  .is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.block-editor-block-list__block:not([contenteditable]):focus::after,
2768
2768
  .is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus::after {
@@ -2773,6 +2773,10 @@ body.editor-styles-wrapper .wp-block-navigation__responsive-container.is-menu-op
2773
2773
  box-shadow: 0 0 0 var(--wp-admin-border-width-focus) #fff;
2774
2774
  }
2775
2775
 
2776
+ .is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.has-editable-outline::after {
2777
+ border: none;
2778
+ }
2779
+
2776
2780
  .wp-block-text-columns .block-editor-rich-text__editable:focus {
2777
2781
  outline: 1px solid #ddd;
2778
2782
  }
@@ -2564,9 +2564,6 @@ body.editor-styles-wrapper .wp-block-navigation__responsive-container.is-menu-op
2564
2564
  display: inline-block;
2565
2565
  margin-left: 8px;
2566
2566
  }
2567
- .wp-block-social-links.wp-block-social-links {
2568
- background: none;
2569
- }
2570
2567
 
2571
2568
  .wp-social-link:hover {
2572
2569
  transform: none;
@@ -2616,7 +2613,6 @@ body.editor-styles-wrapper .wp-block-navigation__responsive-container.is-menu-op
2616
2613
  .wp-block-social-links .wp-block-social-links__social-prompt {
2617
2614
  min-height: 24px;
2618
2615
  list-style: none;
2619
- order: 2;
2620
2616
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
2621
2617
  font-size: 13px;
2622
2618
  line-height: 24px;
@@ -2767,10 +2763,14 @@ body.editor-styles-wrapper .wp-block-navigation__responsive-container.is-menu-op
2767
2763
  z-index: 2;
2768
2764
  }
2769
2765
 
2770
- .is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.is-highlighted, .is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.is-selected,
2771
- .is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.is-highlighted,
2772
- .is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.is-selected {
2773
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color);
2766
+ .is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.is-highlighted::after, .is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.is-selected::after,
2767
+ .is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.is-highlighted::after,
2768
+ .is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.is-selected::after {
2769
+ box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color);
2770
+ }
2771
+ .is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.is-hovered::after,
2772
+ .is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.is-hovered::after {
2773
+ box-shadow: 0 0 0 1px var(--wp-block-synced-color);
2774
2774
  }
2775
2775
  .is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.block-editor-block-list__block:not([contenteditable]):focus::after,
2776
2776
  .is-outline-mode .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus::after {
@@ -2781,6 +2781,10 @@ body.editor-styles-wrapper .wp-block-navigation__responsive-container.is-menu-op
2781
2781
  box-shadow: 0 0 0 var(--wp-admin-border-width-focus) #fff;
2782
2782
  }
2783
2783
 
2784
+ .is-outline-mode .block-editor-block-list__block:not(.remove-outline).wp-block-template-part.has-editable-outline::after {
2785
+ border: none;
2786
+ }
2787
+
2784
2788
  .wp-block-text-columns .block-editor-rich-text__editable:focus {
2785
2789
  outline: 1px solid #ddd;
2786
2790
  }
@@ -95,6 +95,6 @@
95
95
  color: rgba(255, 255, 255, 0.65);
96
96
  }
97
97
 
98
- .wp-block-embed {
98
+ :where(.wp-block-embed) {
99
99
  margin: 0 0 1em 0;
100
100
  }
@@ -95,6 +95,6 @@
95
95
  color: rgba(255, 255, 255, 0.65);
96
96
  }
97
97
 
98
- .wp-block-embed {
98
+ :where(.wp-block-embed) {
99
99
  margin: 0 0 1em 0;
100
100
  }
@@ -95,6 +95,6 @@
95
95
  color: rgba(255, 255, 255, 0.65);
96
96
  }
97
97
 
98
- .wp-block-image {
98
+ :where(.wp-block-image) {
99
99
  margin: 0 0 1em 0;
100
100
  }
@@ -95,6 +95,6 @@
95
95
  color: rgba(255, 255, 255, 0.65);
96
96
  }
97
97
 
98
- .wp-block-image {
98
+ :where(.wp-block-image) {
99
99
  margin: 0 0 1em 0;
100
100
  }
@@ -86,12 +86,13 @@
86
86
  /**
87
87
  * Reset the WP Admin page styles for Gutenberg-like pages.
88
88
  */
89
- .wp-block-pullquote {
89
+ :where(.wp-block-pullquote) {
90
90
  border-top: 4px solid currentColor;
91
91
  border-bottom: 4px solid currentColor;
92
92
  margin-bottom: 1.75em;
93
93
  color: currentColor;
94
94
  }
95
+
95
96
  .wp-block-pullquote cite,
96
97
  .wp-block-pullquote footer, .wp-block-pullquote__citation {
97
98
  color: currentColor;
@@ -86,12 +86,13 @@
86
86
  /**
87
87
  * Reset the WP Admin page styles for Gutenberg-like pages.
88
88
  */
89
- .wp-block-pullquote {
89
+ :where(.wp-block-pullquote) {
90
90
  border-top: 4px solid currentColor;
91
91
  border-bottom: 4px solid currentColor;
92
92
  margin-bottom: 1.75em;
93
93
  color: currentColor;
94
94
  }
95
+
95
96
  .wp-block-pullquote cite,
96
97
  .wp-block-pullquote footer, .wp-block-pullquote__citation {
97
98
  color: currentColor;