@wordpress/block-library 8.23.0 → 8.24.1

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 (136) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/block/edit.js +8 -11
  3. package/build/block/edit.js.map +1 -1
  4. package/build/block/edit.native.js +3 -4
  5. package/build/block/edit.native.js.map +1 -1
  6. package/build/button/edit.js +4 -7
  7. package/build/button/edit.js.map +1 -1
  8. package/build/column/edit.js +1 -1
  9. package/build/column/edit.js.map +1 -1
  10. package/build/column/edit.native.js +1 -1
  11. package/build/column/edit.native.js.map +1 -1
  12. package/build/cover/edit/index.js +2 -1
  13. package/build/cover/edit/index.js.map +1 -1
  14. package/build/file/edit.js +8 -9
  15. package/build/file/edit.js.map +1 -1
  16. package/build/file/view.js +4 -6
  17. package/build/file/view.js.map +1 -1
  18. package/build/group/edit.js +3 -7
  19. package/build/group/edit.js.map +1 -1
  20. package/build/image/edit.js +17 -18
  21. package/build/image/edit.js.map +1 -1
  22. package/build/image/edit.native.js +22 -15
  23. package/build/image/edit.native.js.map +1 -1
  24. package/build/image/image.js +35 -27
  25. package/build/image/image.js.map +1 -1
  26. package/build/image/index.js +2 -3
  27. package/build/image/index.js.map +1 -1
  28. package/build/image/view.js +233 -268
  29. package/build/image/view.js.map +1 -1
  30. package/build/navigation/view.js +153 -176
  31. package/build/navigation/view.js.map +1 -1
  32. package/build/navigation-link/index.js +2 -1
  33. package/build/navigation-link/index.js.map +1 -1
  34. package/build/pattern/edit.js +1 -3
  35. package/build/pattern/edit.js.map +1 -1
  36. package/build/post-template/edit.js +1 -1
  37. package/build/post-template/edit.js.map +1 -1
  38. package/build/query/view.js +52 -60
  39. package/build/query/view.js.map +1 -1
  40. package/build/search/view.js +66 -74
  41. package/build/search/view.js.map +1 -1
  42. package/build/utils/remove-anchor-tag.js +17 -0
  43. package/build/utils/remove-anchor-tag.js.map +1 -0
  44. package/build-module/block/edit.js +8 -11
  45. package/build-module/block/edit.js.map +1 -1
  46. package/build-module/block/edit.native.js +3 -4
  47. package/build-module/block/edit.native.js.map +1 -1
  48. package/build-module/button/edit.js +4 -7
  49. package/build-module/button/edit.js.map +1 -1
  50. package/build-module/column/edit.js +1 -1
  51. package/build-module/column/edit.js.map +1 -1
  52. package/build-module/column/edit.native.js +1 -1
  53. package/build-module/column/edit.native.js.map +1 -1
  54. package/build-module/cover/edit/index.js +2 -1
  55. package/build-module/cover/edit/index.js.map +1 -1
  56. package/build-module/file/edit.js +8 -9
  57. package/build-module/file/edit.js.map +1 -1
  58. package/build-module/file/view.js +5 -7
  59. package/build-module/file/view.js.map +1 -1
  60. package/build-module/group/edit.js +3 -7
  61. package/build-module/group/edit.js.map +1 -1
  62. package/build-module/image/edit.js +18 -19
  63. package/build-module/image/edit.js.map +1 -1
  64. package/build-module/image/edit.native.js +23 -16
  65. package/build-module/image/edit.native.js.map +1 -1
  66. package/build-module/image/image.js +36 -28
  67. package/build-module/image/image.js.map +1 -1
  68. package/build-module/image/index.js +2 -3
  69. package/build-module/image/index.js.map +1 -1
  70. package/build-module/image/view.js +234 -269
  71. package/build-module/image/view.js.map +1 -1
  72. package/build-module/navigation/view.js +154 -177
  73. package/build-module/navigation/view.js.map +1 -1
  74. package/build-module/navigation-link/index.js +2 -1
  75. package/build-module/navigation-link/index.js.map +1 -1
  76. package/build-module/pattern/edit.js +1 -3
  77. package/build-module/pattern/edit.js.map +1 -1
  78. package/build-module/post-template/edit.js +1 -1
  79. package/build-module/post-template/edit.js.map +1 -1
  80. package/build-module/query/view.js +53 -61
  81. package/build-module/query/view.js.map +1 -1
  82. package/build-module/search/view.js +67 -75
  83. package/build-module/search/view.js.map +1 -1
  84. package/build-module/utils/remove-anchor-tag.js +11 -0
  85. package/build-module/utils/remove-anchor-tag.js.map +1 -0
  86. package/build-style/cover/style-rtl.css +14 -14
  87. package/build-style/cover/style.css +14 -14
  88. package/build-style/editor-rtl.css +6 -9
  89. package/build-style/editor.css +6 -9
  90. package/build-style/gallery/style-rtl.css +28 -0
  91. package/build-style/gallery/style.css +28 -0
  92. package/build-style/image/editor-rtl.css +0 -3
  93. package/build-style/image/editor.css +0 -3
  94. package/build-style/style-rtl.css +42 -14
  95. package/build-style/style.css +42 -14
  96. package/package.json +32 -32
  97. package/src/block/edit.js +18 -19
  98. package/src/block/edit.native.js +5 -13
  99. package/src/button/edit.js +6 -6
  100. package/src/buttons/test/__snapshots__/edit.native.js.snap +0 -6
  101. package/src/buttons/test/edit.native.js +0 -27
  102. package/src/column/edit.js +1 -1
  103. package/src/column/edit.native.js +1 -1
  104. package/src/cover/edit/index.js +1 -0
  105. package/src/cover/style.scss +1 -1
  106. package/src/cover/test/edit.js +1 -1
  107. package/src/editor.scss +6 -6
  108. package/src/file/edit.js +11 -10
  109. package/src/file/index.php +30 -11
  110. package/src/file/view.js +5 -7
  111. package/src/gallery/style.scss +1 -0
  112. package/src/group/edit.js +3 -11
  113. package/src/heading/test/__snapshots__/index.native.js.snap +6 -0
  114. package/src/heading/test/index.native.js +40 -0
  115. package/src/image/block.json +2 -3
  116. package/src/image/edit.js +16 -21
  117. package/src/image/edit.native.js +17 -18
  118. package/src/image/editor.scss +0 -7
  119. package/src/image/image.js +48 -51
  120. package/src/image/index.php +54 -45
  121. package/src/image/view.js +278 -334
  122. package/src/navigation/index.php +19 -10
  123. package/src/navigation/view.js +159 -192
  124. package/src/navigation-link/block.json +2 -1
  125. package/src/paragraph/test/edit.native.js +37 -1
  126. package/src/pattern/edit.js +5 -3
  127. package/src/post-template/edit.js +1 -1
  128. package/src/query/index.php +36 -22
  129. package/src/query/view.js +58 -65
  130. package/src/query-pagination-next/index.php +3 -3
  131. package/src/query-pagination-numbers/index.php +1 -1
  132. package/src/query-pagination-previous/index.php +3 -3
  133. package/src/search/index.php +40 -40
  134. package/src/search/view.js +58 -63
  135. package/src/utils/remove-anchor-tag.js +10 -0
  136. package/tsconfig.json +1 -0
@@ -37,6 +37,7 @@ function render_block_core_image( $attributes, $content, $block ) {
37
37
  $link_destination = isset( $attributes['linkDestination'] ) ? $attributes['linkDestination'] : 'none';
38
38
  $lightbox_settings = block_core_image_get_lightbox_settings( $block->parsed_block );
39
39
 
40
+ $is_gutenberg_plugin = defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN;
40
41
  $view_js_file_handle = 'wp-block-image-view';
41
42
  $script_handles = $block->block_type->view_script_handles;
42
43
 
@@ -50,9 +51,11 @@ function render_block_core_image( $attributes, $content, $block ) {
50
51
  isset( $lightbox_settings['enabled'] ) &&
51
52
  true === $lightbox_settings['enabled']
52
53
  ) {
53
- $block->block_type->supports['interactivity'] = true;
54
-
55
- if ( ! in_array( $view_js_file_handle, $script_handles, true ) ) {
54
+ if ( $is_gutenberg_plugin ) {
55
+ gutenberg_enqueue_module( '@wordpress/block-library/image' );
56
+ // Remove the view script because we are using the module.
57
+ $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file_handle ) );
58
+ } elseif ( ! in_array( $view_js_file_handle, $script_handles, true ) ) {
56
59
  $block->block_type->view_script_handles = array_merge( $script_handles, array( $view_js_file_handle ) );
57
60
  }
58
61
 
@@ -71,6 +74,7 @@ function render_block_core_image( $attributes, $content, $block ) {
71
74
  * other Image blocks.
72
75
  */
73
76
  remove_filter( 'render_block_core/image', 'block_core_image_render_lightbox', 15 );
77
+
74
78
  // If the script is not needed, and it is still in the `view_script_handles`, remove it.
75
79
  if ( in_array( $view_js_file_handle, $script_handles, true ) ) {
76
80
  $block->block_type->view_script_handles = array_diff( $script_handles, array( $view_js_file_handle ) );
@@ -187,27 +191,23 @@ function block_core_image_render_lightbox( $block_content, $block ) {
187
191
  $w = new WP_HTML_Tag_Processor( $block_content );
188
192
  $w->next_tag( 'figure' );
189
193
  $w->add_class( 'wp-lightbox-container' );
190
- $w->set_attribute( 'data-wp-interactive', true );
194
+ $w->set_attribute( 'data-wp-interactive', '{"namespace":"core/image"}' );
191
195
 
192
196
  $w->set_attribute(
193
197
  'data-wp-context',
194
198
  sprintf(
195
- '{ "core":
196
- { "image":
197
- { "imageLoaded": false,
198
- "initialized": false,
199
- "lightboxEnabled": false,
200
- "hideAnimationEnabled": false,
201
- "preloadInitialized": false,
202
- "lightboxAnimation": "%s",
203
- "imageUploadedSrc": "%s",
204
- "imageCurrentSrc": "",
205
- "targetWidth": "%s",
206
- "targetHeight": "%s",
207
- "scaleAttr": "%s",
208
- "dialogLabel": "%s"
209
- }
210
- }
199
+ '{ "imageLoaded": false,
200
+ "initialized": false,
201
+ "lightboxEnabled": false,
202
+ "hideAnimationEnabled": false,
203
+ "preloadInitialized": false,
204
+ "lightboxAnimation": "%s",
205
+ "imageUploadedSrc": "%s",
206
+ "imageCurrentSrc": "",
207
+ "targetWidth": "%s",
208
+ "targetHeight": "%s",
209
+ "scaleAttr": "%s",
210
+ "dialogLabel": "%s"
211
211
  }',
212
212
  $lightbox_animation,
213
213
  $img_uploaded_src,
@@ -218,14 +218,14 @@ function block_core_image_render_lightbox( $block_content, $block ) {
218
218
  )
219
219
  );
220
220
  $w->next_tag( 'img' );
221
- $w->set_attribute( 'data-wp-init', 'effects.core.image.initOriginImage' );
222
- $w->set_attribute( 'data-wp-on--load', 'actions.core.image.handleLoad' );
223
- $w->set_attribute( 'data-wp-effect', 'effects.core.image.setButtonStyles' );
221
+ $w->set_attribute( 'data-wp-init', 'callbacks.initOriginImage' );
222
+ $w->set_attribute( 'data-wp-on--load', 'actions.handleLoad' );
223
+ $w->set_attribute( 'data-wp-watch', 'callbacks.setButtonStyles' );
224
224
  // We need to set an event callback on the `img` specifically
225
225
  // because the `figure` element can also contain a caption, and
226
226
  // we don't want to trigger the lightbox when the caption is clicked.
227
- $w->set_attribute( 'data-wp-on--click', 'actions.core.image.showLightbox' );
228
- $w->set_attribute( 'data-wp-effect--setStylesOnResize', 'effects.core.image.setStylesOnResize' );
227
+ $w->set_attribute( 'data-wp-on--click', 'actions.showLightbox' );
228
+ $w->set_attribute( 'data-wp-watch--setStylesOnResize', 'callbacks.setStylesOnResize' );
229
229
  $body_content = $w->get_updated_html();
230
230
 
231
231
  // Add a button alongside image in the body content.
@@ -239,9 +239,9 @@ function block_core_image_render_lightbox( $block_content, $block ) {
239
239
  type="button"
240
240
  aria-haspopup="dialog"
241
241
  aria-label="' . esc_attr( $aria_label ) . '"
242
- data-wp-on--click="actions.core.image.showLightbox"
243
- data-wp-style--right="context.core.image.imageButtonRight"
244
- data-wp-style--top="context.core.image.imageButtonTop"
242
+ data-wp-on--click="actions.showLightbox"
243
+ data-wp-style--right="context.imageButtonRight"
244
+ data-wp-style--top="context.imageButtonTop"
245
245
  >
246
246
  <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
247
247
  <path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
@@ -267,8 +267,8 @@ function block_core_image_render_lightbox( $block_content, $block ) {
267
267
  // use the exact same image as in the content when the lightbox is first opened while
268
268
  // we wait for the larger image to load.
269
269
  $m->set_attribute( 'src', '' );
270
- $m->set_attribute( 'data-wp-bind--src', 'context.core.image.imageCurrentSrc' );
271
- $m->set_attribute( 'data-wp-style--object-fit', 'selectors.core.image.lightboxObjectFit' );
270
+ $m->set_attribute( 'data-wp-bind--src', 'context.imageCurrentSrc' );
271
+ $m->set_attribute( 'data-wp-style--object-fit', 'state.lightboxObjectFit' );
272
272
  $initial_image_content = $m->get_updated_html();
273
273
 
274
274
  $q = new WP_HTML_Tag_Processor( $block_content );
@@ -283,8 +283,8 @@ function block_core_image_render_lightbox( $block_content, $block ) {
283
283
  // and Chrome (see https://github.com/WordPress/gutenberg/pull/52765#issuecomment-1674008151). Until that
284
284
  // is resolved, manually setting the 'src' seems to be the best solution to load the large image on demand.
285
285
  $q->set_attribute( 'src', '' );
286
- $q->set_attribute( 'data-wp-bind--src', 'selectors.core.image.enlargedImgSrc' );
287
- $q->set_attribute( 'data-wp-style--object-fit', 'selectors.core.image.lightboxObjectFit' );
286
+ $q->set_attribute( 'data-wp-bind--src', 'state.enlargedImgSrc' );
287
+ $q->set_attribute( 'data-wp-style--object-fit', 'state.lightboxObjectFit' );
288
288
  $enlarged_image_content = $q->get_updated_html();
289
289
 
290
290
  // If the current theme does NOT have a `theme.json`, or the colors are not defined,
@@ -307,21 +307,21 @@ function block_core_image_render_lightbox( $block_content, $block ) {
307
307
 
308
308
  $lightbox_html = <<<HTML
309
309
  <div data-wp-body="" class="wp-lightbox-overlay $lightbox_animation"
310
- data-wp-bind--role="selectors.core.image.roleAttribute"
311
- data-wp-bind--aria-label="selectors.core.image.dialogLabel"
312
- data-wp-class--initialized="context.core.image.initialized"
313
- data-wp-class--active="context.core.image.lightboxEnabled"
314
- data-wp-class--hideAnimationEnabled="context.core.image.hideAnimationEnabled"
315
- data-wp-bind--aria-modal="selectors.core.image.ariaModal"
316
- data-wp-effect="effects.core.image.initLightbox"
317
- data-wp-on--keydown="actions.core.image.handleKeydown"
318
- data-wp-on--touchstart="actions.core.image.handleTouchStart"
319
- data-wp-on--touchmove="actions.core.image.handleTouchMove"
320
- data-wp-on--touchend="actions.core.image.handleTouchEnd"
321
- data-wp-on--click="actions.core.image.hideLightbox"
310
+ data-wp-bind--role="state.roleAttribute"
311
+ data-wp-bind--aria-label="state.dialogLabel"
312
+ data-wp-class--initialized="context.initialized"
313
+ data-wp-class--active="context.lightboxEnabled"
314
+ data-wp-class--hideAnimationEnabled="context.hideAnimationEnabled"
315
+ data-wp-bind--aria-modal="state.ariaModal"
316
+ data-wp-watch="callbacks.initLightbox"
317
+ data-wp-on--keydown="actions.handleKeydown"
318
+ data-wp-on--touchstart="actions.handleTouchStart"
319
+ data-wp-on--touchmove="actions.handleTouchMove"
320
+ data-wp-on--touchend="actions.handleTouchEnd"
321
+ data-wp-on--click="actions.hideLightbox"
322
322
  tabindex="-1"
323
323
  >
324
- <button type="button" aria-label="$close_button_label" style="fill: $close_button_color" class="close-button" data-wp-on--click="actions.core.image.hideLightbox">
324
+ <button type="button" aria-label="$close_button_label" style="fill: $close_button_color" class="close-button" data-wp-on--click="actions.hideLightbox">
325
325
  $close_button_icon
326
326
  </button>
327
327
  <div class="lightbox-image-container">$initial_image_content</div>
@@ -362,5 +362,14 @@ function register_block_core_image() {
362
362
  'render_callback' => 'render_block_core_image',
363
363
  )
364
364
  );
365
+
366
+ if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) {
367
+ gutenberg_register_module(
368
+ '@wordpress/block-library/image',
369
+ gutenberg_url( '/build/interactivity/image.min.js' ),
370
+ array( '@wordpress/interactivity' ),
371
+ defined( 'GUTENBERG_VERSION' ) ? GUTENBERG_VERSION : get_bloginfo( 'version' )
372
+ );
373
+ }
365
374
  }
366
375
  add_action( 'init', 'register_block_core_image' );